[book] fixes some references and other doc construction pbs stable
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Mon, 24 Jan 2011 11:39:53 +0100
branchstable
changeset 6880 4be32427b2b9
parent 6879 54944faf9b61
child 6881 a473bf557456
[book] fixes some references and other doc construction pbs * predefine order of js files in index generation, skip some files * fix some references to the base tutorial (recently changed) * other ReST fixes
doc/book/en/admin/setup.rst
doc/book/en/annexes/index.rst
doc/book/en/annexes/rql/index.rst
doc/book/en/devrepo/cubes/available-cubes.rst
doc/book/en/devrepo/datamodel/define-workflows.rst
doc/book/en/devweb/edition/examples.rst
doc/book/en/devweb/views/basetemplates.rst
doc/book/en/devweb/views/primary.rst
doc/book/en/index.rst
doc/book/en/makefile
doc/book/en/tutorials/advanced/part04_ui-base.rst
doc/book/en/tutorials/advanced/part05_ui-advanced.rst
doc/book/en/tutorials/base/customizing-the-application.rst
doc/book/en/tutorials/tools/windmill.rst
doc/tools/pyjsrest.py
server/hook.py
web/data/cubicweb.calendar.js
web/data/cubicweb.compat.js
web/data/cubicweb.preferences.js
web/data/cubicweb.python.js
web/formwidgets.py
--- a/doc/book/en/admin/setup.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/admin/setup.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -2,7 +2,7 @@
 
 .. _SetUpEnv:
 
-Installation and set-up of a *CubicWeb* environment
+Installation and set-up of a |cubicweb| environment
 ===================================================
 
 Installation of `Cubicweb` and its dependencies
@@ -68,8 +68,8 @@
    `cubicweb with postgresql datatabase`_ and `cubicweb-mysql-support` contains
    necessary dependency for using `cubicweb with mysql database`_ .
 
-There is also a wide variety of :ref:`cubes <Cubes>` listed on the `CubicWeb.org Forge`_
-available as debian packages and tarball.
+There is also a wide variety of :ref:`cubes <AvailableCubes>` listed on the
+`CubicWeb.org Forge`_ available as debian packages and tarball.
 
 The repositories are signed with `Logilab's gnupg key`_. To avoid warning on
 "apt-get update":
--- a/doc/book/en/annexes/index.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/annexes/index.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -16,5 +16,4 @@
    rql/index
    mercurial
    depends
-   javascript-api
    docstrings-conventions
--- a/doc/book/en/annexes/rql/index.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/annexes/rql/index.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -1,4 +1,4 @@
-.. _RQLChapter
+.. _RQLChapter:
 
 Relation Query Language (RQL)
 =============================
--- a/doc/book/en/devrepo/cubes/available-cubes.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/devrepo/cubes/available-cubes.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -1,3 +1,4 @@
+.. _AvailableCubes:
 
 Available cubes
 ---------------
--- a/doc/book/en/devrepo/datamodel/define-workflows.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/devrepo/datamodel/define-workflows.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -8,14 +8,13 @@
 General
 -------
 
-A workflow describes how certain entities have to evolve between
-different states. Hence we have a set of states, and a "transition
-graph", i.e. a set of possible transitions from one state to another
-state.
+A workflow describes how certain entities have to evolve between different
+states. Hence we have a set of states, and a "transition graph", i.e. a set of
+possible transitions from one state to another state.
 
-We will define a simple workflow for a blog, with only the following
-two states: `submitted` and `published`. So first, we create a simple
-|cubicweb| instance in five minutes (see :ref:`BlogFiveMinutes`).
+We will define a simple workflow for a blog, with only the following two states:
+`submitted` and `published`. You may want to take a look at :ref:`_TutosBase` if
+you want to quickly setup an instance running a blog.
 
 Setting up a workflow
 ---------------------
--- a/doc/book/en/devweb/edition/examples.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/devweb/edition/examples.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -117,7 +117,7 @@
 set to 'sendmail', which is our form DOM id as specified by its `domid`
 attribute), another to cancel the form which will go back to the previous page
 using another javascript call. Also we specify an image to use as button icon as a
-resource identifier (see :ref:`external_resources`) given as last argument to
+resource identifier (see :ref:`uiprops`) given as last argument to
 :class:`cubicweb.web.formwidgets.ImgButton`.
 
 To see this form, we still have to wrap it in a view. This is pretty simple:
@@ -131,12 +131,13 @@
 	def call(self):
 	    form = self._cw.vreg['forms'].select('massmailing', self._cw,
 	                                         rset=self.cw_rset)
-	    self.w(form.render())
+	    form.render(w=self.w)
 
 As you see, we simply define a view with proper selector so it only apply to a
 result set containing :class:`IEmailable` entities, and so that only users in the
 managers or users group can use it. Then in the `call()` method for this view we
-simply select the above form and write what its `.render()` method returns.
+simply select the above form and call its `.render()` method with our output
+stream as argument.
 
 When this form is submitted, a controller with id 'sendmail' will be called (as
 specified using `action`). This controller will be responsible to actually send
--- a/doc/book/en/devweb/views/basetemplates.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/devweb/views/basetemplates.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -1,7 +1,5 @@
 .. -*- coding: utf-8 -*-
 
-.. |cubicweb| replace:: *CubicWeb*
-
 .. _templates:
 
 Templates
--- a/doc/book/en/devweb/views/primary.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/devweb/views/primary.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -226,8 +226,6 @@
 
 We'll show you now an example of a ``primary`` view and how to customize it.
 
-We continue along the basic tutorial :ref:`tuto_blog`.
-
 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``.
@@ -247,7 +245,7 @@
 
 
 The above source code defines a new primary view for
-``BlogEntry``. The `id` class attribute is not repeated there since it
+``BlogEntry``. The `__reid__` class attribute is not repeated there since it
 is inherited through the `primary.PrimaryView` class.
 
 The selector for this view chains the selector of the inherited class
--- a/doc/book/en/index.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/index.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -13,19 +13,28 @@
 
 Its main features are:
 
-* an engine driven by the explicit :ref:`data model <DefineDataModel>` of the application,
+* an engine driven by the explicit :ref:`data model
+  <TutosBaseCustomizingTheApplicationDataModel>` of the application,
+
 * a query language named :ref:`RQL <RQL>` similar to W3C's SPARQL,
-* a :ref:`selection+view <DefineViews>` mechanism for semi-automatic XHTML/XML/JSON/text generation,
-* a library of reusable :ref:`components <cubes>` (data model and views) that fulfill common needs,
+
+* a :ref:`selection+view <TutosBaseCustomizingTheApplicationCustomViews>`
+  mechanism for semi-automatic XHTML/XML/JSON/text generation,
+
+* a library of reusable :ref:`components <Cube>` (data model and views) that
+  fulfill common needs,
+
 * the power and flexibility of the Python_ programming language,
-* the reliability of SQL databases, LDAP directories, Subversion and Mercurial for storage backends.
+
+* the reliability of SQL databases, LDAP directories, Subversion and Mercurial
+  for storage backends.
 
 Built since 2000 from an R&D effort still continued, supporting 100,000s of
 daily visits at some production sites, |cubicweb| is a proven end to end solution
 for semantic web application development that promotes quality, reusability and
 efficiency.
 
-The unbeliever will read the :ref:`Tutorial`.
+The unbeliever will read the :ref:`Tutorials`.
 
 The hacker will join development at the forge_.
 
--- a/doc/book/en/makefile	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/makefile	Mon Jan 24 11:39:53 2011 +0100
@@ -33,7 +33,7 @@
 
 clean:
 	rm -f *.html
-	-rm -rf ${BUILDDIR}/*
+	-rm -rf ${BUILDDIR}/html ${BUILDDIR}/doctrees
 	-rm -rf ${BUILDJS}
 
 all: html
--- a/doc/book/en/tutorials/advanced/part04_ui-base.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/tutorials/advanced/part04_ui-base.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -1,5 +1,5 @@
-Building my photos web site with CubicWeb part IV: let's make it more user friendly
-===================================================================================
+Let's make it more user friendly
+================================
 
 
 Step 0: updating code to CubicWeb 3.9 / cubicweb-file 1.9
@@ -200,12 +200,12 @@
 authenticated, or not. Hopefuly people will get it now!
 
 
-.. figure:: ../../images/tutos-photowebsite_index_before.png
+.. figure:: ../../images/tutos-photowebsite_index-before.png
    :alt: default index page screenshot
 
    The default index page
 
-.. figure:: ../../images/tutos-photowebsite_index_after.png
+.. figure:: ../../images/tutos-photowebsite_index-after.png
    :alt: new index page screenshot
 
    Our simpler, less intimidating, index page (still translated in french)
--- a/doc/book/en/tutorials/advanced/part05_ui-advanced.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/tutorials/advanced/part05_ui-advanced.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -1,9 +1,9 @@
-Building my photos web site with |cubiweb| part V: let's make it even more user friendly
+Building my photos web site with |cubicweb| part V: let's make it even more user friendly
 =========================================================================================
 
-We'll now see how to benefit from features introduced in 3.9 and 3.10 releases of CubiWeb
+We'll now see how to benefit from features introduced in 3.9 and 3.10 releases of CubicWeb
 
-Step 1: Tired of the default look?
+Step 1: tired of the default look?
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 OK... Now our site has its most desired features. But... I would like to make it look
@@ -12,8 +12,8 @@
 
 The first thing we can to is to change the logo. There are various way to achieve
 this. The easiest way is to put a :file:`logo.png` file into the cube's :file:`data`
-directory. As data files are looked at according to cubes order (CubiWeb
-resources coming last), that file will be selected instead of CubiWeb's one.
+directory. As data files are looked at according to cubes order (CubicWeb
+resources coming last), that file will be selected instead of CubicWeb's one.
 
 .. Note::
    As the location for static resources are cached, you'll have to restart
@@ -27,14 +27,14 @@
 
    LOGO = data('logo.jpg')
 
-The uiprops machinery has been introduced in `CubiWeb 3.9`_. It is used to define
+The uiprops machinery has been introduced in `CubicWeb 3.9`_. It is used to define
 some static file resources, such as the logo, default Javascript / CSS files, as
 well as CSS properties (we'll see that later).
 
 .. Note::
    This file is imported specifically by |cubicweb|, with a predefined name space,
    containing for instance the `data` function, telling the file is somewhere
-   in a cube or CubiWeb's data directory.
+   in a cube or CubicWeb's data directory.
 
    One side effect of this is that it can't be imported as a regular python
    module.
@@ -44,7 +44,7 @@
 
 Now, as it's a photos web-site, I would like to have a photo of mine as background...
 After some trials I won't detail here, I've found a working recipe explained `here`_.
-All I've to do is to override some stuff of the default CubiWeb user interface to
+All I've to do is to override some stuff of the default CubicWeb user interface to
 apply it as explained.
 
 The first thing to to get the ``<img/>`` tag as first element after the
@@ -144,11 +144,11 @@
 
    STYLESHEETS = sheet['STYLESHEETS'] + [data('cubes.sytweb.css')]
 
-.. Note:
+.. Note::
    `sheet` is another predefined variable containing values defined by
-   already process `:file:`uiprops.py`` file, notably the CubiWeb's one.
+   already process `:file:`uiprops.py`` file, notably the CubicWeb's one.
 
-Here we simply want our CSS in addition to CubiWeb's base CSS files, so we
+Here we simply want our CSS in addition to CubicWeb's base CSS files, so we
 redefine the `STYLESHEETS` variable to existing CSS (accessed through the `sheet`
 variable) with our one added. I could also have done:
 
@@ -163,7 +163,7 @@
 
 .. image:: ../../images/tutos-photowebsite_background-image.png
 
-The final touch: let's customize CubiWeb's CSS to get less orange... By simply adding
+The final touch: let's customize CubicWeb's CSS to get less orange... By simply adding
 
 .. sourcecode:: python
 
@@ -174,7 +174,7 @@
 
 .. image:: ../../images/tutos-photowebsite_grey-box.png
 
-This is because CubiWeb's CSS include some variables which are
+This is because CubicWeb's CSS include some variables which are
 expanded by values defined in uiprops file. In our case we controlled the
 properties of the CSS `background` property of boxes with CSS class
 `contextualBoxTitleBg` and `incontextBoxTitleBg`.
@@ -290,7 +290,7 @@
 Great, it's now as easy for me to link my pictures to people than to tag them.
 Also, visitors get a consistent display of these two pieces of information.
 
-.. Note:
+.. Note::
   The ui component system has been refactored in `CubicWeb 3.10`_, which also
   introduced the :class:`AjaxEditRelationCtxComponent` class.
 
@@ -301,7 +301,7 @@
 The last feature we'll add today is facet configuration. If you access to the
 '/file' url, you'll see a set of 'facets' appearing in the left column. Facets
 provide an intuitive way to build a query incrementally, by proposing to the user
-various way to restrict the result set. For instance CubiWeb proposes a facet to
+various way to restrict the result set. For instance CubicWeb proposes a facet to
 restrict based on who created an entity; the tag cube proposes a facet to
 restrict based on tags; the zoe cube a facet to restrict based on geographical
 location, and so on. In that gist, I want to propose a facet to restrict based on
@@ -310,7 +310,7 @@
 attributes as we've done for the box. In our case, we'll define a subclass of
 :class:`RelationFacet`.
 
-.. Note:
+.. Note::
 
    Since that's ui stuff, we'll continue to add code below to our
    :file:`views.py` file. Though we begin to have a lot of various code their, so
@@ -348,7 +348,7 @@
 
 .. image:: ../../images/tutos-photowebsite_facets.png
 
-.. Note:
+.. Note::
 
   By default a facet must be applyable to every entity in the result set and
   provide at leat two elements of vocabulary to be displayed (for instance you
@@ -370,6 +370,6 @@
 
 
 
-.. _`CubicWeb 3.10`: https://www.cubicweb.org/blogentry/1330518
+.. _`CubicWeb 3.10`: http://www.cubicweb.org/blogentry/1330518
 .. _`CubicWeb 3.9`: http://www.cubicweb.org/blogentry/1179899
 .. _`here`: http://webdesign.about.com/od/css3/f/blfaqbgsize.htm
--- a/doc/book/en/tutorials/base/customizing-the-application.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/tutorials/base/customizing-the-application.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -41,7 +41,7 @@
 
   cubicweb-ctl newcube --directory=~/src/cubes myblog
 
-.. Note:
+.. Note::
 
    We previously used `myblog` as the name of our *instance*. We're now creating
    a *cube* with the same name. Both are different things. We'll now try to
@@ -63,6 +63,7 @@
 
 where the ``None`` means we do not depends on a particular version of the cube.
 
+.. _TutosBaseCustomizingTheApplicationDataModel:
 
 Extending the data model
 ~~~~~~~~~~~~~~~~~~~~~~~~
@@ -179,6 +180,8 @@
 You'll then be able to redefine each of them according to your needs
 and preferences. We'll now see how to do such thing.
 
+.. _TutosBaseCustomizingTheApplicationCustomViews:
+
 Defining your views
 ~~~~~~~~~~~~~~~~~~~
 
--- a/doc/book/en/tutorials/tools/windmill.rst	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/book/en/tutorials/tools/windmill.rst	Mon Jan 24 11:39:53 2011 +0100
@@ -150,7 +150,7 @@
 
 If you want to change cubicweb test server parameters, you can check class
 variables from :class:`CubicWebServerConfig` or inherit it with overriding the
-:var:`configcls` attribute in :class:`CubicWebServerTC` ::
+:attr:`configcls` attribute in :class:`CubicWebServerTC` ::
 
 .. sourcecode:: python
 
--- a/doc/tools/pyjsrest.py	Mon Jan 24 09:42:09 2011 +0100
+++ b/doc/tools/pyjsrest.py	Mon Jan 24 11:39:53 2011 +0100
@@ -4,6 +4,7 @@
 """
 from __future__ import with_statement
 
+import os.path as osp
 import sys, os, getopt, re
 
 def clean_comment(match):
@@ -71,34 +72,48 @@
     if rst_dir is None and len(args) != 1:
         rst_dir = 'apidocs'
     js_dir = opts.get('--jspath') or opts.get('-p')
-    if not os.path.exists(os.path.join(rst_dir)):
-        os.makedirs(os.path.join(rst_dir))
+    if not osp.exists(osp.join(rst_dir)):
+        os.makedirs(osp.join(rst_dir))
 
-    f_index = open(os.path.join(rst_dir, 'index.rst'), 'wb')
-    f_index.write('''
+    index = set()
+    for js_path, js_dirs, js_files in os.walk(js_dir):
+        rst_path = re.sub('%s%s*' % (js_dir, osp.sep), '', js_path)
+        for js_file in js_files:
+            if not js_file.endswith('.js'):
+                continue
+            if js_file in FILES_TO_IGNORE:
+                continue
+            if not osp.exists(osp.join(rst_dir, rst_path)):
+                os.makedirs(osp.join(rst_dir, rst_path))
+            rst_content =  extract_rest(js_path, js_file)
+            filename = osp.join(rst_path, js_file[:-3])
+            # add to index
+            index.add(filename)
+            # save rst file
+            with open(osp.join(rst_dir, filename) + '.rst', 'wb') as f_rst:
+                f_rst.write(rst_content)
+    stream = open(osp.join(rst_dir, 'index.rst'), 'w')
+    stream.write('''
 .. toctree::
     :maxdepth: 1
 
-'''
-)
-    for js_path, js_dirs, js_files in os.walk(js_dir):
-        rst_path = re.sub('%s%s*' % (js_dir, os.path.sep), '', js_path)
-        for js_file in js_files:
-            if not js_file.endswith('.js'):
-                continue
-            if not os.path.exists(os.path.join(rst_dir, rst_path)):
-                os.makedirs(os.path.join(rst_dir, rst_path))
-            rst_content =  extract_rest(js_path, js_file)
-            filename = os.path.join(rst_path, js_file[:-3])
-            # add to index
-            f_index.write('    %s\n' % filename)
-            # save rst file
-            with open(os.path.join(rst_dir, filename) + '.rst', 'wb') as f_rst:
-                f_rst.write(rst_content)
-    f_index.close()
+''')
+    # first write expected files in order
+    for fileid in INDEX_IN_ORDER:
+        try:
+            index.remove(fileid)
+        except:
+            raise Exception(
+        'Bad file id %s referenced in INDEX_IN_ORDER in %s, '
+        'fix this please' % (fileid, __file__))
+        stream.write('    %s\n' % fileid)
+    # append remaining, by alphabetical order
+    for fileid in sorted(index):
+        stream.write('    %s\n' % fileid)
+    stream.close()
 
 def extract_rest(js_dir, js_file):
-    js_filepath = os.path.join(js_dir, js_file)
+    js_filepath = osp.join(js_dir, js_file)
     filecontent = open(js_filepath, 'U').read()
     comments = get_doc_comments(filecontent)
     rst = rest_title(js_file, 0)
@@ -106,5 +121,50 @@
     rst += '\n\n'.join(comments)
     return rst
 
+INDEX_IN_ORDER = [
+    'cubicweb',
+    'cubicweb.python',
+    'cubicweb.htmlhelpers',
+    'cubicweb.ajax',
+
+    'cubicweb.lazy',
+    'cubicweb.tabs',
+    'cubicweb.ajax.box',
+    'cubicweb.facets',
+    'cubicweb.widgets',
+    'cubicweb.image',
+    'cubicweb.flot',
+    'cubicweb.calendar',
+    'cubicweb.preferences',
+    'cubicweb.edition',
+    'cubicweb.reledit',
+    'cubicweb.iprogress',
+    'cubicweb.rhythm',
+    'cubicweb.gmap',
+    'cubicweb.timeline-ext',
+]
+
+FILES_TO_IGNORE = set([
+    'jquery.js',
+    'jquery.treeview.js',
+    'jquery.json.js',
+    'jquery.tablesorter.js',
+    'jquery.timePicker.js',
+    'jquery.flot.js',
+    'jquery.corner.js',
+    'jquery.ui.js',
+    'ui.core.js',
+    'ui.tabs.js',
+    'ui.slider.js',
+    'excanvas.js',
+    'gmap.utility.labeledmarker.js',
+
+    'cubicweb.fckcwconfig.js',
+    'cubicweb.fckcwconfig-full.js',
+    'cubicweb.goa.js',
+    'cubicweb.compat.js',
+    'cubicweb.timeline-bundle.js',
+    ])
+
 if __name__ == '__main__':
     parse_js_files()
--- a/server/hook.py	Mon Jan 24 09:42:09 2011 +0100
+++ b/server/hook.py	Mon Jan 24 11:39:53 2011 +0100
@@ -212,7 +212,7 @@
 
 * ``integrity``, data integrity checking hooks
 
-* ``activeintegrity``, data integrity consistency hooks, that you should *never*
+* ``activeintegrity``, data integrity consistency hooks, that you should **never**
   want to disable
 
 * ``syncsession``, hooks synchronizing existing sessions
--- a/web/data/cubicweb.calendar.js	Mon Jan 24 09:42:09 2011 +0100
+++ b/web/data/cubicweb.calendar.js	Mon Jan 24 11:39:53 2011 +0100
@@ -16,12 +16,14 @@
  * .. class:: Calendar
  *
  * Calendar (graphical) widget
+ *
  * public methods are :
+ *
  *   __init__ :
- *    @param containerId: the DOM node's ID where the calendar will be displayed
- *    @param inputId: which input needs to be updated when a date is selected
- *    @param year, @param month: year and month to be displayed
- *    @param cssclass: CSS class of the calendar widget (default is commandCal)
+ *    :attr:`containerId`: the DOM node's ID where the calendar will be displayed
+ *    :attr:`inputId`: which input needs to be updated when a date is selected
+ *    :attr:`year`, :attr:`month`: year and month to be displayed
+ *    :attr:`cssclass`: CSS class of the calendar widget (default is 'commandCal')
  *
  *   show() / hide():
  *    show or hide the calendar widget
--- a/web/data/cubicweb.compat.js	Mon Jan 24 09:42:09 2011 +0100
+++ b/web/data/cubicweb.compat.js	Mon Jan 24 11:39:53 2011 +0100
@@ -32,14 +32,15 @@
 /**
  * .. function:: cw.utils.deprecatedFunction(msg, function)
  *
- * jQUery flattens arrays returned by the mapping function:
- * >>> y = ['a:b:c', 'd:e']
- * >>> jQuery.map(y, function(y) { return y.split(':');})
- * ["a", "b", "c", "d", "e"]
- *  // where one would expect:
- *  [ ["a", "b", "c"], ["d", "e"] ]
- *  XXX why not the same argument order as $.map and forEach ?
+ * jQUery flattens arrays returned by the mapping function: ::
+ *
+ *   >>> y = ['a:b:c', 'd:e']
+ *   >>> jQuery.map(y, function(y) { return y.split(':');})
+ *   ["a", "b", "c", "d", "e"]
+ *   // where one would expect:
+ *   [ ["a", "b", "c"], ["d", "e"] ]
  */
+ // XXX why not the same argument order as $.map and forEach ?
 map = cw.utils.deprecatedFunction(
     '[3.9] map() is deprecated, use $.map instead',
     function(func, array) {
--- a/web/data/cubicweb.preferences.js	Mon Jan 24 09:42:09 2011 +0100
+++ b/web/data/cubicweb.preferences.js	Mon Jan 24 11:39:53 2011 +0100
@@ -1,8 +1,6 @@
 /**
- * toggle visibility of an element by its id
- * & set current visibility status in a cookie
- * XXX whenever used outside of preferences, don't forget to
- *     move me in a more appropriate place
+ * toggle visibility of an element by its id & set current visibility status in a cookie
+ *
  */
 
 var prefsValues = {};
--- a/web/data/cubicweb.python.js	Mon Jan 24 09:42:09 2011 +0100
+++ b/web/data/cubicweb.python.js	Mon Jan 24 11:39:53 2011 +0100
@@ -248,9 +248,11 @@
  * this is a js class factory. objects returned by this function behave
  * more or less like a python class. The `class` function prototype is
  * inspired by the python `type` builtin
- * Important notes :
- *  -> methods are _STATICALLY_ attached when the class it created
- *  -> multiple inheritance was never tested, which means it doesn't work ;-)
+ *
+ * .. Note::
+ *
+ *    * methods are _STATICALLY_ attached when the class it created
+ *    * multiple inheritance was never tested, which means it doesn't work ;-)
  */
 function defclass(name, bases, classdict) {
     var baseclasses = bases || [];
--- a/web/formwidgets.py	Mon Jan 24 09:42:09 2011 +0100
+++ b/web/formwidgets.py	Mon Jan 24 11:39:53 2011 +0100
@@ -28,6 +28,7 @@
 
 .. autoclass:: cubicweb.web.formwidgets.FieldWidget
 
+
 HTML <input> based widgets
 ''''''''''''''''''''''''''
 
@@ -37,6 +38,7 @@
 .. autoclass:: cubicweb.web.formwidgets.FileInput
 .. autoclass:: cubicweb.web.formwidgets.ButtonInput
 
+
 Other standard HTML widgets
 '''''''''''''''''''''''''''
 
@@ -45,6 +47,7 @@
 .. autoclass:: cubicweb.web.formwidgets.CheckBox
 .. autoclass:: cubicweb.web.formwidgets.Radio
 
+
 Date and time widgets
 '''''''''''''''''''''
 
@@ -53,6 +56,7 @@
 .. autoclass:: cubicweb.web.formwidgets.JQueryDatePicker
 .. autoclass:: cubicweb.web.formwidgets.JQueryTimePicker
 
+
 Ajax / javascript widgets
 '''''''''''''''''''''''''
 
@@ -64,19 +68,22 @@
 .. kill or document LazyRestrictedAutoCompletionWidget
 .. kill or document RestrictedAutoCompletionWidget
 
+
 Other widgets
 '''''''''''''
+
 .. autoclass:: cubicweb.web.formwidgets.PasswordInput
 .. autoclass:: cubicweb.web.formwidgets.IntervalWidget
 .. autoclass:: cubicweb.web.formwidgets.HorizontalLayoutWidget
 .. autoclass:: cubicweb.web.formwidgets.EditableURLWidget
 
+
 Form controls
 '''''''''''''
-Those classes are not proper widget (they are not associated to
-field) but are used as form controls. Their API is similar
-to widgets except that `field` argument given to :meth:`render`
-will be `None`.
+
+Those classes are not proper widget (they are not associated to field) but are
+used as form controls. Their API is similar to widgets except that `field`
+argument given to :meth:`render` will be `None`.
 
 .. autoclass:: cubicweb.web.formwidgets.Button
 .. autoclass:: cubicweb.web.formwidgets.SubmitButton
@@ -107,15 +114,20 @@
 
     :attr:`needs_js`
        list of javascript files needed by the widget.
+
     :attr:`needs_css`
        list of css files needed by the widget.
+
     :attr:`setdomid`
        flag telling if HTML DOM identifier should be set on input.
+
     :attr:`settabindex`
        flag telling if HTML tabindex attribute of inputs should be set.
+
     :attr:`suffix`
        string to use a suffix when generating input, to ease usage as a
        sub-widgets (eg widget used by another widget)
+
     :attr:`vocabulary_widget`
        flag telling if this widget expect a vocabulary
 
@@ -212,7 +224,7 @@
            generating the form)
 
         4. field's typed value (returned by its
-          :meth:`~cubicweb.web.formfields.Field.typed_value` method)
+           :meth:`~cubicweb.web.formfields.Field.typed_value` method)
 
         Values found in 1. and 2. are expected te be already some 'display
         value' (eg a string) while those found in 3. and 4. are expected to be