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

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

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

Открываем файл 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.