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

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


Сайдбар

Розділи

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

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 начиная с Ubilling 0.6.2 появились несколько прубличных метододов: 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 - если нету.
             $adcommentsFlag=$adcomments->getCommentsCount($id);
             }
          } 
        }
adcomments.1664019551.txt.gz · Востаннє змінено: 2022/09/24 14:39 повз 127.0.0.1