diff options
author | ctrlaltca <> | 2012-05-28 06:56:42 +0000 |
---|---|---|
committer | ctrlaltca <> | 2012-05-28 06:56:42 +0000 |
commit | aec092c914fb4a78fbc46361839822928694aca4 (patch) | |
tree | f887b447119b9783e19cb2f157612536d1743bd1 /framework/Web/Javascripts | |
parent | ac8908ea795f22e4bcf8726971919d6413a0b9e6 (diff) |
Patch for #404
Diffstat (limited to 'framework/Web/Javascripts')
-rw-r--r-- | framework/Web/Javascripts/source/prado/controls/htmlarea.js | 69 |
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
+});
+
+
|