Причина редактирования комментария
После применения этого хака, у администраторов и модераторов появится возможность оставлять причину редактирования комментария.
Возможности:
- Причина редактирования.
- Кто отредактировал?
- Когда отредактировал?
- Вкл/Откл вывод уведомления о редактировании.
- Полная поддержка BBCODES.
Установка:
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;
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. Очистить кэш в браузере.
Готово!
• Кодировка: win-1251 + utf-8
• Автор: SX2
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.
Комментариев 1