Reason for edit comment (Причина редактирования комментария)

60 15 января 2018
Версия DLE: 11.3
Стоимость: FREE

ionCube Loader: NOT

Последнее обновление: 25 февраля 2018


 Подписаться 1 Скачать

После установки данного хака, у администраторов и модераторов появится возможность вписать причину редактирования комментария.

Возможности:
- Причина редактирования
- Кто отредактировал?
- Когда отредактировал?
- Вкл/Откл вывод уведомления о редактировании
- Полная поддержка BBCODES

Демо смотрите ниже в комментариях!

Автор: SX2
собрано 0 долларов Поддержать автора

Войдите на сайт


Все собранные средства будут переданы автору этой статьи - SX2
Сумма перевода от 1 доллар
Установка!

1. Открыть /engine/modules/show.full.php найти:
$comments->query = "SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, date, autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, " . PREFIX . "_comments.rating, " . PREFIX . "_comments.vote_num, " . PREFIX . "_comments.parent, name, " . USERPREFIX . "_users.email, news_num, comm_num, user_group, lastdate, reg_date, signature, foto, fullname, land, xfields FROM " . PREFIX . "_comments LEFT JOIN " . USERPREFIX . "_users ON " . PREFIX . "_comments.user_id=" . USERPREFIX . "_users.user_id WHERE " . PREFIX . "_comments.post_id = '$news_id'" . $where_approve . " ORDER BY " . PREFIX . "_comments.id " . $comm_msort;

Заменить на:
$comments->query = "SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, date, autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, view_edit, date_edit, user_edit, reason_edit, " . PREFIX . "_comments.rating, " . PREFIX . "_comments.vote_num, " . PREFIX . "_comments.parent, name, " . USERPREFIX . "_users.email, news_num, comm_num, user_group, lastdate, reg_date, signature, foto, fullname, land, xfields FROM " . PREFIX . "_comments LEFT JOIN " . USERPREFIX . "_users ON " . PREFIX . "_comments.user_id=" . USERPREFIX . "_users.user_id WHERE " . PREFIX . "_comments.post_id = '$news_id'" . $where_approve . " ORDER BY " . PREFIX . "_comments.id " . $comm_msort;

1.1 Открыть /engine/modules/lastcomments.php найти:
$comments->query = "SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, " . PREFIX . "_comments.date, " . PREFIX . "_comments.autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, " . PREFIX . "_comments.rating, " . PREFIX . "_comments.vote_num, name, " . USERPREFIX . "_users.email, news_num, " . USERPREFIX . "_users.comm_num, user_group, lastdate, reg_date, signature, foto, fullname, land, " . USERPREFIX . "_users.xfields, " . PREFIX . "_post.title, " . PREFIX . "_post.date as newsdate, " . PREFIX . "_post.alt_name, " . PREFIX . "_post.category FROM " . PREFIX . "_comments LEFT JOIN " . PREFIX . "_post ON " . PREFIX . "_comments.post_id=" . PREFIX . "_post.id LEFT JOIN " . USERPREFIX . "_users ON " . PREFIX . "_comments.user_id=" . USERPREFIX . "_users.user_id " . $where . " ORDER BY id desc";

Заменить на:
$comments->query = "SELECT " . PREFIX . "_comments.id, post_id, " . PREFIX . "_comments.user_id, " . PREFIX . "_comments.date, " . PREFIX . "_comments.autor as gast_name, " . PREFIX . "_comments.email as gast_email, text, ip, is_register, " . PREFIX . "_comments.rating, view_edit, date_edit, user_edit, reason_edit, " . PREFIX . "_comments.vote_num, name, " . USERPREFIX . "_users.email, news_num, " . USERPREFIX . "_users.comm_num, user_group, lastdate, reg_date, signature, foto, fullname, land, " . USERPREFIX . "_users.xfields, " . PREFIX . "_post.title, " . PREFIX . "_post.date as newsdate, " . PREFIX . "_post.alt_name, " . PREFIX . "_post.category FROM " . PREFIX . "_comments LEFT JOIN " . PREFIX . "_post ON " . PREFIX . "_comments.post_id=" . PREFIX . "_post.id LEFT JOIN " . USERPREFIX . "_users ON " . PREFIX . "_comments.user_id=" . USERPREFIX . "_users.user_id " . $where . " ORDER BY id desc";

2. Открыть /engine/classes/comments.class.php найти:
$tpl->set( '{comment}', "<div id='comm-id-" . $row['id'] . "'>" . $row['text'] . "</div>" );

Выше вставить:
if( $row['view_edit'] and $row['date_edit'] ) {
			
			if( date( Ymd, $row['date_edit'] ) == date( Ymd, $_TIME ) ) {
				
				$tpl->set( '{date_edit}', $lang['time_heute'] . langdate( ", H:i", $row['date_edit'] ) );
			
			} elseif( date( Ymd, $row['date_edit'] ) == date( Ymd, ($_TIME - 86400) ) ) {
				
				$tpl->set( '{date_edit}', $lang['time_gestern'] . langdate( ", H:i", $row['date_edit'] ) );
			
			} else {
				
				$tpl->set( '{date_edit}', langdate( $config['timestamp_active'], $row['date_edit'] ) );
			
			}
			
			$tpl->set( '{user_edit}', $row['user_edit'] );
			$tpl->set( '{reason_edit}', $row['reason_edit'] );
			
			if( $row['reason_edit'] ) {
				
				$tpl->set( '[reason_edit]', "" );
				$tpl->set( '[/reason_edit]', "" );
			
			} else
				$tpl->set_block( "'\\[reason_edit\\](.*?)\\[/reason_edit\\]'si", "" );
			
			$tpl->set( '[date_edit]', "" );
			$tpl->set( '[/date_edit]', "" );
		
		} else {
			
			$tpl->set( '{date_edit}', "" );
			$tpl->set( '{user_edit}', "" );
			$tpl->set( '{reason_edit}', "" );
			$tpl->set_block( "'\\[date_edit\\](.*?)\\[/date_edit\\]'si", "" );
			$tpl->set_block( "'\\[reason_edit\\](.*?)\\[/reason_edit\\]'si", "" );
		}

3. Открыть /engine/ajax/editcomments.php найти:
$row = $db->super_query( "SELECT id, date, autor, text, is_register FROM " . PREFIX . "_{$allowed_areas[$area]['comments_table']} where id = '$id'" );

Заменить на:
$row = $db->super_query( "SELECT id, date, autor, text, is_register, reason_edit FROM " . PREFIX . "_{$allowed_areas[$area]['comments_table']} where id = '$id'" );

Найти:
$comm_txt = $parse->decodeBBCodes( $row['text'], false );

Ниже вставить:
$edit_reason = $parse->decodeBBCodes( $row['reason_edit'], false );

Найти:
$comm_txt = $parse->decodeBBCodes( $row['text'], true, $config['allow_comments_wysiwyg'] );

Ниже вставить:
$edit_reason = $parse->decodeBBCodes( $row['reason_edit'], true, $config['allow_comments_wysiwyg'] );

Найти:
$buffer = <<<HTML
<div class="bb-editor ignore-select">
{$bb_code}
<textarea name="dleeditcomments{$id}" id="dleeditcomments{$id}" rows="10" cols="50" {$params}>{$comm_txt}</textarea><br>
<div align="right" style="width:99%;padding-top:5px;"><input class="bbcodes" title="$lang[bb_t_apply]" type="button" onclick="ajax_save_comm_edit('{$id}', '{$area}'); return false;" value="$lang[bb_b_apply]">
<input class="bbcodes" title="$lang[bb_t_cancel]" type="button" onclick="ajax_cancel_comm_edit('{$id}'); return false;" value="$lang[bb_b_cancel]">
</div></div>
HTML;

Заменить на:
if($is_logged AND $user_group[$member_id['user_group']]['admin_comments']) {
	$reason_com = "<br>Причина редактирования:{$bb_code}<textarea name='reason{$id}' id='reason{$id}' rows='5' cols='50' {$params}>{$edit_reason}</textarea><br><br><label class='comments_subscribe'><input type='checkbox' name='view_edit{$id}' id='view_edit{$id}' value='1' checked /><b style='color:red'>Выводить информацию о том что комментарий отредактирован</b></label>";		
	}else{	
	$reason_com = "";
	}	
	
	$buffer = <<<HTML
<div class="bb-editor ignore-select">
{$bb_code}
<textarea name="dleeditcomments{$id}" id="dleeditcomments{$id}" rows="10" cols="50" {$params}>{$comm_txt}</textarea><br>{$reason_com}
<div align="right" style="width:99%;padding-top:5px;"><input class="bbcodes" title="$lang[bb_t_apply]" type="button" onclick="ajax_save_comm_edit('{$id}', '{$area}'); return false;" value="$lang[bb_b_apply]">
<input class="bbcodes" title="$lang[bb_t_cancel]" type="button" onclick="ajax_cancel_comm_edit('{$id}'); return false;" value="$lang[bb_b_cancel]">
</div></div>
HTML;

Найти:
$db->query( "UPDATE " . PREFIX . "_{$allowed_areas[$area]['comments_table']} SET text='$comm_update', approve='1' WHERE id = '$id'" );

Заменить на:
if($is_logged AND $user_group[$member_id['user_group']]['admin_comments']) {
	$reason = trim( $parse->BB_Parse( $parse->process( convert_unicode( $_POST['reason'], $config['charset'] ) ), $use_html ) );	
	$reason_update = $db->safesql( $reason );
	$view_edit = intval($_REQUEST['view_edit']);	
	$db->query( "UPDATE " . PREFIX . "_{$allowed_areas[$area]['comments_table']} SET text='$comm_update', approve='1', view_edit='$view_edit', date_edit='$_TIME', user_edit='$member_id[name]', reason_edit='$reason_update' where id = '$id'");	
	}else{		
	$db->query( "UPDATE " . PREFIX . "_{$allowed_areas[$area]['comments_table']} SET text='$comm_update', approve='1' where id = '$id'");
	}

4. Открыть /templates/Default/comments.tpl найти:
<div class="text">{comment}</div>

Заменить на:
<div class="text">{comment}[date_edit]<p class="editdate grey">Сообщение отредактировал: <b>{user_edit}</b> - {date_edit}<br>[reason_edit]Причина: {reason_edit}[/reason_edit]</p>[/date_edit]</div>

5. Открыть /engine/classes/js/dle_js.js найти:
function ajax_save_comm_edit(a,c){"2"==dle_wysiwyg&&tinyMCE.triggerSave();var b=$("#dleeditcomments"+a).val();ShowLoading("");$.post(dle_root+"engine/ajax/editcomments.php",{id:a,comm_txt:b,area:c,action:"save",user_hash:dle_login_hash},function(b){HideLoading("");c_cache[a]="";$("#comm-id-"+a).html(b)});return!1}

Заменить на:
function ajax_save_comm_edit(a,c){"2"==dle_wysiwyg&&tinyMCE.triggerSave();var b=$("#dleeditcomments"+a).val();var v=$("#view_edit"+a+":checked").val();var r=$("#reason"+a).val();ShowLoading("");$.post(dle_root+"engine/ajax/editcomments.php",{id:a,comm_txt:b,view_edit:v,reason:r,area:c,action:"save",user_hash:dle_login_hash},function(b){HideLoading("");c_cache[a]="";$("#comm-id-"+a).html(b)});return!1}

6. Зайти в phpMyAdmin и выполнить запрос (если другой префикс, изменить на свой):
ALTER TABLE `dle_comments` ADD `view_edit` tinyint(1) NOT NULL DEFAULT '0';
ALTER TABLE `dle_comments` ADD `date_edit` int(11) unsigned NOT NULL DEFAULT '0';
ALTER TABLE `dle_comments` ADD `user_edit` varchar(40) NOT NULL DEFAULT '';
ALTER TABLE `dle_comments` ADD `reason_edit` text NOT NULL;

7. Чистим кэш в браузере!

Как очистить кэш в Google Chrome?
1. Зайдите в настройки браузера, нажав в правом верхнем углу иконку и выбрав раздел «Инструменты».
2. В открывшемся меню нажать «Показать дополнительные настройки» и кнопку «Очистить историю».
3. В окне «Очистить историю» нужно выбрать из списка период, за который необходимо удалить данные, например «за все время».
4. Далее нужно установить флажок в пункте «Изображения и другие файлы, сохраненные в кэше» и убедиться, что прочие флажки сняты.
5. Для завершения процесса нужно нажать «Очистить историю».

Готово!
09.02.18
Добавлен вывод причины редактирования в lastcomments
Нет файлов для загрузки!
Нет видео!
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.


Подписка на новости

Подписаться

Кто онлайн
2 посетителя на сайте. Из них:
Гости2