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

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


adcomments

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
adcomments [2014/12/17 04:59]
adcomments [2023/05/19 16:04] (поточний)
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 є декілька публічних методів: 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 - якщо нема
 +             $adcommentsCount=$adcomments->getCommentsCount($id);
 +             }
 +          } 
 +        }
 +
 +</code>