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

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


Сайдбар

Розділи

Загальний опис
Історія змін
Рекомендації до оновлення
Плани на майбутнє
Відомі проблеми
Онлайн демо
Відео
Допомога проекту
Люди
Трохи про безпеку

FAQ



Редагувати сайдбар

adcomments

Додаткові примітки

В Ubilling починаючи зі стабільного релізу 0.6.1 з'явилась можливість використовувати у модулях загальну реалізацію додаткових коментарів.
З точки зору юзабіліті, це має виглядати як… грубо форум з розділами, що є по своїй суті представленнями сутностей білінгу, і топіками прив'язаними до конкретних об'єктів у рамках цих сутностей.
З точки зору інтеграції в якийсь абстрактний модуль, який працює з якимись абстрактними об'єктами, все дуже просто:

  //Можливо комусь не хочеться використати всю цю радість,
  //Тому перевіряємо чи включена відповідна опція в конфізі alter.ini
        $altCfg=$ubillingConfig->getAlter();
        if ($altCfg['ADCOMMENTS_ENABLED']) {
            //в конструкторі класу передаємо назву сутності/модуля(scope), з яким пов'язані конкретні об'єкти
            $adcomments=new ADcomments('ABSTRACTMODULE');
 
            //вивалюємо рендер існуючих/потенційних коментів для конкретного об'єкта (item) пов'язаного з нашою сутністю
            show_window(__('Additional comments'), $adcomments->renderComments($itemId));
        }

В результаті отримуємо щось на кшталт такого:

Всі формочки для створення, редагування, видалення приміток - повністю самодостатні, і присутні у результаті, що повертається методом renderComments(). У сухому залишку - два рядки на все. Створили об'єкт класу ADcomments+, показали йому, для кого хочемо коментарі. Куди простіше?

А якщо ми хочемо попередньо показати для яких об'єктів у списку, вже є існуючі додаткові примітки, але не хочемо смикати базу з цього приводу щоразу? А так само дуже просто. Для цього в ADcomments є декілька публічних методів: haveComments (повертає bool) і getCommentsIndicator (повертає string) та getCommentsCount (повертає int). Параметром для них передається конкретний item у раніше ініціалізованому конструктором scope. Щодо нашого попереднього абстрактного прикладу це має виглядати якось так:

//припустимо, що всі об'єкти нашого абстрактного модуля лежать у масиві $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);
             }
          } 
        }
adcomments.txt · Востаннє змінено: 2023/05/19 16:04 повз nightfly