start documenting forms
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Wed, 03 Feb 2010 20:34:44 +0100
changeset 4443 83ff2bb898a5
parent 4442 7bc0e4ed4109
child 4444 fd80a06227b3
start documenting forms
doc/book/en/development/devweb/form.rst
web/formfields.py
--- a/doc/book/en/development/devweb/form.rst	Wed Feb 03 20:33:49 2010 +0100
+++ b/doc/book/en/development/devweb/form.rst	Wed Feb 03 20:34:44 2010 +0100
@@ -1,28 +1,69 @@
 Form construction
 ------------------
+CubicWeb provides usual form/field/widget/renderer abstraction to provde
+some generic building blocks which will greatly help you in building forms
+properly integrated with |cubicweb| (coherent display, error handling, etc...)
 
-Forms
-~~~~~
-XXX feed me
-:Vocabulary control on relations:
+A form basically only hold a set of fields, and is bound to a renderer that is
+responsible to layout them. Each field is bound to a widget that will be used
+to fill in value(s) for that field.
+
+The Field class and basic fields
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. autoclass: cubicweb.web.formfields.Field
+
+
+Existing field types are:
 
-  * `vocabulary(rtype, x='subject', limit=None)`, called by the
-    editing views, it returns a list of couples (label, eid) of entities
-    that could be related to the entity by the relation `rtype`
-  * `subject_relation_vocabulary(rtype, limit=None)`, called internally
-    by  `vocabulary` in the case of a subject relation
-  * `object_relation_vocabulary(rtype, limit=None)`, called internally
-    by  `vocabulary` in the case of an object relation
-  * `relation_vocabulary(rtype, targettype, x, limit=None)`, called
-    internally by `subject_relation_vocabulary` and `object_relation_vocabulary`
+.. autoclass: cubicweb.web.formfields.StringField
+.. autoclass: cubicweb.web.formfields.PasswordField
+.. autoclass: cubicweb.web.formfields.RichTextField
+.. autoclass: cubicweb.web.formfields.FileField
+.. autoclass: cubicweb.web.formfields.EditableFileField
+.. autoclass: cubicweb.web.formfields.IntField
+.. autoclass: cubicweb.web.formfields.BooleanField
+.. autoclass: cubicweb.web.formfields.FloatField
+.. autoclass: cubicweb.web.formfields.DateField
+.. autoclass: cubicweb.web.formfields.DateTimeField
+.. autoclass: cubicweb.web.formfields.TimeField
+.. autoclass: cubicweb.web.formfields.RelationField
+.. XXX still necessary?
+.. autoclass: cubicweb.web.formfields.CompoundField
 
-Fields
-~~~~~~
-XXX feed me
 
 Widgets
 ~~~~~~~
-XXX feed me
+Base class for widget is :class:cubicweb.web.formwidgets.FieldWidget class.
+
+Existing widget types are:
+.. autoclass: cubicweb.web.formwidgets.HiddenInput
+.. autoclass: cubicweb.web.formwidgets.TextInput
+.. autoclass: cubicweb.web.formwidgets.PasswordInput
+.. autoclass: cubicweb.web.formwidgets.PasswordSingleInput
+.. autoclass: cubicweb.web.formwidgets.FileInput
+.. autoclass: cubicweb.web.formwidgets.ButtonInput
+.. autoclass: cubicweb.web.formwidgets.TextArea
+.. autoclass: cubicweb.web.formwidgets.FCKEditor
+.. autoclass: cubicweb.web.formwidgets.Select
+.. autoclass: cubicweb.web.formwidgets.CheckBox
+.. autoclass: cubicweb.web.formwidgets.Radio
+.. autoclass: cubicweb.web.formwidgets.DateTimePicker
+.. autoclass: cubicweb.web.formwidgets.JQueryDateTimePicker
+.. autoclass: cubicweb.web.formwidgets.JQueryDatePicker
+.. autoclass: cubicweb.web.formwidgets.JQueryTimePicker
+.. autoclass: cubicweb.web.formwidgets.AjaxWidget
+.. autoclass: cubicweb.web.formwidgets.AutoCompletionWidget
+.. autoclass: cubicweb.web.formwidgets.EditableURLWidget
+
+.. XXX StaticFileAutoCompletionWidget, RestrictedAutoCompletionWidget, AddComboBoxWidget, IntervalWidget, HorizontalLayoutWidget
+
+The following classes may also be useful: Button, SubmitButton, ResetButton,
+ImgButton, which are not proper widget (they are not associated to field) but are
+used are form controls.
+
+
+Of course you can not use any widget with any field...
 
 Renderers
 ~~~~~~~~~
--- a/web/formfields.py	Wed Feb 03 20:33:49 2010 +0100
+++ b/web/formfields.py	Wed Feb 03 20:34:44 2010 +0100
@@ -1,4 +1,6 @@
-"""field classes for form construction
+"""Fields are used to control what's displayed in forms. It makes the link
+between something to edit and its display in the form. Actual display is handled
+by a widget associated to the field.
 
 :organization: Logilab
 :copyright: 2009-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
@@ -46,13 +48,11 @@
 _MARKER = object()
 
 class Field(object):
-    """field class is introduced to control what's displayed in forms. It makes
-    the link between something to edit and its display in the form. Actual
-    display is handled by a widget associated to the field.
+    """This class is the abstract base class for all fields. It hold a bunch
+    of attributes which may be used for fine control of the behaviour of a
+    concret field.
 
-    Attributes
-    ----------
-    all the attributes described below have sensible default value which may be
+    All the attributes described below have sensible default value which may be
     overriden by value given to field's constructor.
 
     :name: