Изменения

Модуль editgeneric (Sway)

2906 байтов добавлено, 20:49, 20 августа 2009
Новая: '''editgeneric''' — тривиальный модуль для построения интерфейсов редактирования, пропагандирующий, я наде...
'''editgeneric''' — тривиальный модуль для построения интерфейсов редактирования, пропагандирующий, я надеюсь, правильно разделение всего процесса на стадии.

* Проверка доступа (check_access)
* Извлечение и проверка данных из параметров запроса (check_data)
* Извлечение данных из базы данных приложения / откуда угодно (fetch)
* Объединение данных из базы и изменений, вытащенных check_data (merge)
* Дополнение и вывод объединённых данных в шаблон (template)
* Выполнение изменений (save)

Общий порядок параметров всех хуков: (\%param, \%rv, $data, $olddata). Все аргументы передаются хукам merge и template, первые 3 — хуку save, остальным только первые 2.

== Алгоритм ==

Порядок действий:

# Если умеем, проверить доступ (выполнить check_access, если функция существует)
#: Если она что-то вывела в \%rv (данные шаблона), вернуть \%rv
#: Иначе просто отдать статус HTTP ''403 Forbidden''
# Если умеем, выполнить check_data, и получить $data (вероятно хешреф)
# Если задан параметр <code>'''do'''</code>, перейти к выполнению действия:
## Если функция check_data задана, но вернула ЛОЖЬ, вернуть ошибку
## Если функция save задана, выполнить её, если она вернёт ЛОЖЬ, вернуть ошибку
## Если функция save не задана или вернула ИСТИНУ, отдать перенаправление на URL edit_from_uri из параметров запроса (URL, по которому была форма редактирования)
# Если умеем, выполнить fetch и получить от него $olddata
# Если умеем, выполнить merge и получить от него $data объединённый с $olddata
#: Если не умеем, просто дописать в хеш %$data значения из %$olddata, не заданные в %$data
#: Если $data — не хешреф, то не делать этого :-)
# Если умеем, выполнить template, он выведет $data и $olddata в \%rv
#: Если не умеем, просто записать data в $rv по ключу data, а $olddata по ключу olddata.

[[Категория:Sway]]