Користувальницькькі налаштування

Налаштування сайту


adcomments

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
Остання ревізія По сторонах наступні версії
adcomments [2014/12/17 05:04]
adcomments [2023/05/19 15:58]
nightfly
Рядок 1: Рядок 1:
 +====== Додаткові примітки ======
  
 +В Ubilling починаючи зі стабільного релізу 0.6.1 з'явилась можливість використовувати у модулях загальну реалізацію додаткових коментарів.\\
 +З точки зору юзабіліті, це має виглядати як... грубо форум з розділами, що є по своїй суті представленнями сутностей білінгу, і топіками прив'язаними до конкретних об'єктів у рамках цих сутностей.\\ 
 +З точки зору інтеграції в якийсь абстрактний модуль, який працює з якимись абстрактними об'єктами, все дуже просто:
 +
 +<code php>
 +  //Можливо комусь не хочеться використати всю цю радість,
 +  //Тому перевіряємо чи включена відповідна опція в конфізі alter.ini
 +        $altCfg=$ubillingConfig->getAlter();
 +        if ($altCfg['ADCOMMENTS_ENABLED']) {
 +            //в конструкторі класу передаємо назву сутності/модуля(scope), з яким пов'язані конкретні об'єкти
 +            $adcomments=new ADcomments('ABSTRACTMODULE');
 +            
 +            //вивалюємо рендер існуючих/потенційних коментів для конкретного об'єкта (item) пов'язаного з нашою сутністю
 +            show_window(__('Additional comments'), $adcomments->renderComments($itemId));
 +        }
 +</code>
 +
 +В результаті отримуємо щось на кшталт такого:\\
 +
 +{{:undefined:adcommentsdev2.png|}}
 +
 +Все формочки для создания,редактирования,удаления примечаний - полностью самодостаточны, и присутствуют в возвращаемом методом renderComments() результате. 
 +Итого, в сухом остатке - две строчки. Создали объект класса ADcomments + показали ему, для кого хотим комментарии. Куда проще? 
 +
 +А что если мы хотим предварительно показать для каких объектов в списке, уже есть существующие дополнительные примечания, но не хотим дергать базу по этому поводу каждый раз? А все так же очень просто. Для этого в ADcomments начиная с Ubilling 0.6.2 появились несколько прубличных метододов: haveComments (возвращает bool) и getCommentsIndicator (возвращает string) а также getCommentsCount (int). Параметром для них передается конкретный item в ранее инициализированном конструктором scope. Относительно нашего предыдущего абстрактного примера это должно выглядеть как-то так: 
 +
 +<code php>
 +//допустим, что все объекты нашего абстрактного модуля лежат в массиве $all вида $itemId=>$itemData
 +
 +        $altCfg=$ubillingConfig->getAlter();
 +        if ($altCfg['ADCOMMENTS_ENABLED']) {
 +            // Один раз создали объект. Забыли.
 +            $adcomments=new ADcomments('ABSTRACTMODULE');
 +        }
 +        
 +        if (!empty($all)) {
 +         // перебираем айтемы поштучно
 +          foreach ($all as $id=>$data) {
 +          //не забываем проверять, включена ли фича, и соответственно есть ли у кого спрашивать.
 +           if ($altCfg['ADCOMMENTS_ENABLED']) {
 +             //получаем иконку дополнительных комментариев если они присутствуют для него. Вторым параметром можно передать размер.
 +             $indicatorIcon=$adcomments->getCommentsIndicator($id);
 +             
 +             //ну и если хотим какой-то флаг поднять - вот вам булевое значение
 +             $adcommentsFlag=$adcomments->haveComments($id);
 +             
 +             //также можем отдельно получить количество комментариев для айтема. Да 0 - если нету.
 +             $adcommentsFlag=$adcomments->getCommentsCount($id);
 +             }
 +          } 
 +        }
 +
 +</code>
adcomments.txt · Востаннє змінено: 2023/05/19 16:04 повз nightfly