Закрыть открыть комментарии чекбоксами

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 19 июля 2022 в 23:01

Кто-нибудь уже реализовывал при создании контента закрыть / открыть комментарии чекбоксами /тумблером? Поделитесь плиз 

#2 20 июля 2022 в 06:27

А чем селектор не устраивает?

Изображение

#3 20 июля 2022 в 07:33

А чем селектор не устраивает?

Изображение

Loadырь

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

Даже здесь, на форуме тумблеры )Изображение

#4 20 июля 2022 в 07:49

В 2.15.2 появились радиобатоны

Изображение

После этой строки github.com/instantsoft/icms2/blob/master/system/controllers/comments/hooks/content_item_form.php#L25 добавить это

  1. 'options' => ['as_radio_btn' => true],
Добавлено спустя 6 минут

Но это всё правки системных файлов. Можно хуком в своем личном компоненте это изменить, но там правок будет больше, чем одна строка. Для чекбокса надо изменить fieldList в этой строке github.com/instantsoft/icms2/blob/master/system/controllers/comments/hooks/content_item_form.php#L24 на fieldCheckbox, но выглядит это уныло.

#5 20 июля 2022 в 07:52

В 2.15.2 появились радиобатоны

Изображение

После этой строки github.com/instantsoft/icms2/blob/master/system/controllers/comments/hooks/content_item_form.php#L25 добавить это

  1. 'options' => ['as_radio_btn' => true],

Но это всё правки системных файлов. Можно хуком в своем личном компоненте это изменить, но там правок будет больше, чем одна строка. Для чекбокса надо изменить fieldList в этой строке github.com/instantsoft/icms2/blob/master/system/controllers/comments/hooks/content_item_form.php#L24 на fieldCheckbox, но выглядит это уныло.

Loadырь

Спасибо, ну значит унылый сайт у меня будет )

#6 20 июля 2022 в 07:57

По уму так надо сделать

  1. <?php
  2.  
  3. class onCommentsContentItemForm extends cmsAction {
  4.  
  5. public function run($data) {
  6.  
  7. list($form, $item, $ctype) = $data;
  8.  
  9. // если разрешено отключать комментарии к записи
  10. if(cmsUser::isAllowed($ctype['name'], 'disable_comments') && !empty($ctype['is_comments'])){
  11.  
  12. $labels = get_localized_value('comments_labels', $ctype['options']);
  13.  
  14. if($labels){
  15.  
  16. $this->setLabels($labels);
  17.  
  18. }
  19.  
  20. $fieldset_id = $form->addFieldset('', 'is_comment', array(
  21. 'is_collapsed' => !empty($ctype['options']['is_collapsed']) && in_array('is_comment', $ctype['options']['is_collapsed'])
  22. ));
  23.  
  24. $form->addField($fieldset_id, new fieldCheckbox('is_comments_on', array(
  25. 'title' => $this->labels->commenting,
  26. 'default' => 1,
  27. )));
  28.  
  29. }
  30.  
  31. return array($form, $item, $ctype);
  32.  
  33. }
  34.  
  35. }
#7 20 июля 2022 в 23:01

По уму так надо сделать

  1. <?php
  2.  
  3. class onCommentsContentItemForm extends cmsAction {
  4.  
  5. public function run($data) {
  6.  
  7. list($form, $item, $ctype) = $data;
  8.  
  9. // если разрешено отключать комментарии к записи
  10. if(cmsUser::isAllowed($ctype['name'], 'disable_comments') && !empty($ctype['is_comments'])){
  11.  
  12. $labels = get_localized_value('comments_labels', $ctype['options']);
  13.  
  14. if($labels){
  15.  
  16. $this->setLabels($labels);
  17.  
  18. }
  19.  
  20. $fieldset_id = $form->addFieldset('', 'is_comment', array(
  21. 'is_collapsed' => !empty($ctype['options']['is_collapsed']) && in_array('is_comment', $ctype['options']['is_collapsed'])
  22. ));
  23.  
  24. $form->addField($fieldset_id, new fieldCheckbox('is_comments_on', array(
  25. 'title' => $this->labels->commenting,
  26. 'default' => 1,
  27. )));
  28.  
  29. }
  30.  
  31. return array($form, $item, $ctype);
  32.  
  33. }
  34.  
  35. }
Loadырь

Спасибо, то что надо 

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.