Как запретить редактирование записей после одобрения?

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 13 августа 2018 в 10:08
Стоит задача в типе контента запретить редактирование записей только после того как ее одобрил модератор! Как это сделать?
#2 13 августа 2018 в 10:20
Рачей, написать малюсенький компонент, который будет в поле, скажем, odobreno ставить единичку после одобрения модератором.
И проверять при редактировании, что в этом поле стоит. Если единичка, выводить в сессион-мессадж уведомление.
#3 13 августа 2018 в 10:31


Рачей, написать малюсенький компонент, который будет в поле, скажем, odobreno ставить единичку после одобрения модератором.
И проверять при редактировании, что в этом поле стоит. Если единичка, выводить в сессион-мессадж уведомление.

Zau4man

ну а как это дело связать с пунктом меню который не должен показываться
#4 13 августа 2018 в 11:39
Рачей, попробовать отредактировать кнопочки в хуке

  1. $buttons_hook = cmsEventsManager::hook('ctype_item_tool_buttons', array(
  2. 'params' => array($ctype, $item, $is_moderator, $childs),
  3. 'buttons' => $tool_buttons
  4. ));
который вызывается в system\controllers\content\actions\item_view.php

Честно, не делал, но почти уверен, что это то, что нужно.
#5 15 августа 2018 в 11:17


Рачей, попробовать отредактировать кнопочки в хуке

  1. $buttons_hook = cmsEventsManager::hook('ctype_item_tool_buttons', array(
  2. 'params' => array($ctype, $item, $is_moderator, $childs),
  3. 'buttons' => $tool_buttons
  4. ));
который вызывается в system\controllers\content\actions\item_view.php

Честно, не делал, но почти уверен, что это то, что нужно.

Zau4man
только хука у меня такого не наблюдается,-(
где его найти ctype_item_tool_buttons?
#7 15 августа 2018 в 19:56


Рачей, в 2.10.1 есть github.com/instantsoft/icms2/blob/5c18d1a4be61cbbd724c192bc900bfc1c5abf332/system/controllers/content/actions/item_view.php#L540
Наверно, стоит обновиться...

Zau4man

класс… вот бы еще там сделали возможность менять название "выберите категорию" а то оно зашито… капец прям какой-то…
#9 24 августа 2018 в 16:17
Рачей, так оно меняется не в настройках.
Его можно изменить с помощью хука ctype_item_tool_buttons в своем компоненте.
#10 24 августа 2018 в 17:13


Рачей, так оно меняется не в настройках.
Его можно изменить с помощью хука ctype_item_tool_buttons в своем компоненте.

Zau4man

Так у меня нет компонента. Мне надо в стандартном сделать что бы не могли… Сча попробую ковырнуть. А то руки у всех шаловливые… Лезут куда не попадя…
#11 24 августа 2018 в 17:26
Ну меню я скрыл таким образом… Но это не панацея. Кто захочет отредактирует. Набрав в строке… /edit/###

  1.  
  2. if ($item['is_approved'] != '1') {
  3. $buttons_hook = cmsEventsManager::hook('ctype_item_tool_buttons', array(
  4. 'params' => array($ctype, $item, $is_moderator, $childs),
  5. 'buttons' => $tool_buttons
  6. ));
  7.  
  8.  
  9. $buttons_hook = cmsEventsManager::hook($ctype['name'].'_ctype_item_tool_buttons', array(
  10. 'params' => array($ctype, $item, $is_moderator, $childs),
  11. 'buttons' => $buttons_hook['buttons']
  12. ));
  13. }
  14.  
Как на уровне системы запретить редактирование?
#12 24 августа 2018 в 17:33

Как на уровне системы запретить редактирование?

Рачей
Хуком content_edit
#13 24 августа 2018 в 17:34


Как на уровне системы запретить редактирование?

Рачей
Хуком content_edit

Loadырь

а это что я сделал вернуть как было?
#14 24 августа 2018 в 17:38

вернуть как было?

Рачей
Нет, этим же вы спрятали сами кнопки, а в хуке content_edit вы выведете условие
  1. if (!cmsUser::isAdmin() && !empty($item['is_approved'])){ cmsCore::error404; } // как-то так
#15 24 августа 2018 в 18:02


вернуть как было?

Рачей
Нет, этим же вы спрятали сами кнопки, а в хуке content_edit вы выведете условие
  1. if (!cmsUser::isAdmin() && !empty($item['is_approved'])){ cmsCore::error404; } // как-то так

Loadырь

спасибо, не получилось.

  1.  
  2. class onContentContentEdit extends cmsAction {
  3.  
  4. public function run($item){
  5.  
  6. if (!cmsUser::isAdmin() && $item['is_approved'] == '1') {
  7.  
  8. cmsCore::error404();
  9.  
  10. } // как-то так
  11.  
  12. else {
  13.  
  14. return $item;
  15.  
  16. }
  17.  
  18. }
  19.  
  20. }
  21.  
На админа реагирует на $item['is_approved'] нет
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.