forms.php
来自「基于PHP和MYSQL的计算机辅助设备维修管理系统」· PHP 代码 · 共 1,637 行 · 第 1/4 页
PHP
1,637 行
$second_selected = $values["values"][$field["name"] ."_second"] ? $values["values"][$field["name"] ."_second"] : @date("s" , $date_vals );
} else {
$fld = $field["fields"];
//setting the default value
$year_selected = $fld["year"]["default"] == "now" ? date("Y") : $fld["year"]["default"];
$month_selected = $fld["month"]["default"] == "now" ? date("n") : $fld["month"]["default"];
$day_selected = $fld["day"]["default"] == "now" ? date("j") : $fld["day"]["default"];
//crap, adding the time values too
$hour_selected = $fld["hour"]["default"] == "now" ? date("G") : $fld["hour"]["default"];
$minute_selected = $fld["minute"]["default"] == "now" ? date("i") : $fld["minute"]["default"];
$second_selected = $fld["second"]["default"] == "now" ? date("s") : $fld["second"]["default"];
}
foreach ($field["fields"] as $key => $val) {
switch ($key) {
case "year":
if ($field["fields"]["year"]["empty"] == "true") {
$years[0] = "--" ;
}
for ($i = $field["fields"]["year"]["from"] ; $i <= $field["fields"]["year"]["to"] ; $i++ )
$years[$i] = $i;
$current_field .= $html->FormSelect(
$field["name"]."_year" ,
$years ,
$this->templates ,
"DateSelect",
$year_selected ,
array() ,
array("DISABLED" => ($field["fields"]["year"]["editable"] == "false") ? "DISABLED" : "")
);
$current_field .= $val["separator"];
break;
case "day":
if ($field["fields"]["day"]["empty"] == "true") {
$days[0] = "--" ;
}
for ($i = 1 ; $i <= 31 ; $i++ )
$days[$i] = sprintf("%02d",$i);
$current_field .= $html->FormSelect(
$field["name"]."_day" ,
$days ,
$this->templates ,
"DateSelect",
$day_selected,
array() ,
array("DISABLED" => ($field["fields"]["day"]["editable"] == "false") ? "DISABLED" : "")
);
$current_field .= $val["separator"];
break;
case "month":
if ($field["fields"]["month"]["empty"] == "true") {
$months[0] = "--" ;
}
//importing the months from global
global $form_months;
if (is_array($months))
$form_months = array_merge($months, $form_months);
//ehcking if the dates must apear like strings or numbers
$current_field .= $html->FormSelect(
$field["name"]."_month" ,
$form_months,
$this->templates ,
"DateSelect",
$month_selected,
array() ,
array("DISABLED" => ($field["fields"]["month"]["editable"] == "false") ? "DISABLED" : "")
);
$current_field .= $val["separator"];
break;
case "hour":
for ($i = 0; $i <= 23; $i++ )
$hours[$i] = sprintf("%02d",$i);;
$current_field .= $html->FormSelect(
$field["name"]."_hour" ,
$hours ,
$this->templates ,
"DateSelect",
$hour_selected ,
array() ,
array("DISABLED" => ($field["fields"]["hour"]["editable"] == "false") ? "DISABLED" : "")
);
$current_field .= $val["separator"];
break;
case "minute":
for ($i = 0; $i <= 59; $i++ )
$minutes[$i] = sprintf("%02d",$i);;
$current_field .= $html->FormSelect(
$field["name"]."_minute" ,
$minutes ,
$this->templates ,
"DateSelect",
$minute_selected ,
array() ,
array("DISABLED" => ($field["fields"]["minute"]["editable"] == "false") ? "DISABLED" : "")
);
$current_field .= $val["separator"];
break;
case "second":
for ($i = 0; $i <= 59; $i++ )
$seconds[$i] = sprintf("%02d",$i);;
$current_field .= $html->FormSelect(
$field["name"]."_second" ,
$seconds ,
$this->templates ,
"DateSelect",
$second_selected ,
array() ,
array("DISABLED" => ($field["fields"]["minute"]["editable"] == "false") ? "DISABLED" : "")
);
$current_field .= $val["separator"];
break;
}
}
}
//if the field hs description then i add the valign code
$current_field_extra = $field["description"] ? $this->templates->blocks["TopAlign"]->output : "";
break;
case "multiple":
//cheking for multiple ellements
if (is_array($field["multiple"])) {
foreach ($field["multiple"] as $key => $val) {
$current_field .= $this->DrawElement($form , $key , $values , 1);
}
}
$current_field_extra = $field["description"] ? $this->templates->blocks["TopAlign"]->output : "";
break;
}
if ($field["hidden"] != "true") {
//checking if this element isnt a referer
if ($field["referer"] != "true") {
//building the element structure ( title, description, etc )
$element["title"] = $field["title"];
//replacing ]n with <br> in descriptions
$field["description"] = $field["description"] ? nl2br(html_entity_decode(str_replace("]" , ">" , str_replace("[" , "<" , $field["description"])))) : null;
$element["_description"] = $field["description"] ? $this->templates->blocks["Description"]->Replace($field) : "";
$element["_description_rowspan"] = $field["description"] ? $this->templates->blocks["DescriptionRowspan"]->output : "";
$element["_element"] = $current_field;
//cheking if this element has referers
if (is_array($field["referers"])) {
foreach ($field["referers"] as $key => $val) {
$element["_element"] .= $this->DrawElement($form , $key , $values , 1);
}
}
//adding the preffix and suffix
$element["_suffix"] = $field["suffix"];
$element["_preffix"] = $field["preffix"];
$element["_extra"] = $current_field_extra;
$element["_extra_code"] = $field["_extra_code"];
$element["_required"] = $field["required"] == "true" ? trim($this->templates->blocks["RequiredMark"]->output) : "";
$element["_required_error"] = $values["errors"][$field["name"]] ? trim($this->templates->blocks["Required"]->output) : "";
//start with alternance empty;
$element["_alternance"] = "";
if (($field["multiple"] == "true") && $draw_referer ){
return $this->templates->blocks["ElementMultipleBody"]->Replace($element);
}
if ($field["type"] == "multiple") {
if ($form["alternance"] == "true") {
$this->_tmpAlternance = $this->_tmpAlternance ? 0 : 1;
$vars["_alternance"] = $this->templates->blocks["Alternance" . $this->_tmpAlternance]->output;
$this->templates->blocks["Temp"]->input = $this->templates->blocks["ElementMultiple"]->Replace($element);
return $this->templates->blocks["Temp"]->Replace($vars);
} else
return $this->templates->blocks["ElementMultiple"]->Replace($element);
}
if ($field["extend"] != "true") {
//do a smal trick for alternance colors
if ($form["alternance"] == "true") {
$this->_tmpAlternance = $this->_tmpAlternance ? 0 : 1;
$vars["_alternance"] = $this->templates->blocks["Alternance" . $this->_tmpAlternance]->output;
$this->templates->blocks["Temp"]->input = $this->templates->blocks["Element"]->Replace($element);
return $this->templates->blocks["Temp"]->Replace($vars);
} else {
switch ($field["type"]) {
case "subtitle":
return $this->templates->blocks["Subtitle"]->Replace($element);
break;
case "comment":
return $current_field;
break;
default:
return $this->templates->blocks["Element"]->Replace($element);
break;
}
}
}
else
return $this->templates->blocks["ExtendElement"]->Replace($element);
} else {
//if the element is only a referer return only the form
return $draw_referer ? $current_field : "";
}
} else {
return $current_field;
}
}
/**
* description
*
* @param
*
* @return
*
* @access
*/
function Show($form , $values = array() , $extra = array()) {
global $_CONF;
$form = $this->Process($form);
//values structure
/*
<values>
<error>Field already exists</error>
<fields>
<name>jon doe</name>
<address>eartch </earth>
...
</fields>
</values>
*/
if (is_array($form["vars"])) {
foreach ($form["vars"] as $key => $val) {
//echeking if the default must be evaluated
if ($val["action"] == "eval") {
eval("\$val[\"import\"] = " . $val["default"] .";");
}
switch ($val["type"]) {
case "eval":
eval("\$tpl_vars[\"$key\"] = " . $val["import"] . ";");
break;
case "var":
$tpl_vars[$key] = $val["import"];
break;
}
}
}
if (is_array($form["fields"])) {
foreach ($form["fields"] as $key => $field) {
//checking for <code> field
if (!$field["name"])
$form["fields"][$key]["name"] = $key;
//empty some variable for each field
$element = array();
$current_field_extra = "";
$current_field = "";
//do a precheck for values, to load it from _POST, _GET _SESSION _FILE _COOKIE
if (!@isset($values["values"][$field["name"]]) && @isset($GLOBALS[$field["get"]][$field["name"]])) {
$values["values"][$field["name"]] = $GLOBALS[$field["get"]][$field["name"]];
}
$form["fields"][$key]["_extra_code"] = $extra["fields"][$key];
$form["_template_data"] .= $this->DrawElement($form , $key, $values);
}
}
//adding the ing buttons
if (is_array($form["buttons"])) {
foreach ($form["buttons"] as $key => $val)
//checking not to be a setting group
if ($key != "set") {
//making a small trick to replace some vars in links, i hate this
$this->templates->blocks["Temp"]->input = $val["location"];
//replacing the values
//also replaging the global variables defined for templates
$this->templates->blocks["Temp"]->input = $this->templates->blocks["Temp"]->Replace($tpl_vars);
$val["location"] = $this->templates->blocks["Temp"]->Replace($values["values"]);
$val["location"] = CryptLink($val["location"]);
$buttons .= $this->templates->blocks["Button"]->Replace($val);
}
$form["_header_buttons"] = $form["buttons"]["set"]["header"] == "true" ? $this->templates->blocks["HeaderButtons"]->Replace(array(
"SUBTITLE" => ($form["subtitle"] ? $form["subtitle"] : " ") ,
"BUTTONS" => $buttons)) : "";
$form["_footer_buttons"] = $form["buttons"]["set"]["footer"] == "true" ? $this->templates->blocks["FooterButtons"]->Replace(array("BUTTONS" => $buttons)) : "";
} else {
//return empty variable
$form["_header_buttons"] = $form["_footer_buttons"] = "";
}
//check and add the error message
if ($values["error"])
$form["_error"] = $this->templates->blocks["Error"]->Replace(array("error" => $values["error"] ));
else
$form["_error"] = "";
//adduing the javascript to form
$form["_pre_javascript"] = $form["javascript"]["pre"] ? "<script language=\"Javascript\">" . $form["javascript"]["pre"] . "</script>" : "";
$form["_after_javascript"] = $form["javascript"]["after"] ? "<script language=\"Javascript\">" . $form["javascript"]["after"] . "</script>" : "";
//adding the extra html
$form["_pre_html"] = (is_array($form["html"]["pre"]) && ($form["html"]["pre"]["type"] == "extern")) ? GetFileContents(dirname($form["xmlfile"]) . "/" . $form["html"]["pre"]["file"]) : html_entity_decode($form["html"]["pre"]);
$form["_middle_html"] = (is_array($form["html"]["middle"]) && ($form["html"]["middle"]["type"] == "extern")) ? GetFileContents(dirname($form["xmlfile"]) . "/" . $form["html"]["middle"]["file"]) : html_entity_decode($form["html"]["middle"]);
$form["_after_html"] = (is_array($form["html"]["after"]) && ($form["html"]["after"]["type"] == "extern")) ? GetFileContents(dirname($form["xmlfile"]) . "/" . $form["html"]["after"]["file"]) : html_entity_decode($form["html"]["after"]);
//adding the pre extra and after extra
$form["_pre_form"] = $extra["pre"];
$form["_after_form"] = $extra["after"];
//preprocess the post form
//replace the form vars in the form action
$this->templates->blocks["Temp"]->input = $form["action"];
$form["action"] = CryptLink($this->templates->blocks["Temp"]->Replace($tpl_vars));
//drawing the form
$form["_template_data"] = $this->templates->blocks["Form"]->Replace($form);
//adding the <form tag
if ($form["formtag"] == "true") {
$form["id"] = $form["id"] ? " id=\"" . $form["id"] . "\" " : "";
$form["encoding"] = $form["encoding"] ? $form["encoding"] : "";
$form["_template_data"] = $this->templates->blocks["Action"]->Replace( $form );
}
//adding the border
if ($form["border"] == "true")
$form["_template_data"] = $this->templates->blocks["Border"]->Replace( $form );
if (is_array($form["vars"])) {
//doing a double replace, in case there are unreplaced variable sfom "vars" type
$this->templates->blocks["Temp"]->input = $form["_template_data"];
$form["_template_data"] = $this->templates->blocks["Temp"]->Replace($tpl_vars);
}
return $form["_template_data"] ;
}
}
/*
History
*/
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?