http://dev.jast.ru 


NAME

TblEdit - библиотека для просмотра и редактирования таблиц БД.


DESCRIPTION

В библиотеке TblEdit реализованы функции обработки команд

показать всю таблицу
вывести строку таблицы для просмотра
вывести строку таблицы для редактирования
вывести форму для ввода новой строки
сохранить изменения
удалить строку

Соответствующие методы возвращают 1 при успехе операции или 0 при ошибке и заполняют передаваемый им в аргументах хэш соответствующими результату полями.


CONFIGURATION

Все настройки, необходимые для показа таблицы и редактирования строк, представлены в двух атрибутах класса:

  tableConfig - хэш описания таблицы. Имеет следующие поля:
      config_id     - идентификатор конфигурации tbledit
      table_title   - название таблицы
      table_keys    - имена полей, входящих в ключ (разделенные запятой)
      table_fields  - имена полей table_sql в порядке формата fmt_tablerow
      table_sql     - запрос для вывода таблицы
      row_sql       - запрос для вывода строки
      del_sql       - запрос для удаления строки
      upd_sql       - запрос для изменения строки
      ins_sql       - запрос для добавления новой строки
      upd_fields    - имена полей для upd запроса
      fmt_header    - формат (printf) вывода строки заголовков при просмотре таблицы
      fmt_tablerow  - формат (printf) вывода полей строки при просмотре таблицы
      fmt_row       - формат (printf) вывода поля при просмотре строки
      fmt_view      - формат (printf) ссылки на форму просмотра
      fmt_edit      - формат (printf) ссылки на форму редактирования
      fmt_ins       - формат (printf) ссылки на форму новой строки
      fmt_del       - формат (printf) ссылки удаления строки
      Поля, не используемые библиотекой, но включенные в структуру для
      удобства использующих ее программ:
      fields_sql    - запрос для таблицы описания полей. Используется для получения
                      атрибута конфигурации rowConfig (см. ниже).
      tmpl_table    - темплейт просмотра таблицы
      tmpl_row      - темплейт просмотра строки
      tmpl_row_edit - темплейт редактирования строки
      tmpl_saved    - темплейт страницы "изменения сохранены"
      tmpl_deleted  - темплейт страницы "строка удалена"
      tmpl_error    - темплейт страницы про ошибку удаления
  rowConfig - список хешей описаний полей для построчного просмотра/редактирования
    Для каждого выводимого/редактируемого поля хэш содержит поля:
      config_id    - идентификатор конфигурации tbledit
      type_id      - Идентификатор типа
      order_id     - номер в списке
      is_readonly  - Поле не изменяемо в режиме редактирования
      is_escape    - заменять < на &lt при просмотре
      vdefault     - Значение по умолчанию
      type_def     - аргументы типа (описаны в vartype.def_desc)
      name         - название поля
      note         - комментарий при редактировании

Идентификатор типа и аргументы типа определяют, каким образом будет выведено значение поля, и имеют следующие значения:

  Ид  Тип     Содержимое поля "Описание типа"
  1 Строка    длина строки (значение size элемента <input type=text>) при редактировании
  2 Текст     количество строк в элементе <textarea> при редактировании
  3 Радио     перечисленные через запятую пары код:название для элемента <input type=radio>,
              код будет помещен в атрибут value, название - справа от элемента
  4 Селект    перечисленные через запятую пары код:название для элемента <select>,
              код и название будут использованы в элементе <option>
  5 СелектБД  SQL возвращающий список пар [код, название]. Результат используется аналогично 4

Значения этих атрибутов формируются произвольным внешним способом и передаются объекту после его создания (в методе init)

Методы, реализованные в библиотеке:

new - Конструктор экземпляра класса.
Аргументы: хэш из двух полей (перечислены в константе CONFIG):
    req - объект интерфейса к web-серверу - класса TblEdit::Request или с аналогичными методами
    db - объект интерфейса к БД - класса TblEdit::DB или с аналогичными методами

Пример:

    my $req = TblEdit::Request->new({ prefix => CONFIG_PREFIX});
    my $dbconf = $req->getConf(TblEdit::DB::CONFIG);
    my $db = TblEdit::DB->new(%$dbconf);
    my $server = TblEdit->new({ req => $req, db => $db});

init - Инициализация настроек модуля
Используется для удобства задания значения атрибутов tableConfig и rowConfig

Аргументы:

    tableConfig - хэш описания таблицы
    rowConfig - список хешей описаний полей для построчного просмотра/редактирования

Пример:

    my $tableConfig = $db->hash($conf->{'SQL'});
    $server->init
    (
      $tableConfig,
      $db->arrayHash($tableConfig->{'fields_sql'})
    );

conf - Доступ по ключу к хэшу описания таблицы
Аргументы:
    $key - ключ хэша tableConfig

Пример:

    my $fields_sql = $server->conf('fields_sql')

getConf - Получить часть хэша описания таблицы по списку ключей
Аргументы:
    @keys - список ключей хэша tableConfig

Пример:

    my $conf = $server->getConf(TblEdit::Template::CONFIG);

rowKeys - список ключевых полей
Аргументы:
    нет

Пример:

    # список значений ключевых полей из аргументов запроса
    my @ret = map { $self->{'req'}->param($_) } @{$self->rowKeys};

Возвращаемое значение:

    список полей, полученный из строки поля конфигурации table_keys

getTable - Получить html-код содержимого таблицы
Аргументы:
    \%ret - хэш для возврата результата

Пример:

    $self->getTable($ret);

Заполняемые поля хэша-результата:

    DATA - html-код строк таблицы
    BTN_INS - html-код ссылки на добавление новой записи

Возвращаемое значение:

    Всегда 1
    Неуспех выполнения SQL или доступа к настройкам - это ошибка конфигурации,
    приводящая к die и последующему error 500

getRow - Получить html-код таблицы просмотра/редактирования строки
Аргументы:
    \%ret   - хэш для возврата результата
    $mode   - режим вывода 
      0 - просмотр 
      1 - редактирование 
      2 - редактирование новой строки
      3 - редактирование после ошибки
    \%error - хэш данных из предыдущего редактирования строки с полями
        ERROR   => "" - строка системной ошибки БД (если возникла)
        errors => {} - хэш кодов ошибок в полях из предыдущего редактирования
        values => {} - хэш введенных значений из предыдущего редактирования
    Хэш %error формируется в методе saveRow и используются только при $mode == 3
    Так же при $mode == 3 значения берутся из аргументов запроса и
    для $mode используется значение аргумента _mode

Пример:

    $self->getRow($ret, 0);
    или
    $self->getRow($ret, 3, $ret1);

Заполняемые поля хэша-результата:

    ERROR  - строка системной ошибки БД (если возникла)
    DATA  - html-код строк таблицы
    MODE  - значение для hidden поля формы _mode (позволяет в save отличать ins от edit)
    BTN_DEL - html-код ссылки на добавление новой записи (кроме $mode == 2)
    BTN_EDIT - html-код ссылки на редактирование записи (если $mode == 0)
    BTN_VIEW - html-код ссылки на форму просмотра записи (если $mode == 1)

Возвращаемое значение:

    Всегда 1
    Неуспех выполнения SQL чтения данных или доступа к настройкам - это ошибка
    конфигурации, приводящая к die и последующему error 500

saveRow - Сохранение измененной строки в БД
Аргументы:
    \%ret - хэш для возврата результата

Пример:

    my $ret1 = {};
    if ( $self->saveRow($ret1) )
    {
      # данные сохранены успешно
      return 'tmpl_saved';
    }
    else
    {
      $self->getRow($ret, 3, $ret1->{'values'}, $ret1->{'errors'});
      return 'tmpl_row_edit';
    }

Заполняемые поля хэша-результата:

    Только в случае ошибок заполняется элементами вида
      {имя_поля} = "текст ошибки из БД"

Возвращаемое значение:

    1 - при успехе
    0 - при ошибках, тогда %$ret содержит возвращенный БД список кодов ошибок в полях

delRow - Удаление строки
Аргументы:
    \%ret - хэш для возврата результата

Пример:

    my $ret1 = {};
    if ( $self->delRow($ret) )
    {
      # успешное удаление
      return 'tmpl_deleted';
    }
    else
    {
      # при удалении возникли ошибки
      return 'tmpl_error';
    }

Заполняемые поля хэша-результата:

    Только в случае ошибок заполняется элементом
      {ERROR} = "текст ошибки из БД"

Возвращаемое значение:

    1 - при успехе
    0 - при ошибках, тогда %$ret содержит поле ERROR - сообщение БД об ошибке

_args - список значений ключевых полей из аргументов запроса
Приватный метод

Аргументы:

    нет

Пример:

    # список значений ключевых полей из аргументов запроса
    my @row_keys = @{$self->_args};

Возвращаемое значение:

    список значений ключевых полей

_split - получение списка значений из строки-параметра конфигурации, в которой значения разделены запятой
Приватный метод

Аргументы:

    $key - ключ хэша конфигурации

Пример:

    # список ключевых полей
    my @key_fields = $self->_split('table_keys');

Возвращаемое значение:

    список, полученный из строки поля конфигурации

_list_value - получить значение из списка, соответствующее ключу
Приватный метод

Аргументы:

    $key - ключ
    \@list - список пар [ ключ, значение_ключа ]

Пример:

    $f = _list_value($f, $typeVars);

Возвращаемое значение:

    значение_ключа, для которого ключ == $key

_format_field - получить html код для поля согласно его типу.
Приватный метод

Аргументы:

    $type
    $typeDef
    $typeVars
    $name
    $value

Пример:

    $s .= _format_field($fld->{'type_id'}, $fld->{'type_def'}, $fld->{field_name}, $value);

Возвращаемое значение:

    html код


AVAILABILITY

The latest version of the tarball, RPM and SRPM may always be found at:

    http://dev.jast.ru/tbledit


AUTHOR

Alexey Kovrizhkin <jean@jast.ru>


COPYRIGHT

Copyright (C) 2006 Alexey Kovrizhkin

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

$Id: TblEdit.html,v 1.1 2006/06/29 19:12:18 aleko Exp $

 $Name: v1-07 $   (c) 2002-2006, Алексей А. Коврижкин
jean@jast.ru