.. -*- coding: utf-8 -*-

Définir l'interface utilisateur avec des vues
=============================================

`LAX` provides out-of-the-box a web interface that is generated from
the schema definition: entities can be created, displayed, updated and
deleted. As display views are not very fancy, it is usually necessary
to develop your own.


With `LAX`, views are defined by Python classes. A view includes :

- an identifier (all objects in `LAX` are entered in a registry
  and this identifier will be used as a key)

- a filter to select the resulsets it can be applied to

`LAX` provides a lot of standard views, for a complete list, you
will have to read the code in directory views (XXX improve doc).
For example, the view named ``primary`` is the one used to display
a single entity.

If you want to change the way a ``BlogEntry`` is displayed, just
override the view ``primary`` in ``BlogDemo/views.py`` ::

  from ginco.web.views import baseviews

  class BlogEntryPrimaryView(baseviews.PrimaryView):

      accepts = ('BlogEntry',)

      def cell_call(self, row, col):
          entity = self.rset.get_entity(row, col)
          self.w(u'<h1>%s</h1>' % entity.title)
          self.w(u'<div>%s</div>' % entity.publish_date)
          self.w(u'<div>%s</div>' % entity.category)
          self.w(u'<div>%s</div>' entity.content)

[WRITE ME]

* Defining views with selection/views

* implementing interfaces, calendar for blog entries

* show that a calendar view can export data to ical

* create view "blogentry table" with title, publish_date, category

* in view blog, select blogentries and apply view "blogentry table"

* demo ajax by filtering blogentry table on category

Components
===========

[WRITE ME]

* explain the component architecture

* add comments to the blog by importing the comments component

MainTemplate
============

[WRITE ME]

* customize MainTemplate and show that everything in the user
  interface can be changed


RSS Channel
===========

[WRITE ME]

* show that the RSS view can be used to display an ordered selection
  of blog entries, thus providing a RSS channel

* show that a different selection (by category) means a different channel

RQL
====

[WRITE ME]

* talk about the Relation Query Language

URL Rewriting
=============

[WRITE ME]

* show how urls are mapped to selections and views and explain URLRewriting

Security
=========

[WRITE ME]

* talk about security access rights and show that security is defined
  using RQL

