Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

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

Тема в разделе "Хаки DLE", создана пользователем Frosty, 15 янв 2018.

15.01.18 в 14:28
15.01.18 в 14:28
0
685
1
  1. TopicStarter Overlay
    Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    941
    Лучших ответов:
    1
    Рейтинги:
    +188 / 18 / -0
    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;
    Готово!
     
    • Полезно Полезно x 2
    • Нравится Нравится x 1
    • Согласен Согласен x 1
Похожие темы
  1. Betmenko
    Ответов:
    15
    Просмотров:
    1.010
  2. JustCain
    Ответов:
    43
    Просмотров:
    4.175
  3. Krabsterz8

    Вопрос? .

    Ответов:
    1
    Просмотров:
    1.646
  4. FaNaT
    Ответов:
    2
    Просмотров:
    1.425
  5. Frosty
    Ответов:
    1
    Просмотров:
    326
Загрузка...
Яндекс.Метрика