diff --git a/etemplate/js/et2_core_DOMWidget.js b/etemplate/js/et2_core_DOMWidget.js index 2a2f7954c1..d69156b905 100644 --- a/etemplate/js/et2_core_DOMWidget.js +++ b/etemplate/js/et2_core_DOMWidget.js @@ -286,13 +286,14 @@ var et2_DOMWidget = et2_widget.extend(et2_IDOMNode, set_id: function(_value) { this.id = _value; + this.dom_id = _value ? this.getInstanceManager().uniqueId+'_'+_value : _value; var node = this.getDOMNode(this); if (node) { if (_value != "") { - node.setAttribute("id", this.getInstanceManager().uniqueId+'_'+this.id); + node.setAttribute("id", this.dom_id); } else { diff --git a/etemplate/js/et2_core_inputWidget.js b/etemplate/js/et2_core_inputWidget.js index a2b948971a..878b4dd5c3 100644 --- a/etemplate/js/et2_core_inputWidget.js +++ b/etemplate/js/et2_core_inputWidget.js @@ -142,6 +142,7 @@ var et2_inputWidget = et2_valueWidget.extend([et2_IInput,et2_ISubmitListener], set_id: function(_value) { this.id = _value; + this.dom_id = _value ? this.getInstanceManager().uniqueId+'_'+this.id : _value; // Set the id of the _input_ node (in contrast to the default // implementation, which sets the base node) @@ -151,7 +152,7 @@ var et2_inputWidget = et2_valueWidget.extend([et2_IInput,et2_ISubmitListener], // Unique ID to prevent DOM collisions across multiple templates if (_value != "") { - node.setAttribute("id", this.getInstanceManager().uniqueId+'_'+this.id); + node.setAttribute("id", this.dom_id); node.setAttribute("name", _value); } else diff --git a/etemplate/js/et2_widget_dropdown_button.js b/etemplate/js/et2_widget_dropdown_button.js index 6df1831041..4dcdcf43c1 100644 --- a/etemplate/js/et2_widget_dropdown_button.js +++ b/etemplate/js/et2_widget_dropdown_button.js @@ -212,9 +212,9 @@ var et2_dropdown_button = et2_inputWidget.extend( // Update internal IDs - not really needed since we refer by internal // javascript reference, but good to keep up to date this.internal_ids = { - div: this.getInstanceManager().uniqueId+'_'+this.id + "_wrapper", - button: this.getInstanceManager().uniqueId+'_'+this.id, - menu: this.getInstanceManager().uniqueId+'_'+this.id + "_menu" + div: this.dom_id + "_wrapper", + button: this.dom_id, + menu: this.dom_id + "_menu" }; for(var key in this.internal_ids) { diff --git a/etemplate/js/et2_widget_htmlarea.js b/etemplate/js/et2_widget_htmlarea.js index b0166480c6..4fc6b909ef 100644 --- a/etemplate/js/et2_widget_htmlarea.js +++ b/etemplate/js/et2_widget_htmlarea.js @@ -82,7 +82,6 @@ var et2_htmlarea = et2_inputWidget.extend( // Allow no child widgets this.supportedWidgetClasses = []; this.htmlNode = $j(document.createElement("textarea")) - .attr('id', this.id) .css('height', this.options.height) .addClass('et2_textbox_ro'); this.setDOMNode(this.htmlNode[0]); @@ -111,21 +110,21 @@ var et2_htmlarea = et2_inputWidget.extend( var ckeditor; try { - CKEDITOR.replace(this.id,jQuery.extend({},this.options.config,this.options)); - ckeditor = CKEDITOR.instances[this.id]; + CKEDITOR.replace(this.dom_id,jQuery.extend({},this.options.config,this.options)); + ckeditor = CKEDITOR.instances[this.dom_id]; ckeditor.setData(self.value); delete self.value; } catch (e) { - if(CKEDITOR.instances[this.id]) + if(CKEDITOR.instances[this.dom_id]) { - CKEDITOR.instances[this.id].destroy(); + CKEDITOR.instances[this.dom_id].destroy(); } if(this.htmlNode.ckeditor) { - CKEDITOR.replace(this.id,this.options.config); - ckeditor = CKEDITOR.instances[this.id]; + CKEDITOR.replace(this.dom_id,this.options.config); + ckeditor = CKEDITOR.instances[this.dom_id]; ckeditor.setData(self.value); delete self.value; } @@ -136,8 +135,8 @@ var et2_htmlarea = et2_inputWidget.extend( try { //this.htmlNode.ckeditorGet().destroy(true); - ckeditor = CKEDITOR.instances[this.id]; - ckeditor.destroy(true); + var ckeditor = CKEDITOR.instances[this.dom_id]; + if (ckeditor) ckeditor.destroy(true); } catch (e) { @@ -146,15 +145,18 @@ var et2_htmlarea = et2_inputWidget.extend( } }, set_value: function(_value) { - if(this.htmlNode.is('textarea')) - { - this.htmlNode.val(_value); - return; - } try { //this.htmlNode.ckeditorGet().setData(_value); - ckeditor = CKEDITOR.instances[this.id]; - ckeditor.setData(_value); + var ckeditor = CKEDITOR.instances[this.dom_id]; + if (ckeditor) + { + ckeditor.setData(_value); + } + else + { + this.htmlNode.val(_value); + this.value = _value; + } } catch (e) { // CK editor not ready - callback will do it this.value = _value; @@ -162,15 +164,11 @@ var et2_htmlarea = et2_inputWidget.extend( }, getValue: function() { - if(this.htmlNode.is('textarea')) - { - return this.htmlNode.val(); - } try { //return this.htmlNode.ckeditorGet().getData(); - ckeditor = CKEDITOR.instances[this.id]; - return ckeditor.getData(); + var ckeditor = CKEDITOR.instances[this.dom_id]; + return ckeditor ? ckeditor.getData() : this.htmlNode.val(); } catch (e) { diff --git a/etemplate/js/et2_widget_selectbox.js b/etemplate/js/et2_widget_selectbox.js index 8692bee54c..f340ab4d1c 100644 --- a/etemplate/js/et2_widget_selectbox.js +++ b/etemplate/js/et2_widget_selectbox.js @@ -279,7 +279,7 @@ var et2_selectbox = et2_inputWidget.extend( // Already in header if(_label == this.options.empty_label) return; - var opt_id = this.getInstanceManager().uniqueId+'_'+ this.id + "_opt_" + _value; + var opt_id = this.dom_id + "_opt_" + _value; var label = jQuery(document.createElement("label")) .attr("for", opt_id) .hover(