",
+ rowCount: 0,
+ headers: "",
+ addRow: function(array){
+ // summary:
+ // Function to add in a new row from the elements in the array map to cells in the row.
+ // array:
+ // Array of row values to add.
+ try{
+ var row = document.createElement("tr");
+ if((this.rowCount%2) === 0){
+ dojo.addClass(row, "alternate");
+ }
+ this.rowCount++;
+ for(var i in array){
+ var cell = document.createElement("td");
+ var text = document.createTextNode(array[i]);
+ cell.appendChild(text);
+ row.appendChild(cell);
+
+ }
+ this.tableContainer.appendChild(row);
+ }catch(e){ console.debug(e); }
+ },
+
+ clearTable: function(){
+ // summary:
+ // Function to clear all the current rows in the table, except for the header.
+
+ //Always leave the first row, which is the table header.
+ while(this.tableContainer.firstChild.nextSibling){
+ this.tableContainer.removeChild(this.tableContainer.firstChild.nextSibling);
+ }
+ this.rowCount = 0;
+ },
+
+ postCreate: function(){
+ // summary:
+ // Widget lifecycle function to handle generation of the header elements in the table.
+ var headers = this.headers.split(",");
+ var tr = document.createElement("tr");
+ for(i in headers){
+
+ var header = headers[i];
+ var th = document.createElement("th");
+ var text = document.createTextNode(header);
+ th.appendChild(text);
+ tr.appendChild(th);
+ }
+ this.tableContainer.appendChild(tr);
+ }
+});
+
+}
diff --git a/includes/js/dojox/wire/demos/WidgetRepeater.js b/includes/js/dojox/wire/demos/WidgetRepeater.js
new file mode 100644
index 0000000..ad1b8b0
--- /dev/null
+++ b/includes/js/dojox/wire/demos/WidgetRepeater.js
@@ -0,0 +1,33 @@
+if(!dojo._hasResource["dojox.wire.demos.WidgetRepeater"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.wire.demos.WidgetRepeater"] = true;
+dojo.provide("dojox.wire.demos.WidgetRepeater")
+
+dojo.require("dojo.parser");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._Container");
+
+dojo.declare("dojox.wire.demos.WidgetRepeater", [ dijit._Widget, dijit._Templated, dijit._Container ], {
+ // summary:
+ // Simple widget that does generation of widgets repetatively, based on calls to
+ // the createNew function and contains them as child widgets.
+ templateString: "",
+ widget: null,
+ repeater: null,
+ createNew: function(obj){
+ // summary:
+ // Function to handle the creation of a new widget and appending it into the widget tree.
+ // obj:
+ // The parameters to pass to the widget.
+ try{
+ if(dojo.isString(this.widget)){
+ dojo.require(this.widget);
+ this.widget = dojo.getObject(this.widget);
+ }
+ this.addChild(new this.widget(obj));
+ this.repeaterNode.appendChild(document.createElement("br"));
+ }catch(e){ console.debug(e); }
+ }
+});
+
+}
diff --git a/includes/js/dojox/wire/demos/markup/countries.json b/includes/js/dojox/wire/demos/markup/countries.json
new file mode 100644
index 0000000..ad3a07a
--- /dev/null
+++ b/includes/js/dojox/wire/demos/markup/countries.json
@@ -0,0 +1,43 @@
+{ identifier: 'name',
+ items: [
+ { name:'Africa', type:'continent',
+ children:[{_reference:'Egypt'}, {_reference:'Kenya'}, {_reference:'Sudan'}] },
+ { name:'Egypt', type:'country' },
+ { name:'Kenya', type:'country',
+ children:[{_reference:'Nairobi'}, {_reference:'Mombasa'}] },
+ { name:'Nairobi', type:'city' },
+ { name:'Mombasa', type:'city' },
+ { name:'Sudan', type:'country',
+ children:{_reference:'Khartoum'} },
+ { name:'Khartoum', type:'city' },
+ { name:'Asia', type:'continent',
+ children:[{_reference:'China'}, {_reference:'India'}, {_reference:'Russia'}, {_reference:'Mongolia'}] },
+ { name:'China', type:'country' },
+ { name:'India', type:'country' },
+ { name:'Russia', type:'country' },
+ { name:'Mongolia', type:'country' },
+ { name:'Australia', type:'continent', population:'21 million',
+ children:{_reference:'Commonwealth of Australia'}},
+ { name:'Commonwealth of Australia', type:'country', population:'21 million'},
+ { name:'Europe', type:'continent',
+ children:[{_reference:'Germany'}, {_reference:'France'}, {_reference:'Spain'}, {_reference:'Italy'}] },
+ { name:'Germany', type:'country' },
+ { name:'France', type:'country' },
+ { name:'Spain', type:'country' },
+ { name:'Italy', type:'country' },
+ { name:'North America', type:'continent',
+ children:[{_reference:'Mexico'}, {_reference:'Canada'}, {_reference:'United States of America'}] },
+ { name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km',
+ children:[{_reference:'Mexico City'}, {_reference:'Guadalajara'}] },
+ { name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'},
+ { name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' },
+ { name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km',
+ children:[{_reference:'Ottawa'}, {_reference:'Toronto'}] },
+ { name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'},
+ { name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' },
+ { name:'United States of America', type:'country' },
+ { name:'South America', type:'continent',
+ children:[{_reference:'Brazil'}, {_reference:'Argentina'}] },
+ { name:'Brazil', type:'country', population:'186 million' },
+ { name:'Argentina', type:'country', population:'40 million' }
+]}
diff --git a/includes/js/dojox/wire/demos/markup/demo_ActionChaining.html b/includes/js/dojox/wire/demos/markup/demo_ActionChaining.html
new file mode 100644
index 0000000..596d6ec
--- /dev/null
+++ b/includes/js/dojox/wire/demos/markup/demo_ActionChaining.html
@@ -0,0 +1,108 @@
+
+
+
+ Sample Action Chaining
+
+
+
+
+
+
+
+
+
+ Demo of Chaining Actions:
+ This demo shows how you can chain actions together to fire in a sequence.
+ Such as the completion of setting one value on a widget triggers the setting of another value on the widget
+
+
+
+ This demo shows how you can use actions to read and set widget values, as well as have actions only occur if
+ if certain conditions are met, such as cloning values as they are typed from the billing address over to the
+ shipping address if the 'Use Same Address' checkbox is checked true.
+
+
+
+
+ This simple demo shows how services, such as Flickr, can be wrapped by the datastore API. In this demo, you can search public
+ Flickr images through a simple FlickrStore by specifying a series of tags (separated by spaces) to search on. The results
+ will be displayed below the search box. This demo is the same as the example demo provided in dojox/data/demos/demo_FlickrStore.html,
+ except that all the interactions are implemented via Wire instead of a script that runs at dojo.addOnLoad().
+