summaryrefslogtreecommitdiff
path: root/framework/Web/Javascripts
diff options
context:
space:
mode:
authorctrlaltca <>2012-05-28 06:56:42 +0000
committerctrlaltca <>2012-05-28 06:56:42 +0000
commitaec092c914fb4a78fbc46361839822928694aca4 (patch)
treef887b447119b9783e19cb2f157612536d1743bd1 /framework/Web/Javascripts
parentac8908ea795f22e4bcf8726971919d6413a0b9e6 (diff)
Patch for #404
Diffstat (limited to 'framework/Web/Javascripts')
-rw-r--r--framework/Web/Javascripts/source/prado/controls/htmlarea.js69
1 files changed, 62 insertions, 7 deletions
diff --git a/framework/Web/Javascripts/source/prado/controls/htmlarea.js b/framework/Web/Javascripts/source/prado/controls/htmlarea.js
index 595b7928..4cb37c6f 100644
--- a/framework/Web/Javascripts/source/prado/controls/htmlarea.js
+++ b/framework/Web/Javascripts/source/prado/controls/htmlarea.js
@@ -12,19 +12,14 @@ Prado.WebUI.THtmlArea = Class.create(Prado.WebUI.Control,
{
initialize: function($super, options)
{
- options.ID = options.elements;
+ options.ID = options.EditorOptions.elements;
$super(options);
},
- onInit : function(options)
+ onInit : function(options)
{
- if (typeof(tinyMCE)=='undefined')
- throw "TinyMCE libraries must be loaded first";
-
this.options = options;
- tinyMCE.init(options);
-
var obj = this;
this.ajaxresponder = {
onComplete : function(request)
@@ -34,6 +29,59 @@ Prado.WebUI.THtmlArea = Class.create(Prado.WebUI.Control,
}
};
this.registerAjaxHook();
+
+ this.registerInstance();
+ },
+
+ registerInstance: function()
+ {
+ if (typeof tinyMCE_GZ == 'undefined')
+ {
+ if (typeof tinyMCE == 'undefined')
+ {
+ if (typeof Prado.CallbackRequest != 'undefined')
+ if (typeof Prado.CallbackRequest.transport != 'undefined')
+ {
+ // we're in a callback
+ // try it again in some time, as tinyMCE is most likely still loading
+ this.setTimeout(this.registerInstance.bind(this), 50);
+ return;
+ }
+ throw "TinyMCE libraries must be loaded first";
+ }
+ Prado.WebUI.THtmlArea.tinyMCELoadState = 255;
+ this.initInstance();
+ }
+ else
+ if (Prado.WebUI.THtmlArea.tinyMCELoadState==255)
+ this.initInstance();
+ else
+ {
+ Prado.WebUI.THtmlArea.pendingRegistrations.push(this.options.ID);
+ if (Prado.WebUI.THtmlArea.tinyMCELoadState==0)
+ {
+ Prado.WebUI.THtmlArea.tinyMCELoadState = 1;
+ tinyMCE_GZ.init(
+ this.options.CompressionOptions,
+ this.compressedScriptsLoaded.bind(this)
+ );
+ }
+ }
+ },
+
+ compressedScriptsLoaded: function()
+ {
+ Prado.WebUI.THtmlArea.tinyMCELoadState = 255;
+ tinymce.dom.Event._pageInit();
+ var wrapper;
+ while(Prado.WebUI.THtmlArea.pendingRegistrations.length>0)
+ if (wrapper = Prado.Registry.get(Prado.WebUI.THtmlArea.pendingRegistrations.pop()))
+ wrapper.initInstance();
+ },
+
+ initInstance: function()
+ {
+ tinyMCE.init(this.options.EditorOptions);
},
checkInstance: function()
@@ -92,3 +140,10 @@ Prado.WebUI.THtmlArea = Class.create(Prado.WebUI.Control,
}
});
+Object.extend(Prado.WebUI.THtmlArea,
+{
+ pendingRegistrations : [],
+ tinyMCELoadState : 0
+});
+
+