From c94f05b2e4bd219496ab1dc5ecfce55d2becc8a5 Mon Sep 17 00:00:00 2001 From: zarzuelo Date: Mon, 10 Dec 2012 18:04:27 +0000 Subject: [PATCH] 2012-12-10 Sergio Martin * include/javascript/pandora_modules.js godmode/agentes/module_manager_editor_common.php godmode/modules/manage_network_components_form.php godmode/modules/manage_network_components_form_common.php godmode/modules/manage_network_components.php: Added tags support to the network components git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@7248 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 9 +++ .../agentes/module_manager_editor_common.php | 8 +++ .../modules/manage_network_components.php | 24 +++++-- .../manage_network_components_form.php | 40 +++++++++++ .../manage_network_components_form_common.php | 49 +++++++++++-- .../include/javascript/pandora_modules.js | 72 ++++++++++++++++++- 6 files changed, 188 insertions(+), 14 deletions(-) diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index ade503136b..9fab944e69 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,12 @@ +2012-12-10 Sergio Martin + + * include/javascript/pandora_modules.js + godmode/agentes/module_manager_editor_common.php + godmode/modules/manage_network_components_form.php + godmode/modules/manage_network_components_form_common.php + godmode/modules/manage_network_components.php: Added tags support + to the network components + 2012-12-10 Juan Manuel Ramon * pandoradb_data.sql diff --git a/pandora_console/godmode/agentes/module_manager_editor_common.php b/pandora_console/godmode/agentes/module_manager_editor_common.php index b9d7d1af90..a1a5d1de5a 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_common.php +++ b/pandora_console/godmode/agentes/module_manager_editor_common.php @@ -401,6 +401,10 @@ $(document).ready (function () { id_tag = $(value).attr('value'); $("select[name='id_tag_selected[]']").append($("").val(id_tag).html('' + tag_name + '')); $("#id_tag_available").find("option[value='" + id_tag + "']").remove(); + $("#id_tag_selected").find("option[value='']").remove(); + if($("#id_tag_available option").length == 0) { + $("select[name='id_tag_available[]']").append($("").val('').html('')); + } } }); }); @@ -411,6 +415,10 @@ $(document).ready (function () { id_tag = $(value).attr('value'); $("select[name='id_tag_available[]']").append($("").val('').html('')); + } } }); }); diff --git a/pandora_console/godmode/modules/manage_network_components.php b/pandora_console/godmode/modules/manage_network_components.php index 7067739db2..aea1fe24b9 100644 --- a/pandora_console/godmode/modules/manage_network_components.php +++ b/pandora_console/godmode/modules/manage_network_components.php @@ -76,13 +76,21 @@ $post_process = (float) get_parameter('post_process'); $unit = (string) get_parameter('unit'); $id = (int) get_parameter ('id'); $wizard_level = get_parameter ('wizard_level'); -$only_metaconsole = get_parameter ('only_metaconsole'); +$only_metaconsole = (int) get_parameter ('only_metaconsole'); $critical_instructions = (string) get_parameter('critical_instructions'); $warning_instructions = (string) get_parameter('warning_instructions'); $unknown_instructions = (string) get_parameter('unknown_instructions'); $critical_inverse = (int) get_parameter('critical_inverse'); $warning_inverse = (int) get_parameter('warning_inverse'); $id_category = (int) get_parameter('id_category'); +$id_tag_selected = (array) get_parameter('id_tag_selected'); + +if(count($id_tag_selected) == 1 && empty($id_tag_selected[0])) { + $tags = ''; +} +else { + $tags = implode(',',$id_tag_selected); +} $snmp_version = (string) get_parameter('snmp_version'); $snmp3_auth_user = (string) get_parameter('snmp3_auth_user'); @@ -134,6 +142,8 @@ if ($create_component) { $custom_string_3 = $snmp3_security_level; $name_check = db_get_value ('name', 'tnetwork_component', 'name', $name); } + + if ($name && !$name_check) { $id = network_components_create_network_component ($name, $type, $id_group, @@ -176,18 +186,20 @@ if ($create_component) { 'unknown_instructions' => $unknown_instructions, 'critical_inverse' => $critical_inverse, 'warning_inverse' => $warning_inverse, - 'id_category' => $id_category)); + 'id_category' => $id_category, + 'tags' => $tags)); } else { $id = ''; } + if ($id === false || !$id) { db_pandora_audit("Module management", "Fail try to create network component"); ui_print_error_message (__('Could not be created')); include_once ('godmode/modules/manage_network_components_form.php'); return; } - db_pandora_audit("Module management", "Create network component group #$id"); + db_pandora_audit("Module management", "Create network component #$id"); ui_print_success_message (__('Created successfully')); $id = 0; } @@ -255,7 +267,8 @@ if ($update_component) { 'unknown_instructions' => $unknown_instructions, 'critical_inverse' => $critical_inverse, 'warning_inverse' => $warning_inverse, - 'id_category' => $id_category)); + 'id_category' => $id_category, + 'tags' => $tags)); } else { $result = ''; @@ -372,7 +385,8 @@ $url = ui_get_url_refresh (array ('offset' => false, 'unknown_instructions' => false, 'critical_inverse' => false, 'warning_inverse' => false, - 'id_category' => false)); + 'id_category' => false, + 'tags' => false)); $search_id_group = (int) get_parameter ('search_id_group'); diff --git a/pandora_console/godmode/modules/manage_network_components_form.php b/pandora_console/godmode/modules/manage_network_components_form.php index c72c1c22ef..87aa146171 100644 --- a/pandora_console/godmode/modules/manage_network_components_form.php +++ b/pandora_console/godmode/modules/manage_network_components_form.php @@ -116,6 +116,7 @@ if (isset ($id)) { $critical_inverse = $component["critical_inverse"]; $warning_inverse = $component["warning_inverse"]; $id_category = $component["id_category"]; + $tags = $component["tags"]; if ($type >= 15 && $type <= 18) { // New support for snmp v3 @@ -163,6 +164,7 @@ if (isset ($id)) { $critical_inverse = 0; $warning_inverse = 0; $id_category = 0; + $tags = ''; $snmp_version = 1; $snmp3_auth_user = ''; @@ -382,6 +384,44 @@ function type_change () { } $(document).ready (function () { + $("#right").click (function () { + jQuery.each($("select[name='id_tag_available[]'] option:selected"), function (key, value) { + tag_name = $(value).html(); + if (tag_name != ) { + id_tag = $(value).attr('value'); + $("select[name='id_tag_selected[]']").append($("").val(id_tag).html('' + tag_name + '')); + $("#id_tag_available").find("option[value='" + id_tag + "']").remove(); + $("#id_tag_selected").find("option[value='']").remove(); + if($("#id_tag_available option").length == 0) { + $("select[name='id_tag_available[]']").append($("").val('').html('')); + } + } + }); + }); + $("#left").click (function () { + jQuery.each($("select[name='id_tag_selected[]'] option:selected"), function (key, value) { + tag_name = $(value).html(); + if (tag_name != ) { + id_tag = $(value).attr('value'); + $("select[name='id_tag_available[]']").append($("").val('').html('')); + } + } + }); + }); + $("#submit-crt").click(function () { + $('#id_tag_selected option').map(function(){ + $(this).attr('selected','selected'); + }); + }); + $("#submit-upd").click(function () { + $('#id_tag_selected option').map(function(){ + $(this).attr('selected','selected'); + }); + }); if ($("#snmp_version").value == "3"){ $("input[name=snmp3_auth_user]").css({backgroundColor: '#fff'}); $("input[name=snmp3_auth_user]").removeAttr('disabled'); diff --git a/pandora_console/godmode/modules/manage_network_components_form_common.php b/pandora_console/godmode/modules/manage_network_components_form_common.php index 2cb06e97b0..0ba843e2b7 100644 --- a/pandora_console/godmode/modules/manage_network_components_form_common.php +++ b/pandora_console/godmode/modules/manage_network_components_form_common.php @@ -125,24 +125,59 @@ $table->data[6][2] = $table->data[6][3] = ''; $table->data[7][0] = __('Critical instructions'). ui_print_help_tip(__("Instructions when the status is critical"), true); $table->data[7][1] = html_print_textarea ('critical_instructions', 2, 65, $critical_instructions, '', true); -$table->data[7][2] = $table->data[7][3] = ''; +$table->colspan[7][1] = 3; $table->data[8][0] = __('Warning instructions'). ui_print_help_tip(__("Instructions when the status is warning"), true); $table->data[8][1] = html_print_textarea ('warning_instructions', 2, 65, $warning_instructions, '', true); -$table->data[8][2] = $table->data[8][3] = ''; +$table->colspan[8][1] = 3; $table->data[9][0] = __('Unknown instructions'). ui_print_help_tip(__("Instructions when the status is unknown"), true); $table->data[9][1] = html_print_textarea ('unknown_instructions', 2, 65, $unknown_instructions, '', true); -$table->data[9][2] = $table->data[9][3] = ''; +$table->colspan[9][1] = 3; + +$next_row = 10; if (check_acl ($config['id_user'], 0, "PM")) { - $table->data[10][0] = __('Category'); - $table->data[10][1] = html_print_select(categories_get_all_categories('forselect'), 'id_category', $id_category, '', __('None'), 0, true); - $table->data[10][2] = $table->data[9][3] = ''; + $table->data[$next_row][0] = __('Category'); + $table->data[$next_row][1] = html_print_select(categories_get_all_categories('forselect'), 'id_category', $id_category, '', __('None'), 0, true); + $table->data[$next_row][2] = $table->data[$next_row][3] = $table->data[$next_row][4] = ''; + $next_row++; } else { // Store in a hidden field if is not visible to avoid delete the value - $table->data[9][2] .= html_print_input_hidden ('id_category', $id_category, true); + $table->data[9][1] .= html_print_input_hidden ('id_category', $id_category, true); } +$table->data[$next_row][0] = __('Tags'); + +if($tags == '') { + $tags_condition_not = '1 = 1'; + $tags_condition_in = '1 = 0'; +} +else { + $tags = str_replace(",", "','", $tags); + $tags_condition_not = "name NOT IN ('".$tags."')"; + $tags_condition_in = "name IN ('".$tags."')"; +} + +$table->data[$next_row][1] = '' . __('Tags available') . '
'; +$table->data[$next_row][1] .= html_print_select_from_sql ( + "SELECT name, name + FROM ttag + WHERE $tags_condition_not + ORDER BY name", 'id_tag_available[]', '', '','','', + true, true, false, false, 'width: 200px', '5'); +$table->data[$next_row][2] = html_print_image('images/darrowright.png', true, array('id' => 'right', 'title' => __('Add tags to module'))); //html_print_input_image ('add', 'images/darrowright.png', 1, '', true, array ('title' => __('Add tags to module'))); +$table->data[$next_row][2] .= '



' . html_print_image('images/darrowleft.png', true, array('id' => 'left', 'title' => __('Delete tags to module'))); //html_print_input_image ('add', 'images/darrowleft.png', 1, '', true, array ('title' => __('Delete tags to module'))); + +$table->data[$next_row][3] = '' . __('Tags selected') . '
'; +$table->data[$next_row][3] .= html_print_select_from_sql ( + "SELECT name, name + FROM ttag + WHERE $tags_condition_in + ORDER BY name", + 'id_tag_selected[]', '', '','','', true, true, false, + false, 'width: 200px', '5'); + +$next_row++; ?> diff --git a/pandora_console/include/javascript/pandora_modules.js b/pandora_console/include/javascript/pandora_modules.js index 53e7d70cf0..535f0debd2 100644 --- a/pandora_console/include/javascript/pandora_modules.js +++ b/pandora_console/include/javascript/pandora_modules.js @@ -139,13 +139,46 @@ function configure_modules_form () { $("#id_module_type").change (); if($("#id_category").is("select")) { $("#id_category option[value="+data["id_category"]+"]").select (1); - console.log('select'); } else { $("#hidden-id_category").val(data["id_category"]); - console.log('hidden'); } + var tags = data["tags"]; + + // Reset the selection of tags (put all of them into available box) + $("#id_tag_selected option").each(function(){ + if($(this).attr('value') != '') { + $("#id_tag_selected").find("option[value='" + $(this).attr('value') + "']").remove(); + $("select[name='id_tag_available[]']").append($("").val($(this).attr('value')).html($(this).text())); + } + }); + if($("#id_tag_available option").length > 1) { + $("#id_tag_available").find("option[value='']").remove(); + } + if($("#id_tag_selected option").length == 0) { + $("select[name='id_tag_selected[]']").append($("").val('').html('None')); + } + + if(tags != '') { + tags = tags.split(','); + + // Fill the selected tags box with select ones + for(i=0; i").val($(this).attr('value')).html($(this).text())); + $("#id_tag_selected").find("option[value='']").remove(); + } + }); + + if($("#id_tag_available option").length == 0) { + $("select[name='id_tag_available[]']").append($("").val('').html('None')); + } + } + } + // Delete macro fields $('.macro_field').remove(); @@ -273,6 +306,41 @@ function configure_modules_form () { else { $("#hidden-id_category").val(data["id_category"]); } + + var tags = data["tags"]; + + // Reset the selection of tags (put all of them into available box) + $("#id_tag_selected option").each(function(){ + if($(this).attr('value') != '') { + $("#id_tag_selected").find("option[value='" + $(this).attr('value') + "']").remove(); + $("select[name='id_tag_available[]']").append($("").val($(this).attr('value')).html($(this).text())); + } + }); + if($("#id_tag_available option").length > 1) { + $("#id_tag_available").find("option[value='']").remove(); + } + if($("#id_tag_selected option").length == 0) { + $("select[name='id_tag_selected[]']").append($("").val('').html('None')); + } + + if(tags != '') { + tags = tags.split(','); + + // Fill the selected tags box with select ones + for(i=0; i").val($(this).attr('value')).html($(this).text())); + $("#id_tag_selected").find("option[value='']").remove(); + } + }); + + if($("#id_tag_available option").length == 0) { + $("select[name='id_tag_available[]']").append($("").val('').html('None')); + } + } + } // Delete macro fields $('.macro_field').remove();