diff --git a/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java b/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java index 6ecd4f2051..d61648e7b7 100644 --- a/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java +++ b/source/java/org/alfresco/web/bean/wcm/CreateWebContentWizard.java @@ -56,6 +56,7 @@ import org.alfresco.web.forms.FormProcessor; import org.alfresco.web.forms.FormsService; import org.alfresco.web.forms.Rendition; import org.alfresco.web.forms.RenditionImpl; +import org.alfresco.web.ui.common.Utils; import org.alfresco.web.ui.wcm.component.UIUserSandboxes; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -66,7 +67,7 @@ import org.w3c.dom.Document; */ public class CreateWebContentWizard extends BaseContentWizard { - private static final Log logger = LogFactory.getLog(CreateWebContentWizard.class); + private static final Log LOGGER = LogFactory.getLog(CreateWebContentWizard.class); protected String content = null; protected String formName; @@ -153,6 +154,56 @@ public class CreateWebContentWizard extends BaseContentWizard } } } + + @Override + public String next() + { + final int step = Application.getWizardManager().getCurrentStep(); + if (step == 3) + { + try + { + this.saveContent(); + } + catch (Exception e) + { + Application.getWizardManager().getState().setCurrentStep(step - 1); + Utils.addErrorMessage(e.getMessage(), e); + } + } + return super.next(); + } + + @Override + public String back() + { + final int step = Application.getWizardManager().getCurrentStep(); + if (step == 2) + { + LOGGER.debug("clearing form instance data"); + this.formInstanceData = null; + this.renditions = null; + } + return super.back(); + } + + @Override + public String finish() + { + if (this.formInstanceData == null || this.renditions == null) + { + try + { + this.saveContent(); + } + catch (Exception e) + { + Utils.addErrorMessage(e.getMessage(), e); + return super.getErrorOutcome(e); + } + } + return super.finish(); + } @Override protected String finishImpl(final FacesContext context, final String outcome) @@ -278,13 +329,9 @@ public class CreateWebContentWizard extends BaseContentWizard boolean disabled = false; int step = Application.getWizardManager().getCurrentStep(); - switch(step) + if (step == 1) { - case 1: - { - disabled = (this.fileName == null || this.fileName.length() == 0); - break; - } + disabled = (this.fileName == null || this.fileName.length() == 0); } return disabled; @@ -292,25 +339,20 @@ public class CreateWebContentWizard extends BaseContentWizard /** * Save the specified content using the currently set wizard attributes - * - * @param fileContent File content to save - * @param strContent String content to save */ - @Override - protected void saveContent(File fileContent, String strContent) throws Exception + protected void saveContent() + throws Exception { final FormsService fs = FormsService.getInstance(); - if (logger.isDebugEnabled()) - logger.debug("saving file content to " + this.fileName); + if (LOGGER.isDebugEnabled()) + LOGGER.debug("saving file content to " + this.fileName); // get the parent path of the location to save the content String path = this.avmBrowseBean.getCurrentPath(); path = path.replaceFirst(AVMConstants.STORE_MAIN, AVMConstants.STORE_PREVIEW); if (MimetypeMap.MIMETYPE_XML.equals(this.mimeType) && this.formName != null) { - final Document formInstanceData = (fileContent != null - ? fs.parseXML(fileContent) - : fs.parseXML(strContent)); + final Document formInstanceData = fs.parseXML(this.content); path = this.getForm().getOutputPathForFormInstanceData(path, this.fileName, formInstanceData); final String[] sb = AVMNodeConverter.SplitBase(path); @@ -319,28 +361,23 @@ public class CreateWebContentWizard extends BaseContentWizard } - if (logger.isDebugEnabled()) - logger.debug("reseting layer " + path.split(":")[0] + ":/" + AVMConstants.DIR_APPBASE); + if (LOGGER.isDebugEnabled()) + LOGGER.debug("reseting layer " + path.split(":")[0] + ":/" + AVMConstants.DIR_APPBASE); this.avmSyncService.resetLayer(path.split(":")[0] + ":/" + AVMConstants.DIR_APPBASE); - if (logger.isDebugEnabled()) - logger.debug("creating all directories in path " + path); + if (LOGGER.isDebugEnabled()) + LOGGER.debug("creating all directories in path " + path); fs.makeAllDirectories(path); - if (logger.isDebugEnabled()) - logger.debug("creating file " + this.fileName + " in " + path); + if (LOGGER.isDebugEnabled()) + LOGGER.debug("creating file " + this.fileName + " in " + path); // put the content of the file into the AVM store - if (fileContent != null) - { - avmService.createFile(path, this.fileName, new BufferedInputStream(new FileInputStream(fileContent))); - } - else - { - avmService.createFile(path, this.fileName, new ByteArrayInputStream((strContent == null ? "" : strContent).getBytes())); - } + avmService.createFile(path, + this.fileName, + new ByteArrayInputStream((this.content == null ? "" : this.content).getBytes())); // remember the created path this.createdPath = path + '/' + this.fileName; @@ -424,10 +461,18 @@ public class CreateWebContentWizard extends BaseContentWizard // add the configured create mime types to the list ConfigService svc = Application.getConfigService(context); Config wizardCfg = svc.getConfig("Content Wizards"); - if (wizardCfg != null) + if (wizardCfg == null) + { + LOGGER.warn("Could not find 'Content Wizards' configuration section"); + } + else { ConfigElement typesCfg = wizardCfg.getConfigElement("create-mime-types"); - if (typesCfg != null) + if (typesCfg == null) + { + LOGGER.warn("Could not find 'create-mime-types' configuration element"); + } + else { for (ConfigElement child : typesCfg.getChildren()) { @@ -443,16 +488,7 @@ public class CreateWebContentWizard extends BaseContentWizard QuickSort sorter = new QuickSort(this.objectTypes, "label", true, IDataContainer.SORT_CASEINSENSITIVE); sorter.sort(); } - else - { - logger.warn("Could not find 'create-mime-types' configuration element"); - } } - else - { - logger.warn("Could not find 'Content Wizards' configuration section"); - } - } return this.createMimeTypes; @@ -509,12 +545,7 @@ public class CreateWebContentWizard extends BaseContentWizard } public FormInstanceData getFormInstanceData() - throws Exception { - if (this.formInstanceData == null) - { - this.saveContent(null, this.content); - } return this.formInstanceData; } @@ -542,24 +573,6 @@ public class CreateWebContentWizard extends BaseContentWizard { return this.startWorkflow; } - - /** - * @return Returns the summary data for the wizard. - */ - public String getSummary() - { - - ResourceBundle bundle = Application.getBundle(FacesContext.getCurrentInstance()); - - // TODO: show first few lines of content here? - return buildSummary( - new String[] {bundle.getString("file_name"), - bundle.getString("content_type"), - bundle.getString("Location")}, - new String[] {this.fileName, getSummaryObjectType(), - getSummaryMimeType(this.mimeType)}); - } - // ------------------------------------------------------------------------------ // Action event handlers diff --git a/source/java/org/alfresco/web/forms/Rendition.java b/source/java/org/alfresco/web/forms/Rendition.java index ebf14d8d3c..a73b1e922b 100644 --- a/source/java/org/alfresco/web/forms/Rendition.java +++ b/source/java/org/alfresco/web/forms/Rendition.java @@ -44,4 +44,7 @@ public interface Rendition /** the url to the asset */ public String getUrl(); + + /** the file type image for the rendition */ + public String getFileTypeImage(); } diff --git a/source/java/org/alfresco/web/forms/RenditionImpl.java b/source/java/org/alfresco/web/forms/RenditionImpl.java index 9129c59a06..60a673d6df 100644 --- a/source/java/org/alfresco/web/forms/RenditionImpl.java +++ b/source/java/org/alfresco/web/forms/RenditionImpl.java @@ -34,6 +34,7 @@ import org.alfresco.service.cmr.repository.TemplateService; import org.alfresco.service.namespace.QName; import org.alfresco.web.bean.repository.Repository; import org.alfresco.web.bean.wcm.AVMConstants; +import org.alfresco.web.ui.common.Utils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -105,6 +106,11 @@ public class RenditionImpl return AVMConstants.buildAVMAssetUrl(AVMNodeConverter.ToAVMVersionPath(this.nodeRef).getSecond()); } + public String getFileTypeImage() + { + return Utils.getFileTypeImage(this.getName(), false); + } + private ServiceRegistry getServiceRegistry() { final FacesContext fc = FacesContext.getCurrentInstance(); diff --git a/source/web/jsp/wcm/create-form-wizard/summary.jsp b/source/web/jsp/wcm/create-form-wizard/summary.jsp index 8013af22ac..84a73a740e 100644 --- a/source/web/jsp/wcm/create-form-wizard/summary.jsp +++ b/source/web/jsp/wcm/create-form-wizard/summary.jsp @@ -42,6 +42,7 @@
${WizardManager.bean.formDescription}
${msg.schema_root_element_name}: ${WizardManager.bean.schemaRootElementName}
+
${msg.schema_root_element_name}: ${WizardManager.bean.outputPathPatternForFormInstanceData}
diff --git a/source/web/jsp/wcm/create-web-content-wizard/summary.jsp b/source/web/jsp/wcm/create-web-content-wizard/summary.jsp index 10198ec8d3..46a00bb57b 100644 --- a/source/web/jsp/wcm/create-web-content-wizard/summary.jsp +++ b/source/web/jsp/wcm/create-web-content-wizard/summary.jsp @@ -53,7 +53,7 @@ + image="${rendition.fileTypeImage}"> minimum; }, insertChildAt: function(child, position) - { + { this.repeatControls.splice(position, 0, document.createElement("div")); - var images = [ - { name: "insertRepeatItemImage", src: "plus", action: this._insertRepeatItemAfter_handler }, - { name: "moveRepeatItemUpImage", src: "arrow_up", action: this._moveRepeatItemUp_handler }, - { name: "moveRepeatItemDownImage", src: "arrow_down", action: this._moveRepeatItemDown_handler }, - { name: "removeRepeatItemImage", src: "minus", action: this._removeRepeatItem_handler } - ]; + var images = [ + { name: "insertRepeatItemImage", src: "plus", action: this._insertRepeatItemAfter_handler }, + { name: "moveRepeatItemUpImage", src: "arrow_up", action: this._moveRepeatItemUp_handler }, + { name: "moveRepeatItemDownImage", src: "arrow_down", action: this._moveRepeatItemDown_handler }, + { name: "removeRepeatItemImage", src: "minus", action: this._removeRepeatItem_handler } + ]; var repeatControlsWidth = 0; - for (var i = 0; i < images.length; i++) - { - var img = document.createElement("img"); + for (var i = 0; i < images.length; i++) + { + var img = document.createElement("img"); this.repeatControls[position][images[i].name] = img; - img.setAttribute("src", (WEBAPP_CONTEXT + "/images/icons/" + + img.setAttribute("src", (WEBAPP_CONTEXT + "/images/icons/" + images[i].src + ".gif")); - img.style.width = "16px"; - img.style.height = "16px"; + img.style.width = "16px"; + img.style.height = "16px"; img.style.margin = "2px 5px 2px " + (i == 0 ? 5 : 0) + "px"; - img.repeat = this; + img.repeat = this; repeatControlsWidth += (parseInt(img.style.width) + parseInt(img.style.marginRight) + parseInt(img.style.marginLeft)); - this.repeatControls[position].appendChild(img); - dojo.event.connect(img, "onclick", this, images[i].action); - } + this.repeatControls[position].appendChild(img); + dojo.event.connect(img, "onclick", this, images[i].action); + } - var result = this.inherited("insertChildAt", [ child, position ]); - child.repeat = this; - dojo.event.connect(result, "onclick", function(event) - { - child.repeat.setFocusedChild(child); + var result = this.inherited("insertChildAt", [ child, position ]); + child.repeat = this; + dojo.event.connect(result, "onclick", function(event) + { + child.repeat.setFocusedChild(child); }); result.style.border = "1px solid black"; @@ -884,8 +929,8 @@ dojo.declare("alfresco.xforms.Repeat", this.repeatControls[position].style.marginLeft = (.5 * result.offsetWidth - .5 * this.repeatControls[position].offsetWidth) + "px"; - return result; - }, + return result; + }, removeChildAt: function(position) { this.repeatControls[position].style.display = "none"; @@ -894,22 +939,22 @@ dojo.declare("alfresco.xforms.Repeat", this.repeatControls.splice(position, 1); return this.inherited("removeChildAt", [ position ]); }, - getSelectedIndex: function() - { - this._selectedIndex = Math.min(this.children.length - 1, this._selectedIndex); - if (this.children.length == 0) - this._selectedIndex = -1; - return this._selectedIndex; - }, - _updateDisplay: function() - { - this.inherited("_updateDisplay", []); - for (var i = 0; i < this.children.length; i++) - { - this.children[i].domContainer.style.backgroundColor = - i % 2 ? "#f0f0ee" : "#ffffff"; - } - }, + getSelectedIndex: function() + { + this._selectedIndex = Math.min(this.children.length - 1, this._selectedIndex); + if (this.children.length == 0) + this._selectedIndex = -1; + return this._selectedIndex; + }, + _updateDisplay: function() + { + this.inherited("_updateDisplay", []); + for (var i = 0; i < this.children.length; i++) + { + this.children[i].domContainer.style.backgroundColor = + i % 2 ? "#f0f0ee" : "#ffffff"; + } + }, _getRepeatItemTrigger: function(type, properties) { var bw = this.xform.getBinding(this.xformsNode).widgets; @@ -938,21 +983,21 @@ dojo.declare("alfresco.xforms.Repeat", " for " + this.id); }, - _insertRepeatItemAfter_handler: function(event) - { - dojo.event.browser.stopEvent(event); + _insertRepeatItemAfter_handler: function(event) + { + dojo.event.browser.stopEvent(event); var repeat = event.target.repeat; if (!repeat.isInsertRepeatItemEnabled()) return; var index = repeat.repeatControls.indexOf(event.target.parentNode); var repeatItem = repeat.getChildAt(index); - this.setFocusedChild(repeatItem); + this.setFocusedChild(repeatItem); var trigger = this._getRepeatItemTrigger("insert", { position: "after" }); - this.xform.fireAction(trigger.id); - }, - _headerInsertRepeatItemBefore_handler: function(event) - { + this.xform.fireAction(trigger.id); + }, + _headerInsertRepeatItemBefore_handler: function(event) + { if (this.children.length == 0) { dojo.event.browser.stopEvent(event); @@ -962,41 +1007,41 @@ dojo.declare("alfresco.xforms.Repeat", var trigger = this._getRepeatItemTrigger("insert", { position: "before" }); this.xform.fireAction(trigger.id); } - }, - _removeRepeatItem_handler: function(event) - { - dojo.event.browser.stopEvent(event); + }, + _removeRepeatItem_handler: function(event) + { + dojo.event.browser.stopEvent(event); var repeat = event.target.repeat; if (!repeat.isRemoveRepeatItemEnabled()) return; var index = repeat.repeatControls.indexOf(event.target.parentNode); var repeatItem = repeat.getChildAt(index); - this.setFocusedChild(repeatItem); + this.setFocusedChild(repeatItem); var trigger = this._getRepeatItemTrigger("delete", {}); - this.xform.fireAction(trigger.id); - }, - _moveRepeatItemUp_handler: function(event) - { + this.xform.fireAction(trigger.id); + }, + _moveRepeatItemUp_handler: function(event) + { dojo.event.browser.stopEvent(event); var repeat = event.target.repeat; var index = repeat.repeatControls.indexOf(event.target.parentNode); - if (index == 0 || repeat.children.length == 1) - return; + if (index == 0 || repeat.children.length == 1) + return; repeat.swapChildren(index, index - 1); - }, - _moveRepeatItemDown_handler: function(event) - { - dojo.event.browser.stopEvent(event); - var repeat = event.target.repeat; + }, + _moveRepeatItemDown_handler: function(event) + { + dojo.event.browser.stopEvent(event); + var repeat = event.target.repeat; var index = repeat.repeatControls.indexOf(event.target.parentNode); - if (index == repeat.children.length - 1 || repeat.children.length == 1) - return; + if (index == repeat.children.length - 1 || repeat.children.length == 1) + return; repeat.swapChildren(index, index + 1); - }, - swapChildren: function(fromIndex, toIndex) - { - dojo.debug(this.id + ".swapChildren(" + fromIndex + + }, + swapChildren: function(fromIndex, toIndex) + { + dojo.debug(this.id + ".swapChildren(" + fromIndex + ", " + toIndex + ")"); var fromChild = this.getChildAt(fromIndex); var toChild = this.getChildAt(toIndex); @@ -1014,124 +1059,126 @@ dojo.declare("alfresco.xforms.Repeat", var req = create_ajax_request(this.xform, "swapRepeatItems", { - fromItemId: fromChild.xformsNode.getAttribute("id"), - toItemId: toChild.xformsNode.getAttribute("id"), - instanceId: this.xform.getInstance().getAttribute("id") - }, + fromItemId: fromChild.xformsNode.getAttribute("id"), + toItemId: toChild.xformsNode.getAttribute("id"), + instanceId: this.xform.getInstance().getAttribute("id") + }, function(type, data, event) { this.xform._handleEventLog(data.documentElement) - }); + }); send_ajax_request(req); - }, - setFocusedChild: function(child) - { - if (!child) - this.xform.setRepeatIndex(this.id, 0); - else - { - var index = this.getChildIndex(child); - if (index < 0) - throw new Error("unable to find child " + child.id + " in " + this.id); + }, + setFocusedChild: function(child) + { + if (!child) + this.xform.setRepeatIndex(this.id, 0); + else + { + var index = this.getChildIndex(child); + if (index < 0) + throw new Error("unable to find child " + child.id + " in " + this.id); - // chiba thinks indexes are initialized to 1 so just - // highlight the thing - if (this.getSelectedIndex() == -1 && index == 0) - this.handleIndexChanged(0); - else - // xforms repeat indexes are 1-based - this.xform.setRepeatIndex(this.id, index + 1); - } - }, + // chiba thinks indexes are initialized to 1 so just + // highlight the thing + if (this.getSelectedIndex() == -1 && index == 0) + this.handleIndexChanged(0); + else + // xforms repeat indexes are 1-based + this.xform.setRepeatIndex(this.id, index + 1); + } + }, render: function(attach_point) - { - this.domNode = this.inherited("render", [ attach_point ]); - this.domNode.style.border = "1px solid black"; + { + this.domNode = this.inherited("render", [ attach_point ]); + this.domNode.style.border = "1px solid black"; - var marginLeft = this.getParentRepeats().length * 10; - this.domNode.style.marginLeft = marginLeft + "px"; + var parentRepeats = this.getParentRepeats(); + this.domNode.style.marginLeft = (parentRepeats.length * 10) + "px"; + this.domNode.style.marginRight = (parseInt(this.domNode.style.marginLeft) / 2) + "px"; this.domNode.style.width = (this.domNode.offsetParent.offsetWidth - parseInt(this.domNode.style.borderWidth) - - marginLeft) + "px"; + parseInt(this.domNode.style.marginLeft) - + parseInt(this.domNode.style.marginRight)) + "px"; - this.groupHeaderNode.repeat = this; - this.groupHeaderNode.style.position = "relative"; - this.groupHeaderNode.style.top = "0px"; - this.groupHeaderNode.style.left = "0px"; - this.groupHeaderNode.style.height = "20px"; - this.groupHeaderNode.style.lineHeight = "20px"; - this.groupHeaderNode.style.backgroundColor = "#cddbe8"; - this.groupHeaderNode.style.fontWeight = "bold"; - this.groupHeaderNode.style.width = "100%"; - dojo.event.connect(this.groupHeaderNode, "onclick", function(event) - { - if (event.target == event.currentTarget) + this.groupHeaderNode.repeat = this; + this.groupHeaderNode.style.position = "relative"; + this.groupHeaderNode.style.top = "0px"; + this.groupHeaderNode.style.left = "0px"; + this.groupHeaderNode.style.height = "20px"; + this.groupHeaderNode.style.lineHeight = "20px"; + this.groupHeaderNode.style.backgroundColor = "#cddbe8"; + this.groupHeaderNode.style.fontWeight = "bold"; + this.groupHeaderNode.style.width = "100%"; + dojo.event.connect(this.groupHeaderNode, "onclick", function(event) + { + if (event.target == event.currentTarget) event.currentTarget.repeat.setFocusedChild(null); - }); + }); - //used only for positioning the label accurately - this.toggleExpandedImage = document.createElement("img"); - this.groupHeaderNode.appendChild(this.toggleExpandedImage); - this.toggleExpandedImage.setAttribute("src", EXPANDED_IMAGE.src); + //used only for positioning the label accurately + this.toggleExpandedImage = document.createElement("img"); + this.groupHeaderNode.appendChild(this.toggleExpandedImage); + this.toggleExpandedImage.setAttribute("src", EXPANDED_IMAGE.src); this.toggleExpandedImage.align = "absmiddle"; - this.toggleExpandedImage.style.marginLeft = "5px"; + this.toggleExpandedImage.style.marginLeft = "5px"; this.toggleExpandedImage.style.marginRight = "5px"; dojo.event.connect(this.toggleExpandedImage, "onclick", this, this._toggleExpanded_clickHandler); var label = this.parent.getLabel() - if (djConfig.isDebug) - label += " [" + this.id + "]"; + if (djConfig.isDebug) + label += " [" + this.id + "]"; - this.groupHeaderNode.appendChild(document.createTextNode(label)); - - this.headerInsertRepeatItemImage = document.createElement("img"); - this.groupHeaderNode.appendChild(this.headerInsertRepeatItemImage); - this.headerInsertRepeatItemImage.setAttribute("src", WEBAPP_CONTEXT + "/images/icons/plus.gif"); - this.headerInsertRepeatItemImage.style.width = "16px"; - this.headerInsertRepeatItemImage.style.height = "16px"; + this.groupHeaderNode.appendChild(document.createTextNode(label)); + + this.headerInsertRepeatItemImage = document.createElement("img"); + this.groupHeaderNode.appendChild(this.headerInsertRepeatItemImage); + this.headerInsertRepeatItemImage.setAttribute("src", WEBAPP_CONTEXT + "/images/icons/plus.gif"); + this.headerInsertRepeatItemImage.style.width = "16px"; + this.headerInsertRepeatItemImage.style.height = "16px"; this.headerInsertRepeatItemImage.align = "absmiddle"; this.headerInsertRepeatItemImage.style.marginLeft = "5px"; // addElement.style.opacity = .2; - - dojo.event.connect(this.headerInsertRepeatItemImage, + + dojo.event.connect(this.headerInsertRepeatItemImage, "onclick", this, this._headerInsertRepeatItemBefore_handler); - - return this.domNode; - }, - handleIndexChanged: function(index) - { - dojo.debug(this.id + ".handleIndexChanged(" + index + ")"); - this._selectedIndex = index; - this._updateDisplay(); - }, - handlePrototypeCloned: function(prototypeId) - { - dojo.debug(this.id + ".handlePrototypeCloned("+ prototypeId +")"); - var chibaData = _getElementsByTagNameNS(this.xformsNode, CHIBA_NS, CHIBA_NS_PREFIX, "data"); - chibaData = chibaData[chibaData.length - 1]; - dojo.debug(CHIBA_NS_PREFIX + ":data == " + dojo.dom.innerXML(chibaData)); - var prototypeToClone = dojo.dom.firstElement(chibaData); - if (prototypeToClone.getAttribute("id") != prototypeId) - throw new Error("unable to locate " + prototypeId + - " in " + this.id); - return prototypeToClone.cloneNode(true); - }, - handleItemInserted: function(clonedPrototype, position) - { - dojo.debug(this.id + ".handleItemInserted(" + clonedPrototype.nodeName + - ", " + position + ")"); - var w = this.xform.createWidget(clonedPrototype); - this.insertChildAt(w, position); - this.xform.loadWidgets(w.xformsNode, w); - }, - handleItemDeleted: function(position) - { - dojo.debug(this.id + ".handleItemDeleted(" + position + ")"); - this.removeChildAt(position); - }, + + return this.domNode; + }, + handleIndexChanged: function(index) + { + dojo.debug(this.id + ".handleIndexChanged(" + index + ")"); + this._selectedIndex = index; + this._updateDisplay(); + }, + handlePrototypeCloned: function(prototypeId) + { + dojo.debug(this.id + ".handlePrototypeCloned("+ prototypeId +")"); + var chibaData = _getElementsByTagNameNS(this.xformsNode, CHIBA_NS, CHIBA_NS_PREFIX, "data"); + chibaData = chibaData[chibaData.length - 1]; + dojo.debug(CHIBA_NS_PREFIX + ":data == " + dojo.dom.innerXML(chibaData)); + var prototypeToClone = dojo.dom.firstElement(chibaData); + if (prototypeToClone.getAttribute("id") != prototypeId) + throw new Error("unable to locate " + prototypeId + + " in " + this.id); + return prototypeToClone.cloneNode(true); + }, + handleItemInserted: function(clonedPrototype, position) + { + dojo.debug(this.id + ".handleItemInserted(" + clonedPrototype.nodeName + + ", " + position + ")"); + var w = this.xform.createWidget(clonedPrototype); + this.insertChildAt(w, position); + this.xform.loadWidgets(w.xformsNode, w); + }, + handleItemDeleted: function(position) + { + dojo.debug(this.id + ".handleItemDeleted(" + position + ")"); + this.removeChildAt(position); + }, isExpanded: function() { return this.toggleExpandedImage.getAttribute("src") == EXPANDED_IMAGE.src; @@ -1145,7 +1192,7 @@ dojo.declare("alfresco.xforms.Repeat", }, _toggleExpanded_clickHandler: function(event) { - this.setExpanded(!this.isExpanded()) + this.setExpanded(!this.isExpanded()); }, _updateRepeatControls: function() { @@ -1175,32 +1222,32 @@ dojo.declare("alfresco.xforms.Repeat", } this.widget._updateRepeatControls(); } - }); + }); dojo.declare("alfresco.xforms.Trigger", - alfresco.xforms.Widget, - { - initializer: function(xform, xformsNode) + alfresco.xforms.Widget, + { + initializer: function(xform, xformsNode) { -// this.inherited("initializer", [ xform, xformsNode ]); +// this.inherited("initializer", [ xform, xformsNode ]); }, isValidForSubmit: function() { return true; }, - render: function(attach_point) + render: function(attach_point) { - var nodeRef = document.createElement("div"); - attach_point.appendChild(nodeRef); - this.widget = dojo.widget.createWidget("Button", - { - widgetId: this.id + "-widget", - caption: this.getLabel() + " " + this.id - }, - nodeRef); - dojo.event.connect(this.widget, "onClick", this, this._clickHandler); - this.domContainer.style.display = "none"; - }, + var nodeRef = document.createElement("div"); + attach_point.appendChild(nodeRef); + this.widget = dojo.widget.createWidget("Button", + { + widgetId: this.id + "-widget", + caption: this.getLabel() + " " + this.id + }, + nodeRef); + dojo.event.connect(this.widget, "onClick", this, this._clickHandler); + this.domContainer.style.display = "none"; + }, getAction: function() { for (var i = 0; i < this.xformsNode.childNodes.length; i++) @@ -1215,62 +1262,61 @@ dojo.declare("alfresco.xforms.Trigger", } throw new Error("unable to find action node for " + this.id); }, - _clickHandler: function(event) - { - this.xform.fireAction(this.id); - } - }); + _clickHandler: function(event) + { + this.xform.fireAction(this.id); + } + }); dojo.declare("alfresco.xforms.Submit", - alfresco.xforms.Trigger, - { - initializer: function(xform, xformsNode) - { -// this.inherited("initializer", [ xform, xformsNode ]); - var submit_buttons = _xforms_getSubmitButtons(); - for (var i = 0; i < submit_buttons.length; i++) - { - dojo.debug("adding submit handler for " + submit_buttons[i].getAttribute('id')); - submit_buttons[i].xform = this.xform; - dojo.event.browser.addListener(submit_buttons[i], "onclick", function(event) - { - var xform = event.target.xform; - if (!xform.submitWidget.done) - { - dojo.debug("triggering submit from handler " + event.target.id); - dojo.event.browser.stopEvent(event); - tinyMCE.triggerSave(true, false); - _hide_errors(); - xform.submitWidget.currentButton = event.target; - xform.submitWidget.widget.buttonClick(); - return false; - } - else - { - dojo.debug("done - doing base click on " + xform.submitWidget.currentButton.id); - xform.submitWidget.currentButton = null; - return true; - } - }); - } - }, - render: function(attach_point) - { - this.inherited("render", [ attach_point ]); - this.xform.submitWidget = this; - }, - _clickHandler: function(event) - { - this.done = false; + alfresco.xforms.Trigger, + { + initializer: function(xform, xformsNode) + { +// this.inherited("initializer", [ xform, xformsNode ]); + var submit_buttons = _xforms_getSubmitButtons(); + for (var i = 0; i < submit_buttons.length; i++) + { + dojo.debug("adding submit handler for " + submit_buttons[i].getAttribute('id')); + submit_buttons[i].xform = this.xform; + dojo.event.browser.addListener(submit_buttons[i], "onclick", function(event) + { + var xform = event.target.xform; + if (!xform.submitWidget.done) + { + dojo.debug("triggering submit from handler " + event.target.id); + dojo.event.browser.stopEvent(event); + _hide_errors(); + xform.submitWidget.currentButton = event.target; + xform.submitWidget.widget.buttonClick(); + return false; + } + else + { + dojo.debug("done - doing base click on " + xform.submitWidget.currentButton.id); + xform.submitWidget.currentButton = null; + return true; + } + }); + } + }, + render: function(attach_point) + { + this.inherited("render", [ attach_point ]); + this.xform.submitWidget = this; + }, + _clickHandler: function(event) + { + this.done = false; _hide_errors(); - this.xform.fireAction(this.id); - } - }); + this.xform.fireAction(this.id); + } + }); dojo.declare("alfresco.xforms.XFormsAction", null, { - initializer: function(xform, xformsNode) + initializer: function(xform, xformsNode) { this.xform = xform; this.xformsNode = xformsNode; @@ -1289,188 +1335,188 @@ dojo.declare("alfresco.xforms.XFormsAction", { return this.xformsNode.nodeName.substring((XFORMS_NS_PREFIX + ":").length); }, - }); + }); dojo.declare("alfresco.xforms.XFormsEvent", - null, - { - initializer: function(node) + null, + { + initializer: function(node) { - this.type = node.nodeName; - this.targetId = node.getAttribute("targetId"); - this.targetName = node.getAttribute("targetName"); - this.properties = {}; - for (var i = 0; i < node.childNodes.length; i++) - { - if (node.childNodes[i].nodeType == dojo.dom.ELEMENT_NODE) - this.properties[node.childNodes[i].getAttribute("name")] = - node.childNodes[i].getAttribute("value"); - } - }, - getTarget: function() - { - var targetDomNode = document.getElementById(this.targetId + "-content"); + this.type = node.nodeName; + this.targetId = node.getAttribute("targetId"); + this.targetName = node.getAttribute("targetName"); + this.properties = {}; + for (var i = 0; i < node.childNodes.length; i++) + { + if (node.childNodes[i].nodeType == dojo.dom.ELEMENT_NODE) + this.properties[node.childNodes[i].getAttribute("name")] = + node.childNodes[i].getAttribute("value"); + } + }, + getTarget: function() + { + var targetDomNode = document.getElementById(this.targetId + "-content"); if (!targetDomNode) - throw new Error("unable to find node " + this.targetId + "-content"); - return targetDomNode.widget; - } - }); + throw new Error("unable to find node " + this.targetId + "-content"); + return targetDomNode.widget; + } + }); dojo.declare("alfresco.xforms.XForm", - null, - { - initializer: function() + null, + { + initializer: function() { - send_ajax_request(create_ajax_request(this, - "getXForm", - {}, - function(type, data, evt) - { - this.xform._loadHandler(data); - })); - }, - _loadHandler: function(xformDocument) - { - this.xformDocument = xformDocument; - this.xformsNode = xformDocument.documentElement; - this._bindings = this._loadBindings(this.getModel()); + send_ajax_request(create_ajax_request(this, + "getXForm", + {}, + function(type, data, evt) + { + this.xform._loadHandler(data); + })); + }, + _loadHandler: function(xformDocument) + { + this.xformDocument = xformDocument; + this.xformsNode = xformDocument.documentElement; + this._bindings = this._loadBindings(this.getModel()); - var bindings = this.getBindings(); - for (var i in bindings) - { - dojo.debug("bindings[" + i + "]=" + bindings[i].id + - ", parent = " + (bindings[i].parent - ? bindings[i].parent.id - : 'null')); - } - var alfUI = document.getElementById("alf-ui"); - alfUI.style.width = "100%"; - this.rootWidget = new alfresco.xforms.Group(this, alfUI); - this.rootWidget.render(alfUI); - this.loadWidgets(this.getBody(), this.rootWidget); - this.rootWidget._updateDisplay(); - }, + var bindings = this.getBindings(); + for (var i in bindings) + { + dojo.debug("bindings[" + i + "]=" + bindings[i].id + + ", parent = " + (bindings[i].parent + ? bindings[i].parent.id + : 'null')); + } + var alfUI = document.getElementById("alf-ui"); + alfUI.style.width = "100%"; + this.rootWidget = new alfresco.xforms.Group(this, alfUI); + this.rootWidget.render(alfUI); + this.loadWidgets(this.getBody(), this.rootWidget); + this.rootWidget._updateDisplay(); + }, createWidget: function(node) { - dojo.debug("creating node for " + node.nodeName.toLowerCase()); - switch (node.nodeName.toLowerCase()) - { - case XFORMS_NS_PREFIX + ":group": - return new alfresco.xforms.Group(this, node); - case XFORMS_NS_PREFIX + ":repeat": - return new alfresco.xforms.Repeat(this, node); - case XFORMS_NS_PREFIX + ":textarea": - return new alfresco.xforms.TextArea(this, node); - case XFORMS_NS_PREFIX + ":input": - var type = this.getType(node); - switch (type) - { - case "date": - return new alfresco.xforms.DatePicker(this, node); - case "byte": - case "double": - case "float": - case "int": - case "integer": - case "long": - case "negativeInteger": - case "nonNegativeInteger": - case "nonPositiveInteger": - case "short": - case "unsignedByte": - case "unsignedInt": - case "unsignedLong": - case "unsignedShort": - case "positiveInteger": - case "string": - default: - return new alfresco.xforms.TextField(this, node); - } - case XFORMS_NS_PREFIX + ":select": - return new alfresco.xforms.Select(this, node); - case XFORMS_NS_PREFIX + ":select1": - return (this.getType(node) == "boolean" - ? new alfresco.xforms.Checkbox(this, node) - : new alfresco.xforms.Select1(this, node)); - case XFORMS_NS_PREFIX + ":submit": - return new alfresco.xforms.Submit(this, node); - case XFORMS_NS_PREFIX + ":trigger": - return new alfresco.xforms.Trigger(this, node); - case CHIBA_NS_PREFIX + ":data": - case XFORMS_NS_PREFIX + ":label": - case XFORMS_NS_PREFIX + ":alert": + dojo.debug("creating node for " + node.nodeName.toLowerCase()); + switch (node.nodeName.toLowerCase()) + { + case XFORMS_NS_PREFIX + ":group": + return new alfresco.xforms.Group(this, node); + case XFORMS_NS_PREFIX + ":repeat": + return new alfresco.xforms.Repeat(this, node); + case XFORMS_NS_PREFIX + ":textarea": + return new alfresco.xforms.TextArea(this, node); + case XFORMS_NS_PREFIX + ":input": + var type = this.getType(node); + switch (type) + { + case "date": + return new alfresco.xforms.DatePicker(this, node); + case "byte": + case "double": + case "float": + case "int": + case "integer": + case "long": + case "negativeInteger": + case "nonNegativeInteger": + case "nonPositiveInteger": + case "short": + case "unsignedByte": + case "unsignedInt": + case "unsignedLong": + case "unsignedShort": + case "positiveInteger": + case "string": + default: + return new alfresco.xforms.TextField(this, node); + } + case XFORMS_NS_PREFIX + ":select": + return new alfresco.xforms.Select(this, node); + case XFORMS_NS_PREFIX + ":select1": + return (this.getType(node) == "boolean" + ? new alfresco.xforms.Checkbox(this, node) + : new alfresco.xforms.Select1(this, node)); + case XFORMS_NS_PREFIX + ":submit": + return new alfresco.xforms.Submit(this, node); + case XFORMS_NS_PREFIX + ":trigger": + return new alfresco.xforms.Trigger(this, node); + case CHIBA_NS_PREFIX + ":data": + case XFORMS_NS_PREFIX + ":label": + case XFORMS_NS_PREFIX + ":alert": dojo.debug("ignoring " + node.nodeName); - return null; - default: - throw new Error("unknown type " + node.nodeName); - } - }, - loadWidgets: function(xformsNode, parentWidget) + return null; + default: + throw new Error("unknown type " + node.nodeName); + } + }, + loadWidgets: function(xformsNode, parentWidget) { for (var i = 0; i < xformsNode.childNodes.length; i++) { if (xformsNode.childNodes[i].nodeType == dojo.dom.ELEMENT_NODE) { dojo.debug("loading " + xformsNode.childNodes[i].nodeName + - " into " + parentWidget.id); + " into " + parentWidget.id); var w = this.createWidget(xformsNode.childNodes[i]); if (w != null) - { - dojo.debug("created " + w.id + " for " + xformsNode.childNodes[i].nodeName); - parentWidget.addChild(w); - if (w instanceof alfresco.xforms.Group) - this.loadWidgets(xformsNode.childNodes[i], w); + { + dojo.debug("created " + w.id + " for " + xformsNode.childNodes[i].nodeName); + parentWidget.addChild(w); + if (w instanceof alfresco.xforms.Group) + this.loadWidgets(xformsNode.childNodes[i], w); } } } }, - getModel: function() - { - return _getElementsByTagNameNS(this.xformsNode, - XFORMS_NS, - XFORMS_NS_PREFIX, - "model")[0]; - }, - getInstance: function() - { - var model = this.getModel(); - return _getElementsByTagNameNS(model, - XFORMS_NS, - XFORMS_NS_PREFIX, - "instance")[0]; - }, - getBody: function() - { - var b = _getElementsByTagNameNS(this.xformsNode, - XHTML_NS, - XHTML_NS_PREFIX, - "body"); - return b[b.length - 1]; - }, - getType: function(node) - { - return this.getBinding(node).type; - }, - getBinding: function(node) - { - return this._bindings[node.getAttribute(XFORMS_NS_PREFIX + ":bind")]; - }, - getBindings: function() - { - return this._bindings; - }, - _loadBindings: function(bind, parent, result) - { - result = result || []; - dojo.debug("loading bindings for " + bind.nodeName); - for (var i = 0; i < bind.childNodes.length; i++) - { - if (bind.childNodes[i].nodeName.toLowerCase() == XFORMS_NS_PREFIX + ":bind") - { - var id = bind.childNodes[i].getAttribute("id"); - dojo.debug("loading binding " + id); - result[id] = - { + getModel: function() + { + return _getElementsByTagNameNS(this.xformsNode, + XFORMS_NS, + XFORMS_NS_PREFIX, + "model")[0]; + }, + getInstance: function() + { + var model = this.getModel(); + return _getElementsByTagNameNS(model, + XFORMS_NS, + XFORMS_NS_PREFIX, + "instance")[0]; + }, + getBody: function() + { + var b = _getElementsByTagNameNS(this.xformsNode, + XHTML_NS, + XHTML_NS_PREFIX, + "body"); + return b[b.length - 1]; + }, + getType: function(node) + { + return this.getBinding(node).type; + }, + getBinding: function(node) + { + return this._bindings[node.getAttribute(XFORMS_NS_PREFIX + ":bind")]; + }, + getBindings: function() + { + return this._bindings; + }, + _loadBindings: function(bind, parent, result) + { + result = result || []; + dojo.debug("loading bindings for " + bind.nodeName); + for (var i = 0; i < bind.childNodes.length; i++) + { + if (bind.childNodes[i].nodeName.toLowerCase() == XFORMS_NS_PREFIX + ":bind") + { + var id = bind.childNodes[i].getAttribute("id"); + dojo.debug("loading binding " + id); + result[id] = + { id: bind.childNodes[i].getAttribute("id"), readonly: bind.childNodes[i].getAttribute(XFORMS_NS_PREFIX + ":readonly"), required: bind.childNodes[i].getAttribute(XFORMS_NS_PREFIX + ":required"), @@ -1481,27 +1527,27 @@ dojo.declare("alfresco.xforms.XForm", minimum: parseInt(bind.childNodes[i].getAttribute(ALFRESCO_NS_PREFIX + ":minimum")), parent: parent, widgets: {} - }; - this._loadBindings(bind.childNodes[i], result[id], result); - } - } - return result; - }, - setRepeatIndex: function(id, index) + }; + this._loadBindings(bind.childNodes[i], result[id], result); + } + } + return result; + }, + setRepeatIndex: function(id, index) { - dojo.debug("setting repeat index " + index + " on " + id); - var req = create_ajax_request(this, + dojo.debug("setting repeat index " + index + " on " + id); + var req = create_ajax_request(this, "setRepeatIndex", { id: id, index: index }, function(type, data, evt) { this.xform._handleEventLog(data.documentElement); }); - send_ajax_request(req); - }, + send_ajax_request(req); + }, fireAction: function(id) - { - var req = create_ajax_request(this, + { + var req = create_ajax_request(this, "fireAction", { id: id }, function(type, data, evt) @@ -1509,36 +1555,36 @@ dojo.declare("alfresco.xforms.XForm", dojo.debug("fireAction." + type); this.xform._handleEventLog(data.documentElement); }); - send_ajax_request(req); - }, - setXFormsValue: function(id, value) + send_ajax_request(req); + }, + setXFormsValue: function(id, value) { value = value == null ? "" : value; - dojo.debug("setting value " + id + " = " + value); - var req = create_ajax_request(this, + dojo.debug("setting value " + id + " = " + value); + var req = create_ajax_request(this, "setXFormsValue", { id: id, value: value }, function(type, data, evt) { this.xform._handleEventLog(data.documentElement); }); - send_ajax_request(req); - }, - _handleEventLog: function(events) + send_ajax_request(req); + }, + _handleEventLog: function(events) { - var prototypeClones = []; - for (var i = 0; i < events.childNodes.length; i++) - { - if (events.childNodes[i].nodeType == dojo.dom.ELEMENT_NODE) - { - var xfe = new alfresco.xforms.XFormsEvent(events.childNodes[i]); - dojo.debug("parsing " + xfe.type + - "(" + xfe.targetId + ", " + xfe.targetName + ")"); - switch (xfe.type) - { - case "chiba-index-changed": - { - var index = Number(xfe.properties["index"]) - 1; + var prototypeClones = []; + for (var i = 0; i < events.childNodes.length; i++) + { + if (events.childNodes[i].nodeType == dojo.dom.ELEMENT_NODE) + { + var xfe = new alfresco.xforms.XFormsEvent(events.childNodes[i]); + dojo.debug("parsing " + xfe.type + + "(" + xfe.targetId + ", " + xfe.targetName + ")"); + switch (xfe.type) + { + case "chiba-index-changed": + { + var index = Number(xfe.properties["index"]) - 1; try { xfe.getTarget().handleIndexChanged(index); @@ -1547,18 +1593,24 @@ dojo.declare("alfresco.xforms.XForm", { dojo.debug(e); } - break; - } - case "chiba-state-changed": - { - var valid = xfe.properties["valid"] == "true"; - xfe.getTarget().setValid(valid); - xfe.getTarget().setModified(true); - break; - } - case "chiba-prototype-cloned": - { - var prototypeId = xfe.properties["prototypeId"]; + break; + } + case "chiba-state-changed": + { + xfe.getTarget().setModified(true); + xfe.getTarget().setValid(xfe.properties["valid"] == "true"); + xfe.getTarget().setRequired(xfe.properties["required"] == "true"); + xfe.getTarget().setReadonly(xfe.properties["readonly"] == "true"); + xfe.getTarget().setEnabled(xfe.properties["enabled"] == "true"); + if ("value" in xfe.properties) + { + xfe.getTarget().setValue(xfe.properties["value"]); + } + break; + } + case "chiba-prototype-cloned": + { + var prototypeId = xfe.properties["prototypeId"]; var originalId = xfe.properties["originalId"]; dojo.debug("handlePrototypeCloned(" + xfe.targetId + ", " + originalId + @@ -1592,30 +1644,30 @@ dojo.declare("alfresco.xforms.XForm", // var clone = originalWidget.widget.handlePrototypeCloned(prototypeId); // } - prototypeClones.push(clone); - break; - } - case "chiba-id-generated": - { - var originalId = xfe.properties["originalId"]; + prototypeClones.push(clone); + break; + } + case "chiba-id-generated": + { + var originalId = xfe.properties["originalId"]; - dojo.debug("handleIdGenerated(" + xfe.targetId + ", " + originalId + ")"); - var clone = prototypeClones[prototypeClones.length - 1]; - var node = _findElementById(clone, originalId); - if (node) - { - dojo.debug("applying id " + xfe.targetId + - " to " + node.nodeName + "(" + originalId + ")"); - node.setAttribute("id", xfe.targetId); - } - else - throw new Error("unable to find " + originalId + - " in clone " + dojo.dom.innerXML(clone)); - break; - } - case "chiba-item-inserted": - { - var position = Number(xfe.properties["position"]) - 1; + dojo.debug("handleIdGenerated(" + xfe.targetId + ", " + originalId + ")"); + var clone = prototypeClones[prototypeClones.length - 1]; + var node = _findElementById(clone, originalId); + if (node) + { + dojo.debug("applying id " + xfe.targetId + + " to " + node.nodeName + "(" + originalId + ")"); + node.setAttribute("id", xfe.targetId); + } + else + throw new Error("unable to find " + originalId + + " in clone " + dojo.dom.innerXML(clone)); + break; + } + case "chiba-item-inserted": + { + var position = Number(xfe.properties["position"]) - 1; var originalId = xfe.properties["originalId"]; var clone = prototypeClones.pop(); if (prototypeClones.length == 0) @@ -1626,63 +1678,63 @@ dojo.declare("alfresco.xforms.XForm", var parentRepeat = _findElementById(parentClone, xfe.targetId); parentRepeat.appendChild(clone); } - break; - } - case "chiba-item-deleted": - { - var position = Number(xfe.properties["position"]) - 1; - xfe.getTarget().handleItemDeleted(position); - break; - } - case "chiba-replace-all": - if (this.submitWidget) - { - this.submitWidget.done = true; - this.submitWidget.currentButton.click(); - } - break; - case "xforms-valid": - xfe.getTarget().setValid(true); + break; + } + case "chiba-item-deleted": + { + var position = Number(xfe.properties["position"]) - 1; + xfe.getTarget().handleItemDeleted(position); + break; + } + case "chiba-replace-all": + if (this.submitWidget) + { + this.submitWidget.done = true; + this.submitWidget.currentButton.click(); + } + break; + case "xforms-valid": + xfe.getTarget().setValid(true); xfe.getTarget().setModified(true); - break; - case "xforms-invalid": - xfe.getTarget().setValid(false); + break; + case "xforms-invalid": + xfe.getTarget().setValid(false); xfe.getTarget().setModified(true); - break; - case "xforms-required": - xfe.getTarget().setRequired(true); - break; - case "xforms-optional": - xfe.getTarget().setRequired(false); - break; - case "xforms-submit-error": - var invalid = this.rootWidget.getWidgetsInvalidForSubmit(); - _show_error(document.createTextNode("Please provide values for all required fields.")); + break; + case "xforms-required": + xfe.getTarget().setRequired(true); + break; + case "xforms-optional": + xfe.getTarget().setRequired(false); + break; + case "xforms-submit-error": + var invalid = this.rootWidget.getWidgetsInvalidForSubmit(); + _show_error(document.createTextNode("Please provide values for all required fields.")); var error_list = document.createElement("ul"); - for (var j = 0; j < invalid.length; j++) - { + for (var j = 0; j < invalid.length; j++) + { var error_item = document.createElement("li"); error_item.appendChild(document.createTextNode(invalid[j].getAlert())); error_list.appendChild(error_item); invalid[j].showAlert(); - } - _show_error(error_list); - break; - default: - { - dojo.debug("unhandled event " + events.childNodes[i].nodeName); - } - } - } - } - } - }); + } + _show_error(error_list); + break; + default: + { + dojo.debug("unhandled event " + events.childNodes[i].nodeName); + } + } + } + } + } + }); function _findElementById(node, id) { dojo.debug("looking for " + id + - " in " + node.nodeName + - "(" + node.getAttribute("id") + ")"); + " in " + node.nodeName + + "(" + node.getAttribute("id") + ")"); if (node.getAttribute("id") == id) return node; for (var i = 0; i < node.childNodes.length; i++) @@ -1691,7 +1743,7 @@ function _findElementById(node, id) { var n = _findElementById(node.childNodes[i], id); if (n) - return n; + return n; } } return null; @@ -1705,16 +1757,16 @@ function create_ajax_request(xform, serverMethod, methodArgs, load, error) result.load = load; dojo.event.connect(result, "load", function(type, data, evt) - { -// _hide_errors(); - ajax_request_load_handler(this); - }); + { +// _hide_errors(); + ajax_request_load_handler(this); + }); result.error = error || function(type, e) - { - dojo.debug("error [" + type + "] " + e.message); - _show_error(document.createTextNode(e.message)); - ajax_request_load_handler(this); - }; + { + dojo.debug("error [" + type + "] " + e.message); + _show_error(document.createTextNode(e.message)); + ajax_request_load_handler(this); + }; return result; } @@ -1730,24 +1782,24 @@ function _hide_errors() function _show_error(msg) { - var errorDiv = document.getElementById("alf-xforms-error"); - if (!errorDiv) - { - errorDiv = document.createElement("div"); - errorDiv.setAttribute("id", "alf-xforms-error"); - errorDiv.setAttribute(document.all ? "className" : "class", "infoText statusErrorText"); - errorDiv.style.padding = "2px"; - errorDiv.style.borderColor = "#003366"; - errorDiv.style.borderWidth = "1px"; - errorDiv.style.borderStyle = "solid"; - var alfUI = document.getElementById("alf-ui"); - dojo.dom.prependChild(errorDiv, alfUI); - } - if (errorDiv.style.display == "block") - errorDiv.appendChild(document.createElement("br")); - else - errorDiv.style.display = "block"; - errorDiv.appendChild(msg); + var errorDiv = document.getElementById("alf-xforms-error"); + if (!errorDiv) + { + errorDiv = document.createElement("div"); + errorDiv.setAttribute("id", "alf-xforms-error"); + errorDiv.setAttribute(document.all ? "className" : "class", "infoText statusErrorText"); + errorDiv.style.padding = "2px"; + errorDiv.style.borderColor = "#003366"; + errorDiv.style.borderWidth = "1px"; + errorDiv.style.borderStyle = "solid"; + var alfUI = document.getElementById("alf-ui"); + dojo.dom.prependChild(errorDiv, alfUI); + } + if (errorDiv.style.display == "block") + errorDiv.appendChild(document.createElement("br")); + else + errorDiv.style.display = "block"; + errorDiv.appendChild(msg); } function send_ajax_request(req) @@ -1785,10 +1837,10 @@ function ajax_loader_update_display() { var ajaxLoader = _get_ajax_loader_element(); ajaxLoader.innerHTML = (_ajax_requests.length == 0 - ? "Idle" - : "Loading" + (_ajax_requests.length > 1 - ? " (" + _ajax_requests.length + ")" - : "...")); + ? "Idle" + : "Loading" + (_ajax_requests.length > 1 + ? " (" + _ajax_requests.length + ")" + : "...")); dojo.debug(ajaxLoader.innerHTML); if (/* djConfig.isDebug && */ _ajax_requests.length != 0) { @@ -1822,39 +1874,39 @@ function ajax_request_load_handler(req) function _getElementsByTagNameNS(parentNode, ns, nsPrefix, tagName) { return (parentNode.getElementsByTagNameNS - ? parentNode.getElementsByTagNameNS(ns, tagName) - : parentNode.getElementsByTagName(nsPrefix + ":" + tagName)); + ? parentNode.getElementsByTagNameNS(ns, tagName) + : parentNode.getElementsByTagName(nsPrefix + ":" + tagName)); } function _evaluateXPath(xpath, contextNode, result_type) { var xmlDocument = contextNode.ownerDocument; dojo.debug("evaluating xpath " + xpath + " on node " + contextNode.nodeName + - " in document " + xmlDocument); + " in document " + xmlDocument); var result = null; if (xmlDocument.evaluate) { var nsResolver = (xmlDocument.createNSResolver - ? xmlDocument.createNSResolver(xmlDocument.documentElement) : - null); + ? xmlDocument.createNSResolver(xmlDocument.documentElement) : + null); result = xmlDocument.evaluate(xpath, - contextNode, - nsResolver, - result_type, - null); + contextNode, + nsResolver, + result_type, + null); if (result) { switch (result_type) { case XPathResult.FIRST_ORDERED_NODE_TYPE: - result = result.singleNodeValue; - break; + result = result.singleNodeValue; + break; case XPathResult.BOOLEAN_TYPE: - result = result.booleanValue; - break; + result = result.booleanValue; + break; case XPathResult.STRING_TYPE: - result = result.stringValue; - break; + result = result.stringValue; + break; } } } @@ -1866,7 +1918,7 @@ function _evaluateXPath(xpath, contextNode, result_type) { var attr = xmlDocument.documentElement.attributes[i]; if (attr.nodeName.match(/^xmlns:/)) - namespaces.push(attr.nodeName + "=\'" + attr.nodeValue + "\'"); + namespaces.push(attr.nodeName + "=\'" + attr.nodeValue + "\'"); } dojo.debug("using namespaces " + namespaces.join(",")); xmlDocument.setProperty("SelectionNamespaces", namespaces.join(' ')); @@ -1896,7 +1948,7 @@ if (!Array.prototype.indexOf) for (var i = 0; i < this.length; i++) { if (this[i] == o) - return i; + return i; } return -1; }