Редактор темы

Реклама
Реклама

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

  • Автор темы Автор темы Frosty
  • Дата начала Дата начала

Frosty

Забанен
Регистрация
31 Мар 2017
Сообщения
935
Рейтинг реакций
134
Баллы
43
Возраст
37
1/3
Автор темы
1515966016_sx2.name_reason.png 1515966029_sx2.name_reason2.png

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

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

Автор: SX2

Установка!

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><input type='checkbox' name='view_edit{$id}' id='view_edit{$id}' value='1' checked /><b style='color:red'>Выводить информацию о том что комментарий отредактирован</b>";       
   }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($_POST['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();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;

Готово!
 

Похожие темы Последние темы Популярные темы

Назад
Сверху