Перейти к содержанию
CMSTOOLS.org - форум поддержки и развития CMS

[Ajax] просмотр для заметок


Рекомендуемые сообщения

P.S Обязательно вначале УСТАНАВЛИВАЕМ модуль "Поделиться заметкой на стену данного пользователя"

1. Открываем system/modules/notes.php

Ищем:

Спойлер
default:		
$get_user_id = intval($_GET['get_user_id']);

 

Выше вставляем:

Спойлер
//################### Просмотр полной заметки ajax ###################//
		case "view_box":
			$note_id = intval($_GET['note_id']);
			
			//SQL Запрос
			$row = $db->super_query("SELECT tb1.title, tb1.id, owner_user_id, full_text, comm_num, date, tb2.user_search_pref, tb2.user_photo, tb2.user_lastname FROM `".PREFIX."_notes` tb1, `".PREFIX."_users` tb2 WHERE id = '{$note_id}' AND tb1.owner_user_id = tb2.user_id");

			//ЧС
			$CheckBlackList = CheckBlackList($row['owner_user_id']);
			if(!$CheckBlackList){
				if($row){
					//Формирование мета титле и спидбара
					$author_info = explode(' ', $row['user_search_pref']);
					$user_speedbar = $lang['notes_view'];
					$metatags['title'] = $lang['notes_view'];
										
					//Загружаем шаблон вывода полного просомтра заметки
					$tpl->load_template('notes/notes_full.tpl');
					$tpl->set('{note-id}', $note_id);
					$tpl->set('{rid}', $row['id']);
					$tpl->set('{title}', stripslashes($row['title']));					
					$tpl->set('{full-text}', stripslashes($row['full_text']));
					$tpl->set('{name}', $row['user_search_pref']);
					$tpl->set('{lastname}', $row['user_lastname']);
                    if($row['owner_user_id'] == $user_id){
						$tpl->set('[owner]', '');
						$tpl->set('[/owner]', '');
						$tpl->set_block("'\\[not-owner\\](.*?)\\[/not-owner\\]'si","");
					} else {
						$tpl->set('[not-owner]', '');
						$tpl->set('[/not-owner]', '');
						$tpl->set_block("'\\[owner\\](.*?)\\[/owner\\]'si","");
					}
					if($row['user_photo']){
					$tpl->set('{ava}', '/uploads/users/'.$row['owner_user_id'].'/50_'.$row['user_photo']);
				    } else {
					$tpl->set('{ava}', '{theme}/images/no_ava_50.png');
					}
					$tpl->set('{name}', gramatikName($author_info[0]));
					$tpl->set_block("'\\[add\\](.*?)\\[/add\\]'si","");
					$tpl->set_block("'\\[edit\\](.*?)\\[/edit\\]'si","");
					$tpl->set_block("'\\[all\\](.*?)\\[/all\\]'si","");
					$tpl->set('{user-id}', $row['owner_user_id']);
					
					$date_comm = strtotime($row['date']);
					if(date('Y-m-d', $date_comm) == date('Y-m-d', $yesterday_date))
						$tpl->set('{date}', langdate('сегодня в H:i', $date_comm));
					elseif(date('Y-m-d', $date_comm) == date('Y-m-d', ($yesterday_date-84600)))
						$tpl->set('{date}', langdate('вчера в H:i', $date_comm));
					else
						$tpl->set('{date}', langdate('j F Y в H:i', $date_comm));
									
					if($row['owner_user_id'] == $user_id){
						$tpl->set('[owner]', '');
						$tpl->set('[/owner]', '');
					} else
						$tpl->set_block("'\\[owner\\](.*?)\\[/owner\\]'si","");
									
					if($row['comm_num'])
						$tpl->set('{comm-num}', $row['comm_num'].' '.gram_record($row['comm_num'], 'comments'));
					else
						$tpl->set('{comm-num}', $lang['note_no_comments']);
					
					if($row['comm_num'] > 10){
						$tpl->set('[all-comm]', '');
						$tpl->set('[/all-comm]', '');
					} else
						$tpl->set_block("'\\[all-comm\\](.*?)\\[/all-comm\\]'si","");
						
					$tpl->set('{prev-text-comm}', gram_record(($row['comm_num']-10), 'prev').' '.($row['comm_num']-10).' '.gram_record(($row['comm_num']-10), 'comments'));
					$tpl->set('{num}', $row['comm_num']);

					$tpl->compile('content');
					
					$tpl->result['content'] = str_replace('{note-id}', $note_id, $tpl->result['content']);
					
				
					
				} else {
					$user_speedbar = $lang['error'];
					$metatags['title'] = $lang['error'];
					msgbox('', $lang['no_notes'], 'info');
				}
			} else {
				$user_speedbar = $lang['error'];
				msgbox('', $lang['no_notes'], 'info');
			}
		break;

 

2. Далее там же ищем:

$wall_text = <<<HTML
<div class="notes_wall_title"><a onClick="Page.Go('/notes/view/{$db_id}'); return false" class="cursor_pointer">{$title}</a></div><div class="note_wall_text">{$poser}{$for_wall_text}</div><div class="button_div fl_l margin_top_5" style="line-height:15px"><button onClick="Page.Go('/notes/view/{$db_id}'); return false">Читать далее..</button></div><!-->
HTML;

И заменяем:

Спойлер
$wall_text = <<<HTML
<div class="notes_wall_title"><a onClick="Page.Go('/notes/view/{$db_id}'); return false" class="cursor_pointer">{$title}</a></div><div class="note_wall_text">{$poser}{$for_wall_text}</div><div class="button_div fl_l margin_top_5" style="line-height:15px"><button onClick="Page.Go('/notes/view/{$db_id}'); return false">Читать далее..</button></div><!-->
HTML;

 

3. Открываем templates/Default/js/profile.js

Находим:

//WALL

Выше вставляем:

//OTHERBOX
var otherbox = {
nview: function(id){
    showBox.start();
	$.post('/index.php?go=notes&act=view_box&note_id='+id, function(d){
	  showBox.win('box_notes', d);
	});
  }
}

4. Файл notes_full.tpl кидаем в templates/Default/notes

5. Файл comm.js в templates/Default/js и подключаем его в main.tpl

Вот так:

<script type="text/javascript" src="{theme}/js/comm.js"></script>

6. Чистим кеш если вдруг понадобится (в редких случаях).

Возможные баги:

А. Не закрывается ajax окно? Ответов несколько...

Есть 3 способа решения:

1. В сборке vii engine 2.0 и ранее:

Ищем в файле index.php:

//Если обращение к модулю регистрации или главной и юзер не авторизован то показываем регистрацию
if($go == 'register' OR $go == 'main' AND !$logged)
	include ENGINE_DIR.'/modules/register_main.php';

$tpl->load_template('main.tpl');

И заменяем весь код:

Спойлер
//Если обращение к модулю регистрации или главной и юзер не авторизован то показываем регистрацию
if($go == 'register' OR $go == 'main' AND !$logged)
	include ENGINE_DIR.'/modules/register_main.php';

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
	$tpl->load_template('main2.tpl');

}else{
	$tpl->set('{titles}', $metatag);
	$tpl->load_template('main.tpl');
}	

 

Так же ОБЯЗАТЕЛЬНО кидаем файл main2.tpl в папку с шаблоном (по умолчанию Default)

2. У Вас установлен хак вывод аватарки в main.tpl

Находим:

if($logged){

     if($user_info['user_photo'])

          $ava = $config['home_url'].'uploads/users/'.$user_info['user_id'].'/100_'.$user_info['user_photo'];

     else

          $ava = 'templates/Default/images/no_ava_50.png';

     $myphoto_header.='<img src="'.$ava.'" width="45" />'."\n";

     $tpl->set('{myphoto_header}', $myphoto_header);
     $tpl->load_template('main.tpl');

}

И удаляем оттуда: $tpl->load_template('main.tpl');

3. У Вас не подключены файлы из папки templates/Default/js,вам необходимо прописать их в main.tpl (либо в index.php)

Б. Не открываются заметки в ajax окне? Ответ: Ajax окно будет открываться только в новых созданных заметках,так что не пугайтесь.

Автора не помню уже мод 2016 года 

Image_21_02_2016.jpg

Image1_21_02_2016.jpg

Ajax просмотр для заметок.zip

Изменено пользователем kphp
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...