Files
cacti/lib/html_form.php
T
Larry Adams 9500a352a0 -bug: Firefox Autocomplete causes issues with password validation
git-svn-id: svn+ssh://repo.cacti.net/var/data/svnroot/cacti/cacti/branches/0.8.7@5804 860744bd-22fc-0310-8c96-e9fe5004b5ca
2010-04-28 03:30:54 +00:00

781 lines
31 KiB
PHP

<?php
/*
+-------------------------------------------------------------------------+
| Copyright (C) 2004-2009 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) {
global $colors;
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 "<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"] . "'" : "") . ">\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") {
print "<tr id='row_$field_name' bgcolor='" . $colors["header_panel"] . "'><td colspan='2' class='textSubHeaderDark'>" . $field_array["friendly_name"] . "</td></tr>\n";
}else{
if (isset($config_array["force_row_color"])) {
print "<tr id='row_$field_name' bgcolor='#" . $config_array["force_row_color"] . "'>";
}else{
form_alternate_row_color($colors["form_alternate1"], $colors["form_alternate2"], $i, '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($check_array["on_change"])) ? $check_array["on_change"] : ""),
((isset($field_array["form_id"])) ? $field_array["form_id"] : ""));
}
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"] : ""));
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");
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");
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"], $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"] : ""));
break;
default:
print "<em>" . htmlspecialchars($field_array["value"],ENT_QUOTES) . "</em>";
form_hidden_box($field_name, $field_array["value"], "");
break;
}
}
/* 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($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 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' 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' 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) {
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' 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 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_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='$form_name' name='$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_text_box - draws a standard html checkbox
@arg $form_name - the name of this form element
@arg $form_previous_value - the current value of this form element
@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
@arg $on_change - specify a javascript onchange action
@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_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 . "> <label for='$form_name'>$form_caption</label>\n";
}
/* form_text_box - 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_box - 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_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 (strlen($class)) {
$class = " class='$class' ";
}
if (strlen($on_change)) {
$on_change = " onChange='$on_change' ";
}
print "<select id='$form_name' name='$form_name" . "[]'" . $class . $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) {
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.0.x" ||
read_config_option("rrdtool_version") == "rrd-1.2.x") { # rrdtool 1.0 and 1.2 use 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
if ($config["cacti_server_os"] == "unix") {
/* unix knows fc-list
* so use it to verify the font provided */
$out_array = array();
exec('fc-list ' . escapeshellarg($form_previous_value), $out_array);
if (sizeof($out_array) == 0) {
$extra_data = "<span style='color:red'><br>[" . "ERROR: FONT NOT FOUND" . "]</span>";
} else {
$extra_data = "<span style='color:green'><br>[" . "OK: FONT FOUND" . "]</span>";
}
} else {
/* windows currently has no concept for fc-list
* we can't perform any check */
$extra_data = "<span style='color:green'><br>[" . "NO FONT VERIFICATION POSSIBLE" . "]</span>";
}
}
}
print " id='$form_name' 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" bgcolor="#B61D22" width="60%">
<tr>
<td bgcolor="#B61D22" colspan="10">
<table width="100%" cellpadding="3" cellspacing="0">
<tr>
<td bgcolor="#B61D22" 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) { ?>
<tr>
<td bgcolor="#E1E1E1">
<a href="<?php print $cancel_url;?>"><img src="images/button_cancel.gif" border="0" alt="Cancel" align="absmiddle"></a>
<a href="<?php print $action_url . "&confirm=yes";?>"><img src="images/button_delete.gif" border="0" alt="Delete" align="absmiddle"></a>
</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") {
if (empty($force_type)) {
if (empty($_GET[$key_field])) {
$img = "button_create.gif";
$alt = "Create";
}else{
$img = "button_save.gif";
$alt = "Save";
}
}elseif ($force_type == "save") {
$img = "button_save.gif";
$alt = "Save";
}elseif ($force_type == "create") {
$img = "button_create.gif";
$alt = "Create";
}
?>
<table align='center' width='100%' style='background-color: #ffffff; border: 1px solid #bbbbbb;'>
<tr>
<td bgcolor="#f5f5f5" align="right">
<input type='hidden' name='action' value='save'>
<a href='<?php print $cancel_url;?>'><img src='images/button_cancel2.gif' alt='Cancel' align='absmiddle' border='0'></a>
<input type='image' src='images/<?php print $img;?>' alt='<?php print $alt;?>' align='absmiddle'>
</td>
</tr>
</table>
</form>
<?php
}
?>