Explorar el Código

Ticket #3635 - Uploader's JS code is loaded multiple times in 'Add New...' form: Usage in Quill

AntonLV hace 4 años
padre
commit
9ddf5673d8
Se han modificado 2 ficheros con 25 adiciones y 27 borrados
  1. 14 0
      inc/classes/BxDolTemplate.php
  2. 11 27
      template/scripts/BxBaseEditorQuill.php

+ 14 - 0
inc/classes/BxDolTemplate.php

@@ -1943,6 +1943,20 @@ class BxDolTemplate extends BxDolFactory implements iBxDolSingleton
         return $this->_wrapInTagJsCode($sCode);
     }
 
+    function addJsCodeOnLoad($sCallback)
+    {
+        $sMaskLoad = "$(document).ready(function() {%s});";
+
+        return sprintf($sMaskLoad, $sCallback);
+    }
+    
+    function addJsCodeOnLoadWrapped($sCallback)
+    {
+        $sCode = $this->addJsCodeOnLoad($sCallback);
+
+        return $this->_wrapInTagJsCode($sCode); 
+    }
+    
     /**
      * get added js files
      */ 

+ 11 - 27
template/scripts/BxBaseEditorQuill.php

@@ -124,37 +124,21 @@ class BxBaseEditorQuill extends BxDolEditor
             'bx_url_root' => bx_js_string(BX_DOL_URL_ROOT, BX_ESCAPE_STR_APOS)
         ));
 
-        if ($bDynamicMode) {
+        $sInitCallBack = "
+            bQuillEditorInited = true;
+            Quill.register('modules/imageUploader', ImageUploader);
+        " . $sInitEditor;
 
+        if ($bDynamicMode) {
             list($aJs, $aCss) = $this->_getJsCss(true);
-            $sCss = $this->_oTemplate->addCss($aCss, true);
-            
-            $sScript = $sCss . "<script>
-                var " . $sEditorName . ";
-                if (typeof bQuillEditorInited === 'undefined') {
-                    bx_get_scripts(" . json_encode($aJs) . ", function () {
-                        bQuillEditorInited = true;
-                        Quill.register('modules/imageUploader', ImageUploader); 
-                        $sInitEditor
-                    });
-                } else {
-                	setTimeout(function () {
-                    	$sInitEditor
-                    }, 10); // wait while html is rendered in case of dynamic adding html with quill
-                } 
-            </script>";
 
-        } else {
+            $sScript = "var " . $sEditorName . "; " . $this->_oTemplate->addJsPreloaded($aJs, $sInitCallBack, "typeof bQuillEditorInited === 'undefined'", $sInitEditor);
+            $sScript = $this->_oTemplate->_wrapInTagJsCode($sScript);
+            $sScript = $this->_oTemplate->addCss($aCss, true) . $sScript;
 
-            $sScript = "
-            <script>
-                var " . $sEditorName . ";
-                $(document).ready(function () {
-                    bQuillEditorInited = true;
-                    Quill.register('modules/imageUploader', ImageUploader); 
-                    $sInitEditor
-                });
-            </script>";
+        } else {
+            $sScript = "var " . $sEditorName . "; " . $this->_oTemplate->addJsCodeOnLoad($sInitCallBack);
+            $sScript = $this->_oTemplate->_wrapInTagJsCode($sScript);
         }
 
         return $this->_addJsCss($bDynamicMode) . $sScript;