From d181d5357b710ef484b8a37a92c9bedeea620971 Mon Sep 17 00:00:00 2001
From: Jose Gonzalez <jose.gonzalez@artica.es>
Date: Tue, 26 Nov 2019 13:19:28 +0100
Subject: [PATCH] Created function for initialize TinyMCE

---
 .../godmode/alerts/configure_alert_action.php | 28 +++-----
 .../alerts/configure_alert_template.php       | 30 ++++-----
 .../visual_console_builder.editor.php         | 63 +++++-------------
 .../visual_console_builder.elements.php       | 61 ++++++-----------
 pandora_console/godmode/setup/news.php        | 17 +----
 .../godmode/setup/setup_visuals.php           | 33 +++-------
 .../godmode/snmpconsole/snmp_alert.php        | 30 ++++-----
 pandora_console/include/javascript/pandora.js | 66 +++++++++++++++++++
 8 files changed, 149 insertions(+), 179 deletions(-)

diff --git a/pandora_console/godmode/alerts/configure_alert_action.php b/pandora_console/godmode/alerts/configure_alert_action.php
index 8ea292445b..13d6e39470 100644
--- a/pandora_console/godmode/alerts/configure_alert_action.php
+++ b/pandora_console/godmode/alerts/configure_alert_action.php
@@ -418,24 +418,16 @@ $(document).ready (function () {
                     $table_macros_field.show();
                 }
                 
-                tinyMCE.init({
-                    selector: 'textarea.tiny-mce-editor',
-                    theme : "advanced",
-                    plugins : "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
-                    theme_advanced_buttons1 : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsize,select",
-                    theme_advanced_buttons2 : "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
-                    theme_advanced_buttons3 : "",
-                    theme_advanced_toolbar_location : "top",
-                    theme_advanced_toolbar_align : "left",
-                    theme_advanced_resizing : true,
-                    theme_advanced_statusbar_location : "bottom",
-                    force_p_newlines : false,
-                    forced_root_block : '',
-                    inline_styles : true,
-                    valid_children : "+body[style]",
-                    element_format : "html"
-                });
-                
+                var added_config = {
+                    "selector": "textarea.tiny-mce-editor",
+                    "plugins": "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
+                    "theme_advanced_buttons1": "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect",
+                    "theme_advanced_buttons2": "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
+                    "valid_children": "+body[style]",
+                    "width": "90%",
+                }
+                defineTinyMCE(added_config);
+
                 render_command_preview(original_command);
                 render_command_recovery_preview(original_command);
                 
diff --git a/pandora_console/godmode/alerts/configure_alert_template.php b/pandora_console/godmode/alerts/configure_alert_template.php
index d79ca90ca8..9d57ad341f 100644
--- a/pandora_console/godmode/alerts/configure_alert_template.php
+++ b/pandora_console/godmode/alerts/configure_alert_template.php
@@ -1310,23 +1310,19 @@ if ($step == 2) {
         }
     });
 
-    tinyMCE.init({
-        selector: 'textarea.tiny-mce-editor',
-        theme : "advanced",
-        plugins : "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
-        theme_advanced_buttons1 : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsize,select",
-        theme_advanced_buttons2 : "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
-        theme_advanced_buttons3 : "",
-        theme_advanced_toolbar_location : "top",
-        theme_advanced_toolbar_align : "left",
-        theme_advanced_resizing : true,
-        theme_advanced_statusbar_location : "bottom",
-        force_p_newlines : false,
-        forced_root_block : '',
-        inline_styles : true,
-        valid_children : "+body[style]",
-        element_format : "html"
-    });
+    var added_config = {
+        "selector": 'textarea.tiny-mce-editor',
+        "plugins": "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
+        "theme_advanced_buttons1": "bold,italic,underline,|,cut,copy,paste,|,justifyleft,justifycenter,justifyright,|,forecolor,backcolor,|,formatselect,fontselect,fontsizeselect",
+        "theme_advanced_buttons2": "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview",
+        "force_p_newlines" : false,
+        "forced_root_block" : '',
+        "inline_styles": true,
+        "valid_children": "+body[style]",
+    }
+
+    defineTinyMCE(added_config);
+
     <?php
 }
 ?>
diff --git a/pandora_console/godmode/reporting/visual_console_builder.editor.php b/pandora_console/godmode/reporting/visual_console_builder.editor.php
index 9b6697533f..d6c46435c1 100755
--- a/pandora_console/godmode/reporting/visual_console_builder.editor.php
+++ b/pandora_console/godmode/reporting/visual_console_builder.editor.php
@@ -195,54 +195,21 @@ ui_require_javascript_file('encode_decode_base64');
     id_visual_console = <?php echo $visualConsole['id']; ?>;
     visual_map_main();
     
-    tinyMCE.init({
-        mode : "exact",
-        elements: "text-label",
-        convert_urls: false,
-        theme : "advanced",
-        <?php
-        if ($config['style'] == 'pandora_legacy') {
-            echo 'content_css: "'.ui_get_full_url('include/styles/pandora_legacy.css', false, false, false).'",'."\n";
-        } else {
-            echo 'content_css: "'.ui_get_full_url('include/styles/pandora.css', false, false, false).'",'."\n";
-        }
-        ?>
-        theme_advanced_font_sizes :
-            "4pt=.visual_font_size_4pt, " +
-            "6pt=.visual_font_size_6pt, " +
-            "8pt=.visual_font_size_8pt, " +
-            "10pt=.visual_font_size_10pt, " +
-            "12pt=.visual_font_size_12pt, " +
-            "14pt=.visual_font_size_14pt, " +
-            "18pt=.visual_font_size_18pt, " +
-            "24pt=.visual_font_size_24pt, " +
-            "28pt=.visual_font_size_28pt, " +
-            "36pt=.visual_font_size_36pt, " +
-            "48pt=.visual_font_size_48pt, " +
-            "60pt=.visual_font_size_60pt, " +
-            "72pt=.visual_font_size_72pt, " +
-            "84pt=.visual_font_size_84pt, " +
-            "96pt=.visual_font_size_96pt, " +
-            "116pt=.visual_font_size_116pt, " +
-            "128pt=.visual_font_size_128pt, " +
-            "140pt=.visual_font_size_140pt, " +
-            "154pt=.visual_font_size_154pt, " +
-            "196pt=.visual_font_size_196pt",
-        theme_advanced_toolbar_location : "top",
-        theme_advanced_toolbar_align : "left",
-        theme_advanced_buttons1 : "bold,italic, |, justifyleft, justifycenter, justifyright, |,undo, redo, |, image, link, |, fontselect, |, forecolor, fontsizeselect, |, code",
-        theme_advanced_buttons2 : "",
-        theme_advanced_buttons3 : "",
-        theme_advanced_statusbar_location : "none",
-        width: "400",
-        height: "200",
-        nowrap: true,
-        plugins : "noneditable",
-        inline_styles : true,
-        valid_children : "+body[style]",
-        element_format : "html",
-        editor_deselector : "noselected"
-    });
+     var added_config = {
+        "plugins": "noneditable",
+        "elements": "text-label",
+        "theme_advanced_buttons1": 
+          "bold,italic,|,justifyleft,justifycenter,justifyright,|,undo,redo,|,image,link,|,fontselect,|,forecolor,fontsizeselect,|,code",
+        "valid_children": "+body[style]",
+        "theme_advanced_font_sizes": "true",
+        "content_css": <?php echo '"'.ui_get_full_url('include/styles/pandora.css', false, false, false).'"'; ?>,
+        "editor_deselector": "noselected",
+        "inline_styles": true,
+        "nowrap": true,
+        "width": "50%",
+        "height": "100%",
+     }
+    defineTinyMCE(added_config);
 
     $('.item img').each(function(){
         
diff --git a/pandora_console/godmode/reporting/visual_console_builder.elements.php b/pandora_console/godmode/reporting/visual_console_builder.elements.php
index 720bb57a1c..23436be6e9 100755
--- a/pandora_console/godmode/reporting/visual_console_builder.elements.php
+++ b/pandora_console/godmode/reporting/visual_console_builder.elements.php
@@ -710,48 +710,25 @@ ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
 
 <script type="text/javascript">
     $(document).ready (function () {
-        
-        tinymce.init({
-            selector: "#tinyMCE_editor",
-            theme : "advanced",
-            <?php
-            if ($config['style'] == 'pandora_legacy') {
-                echo 'content_css: "'.ui_get_full_url('include/styles/pandora_legacy.css', false, false, false).'",'."\n";
-            } else {
-                echo 'content_css: "'.ui_get_full_url('include/styles/pandora.css', false, false, false).'",'."\n";
-            }
-            ?>
-            theme_advanced_font_sizes :
-                "4pt=.visual_font_size_4pt, " +
-                "6pt=.visual_font_size_6pt, " +
-                "8pt=.visual_font_size_8pt, " +
-                "10pt=.visual_font_size_10pt, " +
-                "12pt=.visual_font_size_12pt, " +
-                "14pt=.visual_font_size_14pt, " +
-                "18pt=.visual_font_size_18pt, " +
-                "24pt=.visual_font_size_24pt, " +
-                "28pt=.visual_font_size_28pt, " +
-                "36pt=.visual_font_size_36pt, " +
-                "48pt=.visual_font_size_48pt, " +
-                "60pt=.visual_font_size_60pt, " +
-                "72pt=.visual_font_size_72pt, " +
-                "84pt=.visual_font_size_84pt, " +
-                "96pt=.visual_font_size_96pt, " +
-                "116pt=.visual_font_size_116pt, " +
-                "128pt=.visual_font_size_128pt, " +
-                "140pt=.visual_font_size_140pt, " +
-                "154pt=.visual_font_size_154pt, " +
-                "196pt=.visual_font_size_196pt",
-            theme_advanced_toolbar_location : "top",
-            theme_advanced_toolbar_align : "left",
-            theme_advanced_buttons1 : "bold,italic, |, image, link, |, forecolor, fontsizeselect",
-            theme_advanced_buttons2 : "",
-            theme_advanced_buttons3 : "",
-            theme_advanced_statusbar_location : "none",
-            width: "400",
-            height: "200",
-            nowrap: true
-        });
+       
+        var added_config = {
+            "selector": "#tinyMCE_editor",
+            "elements": "text-label",
+            "plugins": "noneditable",
+            "theme_advanced_buttons1": 
+                "bold,italic,|,justifyleft,justifycenter,justifyright,|,undo,redo,|,image,link,|,fontselect,|,forecolor,fontsizeselect,|,code",
+            "valid_children": "+body[style]",
+            "theme_advanced_font_sizes": "true",
+            "content_css": 
+                <?php echo '"'.ui_get_full_url('include/styles/pandora.css', false, false, false).'"'; ?>,
+            "editor_deselector": "noselected",
+            "inline_styles": true,
+            "nowrap": true,
+            "width": "400",
+            "height": "200",
+    }
+    
+    defineTinyMCE(added_config);
         
         $("#dialog_label_editor").hide ()
             .dialog ({
diff --git a/pandora_console/godmode/setup/news.php b/pandora_console/godmode/setup/news.php
index 61491496f5..864add252b 100644
--- a/pandora_console/godmode/setup/news.php
+++ b/pandora_console/godmode/setup/news.php
@@ -300,6 +300,7 @@ ui_require_jquery_file('ui.datepicker-'.get_user_language(), 'include/javascript
 
 // Include tiny for wysiwyg editor
 ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
+ui_require_javascript_file('pandora');
 
 ?>
 <script language="javascript" type="text/javascript">
@@ -323,20 +324,8 @@ ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
             changeMonth: true,
             changeYear: true,
             showAnim: "slideDown"});
-            
-            
-        tinyMCE.init({
-            mode : "exact",
-            elements: "textarea_text",
-            theme : "advanced",
-            theme_advanced_toolbar_location : "top",
-            theme_advanced_toolbar_align : "left",
-            theme_advanced_buttons1 : "bold,italic, |, image, link, |, cut, copy, paste, |, undo, redo, |, forecolor, |, fontsizeselect, |, justifyleft, justifycenter, justifyright, | ,code",
-            theme_advanced_buttons2 : "",
-            theme_advanced_buttons3 : "",
-            convert_urls : false,
-            theme_advanced_statusbar_location : "none"
-        });
+
+    defineTinyMCE({"elements": "textarea_text",});
         
         $("#checkbox-expire").click(function() {
             check_expire();
diff --git a/pandora_console/godmode/setup/setup_visuals.php b/pandora_console/godmode/setup/setup_visuals.php
index fab43724b5..c9b65c1a56 100755
--- a/pandora_console/godmode/setup/setup_visuals.php
+++ b/pandora_console/godmode/setup/setup_visuals.php
@@ -1401,30 +1401,17 @@ function change_servicetree_nodes_padding () {
     }
 }
 
-tinyMCE.init({
-    mode : "exact",
-    elements: "textarea_custom_report_front_header, textarea_custom_report_front_footer",
-    theme : "advanced",
-    theme_advanced_toolbar_location : "top",
-    theme_advanced_toolbar_align : "left",
-    theme_advanced_buttons1 : "bold,italic, |, image, |, cut, copy, paste, |, undo, redo, |, forecolor, |, fontsizeselect, |, justifyleft, justifycenter, justifyright",
-    theme_advanced_buttons2 : "",
-    theme_advanced_buttons3 : "",
-    theme_advanced_statusbar_location : "none"
-});
+var added_config1 = {
+        "elements":"textarea_custom_report_front_header, textarea_custom_report_front_footer",
+    }
 
-tinyMCE.init({
-    mode : "exact",
-    elements: "textarea_custom_report_front_firstpage",
-    theme : "advanced",
-    theme_advanced_toolbar_location : "top",
-    theme_advanced_toolbar_align : "left",
-    theme_advanced_buttons1 : "bold,italic, |, image, |, cut, copy, paste, |, undo, redo, |, forecolor, |, fontsizeselect, |, justifyleft, justifycenter, justifyright",
-    theme_advanced_buttons2 : "",
-    theme_advanced_buttons3 : "",
-    convert_urls : false,
-    theme_advanced_statusbar_location : "none"
-});
+    defineTinyMCE(added_config1);
+
+    var added_config2 = {
+        "elements":"textarea_custom_report_front_firstpage",
+    }
+
+    defineTinyMCE(added_config2);
 
 $(document).ready (function () {
 
diff --git a/pandora_console/godmode/snmpconsole/snmp_alert.php b/pandora_console/godmode/snmpconsole/snmp_alert.php
index 66651d6522..915f87fd22 100755
--- a/pandora_console/godmode/snmpconsole/snmp_alert.php
+++ b/pandora_console/godmode/snmpconsole/snmp_alert.php
@@ -1458,6 +1458,7 @@ if ($create_alert || $update_alert) {
                 unset($table);
 }
 
+ui_require_javascript_file('pandora', 'include/javascript/', true);
 ui_require_javascript_file('tiny_mce', 'include/javascript/tiny_mce/');
 ?>
 <script language="javascript" type="text/javascript">
@@ -1563,24 +1564,19 @@ $(document).ready (function () {
         }
     });
     
-    tinyMCE.init({
-        selector: 'textarea.tiny-mce-editor',
-        theme : "advanced",
-        plugins : "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
-        theme_advanced_buttons1 : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsize,select",
-        theme_advanced_buttons2 : "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
-        theme_advanced_buttons3 : "",
-        theme_advanced_toolbar_location : "top",
-        theme_advanced_toolbar_align : "left",
-        theme_advanced_resizing : true,
-        theme_advanced_statusbar_location : "bottom",
-        force_p_newlines : false,
-        forced_root_block : '',
-        inline_styles : true,
-        valid_children : "+body[style]",
-        element_format : "html"
-    });
+    var added_config = {
+        "selector": "textarea.tiny-mce-editor",
+        "plugins": "preview, print, table, searchreplace, nonbreaking, xhtmlxtras, noneditable",
+        "theme_advanced_buttons1" : "bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsize,select",
+        "theme_advanced_buttons2" : "search,replace,|,bullist,numlist,|,undo,redo,|,link,unlink,image,|,cleanup,code,preview,|,forecolor,backcolor",
+        "force_p_newlines": false,
+        "forced_root_block": '',
+        "inline_styles": true,
+        "valid_children": "+body[style]",
+        "element_format": "html",
+    }
 
+    defineTinyMCE(added_config);
 });
 
 function show_add_action_snmp(id_alert_snmp) {
diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js
index 6a29b6b552..c5595d9bf6 100644
--- a/pandora_console/include/javascript/pandora.js
+++ b/pandora_console/include/javascript/pandora.js
@@ -1287,6 +1287,72 @@ function openURLTagWindow(url) {
   );
 }
 
+/**
+ *
+ * Inicialize tinyMCE with customized parameters
+ *
+ * @param added_config  Associative Array. Config to add adding default.
+ */
+
+function defineTinyMCE(added_config) {
+  // Default values
+  var buttons1 =
+    "bold,italic,underline,|,link,image,|,cut,copy,paste,|,undo,redo,|,forecolor,fontselect,fontsizeselect,|,justifyleft,justifycenter,justifyright";
+  var elements = added_config["elements"];
+  var plugins = added_config["plugins"];
+  // Initialize with fixed parameters. Some parameters must be initialized too.
+  tinyMCE.init({
+    mode: "exact",
+    theme: "advanced",
+    elements: elements,
+    plugins: plugins,
+    theme_advanced_buttons1: buttons1,
+    theme_advanced_toolbar_location: "top",
+    theme_advanced_toolbar_align: "left",
+    theme_advanced_statusbar_location: "none",
+    convert_urls: false,
+    element_format: "html"
+  });
+
+  if (!isEmptyObject(added_config)) {
+    // If use asterisk mask, you can add at end of buttons new buttons.
+    for (var key in added_config) {
+      switch (key) {
+        case "theme_advanced_buttons1*":
+          tinyMCE.settings.theme_advanced_buttons1 =
+            buttons1 + ",|," + added_config[key];
+          break;
+        case "theme_advanced_font_sizes":
+          tinyMCE.settings.theme_advanced_font_sizes =
+            "4pt=.visual_font_size_4pt, " +
+            "6pt=.visual_font_size_6pt, " +
+            "8pt=.visual_font_size_8pt, " +
+            "10pt=.visual_font_size_10pt, " +
+            "12pt=.visual_font_size_12pt, " +
+            "14pt=.visual_font_size_14pt, " +
+            "18pt=.visual_font_size_18pt, " +
+            "24pt=.visual_font_size_24pt, " +
+            "28pt=.visual_font_size_28pt, " +
+            "36pt=.visual_font_size_36pt, " +
+            "48pt=.visual_font_size_48pt, " +
+            "60pt=.visual_font_size_60pt, " +
+            "72pt=.visual_font_size_72pt, " +
+            "84pt=.visual_font_size_84pt, " +
+            "96pt=.visual_font_size_96pt, " +
+            "116pt=.visual_font_size_116pt, " +
+            "128pt=.visual_font_size_128pt, " +
+            "140pt=.visual_font_size_140pt, " +
+            "154pt=.visual_font_size_154pt, " +
+            "196pt=.visual_font_size_196pt";
+          break;
+        default:
+          tinyMCE.settings[key] = added_config[key];
+          break;
+      }
+    }
+  }
+}
+
 function removeTinyMCE(elementID) {
   if (elementID.length > 0 && !isEmptyObject(tinyMCE))
     tinyMCE.EditorManager.execCommand("mceRemoveControl", true, elementID);