mirror of
https://github.com/Cacti/cacti.git
synced 2026-11-08 21:16:17 +09:00
2) Move RRDTool Default Font to Visual (most people using 1.3+) 3) Fix Placeholers, set on a few fields 4) Have Host Pinged as Callback when Editing Host 5) Fix User Menu Visibility Glitch 6) Fix issue where FTP Options would not appear under Settings Export 7) SNMP Options before Availability Options when editing host git-svn-id: svn+ssh://repo.cacti.net/var/data/svnroot/cacti/cacti/branches/0.8.8@7643 860744bd-22fc-0310-8c96-e9fe5004b5ca
910 lines
34 KiB
PHP
910 lines
34 KiB
PHP
<?php
|
|
/*
|
|
+-------------------------------------------------------------------------+
|
|
| Copyright (C) 2004-2014 The Cacti Group |
|
|
| |
|
|
| This program is free software; you can redistribute it and/or |
|
|
| modify it under the terms of the GNU General Public License |
|
|
| as published by the Free Software Foundation; either version 2 |
|
|
| of the License, or (at your option) any later version. |
|
|
| |
|
|
| This program is distributed in the hope that it will be useful, |
|
|
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
| GNU General Public License for more details. |
|
|
+-------------------------------------------------------------------------+
|
|
| Cacti: The Complete RRDTool-based Graphing Solution |
|
|
+-------------------------------------------------------------------------+
|
|
| This code is designed, written, and maintained by the Cacti Group. See |
|
|
| about.php and/or the AUTHORS file for specific developer information. |
|
|
+-------------------------------------------------------------------------+
|
|
| http://www.cacti.net/ |
|
|
+-------------------------------------------------------------------------+
|
|
*/
|
|
|
|
/*
|
|
* Standard HTML form elements
|
|
*/
|
|
|
|
/* draw_edit_form - draws an html edit form
|
|
@arg $array - an array that contains all of the information needed to draw
|
|
the html form. see the arrays contained in include/global_settings.php
|
|
for the extact syntax of this array */
|
|
function draw_edit_form($array) {
|
|
if (sizeof($array) > 0) {
|
|
while (list($top_branch, $top_children) = each($array)) {
|
|
if ($top_branch == "config") {
|
|
$config_array = $top_children;
|
|
}elseif ($top_branch == "fields") {
|
|
$fields_array = $top_children;
|
|
}
|
|
}
|
|
}
|
|
|
|
$i = 0;
|
|
if (sizeof($fields_array) > 0) {
|
|
while (list($field_name, $field_array) = each($fields_array)) {
|
|
if ($i == 0) {
|
|
if (!isset($config_array["no_form_tag"])) {
|
|
print "<tr style='display:none;'><td><form method='post' autocomplete='off' action='" . ((isset($config_array["post_to"])) ? $config_array["post_to"] : basename($_SERVER["PHP_SELF"])) . "'" . ((isset($config_array["form_name"])) ? " name='" . $config_array["form_name"] . "'" : "") . ((isset($config_array["enctype"])) ? " enctype='" . $config_array["enctype"] . "'" : "") . "></td></tr>\n";
|
|
}
|
|
}
|
|
|
|
if ($field_array["method"] == "hidden") {
|
|
form_hidden_box($field_name, $field_array["value"], ((isset($field_array["default"])) ? $field_array["default"] : ""));
|
|
}elseif ($field_array["method"] == "hidden_zero") {
|
|
form_hidden_box($field_name, $field_array["value"], "0");
|
|
}elseif ($field_array["method"] == "spacer") {
|
|
if (isset($field_array['collapsible']) && $field_array['collapsible'] == 'true') {
|
|
$collapsible = true;
|
|
}else{
|
|
$collapsible = false;
|
|
}
|
|
|
|
print "<tr class='spacer tableHeader" . ($collapsible ? ' collapsible':'') . "' id='row_$field_name'><td colspan='2' style='cursor:pointer;' class='tableSubHeaderColumn'>" . $field_array["friendly_name"] . ($collapsible ? "<div style='float:right;padding-right:4px;'><i class='fa fa-angle-double-up'></i></div>":"") . "</td></tr>\n";
|
|
}else{
|
|
if (isset($config_array["force_row_color"])) {
|
|
print "<tr class='even-alternate'>";
|
|
}else{
|
|
form_alternate_row('row_' . $field_name);
|
|
}
|
|
|
|
print "<td width='" . ((isset($config_array["left_column_width"])) ? $config_array["left_column_width"] : "50%") . "'>\n<font class='textEditTitle'>" . $field_array["friendly_name"] . "</font><br>\n";
|
|
|
|
if (isset($field_array["sub_checkbox"])) {
|
|
form_checkbox($field_array["sub_checkbox"]["name"],
|
|
$field_array["sub_checkbox"]["value"],
|
|
$field_array["sub_checkbox"]["friendly_name"],
|
|
((isset($field_array["sub_checkbox"]["default"])) ? $field_array["sub_checkbox"]["default"] : ""),
|
|
((isset($field_array["sub_checkbox"]["form_id"])) ? $field_array["sub_checkbox"]["form_id"] : ""),
|
|
((isset($field_array["sub_checkbox"]["class"])) ? $field_array["sub_checkbox"]["class"] : ""),
|
|
((isset($field_array["sub_checkbox"]["on_change"])) ? $field_array["sub_checkbox"]["on_change"] : ""));
|
|
}
|
|
|
|
print ((isset($field_array["description"])) ? $field_array["description"] : "") . "</td>\n";
|
|
|
|
print "<td>";
|
|
|
|
draw_edit_control($field_name, $field_array);
|
|
|
|
print "</td>\n</tr>\n";
|
|
}
|
|
|
|
$i++;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* draw_edit_control - draws a single control to be used on an html edit form
|
|
@arg $field_name - the name of the control
|
|
@arg $field_array - an array containing data for this control. see include/global_form.php
|
|
for more specific syntax */
|
|
function draw_edit_control($field_name, &$field_array) {
|
|
switch ($field_array["method"]) {
|
|
case 'textbox':
|
|
form_text_box(
|
|
$field_name,
|
|
$field_array["value"],
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
$field_array["max_length"],
|
|
((isset($field_array["size"])) ? $field_array["size"] : "40"),
|
|
"text",
|
|
((isset($field_array["form_id"])) ? $field_array["form_id"] : ""),
|
|
((isset($field_array["placeholder"])) ? $field_array["placeholder"] : '')
|
|
);
|
|
|
|
break;
|
|
case 'filepath':
|
|
form_filepath_box($field_name,
|
|
$field_array["value"],
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
$field_array["max_length"],
|
|
((isset($field_array["size"])) ? $field_array["size"] : "40"),
|
|
"text",
|
|
((isset($field_array["form_id"])) ? $field_array["form_id"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'dirpath':
|
|
form_dirpath_box(
|
|
$field_name,
|
|
$field_array["value"],
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
$field_array["max_length"],
|
|
((isset($field_array["size"])) ? $field_array["size"] : "40"),
|
|
"text",
|
|
((isset($field_array["form_id"])) ? $field_array["form_id"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'textbox_password':
|
|
form_text_box(
|
|
$field_name,
|
|
$field_array["value"],
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
$field_array["max_length"],
|
|
((isset($field_array["size"])) ? $field_array["size"] : "40"),
|
|
"password",
|
|
((isset($field_array["form_id"])) ? $field_array["form_id"] : ""),
|
|
'********'
|
|
);
|
|
|
|
print "<br>";
|
|
|
|
form_text_box(
|
|
$field_name . "_confirm",
|
|
$field_array["value"],
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
$field_array["max_length"],
|
|
((isset($field_array["size"])) ? $field_array["size"] : "40"),
|
|
"password",
|
|
((isset($field_array["form_id"])) ? $field_array["form_id"] : ""),
|
|
'********'
|
|
);
|
|
|
|
break;
|
|
case 'textarea':
|
|
form_text_area(
|
|
$field_name,
|
|
$field_array["value"],
|
|
$field_array["textarea_rows"],
|
|
$field_array["textarea_cols"],
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
((isset($field_array["class"])) ? $field_array["class"] : ""),
|
|
((isset($field_array["on_change"])) ? $field_array["on_change"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'drop_array':
|
|
form_dropdown(
|
|
$field_name,
|
|
$field_array["array"],
|
|
"",
|
|
"",
|
|
$field_array["value"],
|
|
((isset($field_array["none_value"])) ? $field_array["none_value"] : ""),
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
((isset($field_array["class"])) ? $field_array["class"] : ""),
|
|
((isset($field_array["on_change"])) ? $field_array["on_change"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'drop_sql':
|
|
form_dropdown(
|
|
$field_name,
|
|
db_fetch_assoc($field_array["sql"]),
|
|
"name",
|
|
"id",
|
|
$field_array["value"],
|
|
((isset($field_array["none_value"])) ? $field_array["none_value"] : ""),
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
((isset($field_array["class"])) ? $field_array["class"] : ""),
|
|
((isset($field_array["on_change"])) ? $field_array["on_change"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'drop_multi':
|
|
form_multi_dropdown(
|
|
$field_name,
|
|
$field_array["array"],
|
|
db_fetch_assoc($field_array["sql"]),
|
|
"id",
|
|
((isset($field_array["class"])) ? $field_array["class"] : ""),
|
|
((isset($field_array["on_change"])) ? $field_array["on_change"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'drop_multi_rra':
|
|
form_multi_dropdown(
|
|
$field_name,
|
|
array_rekey(db_fetch_assoc("SELECT id,name FROM rra ORDER BY timespan"), "id", "name"),
|
|
(empty($field_array["form_id"]) ? db_fetch_assoc($field_array["sql_all"]) : db_fetch_assoc($field_array["sql"])),
|
|
"id",
|
|
((isset($field_array["class"])) ? $field_array["class"] : ""),
|
|
((isset($field_array["on_change"])) ? $field_array["on_change"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'drop_tree':
|
|
grow_dropdown_tree(
|
|
$field_array["tree_id"],
|
|
'0',
|
|
$field_name,
|
|
$field_array["value"]
|
|
);
|
|
|
|
break;
|
|
case 'drop_color':
|
|
form_color_dropdown(
|
|
$field_name,
|
|
$field_array["value"],
|
|
"None",
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
((isset($field_array["class"])) ? $field_array["class"] : ""),
|
|
((isset($field_array["on_change"])) ? $field_array["on_change"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'checkbox':
|
|
form_checkbox(
|
|
$field_name,
|
|
$field_array["value"],
|
|
$field_array["friendly_name"],
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
((isset($field_array["form_id"])) ? $field_array["form_id"] : ""),
|
|
((isset($field_array["class"])) ? $field_array["class"] : ""),
|
|
((isset($field_array["on_change"])) ? $field_array["on_change"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'checkbox_group':
|
|
while (list($check_name, $check_array) = each($field_array["items"])) {
|
|
form_checkbox(
|
|
$check_name,
|
|
$check_array["value"],
|
|
$check_array["friendly_name"],
|
|
((isset($check_array["default"])) ? $check_array["default"] : ""),
|
|
((isset($check_array["form_id"])) ? $check_array["form_id"] : ""),
|
|
((isset($field_array["class"])) ? $field_array["class"] : ""),
|
|
((isset($check_array["on_change"])) ? $check_array["on_change"] : (((isset($field_array["on_change"])) ? $field_array["on_change"] : "")))
|
|
);
|
|
|
|
print "<br>";
|
|
}
|
|
|
|
break;
|
|
case 'radio':
|
|
while (list($radio_index, $radio_array) = each($field_array["items"])) {
|
|
form_radio_button(
|
|
$field_name,
|
|
$field_array["value"],
|
|
$radio_array["radio_value"],
|
|
$radio_array["radio_caption"],
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
((isset($field_array["class"])) ? $field_array["class"] : ""),
|
|
((isset($field_array["on_change"])) ? $field_array["on_change"] : "")
|
|
);
|
|
|
|
print "<br>";
|
|
}
|
|
|
|
break;
|
|
case 'custom':
|
|
print $field_array["value"];
|
|
|
|
break;
|
|
case 'template_checkbox':
|
|
print "<em>" . html_boolean_friendly($field_array["value"]) . "</em>";
|
|
|
|
form_hidden_box($field_name, $field_array["value"], "");
|
|
|
|
break;
|
|
case 'template_drop_array':
|
|
print "<em>" . $field_array["array"]{$field_array["value"]} . "</em>";
|
|
|
|
form_hidden_box($field_name, $field_array["value"], "");
|
|
|
|
break;
|
|
case 'template_drop_multi_rra':
|
|
$items = db_fetch_assoc($field_array["sql_print"]);
|
|
|
|
if (sizeof($items) > 0) {
|
|
foreach ($items as $item) {
|
|
print htmlspecialchars($item["name"],ENT_QUOTES) . "<br>";
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 'font':
|
|
form_font_box(
|
|
$field_name,
|
|
$field_array["value"],
|
|
((isset($field_array["default"])) ? $field_array["default"] : ""),
|
|
$field_array["max_length"],
|
|
((isset($field_array["size"])) ? $field_array["size"] : "40"), "text",
|
|
((isset($field_array["form_id"])) ? $field_array["form_id"] : ""),
|
|
((isset($field_array["placeholder"])) ? $field_array["placeholder"] : "")
|
|
);
|
|
|
|
break;
|
|
case 'file':
|
|
form_file($field_name,
|
|
((isset($field_array["size"])) ? $field_array["size"] : "40"));
|
|
|
|
break;
|
|
default:
|
|
print "<em>" . htmlspecialchars($field_array["value"],ENT_QUOTES) . "</em>";
|
|
|
|
form_hidden_box($field_name, $field_array["value"], "");
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* form_file - draws a standard html file input element
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_size - the size (width) of the textbox */
|
|
function form_file($form_name, $form_size = 30) {
|
|
|
|
print "<input type='file'";
|
|
|
|
if (isset($_SESSION["sess_error_fields"])) {
|
|
if (!empty($_SESSION["sess_error_fields"][$form_name])) {
|
|
print "class='txtErrorTextBox'";
|
|
unset($_SESSION["sess_error_fields"][$form_name]);
|
|
}
|
|
}
|
|
|
|
print " id='$form_name' name='$form_name' size='$form_size'>";
|
|
}
|
|
|
|
/* form_filepath_box - draws a standard html textbox and provides status of a files existence
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_previous_value - the current value of this form element
|
|
@arg $form_default_value - the value of this form element to use if there is
|
|
no current value available
|
|
@arg $form_max_length - the maximum number of characters that can be entered
|
|
into this textbox
|
|
@arg $form_size - the size (width) of the textbox
|
|
@arg $type - the type of textbox, either 'text' or 'password'
|
|
@arg $current_id - used to determine if a current value for this form element
|
|
exists or not. a $current_id of '0' indicates that no current value exists,
|
|
a non-zero value indicates that a current value does exist */
|
|
function form_filepath_box($form_name, $form_previous_value, $form_default_value, $form_max_length, $form_size = 30, $type = "text", $current_id = 0) {
|
|
if (($form_previous_value == "") && (empty($current_id))) {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
print "<input type='$type'";
|
|
|
|
if (isset($_SESSION["sess_error_fields"])) {
|
|
if (!empty($_SESSION["sess_error_fields"][$form_name])) {
|
|
print "class='txtErrorTextBox'";
|
|
unset($_SESSION["sess_error_fields"][$form_name]);
|
|
}
|
|
}
|
|
|
|
if (isset($_SESSION["sess_field_values"])) {
|
|
if (!empty($_SESSION["sess_field_values"][$form_name])) {
|
|
$form_previous_value = $_SESSION["sess_field_values"][$form_name];
|
|
}
|
|
}
|
|
|
|
if (is_file(trim($form_previous_value))) {
|
|
$extra_data = "<span style='color:green'><br>[OK: FILE FOUND]</span>";
|
|
}else if (is_dir(trim($form_previous_value))) {
|
|
$extra_data = "<span style='color:red'><br>[ERROR: IS DIR]</span>";
|
|
}else if (strlen($form_previous_value) == 0) {
|
|
$extra_data = "";
|
|
}else{
|
|
$extra_data = "<span style='color:red'><br>[ERROR: FILE NOT FOUND]</span>";
|
|
}
|
|
|
|
print " id='$form_name' placeholder='Enter a valid file path' name='$form_name' size='$form_size'" . (!empty($form_max_length) ? " maxlength='$form_max_length'" : "") . " value='" . htmlspecialchars($form_previous_value, ENT_QUOTES) . "'>" . $extra_data;
|
|
}
|
|
|
|
/* form_dirpath_box - draws a standard html textbox and provides status of a directories existence
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_previous_value - the current value of this form element
|
|
@arg $form_default_value - the value of this form element to use if there is
|
|
no current value available
|
|
@arg $form_max_length - the maximum number of characters that can be entered
|
|
into this textbox
|
|
@arg $form_size - the size (width) of the textbox
|
|
@arg $type - the type of textbox, either 'text' or 'password'
|
|
@arg $current_id - used to determine if a current value for this form element
|
|
exists or not. a $current_id of '0' indicates that no current value exists,
|
|
a non-zero value indicates that a current value does exist */
|
|
function form_dirpath_box($form_name, $form_previous_value, $form_default_value, $form_max_length, $form_size = 30, $type = "text", $current_id = 0) {
|
|
if (($form_previous_value == "") && (empty($current_id))) {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
print "<input type='$type'";
|
|
|
|
if (isset($_SESSION["sess_error_fields"])) {
|
|
if (!empty($_SESSION["sess_error_fields"][$form_name])) {
|
|
print "class='txtErrorTextBox'";
|
|
unset($_SESSION["sess_error_fields"][$form_name]);
|
|
}
|
|
}
|
|
|
|
if (isset($_SESSION["sess_field_values"])) {
|
|
if (!empty($_SESSION["sess_field_values"][$form_name])) {
|
|
$form_previous_value = $_SESSION["sess_field_values"][$form_name];
|
|
}
|
|
}
|
|
|
|
if (is_dir($form_previous_value)) {
|
|
$extra_data = "<span style='color:green'><br>[OK: DIR FOUND]";
|
|
}else if (is_file($form_previous_value)) {
|
|
$extra_data = "<span style='color:red'><br>[ERROR: IS FILE]";
|
|
}else if (strlen($form_previous_value) == 0) {
|
|
$extra_data = "";
|
|
}else{
|
|
$extra_data = "<span style='color:red'><br>[ERROR: DIR NOT FOUND]";
|
|
}
|
|
|
|
print " id='$form_name' name='$form_name' placeholder='Enter a valid directory path' size='$form_size'" . (!empty($form_max_length) ? " maxlength='$form_max_length'" : "") . " value='" . htmlspecialchars($form_previous_value, ENT_QUOTES) . "'>" . $extra_data;
|
|
}
|
|
|
|
/* form_text_box - draws a standard html textbox
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_previous_value - the current value of this form element
|
|
@arg $form_default_value - the value of this form element to use if there is
|
|
no current value available
|
|
@arg $form_max_length - the maximum number of characters that can be entered
|
|
into this textbox
|
|
@arg $form_size - the size (width) of the textbox
|
|
@arg $type - the type of textbox, either 'text' or 'password'
|
|
@arg $current_id - used to determine if a current value for this form element
|
|
exists or not. a $current_id of '0' indicates that no current value exists,
|
|
a non-zero value indicates that a current value does exist */
|
|
function form_text_box($form_name, $form_previous_value, $form_default_value, $form_max_length, $form_size = 30, $type = "text", $current_id = 0, $placeholder = '') {
|
|
if (($form_previous_value == "") && (empty($current_id))) {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
print "<input type='$type'";
|
|
|
|
if (isset($_SESSION["sess_error_fields"])) {
|
|
if (!empty($_SESSION["sess_error_fields"][$form_name])) {
|
|
print "class='txtErrorTextBox'";
|
|
unset($_SESSION["sess_error_fields"][$form_name]);
|
|
}
|
|
}
|
|
|
|
if (isset($_SESSION["sess_field_values"])) {
|
|
if (!empty($_SESSION["sess_field_values"][$form_name])) {
|
|
$form_previous_value = $_SESSION["sess_field_values"][$form_name];
|
|
}
|
|
}
|
|
|
|
print " id='$form_name' autocomplete='off' " . ($placeholder != '' ? "placeholder='$placeholder'":"") . " name='$form_name' size='$form_size'" . (!empty($form_max_length) ? " maxlength='$form_max_length'" : "") . " value='" . htmlspecialchars($form_previous_value, ENT_QUOTES) . "'>\n";
|
|
}
|
|
|
|
/* form_hidden_box - draws a standard html hidden element
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_previous_value - the current value of this form element
|
|
@arg $form_default_value - the value of this form element to use if there is
|
|
no current value available */
|
|
function form_hidden_box($form_name, $form_previous_value, $form_default_value) {
|
|
if ($form_previous_value == "") {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
print "<input style='height:0px;' type='hidden' id='$form_name' name='$form_name' value='" . htmlspecialchars($form_previous_value, ENT_QUOTES) . "'>\n";
|
|
}
|
|
|
|
/* form_dropdown - draws a standard html dropdown box
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_data - an array containing data for this dropdown. it can be formatted
|
|
in one of two ways:
|
|
$array["id"] = "value";
|
|
-- or --
|
|
$array[0]["id"] = 43;
|
|
$array[0]["name"] = "Red";
|
|
@arg $column_display - used to indentify the key to be used for display data. this
|
|
is only applicable if the array is formatted using the second method above
|
|
@arg $column_id - used to indentify the key to be used for id data. this
|
|
is only applicable if the array is formatted using the second method above
|
|
@arg $form_previous_value - the current value of this form element
|
|
@arg $form_none_entry - the name to use for a default 'none' element in the dropdown
|
|
@arg $form_default_value - the value of this form element to use if there is
|
|
no current value available
|
|
@arg $css_class - any css that needs to be applied to this form element
|
|
@arg $on_change - onChange modifier */
|
|
function form_dropdown($form_name, $form_data, $column_display, $column_id, $form_previous_value, $form_none_entry, $form_default_value, $class = "", $on_change = "") {
|
|
if ($form_previous_value == "") {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
if (isset($_SESSION["sess_error_fields"])) {
|
|
if (!empty($_SESSION["sess_error_fields"][$form_name])) {
|
|
$class .= (strlen($class) ? " ":"") . "txtErrorTextBox";
|
|
unset($_SESSION["sess_error_fields"][$form_name]);
|
|
}
|
|
}
|
|
|
|
if (isset($_SESSION["sess_field_values"])) {
|
|
if (!empty($_SESSION["sess_field_values"][$form_name])) {
|
|
$form_previous_value = $_SESSION["sess_field_values"][$form_name];
|
|
}
|
|
}
|
|
|
|
if (strlen($class)) {
|
|
$class = " class='$class' ";
|
|
}
|
|
|
|
if (strlen($on_change)) {
|
|
$on_change = " onChange='$on_change' ";
|
|
}
|
|
|
|
print "<select id='" . htmlspecialchars($form_name) . "' name='" . htmlspecialchars($form_name) . "'" . $class . $on_change . ">";
|
|
|
|
if (!empty($form_none_entry)) {
|
|
print "<option value='0'" . (empty($form_previous_value) ? " selected" : "") . ">$form_none_entry</option>\n";
|
|
}
|
|
|
|
html_create_list($form_data, $column_display, $column_id, htmlspecialchars($form_previous_value, ENT_QUOTES));
|
|
|
|
print "</select>\n";
|
|
}
|
|
|
|
/** form_checkbox - draws a standard html checkbox
|
|
@param string $form_name - the name of this form element
|
|
@param string $form_previous_value - the current value of this form element
|
|
@param string $form_caption - the text to display to the right of the checkbox
|
|
@param string $form_default_value - the value of this form element to use if there is
|
|
no current value available
|
|
@param int $current_id - used to determine if a current value for this form element
|
|
exists or not. a $current_id of '0' indicates that no current value exists,
|
|
a non-zero value indicates that a current value does exist
|
|
@param string $class - specify a css class
|
|
@param string $on_change - specify a javascript onchange action */
|
|
function form_checkbox($form_name, $form_previous_value, $form_caption, $form_default_value, $current_id = 0, $class = "", $on_change = "") {
|
|
if (($form_previous_value == "") && (empty($current_id))) {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
if (isset($_SESSION["sess_field_values"])) {
|
|
if (!empty($_SESSION["sess_field_values"][$form_name])) {
|
|
$form_previous_value = $_SESSION["sess_field_values"][$form_name];
|
|
}
|
|
}
|
|
|
|
if (strlen($class)) {
|
|
$class = " class='$class'";
|
|
}
|
|
|
|
if (strlen($on_change)) {
|
|
$on_change = " onChange='$on_change'";
|
|
}
|
|
|
|
if ($form_previous_value == "on") {
|
|
$checked = " checked";
|
|
}else{
|
|
$checked = "";
|
|
}
|
|
|
|
print "<input type='checkbox' id='$form_name' name='$form_name'" . $on_change . $class . $checked . ">" . ($form_caption != "" ? " <label for='$form_name'>$form_caption</label>\n":"");
|
|
}
|
|
|
|
/* form_radio_button - draws a standard html radio button
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_previous_value - the current value of this form element (selected or not)
|
|
@arg $form_current_value - the current value of this form element (element id)
|
|
@arg $form_caption - the text to display to the right of the checkbox
|
|
@arg $form_default_value - the value of this form element to use if there is
|
|
no current value available */
|
|
function form_radio_button($form_name, $form_previous_value, $form_current_value, $form_caption, $form_default_value, $class = "", $on_change = "") {
|
|
if ($form_previous_value == "") {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
if (isset($_SESSION["sess_field_values"])) {
|
|
if (!empty($_SESSION["sess_field_values"][$form_name])) {
|
|
$form_previous_value = $_SESSION["sess_field_values"][$form_name];
|
|
}
|
|
}
|
|
|
|
if (strlen($class)) {
|
|
$class = " class='$class' ";
|
|
}
|
|
|
|
if (strlen($on_change)) {
|
|
$on_change = " onChange='$on_change' ";
|
|
}
|
|
|
|
if ($form_previous_value == $form_current_value) {
|
|
$checked = " checked";
|
|
}else{
|
|
$checked = "";
|
|
}
|
|
|
|
$css_id = $form_name . "_" . $form_current_value;
|
|
|
|
print "<input type='radio' id='$css_id' name='$form_name' value='$form_current_value'" . $class . $on_change . $checked . "><label for='$css_id'>$form_caption</label>\n";
|
|
}
|
|
|
|
/* form_text_area - draws a standard html text area box
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_previous_value - the current value of this form element (selected or not)
|
|
@arg $form_rows - the number of rows in the text area box
|
|
@arg $form_columns - the number of columns in the text area box
|
|
@arg $form_default_value - the value of this form element to use if there is
|
|
no current value available */
|
|
function form_text_area($form_name, $form_previous_value, $form_rows, $form_columns, $form_default_value, $class = "", $on_change = "") {
|
|
if ($form_previous_value == "") {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
if (isset($_SESSION["sess_error_fields"])) {
|
|
if (!empty($_SESSION["sess_error_fields"][$form_name])) {
|
|
$class .= (strlen($class) ? " ":"") . "txtErrorTextBox";
|
|
unset($_SESSION["sess_error_fields"][$form_name]);
|
|
}
|
|
}
|
|
|
|
if (isset($_SESSION["sess_field_values"])) {
|
|
if (!empty($_SESSION["sess_field_values"][$form_name])) {
|
|
$form_previous_value = $_SESSION["sess_field_values"][$form_name];
|
|
}
|
|
}
|
|
|
|
if (strlen($class)) {
|
|
$class = " class='$class' ";
|
|
}
|
|
|
|
if (strlen($on_change)) {
|
|
$on_change = " onChange='$on_change' ";
|
|
}
|
|
|
|
print "<textarea cols='$form_columns' rows='$form_rows' id='$form_name' name='$form_name'" . $class . $on_change . ">" . htmlspecialchars($form_previous_value, ENT_QUOTES) . "</textarea>\n";
|
|
}
|
|
|
|
/* form_multi_dropdown - draws a standard html multiple select dropdown
|
|
@arg $form_name - the name of this form element
|
|
@arg $array_display - an array containing display values for this dropdown. it must
|
|
be formatted like:
|
|
$array[id] = display;
|
|
@arg $sql_previous_values - an array containing keys that should be marked as selected.
|
|
it must be formatted like:
|
|
$array[0][$column_id] = key
|
|
@arg $column_id - the name of the key used to reference the keys above */
|
|
function form_multi_dropdown($form_name, $array_display, $sql_previous_values, $column_id, $class = "", $on_change = "") {
|
|
|
|
if (isset($_SESSION["sess_error_fields"])) {
|
|
if (!empty($_SESSION["sess_error_fields"][$form_name])) {
|
|
$class .= (strlen($class) ? " ":"") . "txtErrorTextBox";
|
|
unset($_SESSION["sess_error_fields"][$form_name]);
|
|
}
|
|
}
|
|
|
|
if (strlen($class)) {
|
|
$class = " class='$class' ";
|
|
}
|
|
|
|
if (strlen($on_change)) {
|
|
$on_change = " onChange='$on_change' ";
|
|
}
|
|
|
|
print "<select id='$form_name' name='$form_name" . "[]'" . $class . " multiple>\n";
|
|
|
|
foreach (array_keys($array_display) as $id) {
|
|
print "<option value='" . $id . "'";
|
|
|
|
for ($i=0; ($i < count($sql_previous_values)); $i++) {
|
|
if ($sql_previous_values[$i][$column_id] == $id) {
|
|
print " selected";
|
|
}
|
|
}
|
|
|
|
print ">". htmlspecialchars($array_display[$id],ENT_QUOTES);
|
|
print "</option>\n";
|
|
}
|
|
|
|
print "</select>\n";
|
|
}
|
|
|
|
/*
|
|
* Second level form elements
|
|
*/
|
|
|
|
/* form_color_dropdown - draws a dropdown containing a list of colors that uses a bit
|
|
of css magic to make the dropdown item background color represent each color in
|
|
the list
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_previous_value - the current value of this form element
|
|
@arg $form_none_entry - the name to use for a default 'none' element in the dropdown
|
|
@arg $form_default_value - the value of this form element to use if there is
|
|
no current value available */
|
|
function form_color_dropdown($form_name, $form_previous_value, $form_none_entry, $form_default_value, $class = "", $on_change = "") {
|
|
if ($form_previous_value == "") {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
if (strlen($class)) {
|
|
$class = " class='$class' ";
|
|
}
|
|
|
|
$current_color = db_fetch_cell("SELECT hex FROM colors WHERE id=$form_previous_value");
|
|
|
|
if (strlen($on_change)) {
|
|
$on_change = " " . $on_change . ";";
|
|
}
|
|
|
|
$on_change = " onChange='this.style.backgroundColor=this.options[this.selectedIndex].style.backgroundColor;$on_change'";
|
|
|
|
$colors_list = db_fetch_assoc("SELECT id,hex FROM colors ORDER BY hex desc");
|
|
|
|
print "<select style='background-color: #$current_color;' id='$form_name' name='$form_name'" . $class . $on_change . ">\n";
|
|
|
|
if ($form_none_entry != "") {
|
|
print "<option value='0'>$form_none_entry</option>\n";
|
|
}
|
|
|
|
if (sizeof($colors_list) > 0) {
|
|
foreach ($colors_list as $color) {
|
|
print "<option style='background-color: #" . $color["hex"] . ";' value='" . $color["id"] . "'";
|
|
|
|
if ($form_previous_value == $color["id"]) {
|
|
print " selected";
|
|
}
|
|
|
|
print ">" . $color["hex"] . "</option>\n";
|
|
}
|
|
}
|
|
|
|
print "</select>\n";
|
|
}
|
|
|
|
/* form_font_box - draws a standard html textbox and provides status of a fonts existence
|
|
@arg $form_name - the name of this form element
|
|
@arg $form_previous_value - the current value of this form element
|
|
@arg $form_default_value - the value of this form element to use if there is
|
|
no current value available
|
|
@arg $form_max_length - the maximum number of characters that can be entered
|
|
into this textbox
|
|
@arg $form_size - the size (width) of the textbox
|
|
@arg $type - the type of textbox, either 'text' or 'password'
|
|
@arg $current_id - used to determine if a current value for this form element
|
|
exists or not. a $current_id of '0' indicates that no current value exists,
|
|
a non-zero value indicates that a current value does exist */
|
|
function form_font_box($form_name, $form_previous_value, $form_default_value, $form_max_length, $form_size = 30, $type = "text", $current_id = 0, $placeholder = '') {
|
|
global $config;
|
|
|
|
if (($form_previous_value == "") && (empty($current_id))) {
|
|
$form_previous_value = $form_default_value;
|
|
}
|
|
|
|
print "<input type='$type'";
|
|
|
|
if (isset($_SESSION["sess_error_fields"])) {
|
|
if (!empty($_SESSION["sess_error_fields"][$form_name])) {
|
|
print "class='txtErrorTextBox'";
|
|
unset($_SESSION["sess_error_fields"][$form_name]);
|
|
}
|
|
}
|
|
|
|
if (isset($_SESSION["sess_field_values"])) {
|
|
if (!empty($_SESSION["sess_field_values"][$form_name])) {
|
|
$form_previous_value = $_SESSION["sess_field_values"][$form_name];
|
|
}
|
|
}
|
|
|
|
if (strlen($form_previous_value) == 0) { # no data: defaults are used; everythings fine
|
|
$extra_data = "";
|
|
} else {
|
|
|
|
/* do some simple checks */
|
|
if (read_config_option("rrdtool_version") == "rrd-1.2.x") { # rrdtool 1.2 uses font files
|
|
if (is_file($form_previous_value)) {
|
|
$extra_data = "<span style='color:green'><br>[" . "OK: FILE FOUND" . "]</span>";
|
|
}else if (is_dir($form_previous_value)) {
|
|
$extra_data = "<span style='color:red'><br>[" . "ERROR: IS DIR" . "]</span>";
|
|
}else{
|
|
$extra_data = "<span style='color:red'><br>[" . "ERROR: FILE NOT FOUND" . "]</span>";
|
|
}
|
|
} else { # rrdtool 1.3+ use fontconfig
|
|
/* verifying all possible pango font params is too complex to be tested here
|
|
* so we only escape the font
|
|
*/
|
|
$extra_data = "<span style='color:green'><br>[" . "NO FONT VERIFICATION POSSIBLE" . "]</span>";
|
|
}
|
|
}
|
|
|
|
print " id='$form_name' " . ($placeholder != '' ? "placeholder='" . htmlspecialchars($placeholder) . "'":'') . " name='$form_name' size='$form_size'" . (!empty($form_max_length) ? " maxlength='$form_max_length'" : "") . " value='" . htmlspecialchars($form_previous_value, ENT_QUOTES) . "'>" . $extra_data;
|
|
}
|
|
|
|
/* form_confirm - draws a table presenting the user with some choice and allowing
|
|
them to either proceed (delete) or cancel
|
|
@arg $body_text - the text to prompt the user with on this form
|
|
@arg $cancel_url - the url to go to when the user clicks 'cancel'
|
|
@arg $action_url - the url to go to when the user clicks 'delete' */
|
|
function form_confirm($title_text, $body_text, $cancel_url, $action_url) { ?>
|
|
<br>
|
|
<table align="center" cellpadding="1" cellspacing="0" border="0" width="60%">
|
|
<tr>
|
|
<td class='even' colspan="10">
|
|
<table width="100%" cellpadding="3" cellspacing="0">
|
|
<tr class='cactiTableTitle'>
|
|
<td class="textHeaderDark"><strong><?php print $title_text;?></strong></td>
|
|
</tr>
|
|
<?php
|
|
form_area($body_text);
|
|
form_confirm_buttons($action_url, $cancel_url);
|
|
?>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<?php }
|
|
|
|
/* form_confirm_buttons - draws a cancel and delete button suitable for display
|
|
on a confirmation form
|
|
@arg $cancel_url - the url to go to when the user clicks 'cancel'
|
|
@arg $action_url - the url to go to when the user clicks 'delete' */
|
|
function form_confirm_buttons($action_url, $cancel_url) {
|
|
global $config;
|
|
?>
|
|
<tr>
|
|
<td align='right'>
|
|
<input type='button' onClick='cactiReturnTo("<?php print $config['url_path'] . $cancel_url;?>")' value='Cancel'>
|
|
<input type='button' onClick='cactiReturnTo("<?php print $config['url_path'] . $action_url;?>&confirm=true")' value='Delete'>
|
|
</td>
|
|
</tr>
|
|
<?php }
|
|
|
|
/* form_save_button - draws a (save|create) and cancel button at the bottom of
|
|
an html edit form
|
|
@arg $cancel_url - the url to go to when the user clicks 'cancel'
|
|
@arg $force_type - if specified, will force the 'action' button to be either
|
|
'save' or 'create'. otherwise this field should be properly auto-detected */
|
|
function form_save_button($cancel_url, $force_type = "", $key_field = "id") {
|
|
$calt = "Cancel";
|
|
|
|
if (empty($force_type) || $force_type == "return") {
|
|
if (empty($_GET[$key_field])) {
|
|
$alt = "Create";
|
|
}else{
|
|
$alt = "Save";
|
|
|
|
if (strlen($force_type)) {
|
|
$calt = "Return";
|
|
}else{
|
|
$calt = "Cancel";
|
|
}
|
|
}
|
|
|
|
}elseif ($force_type == "save") {
|
|
$alt = "Save";
|
|
}elseif ($force_type == "create") {
|
|
$alt = "Create";
|
|
}elseif ($force_type == "import") {
|
|
$alt = "Import";
|
|
}elseif ($force_type == "export") {
|
|
$alt = "Export";
|
|
}
|
|
|
|
if ($force_type != "import" && $force_type != "export" && $force_type != "save") {
|
|
$cancel_action = "<input type='button' onClick='cactiReturnTo(\"" . $cancel_url . "\")' value='" . $calt . "'>";
|
|
}else{
|
|
$cancel_action = "";
|
|
}
|
|
|
|
?>
|
|
<table align='center' width='100%'>
|
|
<tr>
|
|
<td class="saveRow" align="right">
|
|
<input type='hidden' name='action' value='save'>
|
|
<?php print $cancel_action;?>
|
|
<input type='submit' value='<?php print $alt;?>'>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</form>
|
|
<?php
|
|
}
|
|
|