- All attributes of the widgets are now parsed from XML before the widget itself is created.
These attributes plus all default values are then added to an associative array. The associative array is passed as second parameter to the init function of et2_widget, but is also available as this.options *after* the constructor of the et2_widget baseclass has been called.
The et2_widget constructor also calls a function parseArrayMgrAttrs(_attrs) - in this function widget implementations can read the values from e.g. the content and validation_errors array and merge it into the given _attrs associative array.
After the complete internal widgettree is completely loaded and created the "loadingFinished" function gets called and invokes all given setter functions. After that it "glues" the DOM tree together. This should also (I didn't measure it) be a bit faster than before, when the DOM-Tree was created on the fly.
Please have a look at the changes of the et2_textbox widget to see how this affects writing widgets.
Note: The "id" property is copied to the object scope on the top of the et2_widget constructor.
- When widgets are cloned the "options" array gets passed along to the newly created widget. This means that changes made on the widgets during runtime are not automatically copied to the clone - as this didn't happen anyhow it is not a really disadvantage.
On the other side there should be no difference between widgets directly inside the "overlay" xet tag and widgets which are inside instanciated templates.
- The selbox widget doesn't work anymore - it relied on the loadAttributes function which isn't available anymore. et2_selbox should use the parseArrayMgrAttrs function to access
- I've commented out some of the "validator"-code in etemplate2.js as it created some error messages when destroying the widget tree.
- "processing" the submit on serverside (no validation yet)
--> content returned by ajax call is not an hiearchical array: eg. "button[save]" => 1, instead of "button" => array("save" => 1)
- new call to etemplate_new::exec() is send back via new JSON generic et2_load response
--> how do we handle output of callback: a) debug output, eg. echos and b) echo "<html><head><script>window.close();</script></head></html>"; exit;
- Added system for readonlys: Readonly is passed in constructor as third parameter. If a widget class is registerd with "[type]_ro" (see et2_textbox for example) this one is created
- Added new 'valueWidget' base class which introduces the 'value' attribute and implements auto loading from the content array
- Implemented readonly attribute for buttons and textboxes
- Added test for textbox
- Added baseWidget and inputWidget classes
- Implemented attribute system
- Implemented statustext as a test for the attribute system
- Ported csv_split function to JS
- Implemented system for the legacy options
- Added function for iterating over the widget tree
- Added indexOf function for IE compatiblity - this and some other code is redundant to that in egw_action_common.js - Probably this code should be merged into jsapi and jsapi.js should be cleaned up and splitted into multiple files
- Implemented template widget
- Implemented dummy implementation of description widget
- Improved et2_placeholder - it now shows all properties set for that placeholder
- Improved and extended test page
- Improved interface system in et2_inheritance.js - each object derrived from Class now has a instanceOf function which checks, whether the object is either an instance of the given class or implements the given interface (same behaviour as instanceOf in Java)
- Widgets can now define which other widget classes are allowed inside of them
- confirm, confirm_multiple and allowOnMultiple get now inherited by children (@Andreas: allowOnMultiple does NOT work on children for some reason)
- add confirmation for more then one receipient in mail merge
- translations for etemplate part
- enabling/disabling actions based on row-id matching a regular expression
- children/submenus inherit 'url','popup','nm_action','onExecute','type','egw_open' attributes
- moving (open|hide|submit)_popup used in InfoLog and Tracker to etemplate, so code can be shared
--> change 'onExecute' => 'javaScript:open_popup' to 'nm_action' => 'open_popup' and onclick="(hide|submit)_popup()" to onclick="nm_(hide|submit)_popup()"
- $content[nm][select_all] is now only reference to $content[nm][checkboxes][select_all]
- checkboxes need no default onExecute, therefore removed nm_select_all method
- improved documentation for action stuff in nextmatch widget
- added egwAction.getActionsByAttr(_attr, _val) method returning all actions with a given attribute and value
- disabling actions not available, because of missing rights
- trying to disable "remove from distribution list" and "delete distribution list", when no list is selected
--> not yet working
- query all is moved into context menu
- legacy support only contains button to trigger context menu
- moved some common phrases into the API:
+ Delete this entry
+ Delete these entries
+ You need to select some entries first!
- support for singular and plural confirmation messages
- legacy actions column and multiple action row below table is switched off by default, but can be switched on again
- legacy action button is NOT yet working
- "whole query" checkbox need to go into context menu too
Select options can be provided using one of three different methods:
1. key=value pairs, one per line, as for a selectbox
2. @filename.php - The file must be in the egw root, and define an array named $options, that has key => value pairs
3. Define the options normally used for the AJAX Select widget (get_rows, get_title, id_field) and it will pull values from the database, as normal.
Other options (icon, filter, template, link) can be used regardless of the method used to get the values.