__('Duplicate'), AUTOMATION_ACTION_TREE_ENABLE => __('Enable'), AUTOMATION_ACTION_TREE_EXPORT => __('Export'), AUTOMATION_ACTION_TREE_DISABLE => __('Disable'), AUTOMATION_ACTION_TREE_DELETE => __('Delete'), ); /* set default action */ set_default_action(); switch (get_request_var('action')) { case 'save': if (isset_request_var('save_component_import')) { automation_import_process(); } else { form_save(); } break; case 'import': top_header(); automation_import(); bottom_footer(); break; case 'export': automation_export(); break; case 'actions': automation_tree_rules_form_actions(); break; case 'change_leaf': automation_tree_rules_change_leaf(); header('Location: automation_tree_rules.php?action=edit&id=' . get_request_var('id')); break; case 'item_movedown': automation_tree_rules_item_movedown(); header('Location: automation_tree_rules.php?action=edit&id=' . get_request_var('id')); break; case 'item_moveup': automation_tree_rules_item_moveup(); header('Location: automation_tree_rules.php?action=edit&id=' . get_request_var('id')); break; case 'item_remove': automation_tree_rules_item_remove(); header('Location: automation_tree_rules.php?action=edit&id=' . get_request_var('id')); break; case 'item_edit': top_header(); automation_tree_rules_item_edit(); bottom_footer(); break; case 'remove': automation_tree_rules_remove(); header('Location: automation_tree_rules.php'); break; case 'edit': top_header(); automation_tree_rules_edit(); bottom_footer(); break; default: top_header(); automation_tree_rules(); bottom_footer(); break; } function automation_export() { /* if we are to save this form, instead of display it */ if (isset_request_var('selected_items')) { $selected_items = sanitize_unserialize_selected_items(get_nfilter_request_var('selected_items')); if ($selected_items != false) { if(cacti_sizeof($selected_items) == 1) { $export_data = automation_tree_rule_export($selected_items[0]); } else { foreach($selected_items as $id) { $snmp_option_ids[] = $id; } $export_data = automation_tree_rule_export($snmp_option_ids); } if (cacti_sizeof($export_data)) { $export_file_name = $export_data['name']; header('Content-type: application/json'); header('Content-Disposition: attachment; filename=' . $export_file_name); $output = json_encode($export_data, JSON_PRETTY_PRINT); print $output; } } } } function automation_import() { $form_data = array( 'import_file' => array( 'friendly_name' => __('Import Tree Rules from Local File',), 'description' => __('If the JSON file containing the Tree Rules data is located on your local machine, select it here.'), 'method' => 'file', 'accept' => '.json' ), 'import_text' => array( 'method' => 'textarea', 'friendly_name' => __('Import Tree Rules from Text'), 'description' => __('If you have the JSON file containing the Tree Rules data as text, you can paste it into this box to import it.'), 'value' => '', 'default' => '', 'textarea_rows' => '10', 'textarea_cols' => '80', 'class' => 'textAreaNotes' ) ); form_start('automation_graph_rules.php', 'chk', true); if ((isset($_SESSION['import_debug_info'])) && (is_array($_SESSION['import_debug_info']))) { html_start_box(__('Import Results'), '80%', '', '3', 'center', ''); print '' . __('Cacti has Imported the following Tree Rules'). ''; foreach ($_SESSION['import_debug_info'] as $line) { print '' . $line . ''; } html_end_box(); kill_session_var('import_debug_info'); } html_start_box(__('Import Tree Rules'), '80%', false, '3', 'center', ''); draw_edit_form( array( 'config' => array('no_form_tag' => true), 'fields' => $form_data ) ); form_hidden_box('save_component_import', '1', ''); print "
"; html_end_box(); } function automation_import_process() { $json_data = json_decode(get_nfilter_request_var('import_text'), true); // If we have text, then we were trying to import text, otherwise we are uploading a file for import if (empty($json_data)) { $json_data = automation_validate_upload(); } if (is_array($json_data) && cacti_sizeof($json_data) && isset($json_data['tree_rules'])) { foreach($json_data['tree_rules'] as $tree_rule) { $return_data += automation_tree_rule_import($tree_rule); } } if (sizeof($return_data) && isset($return_data['success'])) { foreach ($return_data['success'] as $message) { $debug_data[] = '' . __('NOTE:') . ' ' . $message; cacti_log('NOTE: Automation Tree Rules Import Succeeded!. Message: '. $message, false, 'AUTOM8'); } } if (isset($return_data['errors'])) { foreach ($return_data['errors'] as $error) { $debug_data[] = '' . __('ERROR:') . ' ' . $error; cacti_log('NOTE: Automation Tree Rules Import Error!. Message: '. $message, false, 'AUTOM8'); } } if (isset($return_data['failure'])) { foreach ($return_data['failure'] as $message) { $debug_data[] = '' . __('ERROR:') . ' ' . $message; cacti_log('NOTE: Automation Tree Rules Import Failed!. Message: '. $message, false, 'AUTOM8'); } } if (cacti_sizeof($debug_data)) { $_SESSION['import_debug_info'] = $debug_data; } header('Location: automation_graph_rules.php?action=import'); exit(); } function form_save() { if (isset_request_var('save_component_automation_tree_rule')) { /* ================= input validation ================= */ get_filter_request_var('id'); /* ==================================================== */ $save['id'] = get_request_var('id'); $save['hash'] = get_hash_automation(get_request_var('id'), 'automation_tree_rules'); $save['name'] = form_input_validate(get_nfilter_request_var('name'), 'name', '', true, 3); $save['tree_id'] = form_input_validate(get_nfilter_request_var('tree_id'), 'tree_id', '^[0-9]+$', false, 3); $save['tree_item_id'] = isset_request_var('tree_item_id') ? form_input_validate(get_nfilter_request_var('tree_item_id'), 'tree_item_id', '^[0-9]+$', false, 3) : 0; $save['leaf_type'] = (isset_request_var('leaf_type')) ? form_input_validate(get_nfilter_request_var('leaf_type'), 'leaf_type', '^[0-9]+$', false, 3) : 0; $save['host_grouping_type'] = isset_request_var('host_grouping_type') ? form_input_validate(get_nfilter_request_var('host_grouping_type'), 'host_grouping_type', '^[0-9]+$', false, 3) : 0; $save['enabled'] = (isset_request_var('enabled') ? 'on' : ''); if (!is_error_message()) { $rule_id = sql_save($save, 'automation_tree_rules'); if ($rule_id) { raise_message(1); } else { raise_message(2); } } header('Location: automation_tree_rules.php?action=edit&id=' . (empty($rule_id) ? get_request_var('id') : $rule_id)); } elseif (isset_request_var('save_component_automation_match_item')) { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); /* ==================================================== */ $save = array(); $save['id'] = form_input_validate(get_request_var('item_id'), 'item_id', '^[0-9]+$', false, 3); $save['hash'] = get_hash_automation(get_request_var('item_id'), 'automation_match_rule_items'); $save['rule_id'] = form_input_validate(get_request_var('id'), 'id', '^[0-9]+$', false, 3); $save['rule_type'] = AUTOMATION_RULE_TYPE_TREE_MATCH; $save['sequence'] = form_input_validate(get_nfilter_request_var('sequence'), 'sequence', '^[0-9]+$', false, 3); $save['operation'] = form_input_validate(get_nfilter_request_var('operation'), 'operation', '^[-0-9]+$', true, 3); $save['field'] = form_input_validate(((isset_request_var('field') && get_nfilter_request_var('field') != '0') ? get_nfilter_request_var('field') : ''), 'field', '', true, 3); $save['operator'] = form_input_validate((isset_request_var('operator') ? get_nfilter_request_var('operator') : ''), 'operator', '^[0-9]+$', true, 3); $save['pattern'] = form_input_validate((isset_request_var('pattern') ? get_nfilter_request_var('pattern') : ''), 'pattern', '', true, 3); if (!is_error_message()) { $item_id = sql_save($save, 'automation_match_rule_items'); if ($item_id) { raise_message(1); } else { raise_message(2); } } if (is_error_message()) { header('Location: automation_tree_rules.php?action=item_edit&id=' . get_request_var('id') . '&item_id=' . (empty($item_id) ? get_request_var('item_id') : $item_id) . '&rule_type=' . AUTOMATION_RULE_TYPE_TREE_MATCH); } else { header('Location: automation_tree_rules.php?action=edit&id=' . get_request_var('id') . '&rule_type=' . AUTOMATION_RULE_TYPE_TREE_MATCH); } } elseif (isset_request_var('save_component_automation_tree_rule_item')) { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); /* ==================================================== */ unset($save); $save['id'] = form_input_validate(get_request_var('item_id'), 'item_id', '^[0-9]+$', false, 3); $save['hash'] = get_hash_automation(get_request_var('item_id'), 'automation_tree_rule_items'); $save['rule_id'] = form_input_validate(get_request_var('id'), 'id', '^[0-9]+$', false, 3); $save['sequence'] = form_input_validate(get_nfilter_request_var('sequence'), 'sequence', '^[0-9]+$', false, 3); $save['field'] = form_input_validate((isset_request_var('field') ? get_nfilter_request_var('field') : ''), 'field', '', true, 3); $save['sort_type'] = form_input_validate(get_nfilter_request_var('sort_type'), 'sort_type', '^[0-9]+$', false, 3); $save['propagate_changes'] = (isset_request_var('propagate_changes') ? 'on' : ''); $save['search_pattern'] = isset_request_var('search_pattern') ? form_input_validate(get_nfilter_request_var('search_pattern'), 'search_pattern', '', false, 3) : ''; $save['replace_pattern'] = isset_request_var('replace_pattern') ? form_input_validate(get_nfilter_request_var('replace_pattern'), 'replace_pattern', '', true, 3) : ''; if (!is_error_message()) { $automation_graph_rule_item_id = sql_save($save, 'automation_tree_rule_items'); if ($automation_graph_rule_item_id) { raise_message(1); } else { raise_message(2); } } if (is_error_message()) { header('Location: automation_tree_rules.php?action=item_edit&id=' . get_request_var('id') . '&item_id=' . (empty($automation_graph_rule_item_id) ? get_request_var('item_id') : $automation_graph_rule_item_id) . '&rule_type=' . AUTOMATION_RULE_TYPE_TREE_ACTION); } else { header('Location: automation_tree_rules.php?action=edit&id=' . get_request_var('id') . '&rule_type=' . AUTOMATION_RULE_TYPE_TREE_ACTION); } } else { raise_message(2); header('Location: automation_tree_rules.php'); } } /* ------------------------ The 'actions' function ------------------------ */ function automation_tree_rules_form_actions() { global $automation_tree_rules_actions; global $config; /* if we are to save this form, instead of display it */ if (isset_request_var('selected_items')) { $selected_items = sanitize_unserialize_selected_items(get_nfilter_request_var('selected_items')); if ($selected_items != false) { if (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DELETE) { /* DELETE */ cacti_log('form_actions DELETE: ' . serialize($selected_items), true, 'AUTOM8 TRACE', POLLER_VERBOSITY_MEDIUM); db_execute('DELETE FROM automation_tree_rules WHERE ' . array_to_sql_or($selected_items, 'id')); db_execute('DELETE FROM automation_tree_rule_items WHERE ' . array_to_sql_or($selected_items, 'rule_id')); db_execute('DELETE FROM automation_match_rule_items WHERE ' . array_to_sql_or($selected_items, 'rule_id')); } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DUPLICATE) { /* duplicate */ for ($i=0;($i < cacti_count($selected_items));$i++) { cacti_log('form_actions duplicate: ' . $selected_items[$i], true, 'AUTOM8 TRACE', POLLER_VERBOSITY_MEDIUM); duplicate_automation_tree_rules($selected_items[$i], get_nfilter_request_var('name_format')); } } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_ENABLE) { /* enable */ for ($i=0;($i < cacti_count($selected_items));$i++) { cacti_log('form_actions enable: ' . $selected_items[$i], true, 'AUTOM8 TRACE', POLLER_VERBOSITY_MEDIUM); db_execute_prepared("UPDATE automation_tree_rules SET enabled='on' WHERE id = ?", array($selected_items[$i])); } } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DISABLE) { /* disable */ for ($i=0;($i < cacti_count($selected_items));$i++) { cacti_log('form_actions disable: ' . $selected_items[$i], true, 'AUTOM8 TRACE', POLLER_VERBOSITY_MEDIUM); db_execute_prepared("UPDATE automation_tree_rules SET enabled='' WHERE id = ?", array($selected_items[$i])); } } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_EXPORT) { /* export */ top_header(); print ' '; bottom_footer(); exit; } } header('Location: automation_tree_rules.php'); exit; } /* setup some variables */ $automation_tree_rules_list = ''; $i = 0; /* loop through each of the graphs selected on the previous page and get more info about them */ foreach ($_POST as $var => $val) { if (preg_match('/^chk_([0-9]+)$/', $var, $matches)) { /* ================= input validation ================= */ input_validate_input_number($matches[1], 'chk[1]'); /* ==================================================== */ $automation_tree_rules_list .= '
  • ' . html_escape(db_fetch_cell_prepared('SELECT name FROM automation_tree_rules WHERE id = ?', array($matches[1]))) . '
  • '; $automation_tree_rules_array[] = $matches[1]; } } top_header(); form_start('automation_tree_rules.php', 'automation_tree_rules_action'); html_start_box($automation_tree_rules_actions[get_nfilter_request_var('drp_action')], '60%', '', '3', 'center', ''); if (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DELETE) { /* DELETE */ print "

    " . __('Click \'Continue\' to delete the following Rule(s).') . "

    \n"; } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DUPLICATE) { /* duplicate */ print "

    " . __('Click \'Continue\' to duplicate the following Rule(s). You can optionally change the title format for the new Rules.') . "

    " . __('Title Format') . '
    '; form_text_box('name_format', '<' . __('rule_name') . '> (1)', '', '255', '30', 'text'); print "

    \n"; } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_ENABLE) { /* enable */ print "

    " . __('Click \'Continue\' to enable the following Rule(s).') . "

    " . __('Make sure, that those rules have successfully been tested!') . "

    \n"; } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_DISABLE) { /* disable */ print "

    " . __('Click \'Continue\' to disable the following Rule(s).') . "

    \n"; } elseif (get_nfilter_request_var('drp_action') == AUTOMATION_ACTION_TREE_EXPORT) { /* export */ print "

    " . __('Click \'Continue\' to Export the following Rule(s).') . "

    \n"; } if (!isset($automation_tree_rules_array)) { raise_message(40); header('Location: automation_tree_rules.php'); exit; } else { $save_html = " "; } print " $save_html \n"; html_end_box(); form_end(); bottom_footer(); } function automation_tree_rules_change_leaf() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('leaf_type'); /* ==================================================== */ automation_change_tree_rule_leaf_type(get_request_var('leaf_type'), get_request_var('id')); } /* -------------------------- Rule Item Functions -------------------------- */ function automation_tree_rules_item_movedown() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); get_filter_request_var('rule_type'); /* ==================================================== */ if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_MATCH) { move_item_down('automation_match_rule_items', get_request_var('item_id'), 'rule_id=' . get_request_var('id') . ' AND rule_type=' . get_request_var('rule_type')); } elseif (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { move_item_down('automation_tree_rule_items', get_request_var('item_id'), 'rule_id=' . get_request_var('id')); } } function automation_tree_rules_item_moveup() { /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); get_filter_request_var('rule_type'); /* ==================================================== */ if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_MATCH) { move_item_up('automation_match_rule_items', get_request_var('item_id'), 'rule_id=' . get_request_var('id') . ' AND rule_type=' . get_request_var('rule_type')); } elseif (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { move_item_up('automation_tree_rule_items', get_request_var('item_id'), 'rule_id=' . get_request_var('id')); } } function automation_tree_rules_item_remove() { /* ================= input validation ================= */ get_filter_request_var('item_id'); get_filter_request_var('rule_type'); /* ==================================================== */ if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_MATCH) { db_execute_prepared('DELETE FROM automation_match_rule_items WHERE id = ?', array(get_request_var('item_id'))); } elseif (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { db_execute_prepared('DELETE FROM automation_tree_rule_items WHERE id = ?', array(get_request_var('item_id'))); } } function automation_tree_rules_item_edit() { global $config; /* ================= input validation ================= */ get_filter_request_var('id'); get_filter_request_var('item_id'); get_filter_request_var('rule_type'); get_filter_request_var('show_trees'); /* ==================================================== */ /* handle show_trees mode */ if (isset_request_var('show_trees')) { if (get_request_var('show_trees') == '0') { kill_session_var('automation_tree_rules_show_trees'); } elseif (get_request_var('show_trees') == '1') { $_SESSION['automation_tree_rules_show_trees'] = true; } } if (!isempty_request_var('rule_type') && !isempty_request_var('item_id')) { if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { $item = db_fetch_row_prepared('SELECT * FROM automation_tree_rule_items WHERE id = ?', array(get_request_var('item_id'))); if ($item['field'] != AUTOMATION_TREE_ITEM_TYPE_STRING) { ?>
    *'>

    '; /* display list of matching trees */ if (!isempty_request_var('rule_type') && !isempty_request_var('item_id')) { if (get_request_var('rule_type') == AUTOMATION_RULE_TYPE_TREE_ACTION) { if (isset($_SESSION['automation_tree_rules_show_trees']) && ($item['field'] != AUTOMATION_TREE_ITEM_TYPE_STRING)) { if ($_SESSION['automation_tree_rules_show_trees']) { display_matching_trees(get_request_var('id'), AUTOMATION_RULE_TYPE_TREE_ACTION, $item, 'automation_tree_rules.php?action=item_edit&id=' . get_request_var('id') . '&item_id=' . get_request_var('item_id') . '&rule_type=' . get_request_var('rule_type')); } } } } //Now we need some javascript to make it dynamic ?>
    *'>
    array('no_form_tag' => true), 'fields' => inject_form_variables($form_array, (isset($rule) ? $rule : array())) )); form_hidden_box('id', (isset($rule['id']) ? $rule['id'] : '0'), ''); form_hidden_box('item_id', (isset($rule['item_id']) ? $rule['item_id'] : '0'), ''); form_hidden_box('save_component_automation_tree_rule', '1', ''); html_end_box(true, true); /* * display the rule items ------------------------------------------------------------------------------- */ if (!empty($rule['id'])) { # display tree rules for host match display_match_rule_items(__('Object Selection Criteria'), $rule['id'], AUTOMATION_RULE_TYPE_TREE_MATCH, 'automation_tree_rules.php'); # fetch tree action rules display_tree_rule_items(__('Tree Creation Criteria'), $rule['id'], $rule['leaf_type'], AUTOMATION_RULE_TYPE_TREE_ACTION, 'automation_tree_rules.php'); } form_save_button('automation_tree_rules.php', 'return'); print '
    '; if (!empty($rule['id'])) { /* display list of matching hosts */ if (isset($_SESSION['automation_tree_rules_show_objects'])) { if ($_SESSION['automation_tree_rules_show_objects']) { if ($rule['leaf_type'] == TREE_ITEM_TYPE_HOST) { display_matching_hosts($rule, AUTOMATION_RULE_TYPE_TREE_MATCH, 'automation_tree_rules.php?action=edit&id=' . get_request_var('id')); } elseif ($rule['leaf_type'] == TREE_ITEM_TYPE_GRAPH) { display_matching_graphs($rule, AUTOMATION_RULE_TYPE_TREE_MATCH, 'automation_tree_rules.php?action=edit&id=' . get_request_var('id')); } } } } ?> array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '-1' ), 'page' => array( 'filter' => FILTER_VALIDATE_INT, 'default' => '1' ), 'filter' => array( 'filter' => FILTER_DEFAULT, 'pageset' => true, 'default' => '' ), 'sort_column' => array( 'filter' => FILTER_CALLBACK, 'default' => 'name', 'options' => array('options' => 'sanitize_search_string') ), 'sort_direction' => array( 'filter' => FILTER_CALLBACK, 'default' => 'ASC', 'options' => array('options' => 'sanitize_search_string') ), 'status' => array( 'filter' => FILTER_VALIDATE_INT, 'pageset' => true, 'default' => '' ) ); validate_store_request_vars($filters, 'sess_autom_tr'); /* ================= input validation ================= */ if (get_request_var('rows') == -1) { $rows = read_config_option('num_rows_table'); } else { $rows = get_request_var('rows'); } html_start_box(__('Tree Rules'), '100%', '', '3', 'center', 'automation_tree_rules.php?action=edit'); ?>
    '> '> '> '>
    array('display' => __('Rule Name'), 'align' => 'left', 'sort' => 'ASC'), 'id' => array('display' => __('ID'), 'align' => 'right', 'sort' => 'ASC'), 'tree_name' => array('display' => __('Hook into Tree'), 'align' => 'left', 'sort' => 'ASC'), 'subtree_name' => array('display' => __('At Subtree'), 'align' => 'left', 'sort' => 'ASC'), 'leaf_type' => array('display' => __('This Type'), 'align' => 'left', 'sort' => 'ASC'), 'host_grouping_type' => array('display' => __('Using Grouping'), 'align' => 'left', 'sort' => 'ASC'), 'enabled' => array('display' => __('Enabled'), 'align' => 'right', 'sort' => 'ASC') ); html_header_sort_checkbox($display_text, get_request_var('sort_column'), get_request_var('sort_direction'), false); if (cacti_sizeof($automation_tree_rules)) { foreach ($automation_tree_rules as $automation_tree_rule) { $tree_item_type_name = ((empty($automation_tree_rule['leaf_type'])) ? '' . __('None') . '' : $automation_tree_item_types[$automation_tree_rule['leaf_type']]); $subtree_name = ((empty($automation_tree_rule['subtree_name'])) ? '' . __('ROOT') . '' : html_escape($automation_tree_rule['subtree_name'])); $tree_host_grouping_type = ((empty($host_group_types[$automation_tree_rule['host_grouping_type']])) ? '' : $host_group_types[$automation_tree_rule['host_grouping_type']]); form_alternate_row('line' . $automation_tree_rule['id'], true); form_selectable_cell(filter_value($automation_tree_rule['name'], get_request_var('filter'), 'automation_tree_rules.php?action=edit&id=' . $automation_tree_rule['id'] . '&page=1'), $automation_tree_rule['id']); form_selectable_cell($automation_tree_rule['id'], $automation_tree_rule['id'], '', 'text-align:right'); form_selectable_ecell($automation_tree_rule['tree_name'], $automation_tree_rule['id']); form_selectable_cell($subtree_name, $automation_tree_rule['id']); form_selectable_cell($tree_item_type_name, $automation_tree_rule['id']); form_selectable_cell($tree_host_grouping_type, $automation_tree_rule['id']); form_selectable_cell($automation_tree_rule['enabled'] ? __('Enabled'):__('Disabled'), $automation_tree_rule['id'], '', 'text-align:right'); form_checkbox_cell($automation_tree_rule['name'], $automation_tree_rule['id']); form_end_row(); } } else { print "" . __('No Tree Rules Found') . "\n"; } html_end_box(false); if (cacti_sizeof($automation_tree_rules)) { print $nav; } /* draw the dropdown containing a list of available actions for this form */ draw_actions_dropdown($automation_tree_rules_actions); form_end(); }