From 6eb9319a7a0342fc046c109323a0bc4ee80801d1 Mon Sep 17 00:00:00 2001
From: "jose.gonzalez@pandorafms.com" <jose.gonzalez@pandorafms.com>
Date: Wed, 23 Nov 2022 17:42:53 +0100
Subject: [PATCH] Minor fixes

---
 .../godmode/agentes/module_manager.php        | 298 +++++++++++-------
 pandora_console/index.php                     |   2 +-
 2 files changed, 177 insertions(+), 123 deletions(-)

diff --git a/pandora_console/godmode/agentes/module_manager.php b/pandora_console/godmode/agentes/module_manager.php
index a58f013cd2..26b82cf7fc 100644
--- a/pandora_console/godmode/agentes/module_manager.php
+++ b/pandora_console/godmode/agentes/module_manager.php
@@ -44,16 +44,20 @@ $search_string = get_parameter('search_string');
 
 global $policy_page;
 
-if (!isset($policy_page)) {
+if (isset($policy_page) === false) {
     $policy_page = false;
 }
 
+$checked = (bool) get_parameter('checked');
+$sec2 = (string) get_parameter('sec2');
 
-echo '<form id="create_module_type" method="post" action="'.$url.'">';
-
-echo '<table width="100%" cellpadding="2" cellspacing="2" class="databox filters" >';
-echo "<tr><td class='datos bolder w20p'>";
-echo __('Search').' '.html_print_input_text(
+// Table for filter bar.
+$filterTable = new stdClass();
+$filterTable->class = 'fixed_filter_bar';
+$filterTable->data = [];
+$filterTable->cellstyle[0][0] = 'flex: 0 1 20%;';
+$filterTable->data[0][0] = '<span>'.__('Search').'</span>';
+$filterTable->data[0][0] .= html_print_input_text(
     'search_string',
     $search_string,
     '',
@@ -61,28 +65,36 @@ echo __('Search').' '.html_print_input_text(
     255,
     true
 );
-html_print_input_hidden('search', 1);
-// Search string filter form.
-if (($policy_page !== false) || (isset($agent) === true)) {
-    echo '<form id="" method="post" action="">';
-} else {
-    echo '<form id="create_module_type" method="post" action="'.$url.'">';
+$filterTable->data[0][0] .= html_print_input_hidden('search', 1, true);
+
+if ((bool) $policy_page === false) {
+    $filterTable->cellstyle[0][1] = 'flex: 0 1 20%';
+    $filterTable->data[0][1] = '<span>'.__('Show in hierachy mode').'</span>';
+    $filterTable->data[0][1] .= html_print_checkbox_switch(
+        'status_hierachy_mode',
+        '',
+        ((string) $checked === 'true'),
+        true,
+        false,
+        'onChange=change_mod_filter();'
+    );
 }
 
-echo '</td>';
-echo "<td class='datos w10p'>";
-html_print_submit_button(
+$filterTable->cellstyle[0][2] = 'flex: 0 1 60%; justify-content: flex-end;';
+$filterTable->data[0][2] .= html_print_submit_button(
     __('Filter'),
     'filter',
     false,
     [
-        'icon' => 'search',
-        'mode' => 'secondary mini',
-    ]
+        'icon'  => 'search',
+        'class' => 'float-right',
+        'mode'  => 'secondary mini',
+    ],
+    true
 );
-echo '</td>';
-echo "<td class='datos w10p'></td>";
-echo '</form>';
+
+// Print filter table.
+html_print_table($filterTable);
 // Check if there is at least one server of each type available to assign that
 // kind of modules. If not, do not show server type in combo.
 $network_available = db_get_sql(
@@ -122,7 +134,7 @@ if ($develop_bypass || is_metaconsole()) {
     $plugin_available = 1;
     // FIXME when prediction predictions server modules can be configured.
     // on metaconsole.
-    $prediction_available = is_metaconsole() ? 0 : 1;
+    $prediction_available = (is_metaconsole() === true) ? 0 : 1;
 }
 
 $modules = [];
@@ -147,11 +159,10 @@ if (is_metaconsole() === true || $web_available >= '1') {
     $modules['webserver'] = __('Create a new web Server module');
 }
 
-if (enterprise_installed()) {
+if (enterprise_installed() === true) {
     set_enterprise_module_types($modules);
 }
 
-$sec2 = get_parameter('sec2', '');
 if (strstr($sec2, 'enterprise/godmode/policies/policies') !== false) {
     // It is unset because the policies haven't a table tmodule_synth and the
     // some part of code to apply this kind of modules in policy agents.
@@ -159,16 +170,13 @@ if (strstr($sec2, 'enterprise/godmode/policies/policies') !== false) {
     // the modules to show in syntetic module policy form must be the policy
     // modules from the same policy.
     unset($modules['predictionserver']);
-    if (enterprise_installed()) {
+    if (enterprise_installed() === true) {
         unset($modules['webux']);
     }
 }
 
-$show_creation = false;
-$checked = get_parameter('checked');
-
-if (($policy_page) || (isset($agent))) {
-    if ($policy_page) {
+if (($policy_page === true) || (isset($agent) === true)) {
+    if ($policy_page === true) {
         $show_creation = is_management_allowed();
     } else {
         if (isset($all_groups) === false) {
@@ -178,79 +186,64 @@ if (($policy_page) || (isset($agent))) {
             );
         }
 
-        if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW')) {
-            $show_creation = true;
-        }
-    }
-
-    if ($show_creation === true) {
-        // Create module/type combo.
-        echo '<form id="create_module_type" method="post" action="'.$url.'">';
-        if (!$policy_page) {
-            echo '<td class="datos w20p bolder">';
-            echo __('Show in hierachy mode');
-            if ($checked == 'true') {
-                $checked = true;
-            } else {
-                $checked = false;
-            }
-
-            html_print_checkbox(
-                'status_hierachy_mode',
-                '',
-                $checked,
-                false,
-                false,
-                'onChange=change_mod_filter();'
-            );
-            echo '</td>';
-        }
-
-        echo '<td class="datos w20p bolder">';
-        echo __('<p>Type</p>');
-        html_print_select(
-            $modules,
-            'moduletype',
-            '',
-            '',
-            '',
-            '',
-            false,
-            false,
-            false,
-            '',
-            false,
-            'max-width:300px;'
-        );
-        html_print_input_hidden('edit_module', 1);
-        echo '</td>';
-        echo '<td class="datos w10p">';
-        html_print_submit_button(
-            __('Create'),
-            'updbutton',
-            false,
-            [
-                'icon' => 'next',
-                'mode' => 'mini secondary',
-            ]
-        );
-        echo '</td>';
-        echo '</tr>';
-        echo '</form>';
+        $show_creation = check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === true;
     }
+} else {
+    $show_creation = false;
 }
 
-echo '</table>';
+if ($show_creation === true) {
+    // Create module/type combo.
+    $tableCreateModule = new stdClass();
+    $tableCreateModule->id = 'create';
+    $tableCreateModule->width = '100%';
+    $tableCreateModule->data = [];
+    $tableCreateModule->style = [];
 
-if (!$config['disable_help']) {
+    $tableCreateModule->data['caption_type'] = '<form id="create_module_type" method="post" action="'.$url.'">';
+    $tableCreateModule->data['caption_type'] .= html_print_input_hidden('edit_module', 1);
+    $tableCreateModule->data['caption_type'] .= __('Type');
+    $tableCreateModule->data['type'] = html_print_select(
+        $modules,
+        'moduletype',
+        '',
+        '',
+        '',
+        '',
+        true,
+        false,
+        false,
+        '',
+        false,
+        'max-width:400px;'
+    );
+
+    $tableCreateModule->data['submitButton'] = html_print_submit_button(
+        __('Create'),
+        'updbutton',
+        false,
+        [
+            'icon' => 'next',
+            'mode' => 'mini secondary',
+        ],
+        true
+    );
+
+    $tableCreateModule->data['submitButton'] .= '</form>';
+}
+
+// echo '</table>';
+/*
+    if (!$config['disable_help']) {
     echo '<div class="disable_help">';
     echo '<strong>';
     echo "<a class='color-black-grey invert_filter' target='_blank' href='https://pandorafms.com/Library/Library/'>".__('Get more modules on Monitoring Library').'</a>';
     echo '</strong>';
     echo '</div>';
-}
+    }
+*/
 
-if (! isset($id_agente)) {
+if (isset($id_agente) === false) {
     return;
 }
 
@@ -1285,59 +1278,120 @@ html_print_table($table);
 if ((bool) check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === true) {
     html_print_input_hidden('submit_modules_action', 1);
 
-    html_print_div(
+    $actionButtons = html_print_button(
+        __('Create module'),
+        'create_module',
+        false,
+        'create_module_dialog()',
+        [ 'icon' => 'wand' ],
+        true
+    );
+
+    $actionButtons .= html_print_submit_button(
+        __('Execute action'),
+        'submit_modules_action',
+        false,
+        [
+            'icon' => 'next',
+            'mode' => 'link',
+        ],
+        true
+    );
+
+    $actionButtons .= html_print_select(
+        [
+            'disable' => 'Disable selected modules',
+            'delete'  => 'Delete selected modules',
+        ],
+        'module_action',
+        '',
+        '',
+        '',
+        0,
+        true,
+        false,
+        false,
+        '',
+        false,
+        false,
+        false,
+        300
+    );
+
+    html_print_action_buttons(
+        $actionButtons,
+        [ 'type' => 'data_table' ]
+    );
+    echo '</form>';
+
+
+    $modalCreateModule = '<form name="create_module_form" method="post">';
+    $modalCreateModule .= html_print_table($tableCreateModule, true);
+    $modalCreateModule .= html_print_div(
         [
             'class'   => 'action-buttons',
             'content' => html_print_submit_button(
-                __('Execute action'),
-                'submit_modules_action',
+                __('Add'),
+                'create_module_dialog',
                 false,
                 [
-                    'icon' => 'next',
-                    'mode' => 'link',
+                    'icon' => 'add',
+                    'mode' => 'secondary mini',
                 ],
                 true
-            ).html_print_select(
-                [
-                    'disable' => 'Disable selected modules',
-                    'delete'  => 'Delete selected modules',
-                ],
-                'module_action',
-                '',
-                '',
-                '',
-                0,
-                true,
-                false,
-                false,
-                '',
-                false,
-                false,
-                false,
-                300
             ),
+        ],
+        true
+    );
+    $modalCreateModule .= '</form>';
+
+    html_print_div(
+        [
+            'id'      => 'modal',
+            'style'   => 'display: none',
+            'content' => $modalCreateModule,
         ]
     );
-
-    echo '</form>';
 }
 ?>
 
 <script type="text/javascript">
 
+    function create_module_dialog(){
+        console.log('holaaa');
+        $('#modal')
+        .dialog({
+            title: '<?php echo __('Create Module'); ?>',
+            resizable: true,
+            draggable: true,
+            modal: true,
+            close: false,
+            height: 245,
+            width: 480,
+            overlay: {
+                opacity: 0.5,
+                background: "black"
+            }
+        })
+        .show();
+    }
+
     $(document).ready (function () {
+        $('#button-create_module_dialog').click(function(){
+            $('#modal').dialog("close");
+        });
 
         $('[id^=checkbox-id_delete]').change(function(){
             if($(this).parent().parent().hasClass('checkselected')){
                 $(this).parent().parent().removeClass('checkselected');
             }
             else{
-                $(this).parent().parent().addClass('checkselected');                            
+                $(this).parent().parent().addClass('checkselected');
             }
-        });        
+        });
 
 
-        $('[id^=checkbox-all_delete]').change(function(){    
+        $('[id^=checkbox-all_delete]').change(function(){
             if ($("#checkbox-all_delete").prop("checked")) {
                 $('[id^=checkbox-id_delete]').parent().parent().addClass('checkselected');
                 $("[name^=id_delete").prop("checked", true);
@@ -1345,7 +1399,7 @@ if ((bool) check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === tr
             else{
                 $('[id^=checkbox-id_delete]').parent().parent().removeClass('checkselected');
                 $("[name^=id_delete").prop("checked", false);
-            }    
+            }
         });
 
 
diff --git a/pandora_console/index.php b/pandora_console/index.php
index 0b9a1c72c6..050cdcac38 100755
--- a/pandora_console/index.php
+++ b/pandora_console/index.php
@@ -1561,7 +1561,7 @@ require 'include/php_to_js_values.php';
             }
             */
             if (actionButtons.classList.contains('fixed_action_buttons_size') === false) {
-                $left = 'left:'+(document.documentElement.offsetWidth - document.getElementById('principal_action_buttons').offsetWidth - 40)+'px;';
+                $left = 'left:'+(document.documentElement.offsetWidth - document.getElementById('principal_action_buttons').offsetWidth - 20)+'px;';
                 actionButtons.setAttribute('style', $left);
             }
             // Set the position of principal action buttons.