Это старая версия документа.


Info

Модуль предназначен для введения возможностей универсальных комментариев для любого объекта в системе.

На данный момент поддерживается возможность ведения текстовых коментариев.
В дальнейшем планируются ведение координат и фотографий объекта.

Установка

Создать таблицы в базе.

# mysql -D abills < db/Info.sql

Подключение модуля. abills/libexec/config.pl

@MODULES = (
             'Info'
            );

Структура

Модуль состоит из файлов:

  • ABills\mysql\Info.pm
  • Abills\modules\Info\webinterface
  • cgi-bin\styles\default_adm\js\info.js

В файле cgi-bin\styles\default_adm\js\info.js содержатся JavaScript функции для реализации AJAX технологии.
Это позволяет удалять, добавлять и обновлять блок комментариев без перезагрузки страницы.

Использование

Для отображения блока комментариев используется функция show_comments($object_type, $object_id, $attr).
Аргументы функции:

  • $object_type - тип объекта (Название таблицы). Служит для создания уникального ключа идентификации комментариев.
  • $object_id - id объекта
  • $attr - дополнительные атрибуты для tpl_show();

Результатом выполнения функции будет вывод HTML-кода с блоком комментариев, в котором присутствуют кнопки для добавления и удаления комментариев.


Каждому добавленному комментарию присваивается текущее время и id администратора, который добавил комментарий.

Пример:

  load_module('Info', $html);
  info_show_comments('admins', 25); # Show comments for 'admins' table object with id 25

Внешний API модуля

Для получения списка комментариев используется функция $Info→get_comments ($type, $id, $attr)
Аргументы функции:

  • $object_type - тип объекта (Название таблицы). Служит для создания уникального ключа идентификации комментариев.
  • $object_id - id объекта
  • $attr - дополнительные атрибуты для SQL-запроса (SORT, PAGE_ROWS , DESC, PG);


Возвращает массив комментариев для объекта.
Пример:

my $comments = $Info->get_comments('admins', 2, { COLS_NAME => 1 });


В переменной $comments получим указатель на массив со структурой:

 
    [
      {
        'id'         => 2,                        # Id of comment in `comments` table
        'text'       => 'This guy is awesome',    # Text of comment
        'date'       => '01.01.2016 01:02:59',    # DateTime when comment was leaved
        'name'       => 'John'                    # Name of administrator who leaved comment
      }
    ]