Редактировать свой комментарий

+14
3.17K
Может пригодится кому-либо. Ну у меня пользователи просят. Ну что же, раз просят, то постараемся сделать.

Итак есть комментарии и пользователь написал, да ещё и с ошибкой. Хочет он исправить...

Открываем файл com_comments_list.tpl (в папке с темплейтом искать) и там вставляем данный код

где-нибудь рядом с
  1. [<a href="javascript:void(0)" onclick="addComment('{php}echo md5(session_id());{/php}', '{$target}', '{$target_id}', {$comment.id})">{$LANG.REPLY}</a>]
добавляем

  1. {if $comment.is_my }
  2. [<a href="/comments/edit/{$comment.id}">{$LANG.EDIT} свой комментарий</a>]
  3. {/if}
потом открываем файл \components\comments\frontend.php
и находите в самом конце

  1. //========================================================================================================================//
  2. } //function
перед этим добавляете
Можете заметить циферку 300 — это столько секунд даётся на редактирование...
  1. if ($do == 'edit'){
  2.  
  3. $id = $inCore->request('id', 'int', 0);
  4. if($id){
  5.  
  6.  
  7.  
  8. $comment_user = $model->getCommentAuthorId($id);
  9.  
  10. $is_admin = $inCore->userIsAdmin( $inUser->id );
  11. $is_my = ($inUser->id == $comment_user);
  12. if($is_my){
  13. $content= $inCore->request('content', 'str', '');
  14. if(!empty($content))
  15. {
  16. $sql = "UPDATE cms_comments SET `content`='".$content."' WHERE id = ".intval($id)." and `pubdate` > NOW()-300 LIMIT 1";
  17. $ress=mysql_query($sql);
  18. if(mysql_affected_rows()>"0")
  19. {
  20. echo "Вы успешно отредактировали комментарий!";
  21. $sql = "SELECT * FROM cms_comments WHERE id = ".intval($id)." LIMIT 1";
  22. $result=mysql_fetch_array( mysql_query($sql) ) ;
  23. echo "<br/><a href='http://".$_SERVER['HTTP_HOST'].$result['target_link']."#c". $id."'>Перейти к комментарию</a>";
  24. }
  25. else
  26. {
  27. echo "Вы не можете отредактировать комментарий, так как истекло время, либо это не Ваш комментарий!";
  28. $sql = "SELECT * FROM cms_comments WHERE id = ".intval($id)." LIMIT 1";
  29. $result=mysql_fetch_array( mysql_query($sql) ) ;
  30. echo "<br/><a href='http://".$_SERVER['HTTP_HOST'].$result['target_link']."#c". $id."'>Перейти к комментарию</a>";
  31. }
  32.  
  33. }
  34. else
  35. {
  36. $sql = "SELECT * FROM cms_comments WHERE id = ".intval($id)." LIMIT 1";
  37. $result=mysql_fetch_array( mysql_query($sql) ) ;
  38.  
  39. ?>
  40. <h2>Редактировать комментарий</h2>Внимание на редактирование комментария даётся 5 минут, если Вы не сделали этого ранее, то сохранение изменённой информации не произойдёт<form id="addform" name="addform" method="post" action="/comments/edit/<?php echo $_REQUEST['id'];?>">
  41.  
  42. <div class="usr_msg_bbcodebox" style="width:660px">
  43. <?php
  44. $GLOBALS['cp_page_head'][] = '<script language="JavaScript" type="text/javascript" src="/core/js/smiles.js"></script>';
  45. echo cmsPage::getBBCodeToolbar('content', false);
  46. ?>
  47. </div>
  48. <div style="width:660px;">
  49. <?php
  50. echo cmsPage::getSmilesPanel('content');
  51. ?>
  52. </div>
  53. <textarea id="content" name="content" style="width:650px;height:200px"><?php echo $result['content']; ?></textarea>
  54. <p>
  55. <label>
  56. <input name="add_mod" type="submit" id="add_mod" value="Сохранить изменения"/>
  57. </label>
  58. <label>
  59. <input name="back" type="button" id="back" value="Отмена" onclick="window.location.href='index.php?view=components';"/>
  60. </label>
  61.  
  62. </p>
  63. </form>
  64.  
  65. <?php
  66. }
  67. }
  68. else
  69. {
  70. echo "Вы не можете редактировать комментарий!";
  71. }
  72.  
  73. }
  74.  
  75.  
  76.  
  77. }
  78.  

потом открываем файл \components\comments\router.php
и добавляем внутрь функции следующее

  1. //RewriteRule ^comments/edit/([0-9]*)$ /index.php?view=comments&do=edit&id=$1
  2. $routes[] = array(
  3. '_uri' => '/^comments\/edit\/([0-9]+)$/i',
  4. 'do' => 'edit',
  5. 1 => 'id'
  6. );
ну и вроде всё😊
пользуйтесь
+2
Hmelex Hmelex 14 лет назад #
Спасибо!
Не плохо бы такое в новый Релиз добавить.

Может АДМИНИСТРАЦИЯ это как то рассмотрит
+2
InstantCMS InstantCMS 14 лет назад #
в таком виде не будет точно
если и делать возможность редактирования комментариев, то только в течении 1-2 минут после его добавления
хотя имхо, даже в этом случае - редактирование комментариев это зло
0
Hmelex Hmelex 14 лет назад #
Администратор, спасибо за ответ.
Администратор:
хотя имхо, даже в этом случае - редактирование комментариев это зло

ОК, а если сделать только
- Удалить комментарий (удаляет сам пользователь - автор комментария или Администрация сайта)
0
Fuze Fuze 14 лет назад #
удаляет сам пользователь - автор комментария или Администрация сайта
сейчас именно так и есть.
+1
Юрий (Pizza Celentano) Юрий (Pizza Celentano) 14 лет назад #
Ну всё-таки иногда есть необходимость отредактировать свой коммент, вот временной ограничитель это очень хорошо. А вообще надо сделать с возможностью выбора администратором сайта через админку можно ли редактировать комменты или нельзя и настройка времени, в течении которого можно редактировать
0
ГеймОверСистемХалтед ГеймОверСистемХалтед 14 лет назад #
1-2 минуты нормально. Случаются иногда досадные опечатки.
+1
StaryiSV StaryiSV 14 лет назад #
Очень неплохо. Еще бы архив с исправленными файлами?!
0
Zau4man Zau4man 14 лет назад #
дождусь 1.6.3, обновлюсь, и внесу эти изменения к себе на сайт.
+1
lezginka.ru lezginka.ru 14 лет назад #
+ однозначно нужно.
для чайников было бы лучше, готовые файлы выложить :)
0
Amurland Amurland 14 лет назад #
у многих файлы разные... да и сборки тоже. а в стандартную сборку включать... это надо действовать синтаксису (всяким там ООП), с ним у меня слабовато, надо чаще под инстант писать, тогда и получится, но некогда.
+1
Amurland Amurland 14 лет назад #
ещё сделал вывод комментариев без аякса - ну там типа для сео или мобил . вроде была тема, а может ошибаюсь. стоит выкладывать что и где изменять??? (а то у одного из пользователей провайдер в сети тупо обрезал выполнение, что и переустановка не помогали - не знаю каким образом, но комменты не работали)
0
Zau4man Zau4man 14 лет назад #
в 1.6.3 это вроде как будет реализовано...
0
lezginka.ru lezginka.ru 14 лет назад #
ещё сделал вывод комментариев без аякса
однозначно нужно особенно для фотогалереии
0
LBM LBM 13 лет назад #
Вроде все сделал как надо, но после нажатия "редактировать" выдает красными буквами "введите текст комментария" и все...
0
Madmax Madmax 13 лет назад #
В версии 1.8 все эти настройки вынесены в Админку ...

Еще от автора

Компонент "Совместные покупки"
Ранее данный проект был мной заморожен, но в декабре решил возобновить работы и адаптировать под новую версию первой ветки Позволяет организовать на с
Закрытый форум. Отдельный компонент
Потребовалось тут пару недель назад создать закрытый раздел на форуме, но не хотелось пересекаться с основной регистрацией и некоторыми другими встрое
Компонент Линейки (Метрика). Форумные линеечки. Фотолинейки. для 1.10.x
Компонент Линейки или Метрики или Форумные линеечки или Фотолинейки. для 1.10.x Компонент платный Прекрасно подойдёт для тематических порталов.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.