Jump to content
CMSTOOLS.ru - форум поддержки и развития CMS

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


Recommended Posts

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

Edited by kphp
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...