Add details for "features" object and specify that "templates" object is optional.
diff --git a/ListsProtocol.wiki b/ListsProtocol.wiki
index f94f44c..28b999c 100644
--- a/ListsProtocol.wiki
+++ b/ListsProtocol.wiki
@@ -11,6 +11,27 @@
{{{
{
"configuration" : {},
+ "features": {
+ "cookie_service": {
+ "enabled": <boolean>
+ },
+ "column_search": {
+ "enabled": <boolean>
+ },
+ "columns_show_hide": {
+ "enabled": <boolean>
+ },
+ "search_dialog": {
+ "enabled": <boolean>
+ },
+ "csv_export": {
+ "enabled": <boolean>
+ },
+ "global_search": {
+ "enabled": <boolean>,
+ "element_path": <jQuery_selector>
+ }
+ },
"templates": {
"<column>": "<template>"
},
@@ -55,6 +76,7 @@
{{{
{
"configuration" : {},
+ "features": {},
"templates": {},
"operations": {},
"data": {}
@@ -96,8 +118,18 @@
* *toolbar*: is an *array of a boolean and a string*. This should be present as displayed in the example if there are buttons to be displayed on top of the list (for example to show add/edit/delete options, see _data/operations/buttons_ details and _operations/buttons_ details.
----
+== *features* ==
+The _features_ object (optional) is used to enable/disable and/or set options to specific features of Melange lists. This can contain:
+ * *cookie_service*: is an (optional) *object* which can contain only one key, *enabled*, which is a boolean. By default is enabled, so if the object is not present the cookie service will be enabled, to be back-compatible with current lists. If it's enabled, the lists will use a cookie to store/retrieve their state between sessions.
+ * *column_search*: is an (optional) *object* which can contain only one key, *enabled*, which is a boolean. By default is enabled, so if the object is not present the column search will be enabled, to be back-compatible with current lists. If it's enabled, each column in the list can be filtered using a input (either text or select) which is appended at the top of the column itself.
+ * *column_show_hide*: is an (optional) *object* which can contain only one key, *enabled*, which is a boolean. By default is enabled, so if the object is not present the button to Show/Hide columns will be enabled, to be back-compatible with current lists. If it's enabled, a button at the bottom of the lists will appear to open a dialog to show/hide columns in the lists, as well as a checkbox on the upper right to enable/disable regexp search.
+ * *search_dialog*: is an (optional) *object* which can contain only one key, *enabled*, which is a boolean. By default is enabled, so if the object is not present the button to Show the advanced search dialog will be enabled, to be back-compatible with current lists. If it's enabled, a button at the bottom of the lists will appear that opens a dialog box to do an advanced search inside the lists.
+ * *csv_export*: is an (optional) *object* which can contain only one key, *enabled*, which is a boolean. By default is enabled, so if the object is not present the button to export to CSV will be enabled, to be back-compatible with current lists. If it's enabled, a button at the top right of the lists will appear that opens a dialog box with a CSV export of the list.
+ * *global_search*: is an (optional) *object* which can contain two keys, *enabled*, which is a boolean, and *element_path*, which is a jQuery selector that should select an input text which should be present in the page. By default is *not* enabled to be back-compatible with current lists. If it's enabled, an event of type "keyup" will be bound to the input text element to look into all the columns in the list ("OR" search) for its value. *HINT:*: if you specify the same *element_path* for more than one list in a single page, all lists with the same element selector will be filtered by the same value.
+
+----
== *templates* ==
-The _templates_ object is used to define which columns between the ones defined in *colModel* will be substituted with a string that is built from a template. At the moment, it supports only Django-like variables like "{{ variable }}". Each variable *must* be a valid column name in *colModel*. If you have three columns with the following data _longDescription = ""_, _title = "My Title"_ and _name = "My Name"_ and use the following _templates_ object:
+The _templates_ object (optional) is used to define which columns between the ones defined in *colModel* will be substituted with a string that is built from a template. At the moment, it supports only Django-like variables like "{{ variable }}". Each variable *must* be a valid column name in *colModel*. If you have three columns with the following data _longDescription = ""_, _title = "My Title"_ and _name = "My Name"_ and use the following _templates_ object:
{{{
"templates": {