ng.base.form
2009-08-13 17:53Продукт ng.base.form - основа для создания компонентов, позволяющих редакторам использующих их сайтов настраивать через веб формы для конечного пользователя.
Продукт
| Название: | |
| ng.base.form | |
| Репозиторий |
Краткое описание пакета ng.base.form
Пакет предоставляет возможность разработки продуктов, позволяющих через веб-интерфейс задать поля и умолчания формы и затем вызывать ее, обрабатывая введенные данные специфичным для продукта способом. Таким образом созданы продукты ng.app.registry и ng.app.mailform.
Основная составная часть ng.base.form - контейнер, в котором можно создать поля формы и задать для них ограничения и значения по умолчанию.
Использование продуктов на основе ng.base.form
Любой продукт на основе ng.base.form предоставляет упорядоченный контейнер, в котором создаются элементы, описывающие поля формы. Существуют поля следующих типов:
- INT
- Поле позволяет ввести целочисленное значение. Настройки поля примерно соответствуют описанию поля ng.schema.Int;
- Textline
- Поле позволяет ввести одну строку текста. Настройки поля примерно соответствуют описанию поля ng.schema.Textline;
- Text
- Поле позволяет ввести многострочный текст. Настройки поля примерно соответствуют описанию поля ng.schema.Text;
- Regexp
- Поле позволяет ввести одну строку текста, проверить ее на соответствие регулярному выражению, и выполнить несколько последовательных операций переписывания введенного значения. Настройки поля подробно описаны в описании поля RegExp.
Самым удобным полем является поле RegExp, позволяющее создать понятную пользователю диагностику и привести введенное значение к некоторому "нормальному" виду.
После того, как настройка продукта на основе ng.base.form выполнена, для этого продукта можно вызвать следующие виды:
- form.html
- Соответствует обычной форме редактирования и может использоваться в стандартном интерфейсе редактирования для решения каких-либо административных задач;
- dialog.html
- Специальная форма, ориентированная на конечного пользователя. Возможности настройки, предоставляемые продуктом ng.base.form позволяют указать текст, отображемый пользователю после отправки формы, и другие настройки.
Экземпляры объектов, созданных на основе ng.base.form можно регистрировать как утилиты с интерфейсом ng.base.form.interfaces.IFormDialog и вызывать форму для заполнения через пространство имен dialog под указанным именем (если утилита зарегистрирована под именем feedback, то форму можно вызвать как "/++dialog++feedback").
Способ обработки значений, введенных в форму, зависит от реализации продукта, основанного на ng.base.form.
Разработка продуктов на основе ng.base.form
Разработка продукта на основе ng.base.form включает в себя создание контент-класса, унаследованного от ng.base.form.form.Form, и реализация для этого класса интерфейса **** (непосредственно или с использованием адаптера). Пример такого класса:
from ng.base.form.formcontainer import Form
class MailForm(Form,Persistent) :
implements(IFormDialog,I)
value = u""
def do(self,d,**kw) :
self.value = "\n".join( [str(x) + ":" + str(y) for x,y in d.items()])
Этот класс сохраняет введенные в форме значения в виде текста в атрибуте value, который потом может как-то использоваться.
Заключение
На основе продукта ng.base.form удобно создавать средства интерактивной работы конечных пользователей сайтов, позволяющие настраивать их редакторам сайта через веб.


