Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoNavigator.js
------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoNavigator.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoNavigator.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoPane.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoPane.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoPane.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoPane.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,44 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.widget.demoEngine.DemoPane"); +dojo.require("dojo.widget.*"); +dojo.require("dojo.widget.HtmlWidget"); + +dojo.widget.defineWidget("my.widget.demoEngine.DemoPane", + dojo.widget.HtmlWidget, + { + templatePath: dojo.uri.dojoUri("src/widget/demoEngine/templates/DemoPane.html"), + templateCssPath: dojo.uri.dojoUri("src/widget/demoEngine/templates/DemoPane.css"), + postCreate: function() { + dojo.html.addClass(this.domNode,this.domNodeClass); + dojo.debug("PostCreate"); + this._launchDemo(); + }, + + _launchDemo: function() { + dojo.debug("Launching Demo"); + dojo.debug(this.demoNode); + this.demoNode.src=this.href; + }, + + setHref: function(url) { + this.href = url; + this._launchDemo(); + } + }, + "", + function() { + dojo.debug("DemoPane Init"); + this.domNodeClass="demoPane"; + this.demoNode = ""; + this.href = ""; + } +); Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoPane.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoPane.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/DemoPane.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/SourcePane.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/SourcePane.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/SourcePane.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/SourcePane.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,52 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.widget.demoEngine.SourcePane"); +dojo.require("dojo.widget.*"); +dojo.require("dojo.widget.HtmlWidget"); +dojo.require("dojo.io.*"); + +dojo.widget.defineWidget("my.widget.demoEngine.SourcePane", + dojo.widget.HtmlWidget, + { + templatePath: dojo.uri.dojoUri("src/widget/demoEngine/templates/SourcePane.html"), + templateCssPath: dojo.uri.dojoUri("src/widget/demoEngine/templates/SourcePane.css"), + postCreate: function() { + dojo.html.addClass(this.domNode,this.domNodeClass); + dojo.debug("PostCreate"); + }, + + getSource: function() { + if (this.href) { + dojo.io.bind({ + url: this.href, + load: dojo.lang.hitch(this, "fillInSource"), + mimetype: "text/plain" + }); + } + }, + + fillInSource: function(type, source, e) { + this.sourceNode.value=source; + }, + + setHref: function(url) { + this.href = url; + this.getSource(); + } + }, + "", + function() { + dojo.debug("SourcePane Init"); + this.domNodeClass="sourcePane"; + this.sourceNode = ""; + this.href = ""; + } +); Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/SourcePane.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/SourcePane.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/SourcePane.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/__package__.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/__package__.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/__package__.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/__package__.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,20 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.kwCompoundRequire({ + browser: [ + "dojo.widget.demoEngine.DemoItem", + "dojo.widget.demoEngine.DemoNavigator", + "dojo.widget.demoEngine.DemoPane", + "dojo.widget.demoEngine.SourcePane", + "dojo.widget.demoEngine.DemoContainer" + ] +}); +dojo.provide("dojo.widget.demoEngine.*"); Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/__package__.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/__package__.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/__package__.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.css URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.css?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.css (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.css Mon Feb 19 09:56:06 2007 @@ -0,0 +1,39 @@ +.demoContainer{ + width: 100%; + height: 100%; + padding: 0px; + margin: 0px; +} + +.demoContainer .return { + cursor: pointer; +} + +.demoContainer span { + margin-right: 10px; + cursor: pointer; +} + +.demoContainer .selected { + border-bottom: 5px solid #95bfff; +} + +.demoContainer table { + background: #f5f5f5; + width: 100%; + height: 100%; +} + +.demoContainerTabs { + width: 100%; + height: 400px; +} + +.demoContainerTabs .dojoTabLabels-top { + display: none; +} + +.demoContainerTabs .dojoTabPaneWrapper { + border: 0px; +} + Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.css ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.css ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.css ------------------------------------------------------------------------------ svn:mime-type = text/css Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.html URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.html?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.html (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.html Mon Feb 19 09:56:06 2007 @@ -0,0 +1,25 @@ +<div dojoAttachPoint="domNode"> + <table width="100%" cellspacing="0" cellpadding="5"> + <tbody> + <tr dojoAttachPoint="headerNode"> + <td dojoAttachPoint="returnNode" valign="middle" width="1%"> + <img dojoAttachPoint="returnImageNode" dojoAttachEvent="onclick: returnToDemos"/> + </td> + <td> + <h1 dojoAttachPoint="demoNameNode"></h1> + <p dojoAttachPoint="summaryNode"></p> + </td> + <td dojoAttachPoint="tabControlNode" valign="middle" align="right" nowrap> + <span dojoAttachPoint="sourceButtonNode" dojoAttachEvent="onclick: showSource">source</span> + <span dojoAttachPoint="demoButtonNode" dojoAttachEvent="onclick: showDemo">demo</span> + </td> + </tr> + <tr> + <td colspan="3"> + <div dojoAttachPoint="tabNode"> + </div> + </td> + </tr> + </tbody> + </table> +</div> Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.html ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoContainer.html ------------------------------------------------------------------------------ svn:mime-type = text/html Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.css URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.css?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.css (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.css Mon Feb 19 09:56:06 2007 @@ -0,0 +1,58 @@ +.demoItemSummaryBox { + background: #efefef; + border:1px solid #dae3ee; +} + +.demoItemScreenshot { + padding:0.65em; + width:175px; + border-right:1px solid #fafafa; + text-align:center; + cursor: pointer; +} + +.demoItemWrapper{ + margin-bottom:1em; +} + +.demoItemWrapper a:link, .demoItemWrapper a:visited { + color:#a6238f; + text-decoration:none; +} + +.demoItemSummaryContainer { + border-left:1px solid #ddd; +} + +.demoItemSummaryContainer h1 { + background-color:#e8e8e8; + border-bottom: 1px solid #e6e6e6; + color:#738fb9; + margin:1px; + padding:0.5em; + font-family:"Lucida Grande", "Tahoma", serif; + font-size:1.25em; + font-weight:normal; +} + +.demoItemSummaryContainer h1 .packageSummary { + display:block; + color:#000; + font-size:10px; + margin-top:2px; +} + +.demoItemSummaryContainer .demoItemSummary{ + padding:1em; +} + +.demoItemSummaryContainer .demoItemSummary p { + font-size:0.85em; + padding:0; + margin:0; +} + +.demoItemView { + text-align:right; + cursor: pointer; +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.css ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.css ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.css ------------------------------------------------------------------------------ svn:mime-type = text/css Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.html URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.html?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.html (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.html Mon Feb 19 09:56:06 2007 @@ -0,0 +1,21 @@ +<div dojoAttachPoint="domNode"> + <div dojoAttachPoint="summaryBoxNode"> + <table width="100%" cellspacing="0" cellpadding="0"> + <tbody> + <tr> + <td dojoAttachPoint="screenshotTdNode" valign="top" width="1%"> + <img dojoAttachPoint="thumbnailImageNode" dojoAttachEvent="onclick: onSelectDemo" /> + </td> + <td dojoAttachPoint="summaryContainerNode" valign="top"> + <h1 dojoAttachPoint="nameNode"> + </h1> + <div dojoAttachPoint="summaryNode"> + <p dojoAttachPoint="descriptionNode"></p> + <div dojoAttachPoint="viewDemoLinkNode"><img dojoAttachPoint="viewDemoImageNode"/ dojoAttachEvent="onclick: onSelectDemo"></div> + </div> + </td> + </tr> + </tbody> + </table> + </div> +</div> Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.html ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoItem.html ------------------------------------------------------------------------------ svn:mime-type = text/html Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.css URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.css?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.css (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.css Mon Feb 19 09:56:06 2007 @@ -0,0 +1,28 @@ +.demoNavigatorListWrapper { + border:1px solid #dcdbdb; + background-color:#f8f8f8; + padding:2px; +} + +.demoNavigatorListContainer { + border:1px solid #f0f0f0; + background-color:#fff; + padding:1em; +} + +.demoNavigator h1 { + margin-top: 0px; + margin-bottom: 10px; + font-size: 1.2em; + border-bottom:1px dotted #a9ccf5; +} + +.demoNavigator .dojoButton { + margin-bottom: 5px; +} + +.demoNavigator .dojoButton .dojoButtonContents { + font-size: 1.1em; + width: 100px; + color: black; +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.css ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.css ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.css ------------------------------------------------------------------------------ svn:mime-type = text/css Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.html URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.html?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.html (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.html Mon Feb 19 09:56:06 2007 @@ -0,0 +1,24 @@ +<div dojoAttachPoint="domNode"> + <table width="100%" cellspacing="0" cellpadding="5"> + <tbody> + <tr dojoAttachPoint="navigationContainer"> + <td dojoAttachPoint="categoriesNode" valign="top" width="1%"> + <h1>Categories</h1> + <div dojoAttachPoint="categoriesButtonsNode"></div> + </td> + + <td dojoAttachPoint="demoListNode" valign="top"> + <div dojoAttachPoint="demoListWrapperNode"> + <div dojoAttachPoint="demoListContainerNode"> + </div> + </div> + </td> + </tr> + <tr> + <td colspan="2"> + <div dojoAttachPoint="demoNode"></div> + </td> + </tr> + </tbody> + </table> +</div> Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.html ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoNavigator.html ------------------------------------------------------------------------------ svn:mime-type = text/html Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.css URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.css?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.css (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.css Mon Feb 19 09:56:06 2007 @@ -0,0 +1,18 @@ +.demoPane { + width: 100%; + height: 100%; + padding: 0px; + margin: 0px; + overflow: hidden; +} + +.demoPane iframe { + width: 100%; + height: 100%; + border: 0px; + border: none; + overflow: auto; + padding: 0px; + margin:0px; + background: #ffffff; +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.css ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.css ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.css ------------------------------------------------------------------------------ svn:mime-type = text/css Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.html URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.html?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.html (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.html Mon Feb 19 09:56:06 2007 @@ -0,0 +1,3 @@ +<div dojoAttachPoint="domNode"> + <iframe dojoAttachPoint="demoNode"></iframe> +</div> Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.html ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/DemoPane.html ------------------------------------------------------------------------------ svn:mime-type = text/html Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.css URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.css?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.css (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.css Mon Feb 19 09:56:06 2007 @@ -0,0 +1,20 @@ +.sourcePane { + width: 100%; + height: 100%; + padding: 0px; + margin: 0px; + overflow: hidden; +} + +.sourcePane textarea{ + width: 100%; + height: 100%; + border: 0px; + overflow: auto; + padding: 0px; + margin:0px; +} + +* html .sourcePane { + overflow: auto; +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.css ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.css ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.css ------------------------------------------------------------------------------ svn:mime-type = text/css Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.html URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.html?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.html (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.html Mon Feb 19 09:56:06 2007 @@ -0,0 +1,3 @@ +<div dojoAttachPoint="domNode"> + <textarea dojoAttachPoint="sourceNode" rows="100%"></textarea> +</div> Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.html ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.html ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/SourcePane.html ------------------------------------------------------------------------------ svn:mime-type = text/html Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/general.css URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/general.css?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/general.css (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/general.css Mon Feb 19 09:56:06 2007 @@ -0,0 +1,73 @@ +.demoListWrapper { + border:1px solid #dcdbdb; + background-color:#f8f8f8; + padding:2px; +} + +.demoListContainer { + border:1px solid #f0f0f0; + background-color:#fff; + padding:1em; +} + +.demoSummaryBox { + background: #efefef; + border:1px solid #dae3ee; +} + +.screenshot { + padding:0.65em; + width:175px; + border-right:1px solid #fafafa; + text-align:center; +} + +.demoSummary { + margin-bottom:1em; +} + +.demoSummary a:link, .demoSummary a:visited { + color:#a6238f; + text-decoration:none; +} + +.summaryContainer { + border-left:1px solid #ddd; +} + +.summaryContainer h1 { + background-color:#e8e8e8; + border-bottom: 1px solid #e6e6e6; + color:#738fb9; + margin:1px; + padding:0.5em; + font-family:"Lucida Grande", "Tahoma", serif; + font-size:1.25em; + font-weight:normal; +} + +.summaryContainer h1 .packageSummary { + display:block; + color:#000; + font-size:10px; + margin-top:2px; +} + +.summaryContainer .summary { + padding:1em; +} + +.summaryContainer .summary p { + font-size:0.85em; + padding:0; + margin:0; +} + +.reflection { + background: url("images/demoBoxReflection.gif") repeat-x top left; + height:25px; +} + +.view { + text-align:right; +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/general.css ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/general.css ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/general.css ------------------------------------------------------------------------------ svn:mime-type = text/css Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/images/test_thumb.gif URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/images/test_thumb.gif?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/images/test_thumb.gif ------------------------------------------------------------------------------ svn:mime-type = image/gif Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/images/viewDemo.png URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/images/viewDemo.png?view=auto&rev=509273 ============================================================================== Binary file - no diff available. Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/demoEngine/templates/images/viewDemo.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/layout.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/layout.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/layout.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/layout.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,133 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.widget.html.layout"); + +dojo.require("dojo.lang.common"); +dojo.require("dojo.string.extras"); +dojo.require("dojo.html.style"); +dojo.require("dojo.html.layout"); + +dojo.widget.html.layout = function(/*DomNode*/ container, /*Object[]*/ children, /*String*/ layoutPriority) { + /** + * summary + * Layout a bunch of child dom nodes within a parent dom node + * container: + * parent node + * layoutPriority: + * "top-bottom" or "left-right" + * children: + * an array like [ {domNode: foo, layoutAlign: "bottom" }, {domNode: bar, layoutAlign: "client"} ] + */ + + dojo.html.addClass(container, "dojoLayoutContainer"); + + // Copy children array and remove elements w/out layout. + // Also record each child's position in the input array, for sorting purposes. + children = dojo.lang.filter(children, function(child, idx){ + child.idx = idx; + return dojo.lang.inArray(["top","bottom","left","right","client","flood"], child.layoutAlign) + }); + + // Order the children according to layoutPriority. + // Multiple children w/the same layoutPriority will be sorted by their position in the input array. + if(layoutPriority && layoutPriority!="none"){ + var rank = function(child){ + switch(child.layoutAlign){ + case "flood": + return 1; + case "left": + case "right": + return (layoutPriority=="left-right") ? 2 : 3; + case "top": + case "bottom": + return (layoutPriority=="left-right") ? 3 : 2; + default: + return 4; + } + }; + children.sort(function(a,b){ + return (rank(a)-rank(b)) || (a.idx - b.idx); + }); + } + + // remaining space (blank area where nothing has been written) + var f={ + top: dojo.html.getPixelValue(container, "padding-top", true), + left: dojo.html.getPixelValue(container, "padding-left", true) + }; + dojo.lang.mixin(f, dojo.html.getContentBox(container)); + + // set positions/sizes + dojo.lang.forEach(children, function(child){ + var elm=child.domNode; + var pos=child.layoutAlign; + // set elem to upper left corner of unused space; may move it later + with(elm.style){ + left = f.left+"px"; + top = f.top+"px"; + bottom = "auto"; + right = "auto"; + } + dojo.html.addClass(elm, "dojoAlign" + dojo.string.capitalize(pos)); + + // set size && adjust record of remaining space. + // note that setting the width of a <div> may affect it's height. + // TODO: same is true for widgets but need to implement API to support that + if ( (pos=="top")||(pos=="bottom") ) { + dojo.html.setMarginBox(elm, { width: f.width }); + var h = dojo.html.getMarginBox(elm).height; + f.height -= h; + if(pos=="top"){ + f.top += h; + }else{ + elm.style.top = f.top + f.height + "px"; + } + // TODO: for widgets I want to call resizeTo(), but I can't because + // I only want to set the width, and have the height determined + // dynamically. (The thinner you make a div, the more height it consumes.) + if(child.onResized){ + child.onResized(); + } + }else if(pos=="left" || pos=="right"){ + var w = dojo.html.getMarginBox(elm).width; + + // TODO: I only want to set the height, not the width, but see bug#941 (FF), + // and also the resizeTo() function demands both height and width arguments + if(child.resizeTo){ + child.resizeTo(w, f.height); + }else{ + dojo.html.setMarginBox(elm, { width: w, height: f.height }); + } + + f.width -= w; + if(pos=="left"){ + f.left += w; + }else{ + elm.style.left = f.left + f.width + "px"; + } + } else if(pos=="flood" || pos=="client"){ + if(child.resizeTo){ + child.resizeTo(f.width, f.height); + }else{ + dojo.html.setMarginBox(elm, { width: f.width, height: f.height }); + } + } + }); +}; + +// This is essential CSS to make layout work (it isn't "styling" CSS) +// make sure that the position:absolute in dojoAlign* overrides other classes +dojo.html.insertCssText( + ".dojoLayoutContainer{ position: relative; display: block; overflow: hidden; }\n" + + "body .dojoAlignTop, body .dojoAlignBottom, body .dojoAlignLeft, body .dojoAlignRight { position: absolute; overflow: hidden; }\n" + + "body .dojoAlignClient { position: absolute }\n" + + ".dojoAlignClient { overflow: auto; }\n" +); Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/layout.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/layout.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/layout.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/loader.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/loader.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/loader.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/widget/html/loader.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,844 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.widget.html.loader"); + +dojo.require("dojo.widget.HtmlWidget"); +dojo.require("dojo.io.*"); +dojo.require("dojo.lang.common"); +dojo.require("dojo.lang.extras"); + +dojo.require("dojo.experimental"); +dojo.experimental("dojo.widget.html.loader"); + +// as this is a singleton dojo.declare doesn't buy us anything here +dojo.widget.html.loader = new (function(){ + // summary: + // loading stuff moved out of contentpane to make it directly accessible by other widgets + this.toString = function(){ return "dojo.widget.html.loader"; } + var _loader = this; + + // back/forward tracking + dojo.addOnLoad(function(){ + dojo.experimental(_loader.toString()); + var undo = dojo.evalObjPath("dojo.undo.browser"); + if(djConfig["preventBackButtonFix"] && undo && !undo.initialState){ + undo.setInitialState(new trackerObj); + } + }); + + var logger = {}; + var trackerObj = function(id, data){ + this.id = id; + this.data = data + }; + trackerObj.prototype.handle = function(type){ + if(typeof dojo == 'undefined'){ return; } // wtf? how can dojo become undef? + var wg = dojo.widget.byId(this.id); + if(wg){ wg.setContent(this.data, true); } + }; + + this._log = function(widget, data){ + // if a loader widget B is a child of loader widget A + // we need to destroy all of B's undo if we switch content + if(widget.trackHistory){ + if(!logger[widget.widgetId]){ + logger[widget.widgetId] = { childrenIds: [], stack:[data] }; + }var children = logger[widget.widgetId].childrenIds; + while(children && children.length){ + delete logger[children.pop()]; + } + for(var child in widget.children){ + logger[widget.widgetId].childrenIds = child.widgetId; + } + dojo.undo.browser.addToHistory(new trackerObj(widget.widgetId, dojo.lang.shallowCopy(data, true))); + } + } + + // shortCuts + var undef = dojo.lang.isUndefined; + var isFunc = dojo.lang.isFunction; + + + + /************ private needed functions, no need to be part of widget API ***********/ + // useful if user wants to prevent default behaviour ie: _setContent("Error...") + function handleDefaults(e, handler, useAlert){ + if(!handler){ handler = "onContentError"; } + if(dojo.lang.isString(e)){ e = {_text: e}; } + if(!e._text){ e._text = e.toString(); } + e.toString = function(){ return this._text; }; + if(typeof e.returnValue != "boolean"){ + e.returnValue = true; + } + if(typeof e.preventDefault != "function"){ + e.preventDefault = function(){ this.returnValue = false; }; + } + // call our handler + this[handler](e); + if(e.returnValue){ + if(useAlert){ + alert(e.toString()); + }else{ + this.loader.callOnUnLoad.call(this, false); + this.onSetContent(e.toString()); + } + } + }; + + // set up downloader, used by both scripts and content + function downloader(bindArgs) { + for(var x in this.bindArgs){ + bindArgs[x] = (undef(bindArgs[x]) ? this.bindArgs[x] : undefined); + } + var cache = this.cacheContent; + if(undef(bindArgs.useCache)){ bindArgs.useCache = cache; } + if(undef(bindArgs.preventCache)){ bindArgs.preventCache = !cache; } + if(undef(bindArgs.mimetype)){ bindArgs.mimetype = "text/html"; } + this.loader.bindObj = dojo.io.bind(bindArgs); + }; + + // runs addOnLoad/addOnUnLoad functions + function stackRunner(st){ + var err = "", func = null; + var scope = this.scriptScope || dojo.global(); + while(st.length){ + func = st.shift(); + try{ + func.call(scope); + }catch(e){ + err += "\n"+func+" failed: "+e; + } + } + if(err.length){ + var name = (st== this.loader.addOnLoads) ? "addOnLoad" : "addOnUnLoad"; + handleDefaults.call(this, name+" failure\n "+err, "onExecError", true); + } + }; + + // push addOnLoad and addOnUnLoad functions onto stack + function stackPusher(st, obj, func){ + if(typeof func == 'undefined') { + st.push(obj); + }else{ + st.push(function(){ obj[func](); }); + } + }; + + // code saver, collects onLoad, onResized and isLoaded + function refreshed(){ + this.onResized(); + this.onLoad(); + this.isLoaded = true; + }; + + // runs scripts and starts the content parser + function asyncParse(data){ + if(this.executeScripts){ + this.onExecScript.call(this, data.scripts); + } + if(this.parseContent){ + this.onContentParse.call(this); + } + refreshed.call(this); + }; + + // run java function + function runHandler(){ + //FIXME: current behaviour is to return false if handler is there; is that intended? + if(dojo.lang.isFunction(this.handler)) { + this.handler(this, this.containerNode||this.domNode); + refreshed.call(this); + return false; + } + return true; + }; + + // divided up splitAndFixPaths in different parts + this.htmlContentBasicFix = function(/*string*/s, /*string||dojo.uri.Uri*/url){ + // summary: + // strips out <style, <link rel=stylesheet and <title tags + // intended to take out tags that might cause DOM faults + var titles = [], styles = []; + /************** <title> ***********/ + // khtml can't attach a <style> or <title> node as child of body + var regex = /<title[^>]*>([\s\S]*?)<\/title>/i; + var match, attr; + while(match = regex.exec(s)){ + titles.push(match[1]); + s = s.substring(0, match.index) + s.substr(match.index + match[0].length); + }; + /**************** cut out all <style> and <link rel="stylesheet" href=".."> **************/ + regex = /(?:<(style)[^>]*>([\s\S]*?)<\/style>|<link ([^>]*rel=['"]?stylesheet['"]?[^>]*)>)/i; + while(match = regex.exec(s)){ + if(match[1] && match[1].toLowerCase() == "style"){ + styles.push(dojo.html.fixPathsInCssText(match[2],url)); + }else if(attr = match[3].match(/href=(['"]?)([^'">]*)\1/i)){ + styles.push({path: attr[2]}); + } + s = s.substring(0, match.index) + s.substr(match.index + match[0].length); + }; + return {'s': s, 'titles': titles, 'styles': styles};//object + }; + + this.htmlContentAdjustPaths = function(/*string*/s, /*string||dojo.uri.Uri*/url){ + // summary: + // adjusts relative paths in content to be relative to current page + var tag = "", str = "", tagFix = "", path = ""; + var attr = [], origPath = "", fix = ""; + + // attributepaths one tag can have multiple paths example: + // <input src="..." style="url(..)"/> or <a style="url(..)" href=".."> + // strip out the tag and run fix on that. + // this guarantees that we won't run replace on another tag's attribute + it was easier do + var regexFindTag = /<[a-z][a-z0-9]*[^>]*\s(?:(?:src|href|style)=[^>])+[^>]*>/i; + var regexFindAttr = /\s(src|href|style)=(['"]?)([\w()\[\]\/.,\\'"-:;#=&?\s@]+?)\2/i; + // these are the supported protocols, all other is considered relative + var regexProtocols = /^(?:[#]|(?:(?:https?|ftps?|file|javascript|mailto|news):))/; + + while(tag = regexFindTag.exec(s)){ + str += s.substring(0, tag.index); + s = s.substring((tag.index + tag[0].length), s.length); + tag = tag[0]; + + // loop through attributes + tagFix = ''; + while(attr = regexFindAttr.exec(tag)){ + path = ""; origPath = attr[3]; + switch(attr[1].toLowerCase()){ + case "src":// falltrough + case "href": + if(regexProtocols.exec(origPath)){ + path = origPath; + } else { + path = (new dojo.uri.Uri(url, origPath).toString()); + } + break; + case "style":// style + path = dojo.html.fixPathsInCssText(origPath, url); + break; + default: + path = origPath; + } + + fix = " " + attr[1] + "=" + attr[2] + path + attr[2]; + + // slices up tag before next attribute check + tagFix += tag.substring(0, attr.index) + fix; + tag = tag.substring((attr.index + attr[0].length), tag.length); + } + str += tagFix + tag; + } + return str+s; // string + }; + + + this.htmlContentScripts = function(/*string*/s, /*boolean*/collectScripts){ + // summary: + // handles scripts and dojo .require(...) etc calls + // NOTE: we need to go through here even if we have executeScripts=false + // and if we have parseWidgets true + var scripts = [], requires = [], match = []; + var attr = "", tmp = null, tag = "", sc = "", str = ""; + + /***************** cut out all <script> tags, push them into scripts array ***************/ + var regex = /<script([^>]*)>([\s\S]*?)<\/script>/i; + var regexSrc = /src=(['"]?)([^"']*)\1/i; + var regexDojoJs = /.*(\bdojo\b\.js(?:\.uncompressed\.js)?)$/; + var regexInvalid = /(?:var )?\bdjConfig\b(?:[\s]*=[\s]*\{[^}]+\}|\.[\w]*[\s]*=[\s]*[^;\n]*)?;?|dojo\.hostenv\.writeIncludes\(\s*\);?/g; + var regexRequires = /dojo\.(?:(?:require(?:After)?(?:If)?)|(?:widget\.(?:manager\.)?registerWidgetPackage)|(?:(?:hostenv\.)?setModulePrefix)|defineNamespace)\((['"]).*?\1\)\s*;?/; + + while(match = regex.exec(s)){ + if(this.executeScripts && match[1]){ + if(attr = regexSrc.exec(match[1])){ + // remove a dojo.js or dojo.js.uncompressed.js from remoteScripts + // we declare all files named dojo.js as bad, regardless of path + if(regexDojoJs.exec(attr[2])){ + dojo.debug("Security note! inhibit:"+attr[2]+" from beeing loaded again."); + }else{ + scripts.push({path: attr[2]}); + } + } + } + if(match[2]){ + // remove all invalid variables etc like djConfig and dojo.hostenv.writeIncludes() + sc = match[2].replace(regexInvalid, ""); + if(!sc){ continue; } + + // cut out all dojo .require (...) calls, if we have execute + // scripts false widgets don't get their require calls + // takes out possible widgetpackage registration as well + while(tmp = regexRequires.exec(sc)){ + requires.push(tmp[0]); + sc = sc.substring(0, tmp.index) + sc.substr(tmp.index + tmp[0].length); + } + if(collectScripts){ + scripts.push(sc); + } + } + s = s.substr(0, match.index) + s.substr(match.index + match[0].length); + } + /******** scan for scriptScope in html eventHandlers + and replace with link to this widget *********/ + if(collectScripts){ + var regex = /(<[a-zA-Z][a-zA-Z0-9]*\s[^>]*\S=(['"])[^>]*[^\.\]])scriptScope([^>]*>)/; + str = ""; + while(tag = regex.exec(s)){ + tmp = ((tag[2]=="'") ? '"': "'"); + str += s.substring(0, tag.index); + s = s.substr(tag.index).replace(regex, "$1dojo.widget.byId("+ tmp + this.widgetId + tmp + ").scriptScope$3"); + } + s = str + s; + } + return {'s': s, 'requires': requires, 'scripts': scripts}; // object + }; + + + this.splitAndFixPaths = function(/*object*/args){ + // summary: + // pathfixes, require calls, css stuff and neccesary content clean + // args: + // content string + // url string? or dojo.uri.Uri that that pulled the content in, for path adjust + // adjustPaths boolean, if true adjust relative paths in content to match this page + // collectScripts boolean, if true it takes out all <script and <script src=.. tags and collects + // dojo.require calls in a separate array, useful for eval + // collectRequires boolean, if true and collectScripts is false it still collects scripts along with + // dojo.require calls + // bodyExtract boolean, if true only return content inside of the body tag + + // return: {xml: string, + // styles: array, remote style get object {path: /*string*/url} + // requires: array, + // scripts: array, remote scripts get object {path: /*string*/url} + // url: string} + if(!args.url) { args.url = "./"; } // point to this page if not set + // make sure back/forward buttons don't mess up url. + url = new dojo.uri.Uri(location, args.url).toString(); + var ret = {'xml': "", + 'styles': [], + 'titles': [], + 'requires': [], + 'scripts': [], + 'url': url }; + + if(args.content){ // make sure we don't run regexes on empty content + var tmp = null, content = args.content; + if(args.adjustPaths){ + content = _loader.htmlContentAdjustPaths.call(this, content, url); + } + + tmp = _loader.htmlContentBasicFix.call(this, content, url); + content = tmp.s; + ret.styles = tmp.styles; + ret.titles = tmp.titles; + + if(args.collectRequires || args.collectScripts){ + tmp = _loader.htmlContentScripts.call(this, content, args.collectScripts); + content = tmp.s; + ret.requires = tmp.requires; + ret.scripts = tmp.scripts; + } + + /********* extract content *********/ + var match = []; + if(args.bodyExtract){ + match = content.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im); + if(match) { content = match[1]; } + } + ret.xml = content; + } + return ret;// object + }; + + + // the all important startup function + this.hookUp = function(/*object*/args){ + // summary: + // mixin or extend loader into a widget + // args: + // widget: widget reference + // mixin: boolean, default false + // if mixin true, it will only extend the current widget, not its prototype + var widget = args.widget; + if(dojo.lang.isString(widget)){ + if(args.mixin){ + dojo.raise(this.toString()+", cant use mixin when widget is a string"); + } + widget = dojo.evalObjPath(widget); + } + if(!widget || !(widget instanceof dojo.widget.HtmlWidget)){ + dojo.raise(this.toString()+" Widget isn't defined or isn't a HtmlWidget instance"); + } + // make sure we don't mixin more than once + if(widget.loader && widget.setUrl){ return; } + + // extend widget prototype or mixin this widget instance + var widgetProto = (args.mixin) ? widget : widget.constructor.prototype; + + /******************************************** + ** per widgetImpl variables, mixin into widget + ********************************************/ + // stuff it into a loader obj + widget.loader = { + isLoaded: false, + styleNodes: [], + addOnLoads: [], + addOnUnLoads: [], + callOnUnLoad:(function(canCall){ + return function(after){ this.abort(); + if(canCall){ this.onUnLoad(); } + canCall = after; + }; + })(false), + bindObj: null, + // to disconnect widget + unHook: (function(w, wg){ + var oldProps = { + isContainer: w.isContainer, + adjustPats: w.adjustPaths, + href: w.href, + extractContent: w.extractContent, + parseContent: w.parseContent, + cacheContent: w.cacheContent, + bindArgs: w.bindArgs, + preload: w.preload, + refreshOnShow: w.refreshOnShow, + handler: w.handler, + trackHistory: w.trackHistory, + executeScripts: w.executeScripts, + scriptScope: w.scriptScope, + // functions + postCreate: w.postCreate, + show: w.show, + refresh: w.refresh, + loadContents: w.loadContents, + abort: w.abort, + destroy: w.destroy, + onLoad: w.onLoad, + onUnLoad: w.onUnLoad, + addOnLoad: w.addOnLoad, + addOnUnLoad: w.addOnUnLoad, + onDownloadStart: w.onDownloadStart, + onDownloadEnd: w.onDownloadEnd, + onDownloadError: w.onDownloadError, + onContentError: w.onContentError, + onExecError: w.onExecError, + onSetContent: w.onSetContent, + setUrl: w.setUrl, + setContent: w.setContent, + onContentParse: w.onContentParse, + onExecScript: w.onExecScript, + setHandler: w.setHandler + }; + return function(){ + if(wg.abort){ wg.abort(); } + // make sure we don't unhook prototype if there are more widgets of this type left + if((w != wg) && (dojo.widget.byType(wg.widgetType).length>1)){ return; } + for(var x in oldProps){ + if(oldProps[x]===undefined){ + delete w[x]; continue; + } + w[x] = oldProps[x]; + } + delete wg._loader_defined; + delete wg.loader; + }; + })(widgetProto, widget) + }; + + // make sure we don't do this more than once per widget/widgetprototype + if(widgetProto._loader_defined || widget._loader_defined){ return; } + + /**************** private variables *********************/ + + // loading options, prototype parts of widget's mixin to prototype + dojo.mixin(widgetProto, { + // always set to a containerwidget + isContainer: true, + // fix relative paths in content to fit into this page + adjustPaths: undef(widgetProto.adjustPaths) ? true : widgetProto.adjustPaths, + // only usable on construction, use setUrl or setContent after that + href: undef(widgetProto.href) ? "" : widgetProto.href, + // extract visible content from inside of <body> .... </body> + extractContent: undef(widgetProto.extractContent) ? true : widgetProto.extractContent, + // construct all widgets that is in content + // FIXME: rename to parseWidgets? + parseContent: undef(widgetProto.parseContent) ? true : widgetProto.parseContent, + // use io binds javascript cache, or if false, prevent browsercache + cacheContent: undef(widgetProto.cacheContent) ? true : widgetProto.cacheContent, + // specify specific io.bind arguments such as transport and useCache + bindArgs: undef(widgetProto.bindArgs) ? {} : widgetProto.bindArgs, + // force load even if widget isn't shown (lazyload setting) + preload: undef(widgetProto.preload) ? false : widgetProto.preload, + // reload content automatically onShow, use with cacheContent = flase + refreshOnShow: undef(widgetProto.refreshOnShow) ? false : widgetProto.refreshOnShow, + // name of java function which should generate content + handler: undef(widgetProto.handler) ? "" : widgetProto.handler, + // if true scripts in content will be evaled after content is innerHTML'ed + executeScripts: undef(widgetProto.executeScripts) ? false : widgetProto.executeScripts, + // log contents (back/forward support) + trackHistory: undef(widgetProto.tracHistory) ? false : widgetProto.trackHistory, + scriptScope: null // always overwrite + }); + + /**************************************************** + ******* public functions, becomes part of widget's API + *****************************************************/ + + /*********** Public functions that wigets cant overide **********/ + // set up postCreate, call originalcode before our own + widgetProto.postCreate = (function(postCreate){ + return function(){ + if(widgetProto.constructor.superclass.postCreate != postCreate){ + postCreate.apply(this, arguments); + }else{ + widgetProto.constructor.superclass.postCreate.apply(this, arguments); + } + if(this.handler!==""){ this.setHandler(this.handler); } + if(this.isShowing() || this.preload){ + this.loadContents(); + if(!this.href){ // back/forward save initial state + _loader._log(this,(this.domNode||this.containerNode).innerHTML); + } + } + } + })(widgetProto.postCreate); + + // set up onShow listener, call original code after this block + widgetProto.show = (function(show){ + return function(){ + // if refreshOnShow is true, reload the contents every time; otherwise, load only the first time + if(this.refreshOnShow){ + this.refresh(); + }else{ + this.loadContents(); + } + if((widgetProto.constructor.superclass.show == show) || !isFunc(show)){ + widgetProto.constructor.superclass.show.apply(this, arguments); + }else{ + show.apply(this, arguments); + } + }; + })(widgetProto.show); + + // destroy cleanups, original code in the middle + widgetProto.destroy = (function(destroy){ + return function(destroy){ + this.onUnLoad(); + this.abort(); + this.loader.unHook(); + if((widgetProto.constructor.superclass.destroy != destroy) && isFunc(destroy)){ + destroy.apply(this, arguments); + }else{ + widgetProto.constructor.superclass.destroy.apply(this, arguments); + } + } + })(widgetProto.destroy); + + + /******* Public functions that widgets can overide *****/ + // set up a refresh function + if(!widgetProto.refresh){ + widgetProto.refresh = function(){ + this.loader.isLoaded = false; + this.loadContents(); + }; + } + + // set up html loading contents + if(!widgetProto.loadContents){ + widgetProto.loadContents = function(){ + if(this.loader.isLoaded){ return; } + // javafunction + if(isFunc(this.handler)){ + runHandler.call(this); + }else if(this.href !== ""){ + handleDefaults.call(this, "Loading...", "onDownloadStart"); + var self = this, url = this.href; + downloader.call(this, { + url: url, + load: function(type, data, xhr){ + self.onDownloadEnd.call(self, url, data); + }, + error: function(type, err, xhr){ + // XHR insnt a normal JS object, copy esentials + var e = { + responseText: xhr.responseText, + status: xhr.status, + statusText: xhr.statusText, + responseHeaders: (xhr.getAllResponseHeaders) ? xhr.getAllResponseHeaders():[], + _text: "Error loading '" + url + "' (" + xhr.status + " "+ xhr.statusText + ")" + }; + handleDefaults.call(self, e, "onDownloadError"); + self.onLoad(); + } + }); + } + }; + } + + // set up abort + if(!widgetProto.abort){ + widgetProto.abort = function(){ + if(!this.loader || !this.loader.bindObj || !this.loader.bindObj.abort){ return; } + this.loader.bindObj.abort(); + this.loader.bindObj = null; + }; + } + + // onLoad + if(!widgetProto.onLoad){ + widgetProto.onLoad = function(){ + stackRunner.call(this, this.loader.addOnLoads); + this.loader.isLoaded = true; + }; + } + + // onUnLoad, original code in the middle + if(!widgetProto.onUnLoad){ + widgetProto.onUnLoad = function(){ + stackRunner.call(this, this.loader.addOnUnLoads); + delete this.scriptScope; + } + } + + // add to onLoad queue + if(!widgetProto.addOnLoad){ + widgetProto.addOnLoad = function(obj, func){ + stackPusher.call(this, this.loader.addOnLoads, obj, func); + }; + } + + // add to onUnLoad queue + if(!widgetProto.addOnUnLoad){ + widgetProto.addOnUnLoad = function(obj, func){ + stackPusher.call(this, this.loader.addOnUnLoads, obj, func); + } + } + + // script or java errors, preventDefault-able + if(!widgetProto.onExecError){ + widgetProto.onExecError = function(){/*stub*/}; + } + + // called on DOM faults, require fault etc in content, preventDefault-able + if(!widgetProto.onContentError){ + widgetProto.onContentError = function(){/*stub*/}; + } + + // called when download error occurs, preventDefault-able + if(!widgetProto.onDownloadError){ + widgetProto.onDownloadError = function(){/*stub*/}; + } + + // called before download starts, preventDefault-able + if(!widgetProto.onDownloadStart){ + widgetProto.onDownloadStart = function(onDownloadStart){/*stub*/}; + } + + // called when download is finished successfully + if(!widgetProto.onDownloadEnd){ + widgetProto.onDownloadEnd = function(url, data){ + var args = {content: data, + url: url, + adjustPaths: this.adjustPaths, + collectScripts: this.executeScripts, + collectRequires: this.parseContent, + bodyExtract: this.extractContent }; + data = _loader.splitAndFixPaths.call(this, args); + this.setContent(data); + } + } + + // previously called _setContent, widget defined onSetContent can modify content or cancel + if(!widgetProto.onSetContent){ + widgetProto.onSetContent = function(cont){ + this.destroyChildren(); + + // remove old stylenodes from HEAD + var styleNodes = this.loader.styleNodes; + while(styleNodes.length){ + var st = styleNodes.pop(); + if(st && st.parentNode){ + st.parentNode.removeChild(st); + } + } + + var node = this.containerNode || this.domNode; + while(node.firstChild){ + try{ + dojo.event.browser.clean(node.firstChild); + }catch(e){} + node.removeChild(node.firstChild); + } + try{ + if(typeof cont != "string"){ + node.appendChild(cont); + }else{ + try{// hack to deal with domfaults, ie. appending div to tablenodes + node.innerHTML = cont; + }catch(e){var tmp; + (tmp = dojo.doc().createElement("div")).innerHTML = cont; + while(tmp.firstChild){ + node.appendChild(tmp.removeChild(tmp.firstChild)); + } + } + } + }catch(e){ + e._text = "Could'nt load content: "+e; + var useAlert = (this.loader._onSetContent_err == e._text); // make sure we don't loop + this.loader._onSetContent_err = e._text; + handleDefaults.call(this, e, "onContentError", useAlert); + } + }; + } + + if(!widgetProto.setUrl){ + widgetProto.setUrl = function(url){ + this.href = url; + this.loader.isLoaded = false; + if ( this.preload || this.isShowing() ){ + this.loadContents(); + } + } + } + + if(!widgetProto.setContent){ + widgetProto.setContent = function(data, dontLog){ + this.loader.callOnUnLoad.call(this, true); + + if(!data||dojo.html.isNode(data)){ + this.onSetContent(data); + refreshed.call(this); + }else{ + // need to run splitAndFixPaths? ie. manually setting content + // adjustPaths is taken care of inside splitAndFixPaths + if(typeof data.xml != 'string'){ + this.href = ""; // so we can refresh safely + var args = {content: data, + url: this.href, + adjustPaths: this.adjustPaths, + collectScripts: this.executeScripts, + collectRequires: this.parseContent, + bodyExtract: this.extractContent }; + data = _loader.splitAndFixPaths.call(this, args); + }else if(data.url!="./"){ + this.url = data.url;// backbutton thing + } + this.onSetContent(data.xml); + + // insert styles from content (in same order they came in) + for(var i = 0, styles = data.styles; i < styles.length; i++){ + if(styles[i].path){ + this.loader.styleNodes.push(dojo.html.insertCssFile(styles[i].path)); + }else{ + this.loader.styleNodes.push(dojo.html.insertCssText(styles[i])); + } + } + + if(this.parseContent){ + for(var i = 0, requires = data.requires; i < requires.length; i++){ + try{ + eval(requires[i]); + } catch(e){ + e._text = "dojo.widget.html.loader.hookUp: error in package loading calls, "+(e.description||e); + handleDefaults.call(this, e, "onContentError", true); + } + } + } + // need to allow async load, Xdomain uses it + // NOTE: on Xdomain loads this can break the sync thread of setContent + // if you you do any dojo. require(...) etc + if(dojo.hostenv.isXDomain && data.requires.length){ + dojo.addOnLoad(function(){ + asyncParse.call(this, data); + if(!dontLog){ + _loader._log(this, data); + } + });// this opens a thread need abort undo + dontLog = true; + }else{ + asyncParse.call(this, data); + } + }if(!dontLog){ +// _loader._log(this, data); + } + }; + } + + if(!widgetProto.onContentParse){ + widgetProto.onContentParse = function(){ + var node = this.containerNode || this.domNode; + var parser = new dojo.xml.Parse(); + var frag = parser.parseElement(node, null, true); + dojo.widget.getParser().createSubComponents(frag, this); + }; + } + + // previously called _executeScripts + if(!widgetProto.onExecScript){ + widgetProto.onExecScript = function(scripts){ + // loop through the scripts in the order they came in + var self = this, tmp = "", code = ""; + for(var i = 0; i < scripts.length; i++){ // remotescript + if( |
Free forum by Nabble | Edit this page |