Ограниченное редактирование поста

+43
71.45K
Накидал по просьбе одного из участников плагин, позволяющий ограничить по времени редактирование/удаление поста в блоге.
В настройках плагина указываем время в часах, после которого редактировать/удалить (отдельные опции) пост будет не возможно.
Значение опций "0" — неограниченно, для администраторов ограничений нет.

Как установить:

1. Открываем файл /components/blogs/frontend.php, ищем строки типа
  1. //для редактирования поста
  2. if ($do=='editpost'){
  3. //Проверяем доступ
  4. $is_post_author = $model->isUserPostAuthor($post_id, $user_id);
  5. if (!$myblog && !$is_post_author && !$is_admin) { $inCore->redirectBack(); }
  6. //Получаем исходный пост из базы
  7. $post = $model->getPost($post_id);
  8. if (!$post){ $inCore->redirectBack(); }
и после вставляем
  1. $post = cmsCore::callEvent('EDIT_POST', $post);
Далее ищем строки типа
  1. if ($do == 'delpost'){
  2. $post_id = $inCore->request('post_id', 'int', 0);
  3. $user_id = $inUser->id;
  4. if (!$user_id || !$post_id) { $inCore->redirectBack(); }
  5. $post = $model->getPost($post_id);
  6. if (!$post){ cmsCore::error404(); }
и после вставляем
  1. $post = cmsCore::callEvent('DELETE_POST', $post);
2. Скачиваем архив, распаковываем в корень сайта, заходим в админку, устанавливаем плагин как обычно.

UPD: добавил ограничение на удаление поста, а так же вывод информации — сколько осталось времени на редактирование.

Для InstantCMS 1.10.6

1. Открываем файл /components/blogs/frontend.php, ищем строки
  1. if ($do == 'delpost'){
  2.  
  3. if(!$inUser->id) { cmsCore::error404(); }
  4.  
  5. if(!cmsCore::isAjax()) { cmsCore::error404(); }
  6.  
  7. $post = $inBlog->getPost($post_id);
  8. if (!$post){ cmsCore::halt(); }
и после вставляем
  1. $post = cmsCore::callEvent('DELETE_POST', $post);
2. Тот же файл, ищем строки
  1. if ($do=='newpost' || $do=='editpost'){
  2.  
  3. if (!$inUser->id){ cmsUser::goToLogin(); }
  4.  
  5. // для редактирования сначала получаем пост
  6. if($do=='editpost'){
  7. $post = $inBlog->getPost($post_id);
  8. if (!$post){ cmsCore::error404(); }
  9. $id = $post['blog_id'];
  10. $post['tags'] = cmsTagLine('blogpost', $post['id'], false);
и после вставляем
  1. $post = cmsCore::callEvent('EDIT_POST', $post);
3. Скачиваем плагин для InstantCMS 1.10.6 и устанавливаем как обычно.
0
soxom soxom 12 лет назад #
Супер! Спасибо
+3
Lana Lana 12 лет назад #
Еще бы аналогичный плагтн для запрета редактирования статей, размещенных пользователями :)
0
Daze77 Daze77 12 лет назад #
Он не сможет редактировать запись в блоге? А удалить сможет?
0
Александр Александр 12 лет назад #
Удалить и так можешь вырезать
/templates/_default_/components/com_content_my.tpl

Убери
Код PHP:
<a href="/content/delete{$article.id}.html" title="{$LANG.DELETE}"><img src="/templates/_default_/images/icons/delete.png" border="0"/></a>
+1
deltas deltas 12 лет назад #
если честно - не могу представить зачем это нужно... пост мой - хочу пишу, хочу меняю, удаляю. Это удар по демократии :)
+2
Александр Александр 12 лет назад #
Сразу видно что у Вас нет ресурса где люди много создают статей.

Плагин крайне важен т.к. люди частенько пишут, статьи про индексировались, а в один момент по разным причинам, берут их и удаляют. От этого сайт сильно страдает и люди которые не могут их найти.

Было бы вообще замечательно, если б тоже самое и для раздела статей написали.
+1
nedoriko nedoriko 12 лет назад #
представь себе ситуацию
чел опка..лся, все это видели. после он подмылся и типо ничего не было. так вот данная фишка ограничивает ему отведенное время чтоб подмыться.
правда нужно еще добавить возможность обнулять время (то есть ставить запрет на редактирование) если на его пост уже поступил комментарий.
пс
если честно то я думал у нас это уже все есть. как то даже и не заморачивался по поводу.
+
0
deltas deltas 12 лет назад #
ну да, тогда понятно
+1
Александр Александр 12 лет назад #
Знаете ситуация была еще хуже. Пользователь запостил тему, а потом через неделю ее изменил и насовал туда десятки ссылок и сделал вообще другую статью не по теме сайта. Хорошо, что сообщили другие пользователи. Одним словом когда у тебя десяток новых статей в день, а общее колл-во уходит за 5000 тут уже без этого плагина никак
0
nedoriko nedoriko 12 лет назад #
согласен. +
0
Александр Александр 12 лет назад #
Аха ха ха Вот посмотрите
http://instantcms.ru/forum/thread9591-1.html#75332
прямо в подтверждение моих слов об удалении и мне как назло он тоже нужен -)))
0
reload reload 12 лет назад #
Все время воспринимал блог как что то вроде личного дневника с полезными мыслями))
Так многие пишут, пишут. Поставили многоточие, типа завтра продолжу. В этом по моему и есть удобство блога)
В общем полезный плагин но не везде)
Даже ошибки свои (не обязательно орфографические или грамматические), мысль может не правильно изложил, завтра укажут те на ошибку - а все!) так и будешь с пятном своим))
В общем я к тому что допустим на инстанте точно не прокатил бы такой запрет) Хотя на более специфичных проектах возможно и пользу принесет)
0
nedoriko nedoriko 12 лет назад #
не могу не согласиться. ну эта фишка для форумов хороша. и я ее конечно пока еще несмотрел. но если есть возможность установки такого таймера для комментов а не самого поста. то и для длогов сгодится
0
Daze77 Daze77 12 лет назад #
А можно дописать плагин так, что бы после определенного времени человек не мог удалять запись в блоге?
0
deltas deltas 12 лет назад #
думаю это можно и в самом движке дописать.
например в функции удаления сначала сверялась дата публикации с текущей и т.д.
0
AlexG AlexG 12 лет назад #
А как быть если в посте спустя время необходимо обновить ссылки?
0
nedoriko nedoriko 12 лет назад #
всё элементарно, Ватсон! просто нужно написать новый пост
0
maia maia 12 лет назад #
Fuze, я тебя люблю! Как мне оно надо было!
+4
Fuze Fuze 12 лет назад #

Обновил пост и архив, добавил аналогичное для удаления поста, + теперь выводится информация об окончании срока редактирования.

Те, кто уже установил - переустановите (удалите, затем вновь поставьте) плагин.

0
Katerina Katerina 12 лет назад #
Спасибо большое.

Что-то у меня не хочет нормально работать.
Установила в настройках везде 72 часа. Тестирую, как пользователь.

При редактировании выводит так:"Время на редактирование поста 3", видимо имеется в виду 3 дня...
при попытке удаления примерно так: "Время на удаление поста вышло".
+1
Fuze Fuze 12 лет назад #
При редактировании выводит так:"Время на редактирование поста 3", видимо имеется в виду 3 дня...
добавьте недостающие фразы из файла \languages\ru\lang.php дистрибутива 1.9 в свой соответствующий файл.
0
Katerina Katerina 12 лет назад #
Понятно, спасибо. У меня же 1,8.

А почему не удаляются записи, когда также задано 72?
0
Lexa219 Lexa219 12 лет назад #
Спасибо за плагин. Возможно ли в данный плагин добавить, после редактировании "Активной статьи",статья переходила в статус "На проверке"..
0
lezginka.ru lezginka.ru 12 лет назад #
+
чуть не в тему, но в тему :)
как сделать чтобы в разделы сайта, ВСЕ(юзеры,редакторы и т.д.) могли добавить статьи , точнее отправлять на модерацию.
Проблема в том, что есть выбор ТОЛЬКО для 1 группы, больше выбора нет, а надо больше.
кто знает ?
0
Роксана Роксана 12 лет назад #
А если пользователь удалил профиль, то блог удаляется? Нельзя ли сделать так, чтобы и блог и статьи не удалялись?
+2
Fuze Fuze 12 лет назад #
сказку про золотую рыбку читали?)
плагин можно доработать к своим нуждам, там ничего сложного нет.
А если пользователь удалил профиль, то блог удаляется?
да.
Нельзя ли сделать так, чтобы и блог и статьи не удалялись?
можно
0
letsgo letsgo 12 лет назад #
Очень бы просил такое дополнение, чтобы не удалялись статьи и блог. Эмоции штука постоянная а вот индексация страдает.
0
maia maia 12 лет назад #
Что-то у меня не получается (( После установки плагина начались такие косяки:
1. Если время выставлено, как 0, то пост нормально удаляется. Если на какой-то другой срок, то не удаляется, а постоянно выводится вопро - на самом ли деле я хочу его удалить.
2. Редактировать теперь вообще не получается при любом сроке. После клика на редактирование, открывается окно редактора, но пустое. То есть вообще без самого поста.
В чем может быть проблема? Версия 1.9.
+3
spacer spacer 12 лет назад #
Очень интересно, но блоггеров ущемлять этим ограничением не хочу.
Другое дело - статьи.
Есть аналогичный хак для статей?

Спасибо
0
Таня Таня 11 лет назад #
С удалением что-то не то. Какое время не задаешь, все равно пишет сразу же "Время на удаление поста блога вышло.", хотя установлено час, еще и минуты не прошло после публикации, а уже нельзя удалить.
+1
Александр Александр 10 лет назад #
а для 1.10.* никто не пробовал например версии 1.10.3-4 ?
0
Dorimen Dorimen 9 лет назад #
Тоже интересуюсь для 1.10.*
0
Fuze Fuze 9 лет назад #
Добавлена поддержка 1.10.6 и ограничение редактирования статей по времени. Пост обновлен.
0
NIKITA NIKITA 8 лет назад #
при попытке удаления примерно так: "Время на удаление поста вышло". Хотя в админке выставлено 4 часа.
Версия 1.10.6
""

Еще от автора

InstantCMS 2.17.0 релиз-кандидат
Тестируем релиз-кандидат InstantCMS 2.17.0. От того, как мы с вами выявим баги в новой версии, зависит стабильность релиза.
Как собрать обновление и релиз InstantCMS
Небольшой экскурс в сборку дистрибутива установки и обновления InstantCMS с GitHub.
InstantCMS 2.14.0 release candidate
Здравствуйте Тестируем релиз-кандидат InstantCMS 2.14.0. От того, как мы с вами выявим баги в новой версии, зависит стабильность релиза.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.