diff -r 19861294506f -r cf8f9180e63e doc/book/en/development/devweb/views.rst --- a/doc/book/en/development/devweb/views.rst Fri Jun 19 09:19:27 2009 +0200 +++ b/doc/book/en/development/devweb/views.rst Fri Jun 19 20:38:32 2009 +0200 @@ -42,19 +42,19 @@ * `dispatch(**context)`, render the view by calling `call` or `cell_call` depending on the given parameters -* `call(**kwargs)`, call the view for a complete result set or null (default +* `call(**kwargs)`, call the view for a complete result set or null (default implementation calls `cell_call()` on each cell of the result set) * `cell_call(row, col, **kwargs)`, call the view for a given cell of a result set * `url()`, returns the URL enabling us to get the view with the current - result set -* `view(__vid, rset, __fallback_vid=None, **kwargs)`, call the view of identifier + result set +* `view(__vid, rset, __fallback_vid=None, **kwargs)`, call the view of identifier `__vid` on the given result set. It is possible to give a view identifier of fallback that will be used if the view requested is not applicable to the result set - + * `wview(__vid, rset, __fallback_vid=None, **kwargs)`, similar to `view` except the flow is automatically passed in the parameters - + * `html_headers()`, returns a list of HTML headers to set by the main template * `page_title()`, returns the title to use in the HTML header `title` @@ -67,17 +67,17 @@ * `EntityView`, view applying to lines or cell containing an entity (e.g. an eid) * `StartupView`, start view that does not require a result set to apply to -* `AnyRsetView`, view applied to any result set +* `AnyRsetView`, view applied to any result set * `EmptyRsetView`, view applied to an empty result set -Examples of views class +Examples of views class ----------------------- - Using `templatable`, `content_type` and HTTP cache configuration .. code-block:: python - + class RSSView(XMLView): id = 'rss' @@ -86,13 +86,13 @@ content_type = 'text/xml' http_cache_manager = MaxAgeHTTPCacheManager cache_max_age = 60*60*2 # stay in http cache for 2 hours by default - + - Using custom selector .. code-block:: python - + class SearchForAssociationView(EntityView): """view called by the edition view when the user asks @@ -111,18 +111,18 @@ We'll show you now an example of a ``primary`` view and how to customize it. -If you want to change the way a ``BlogEntry`` is displayed, just override +If you want to change the way a ``BlogEntry`` is displayed, just override the method ``cell_call()`` of the view ``primary`` in ``BlogDemo/views.py`` :: .. code-block:: python from cubicweb.view import EntityView from cubicweb.selectors import implements - + class BlogEntryPrimaryView(EntityView): id = 'primary' __select__ =implements('Blog') - + def cell_call(self, row, col): entity = self.entity(row, col) self.w(u'
%s
' % entity.text) The above source code defines a new primary view (`line 03`) for -``BlogEntry`` (`line 05`). +``BlogEntry`` (`line 05`). Since views are applied to result sets which can be tables of data, we have to recover the entity from its (row,col)-coordinates (`line 08`). @@ -170,9 +170,9 @@ about the schema and infer that such entities have to be of the ``BlogEntry`` kind and retrieves them. -The request returns a selection of data called a result set. At +The request returns a selection of data called a result set. At `line 10` the view 'primary' is applied to this result set to output -HTML. +HTML. **This is to be compared to interfaces and protocols in object-oriented languages. Applying a given view called 'a_view' to all the entities @@ -202,7 +202,7 @@ * create view "blogentry table" with title, publish_date, category -We will show that by default the view that displays +We will show that by default the view that displays "Any E,D,C WHERE E publish_date D, E category C" is the table view. Of course, the same can be obtained by calling self.wview('table',rset) @@ -226,7 +226,7 @@ * set, through the attribute `content_type` of the class, the MIME type generated by the view to `application/octet-stream` -For views dedicated to binary content creation (like dynamically generated +For views dedicated to binary content creation (like dynamically generated images), we have to set the attribute `binary` of the class to `True` (which implies that `templatable == False`, so that the attribute `w` of the view could be replaced by a binary flow instead of unicode).