<?php class LineEdit { private $label, $name, $value; function LineEdit($label, $name, $value = "") { $this->label = $label; $this->name = $name; $this->value = $value; } function render($indent = "") { $str = $indent . "<div class=\"input\">\n"; $str .= $indent . " <div class=\"label\">". $this->label ."</div>\n"; $str .= $indent . " <div class=\"widget\"><input name=\"vars[".$this->name."]\" value=\"".$this->value."\"/></div>\n"; $str .= $indent . "</div>\n"; return $str; } } class FileUpload { private $label, $name, $accept; public function FileUpload($label, $name, $accept = "*") { $this->label = $label; $this->name = $name; $this->accept = $accept; } public function render($indent = "") { $str = $indent . "<div class=\"input\">\n"; $str .= $indent . " <div class=\"label\">". $this->label . "</div>\n"; $str .= $indent . " <div class=\"widget\"><input type=\"file\" name=\"" . $this->name. "\" accept=\"". $this->accept ."\"/></div>\n"; $str .= $indent . "</div>\n"; return $str; } } class Button { private $label; public function Button($label) { $this->label = $label; } public function render($indent = "") { $str = $indent . "<div class=\"input\">\n"; $str .= $indent . " <div class=\"label\"></div>\n"; $str .= $indent . " <div class=\"widget\"><button type=\"submit\">". $this->label."</button></div>\n"; $str .= $indent . "</div>\n"; return $str; } } class CheckBox { private $label, $name, $value; public function CheckBox($label, $name, $value = "") { $this->label = $label; $this->name = $name; $this->value = $value; } public function render($indent = "") { $str = $indent . "<div class=\"input\">\n"; $str .= $indent . " <div class=\"label\">". $this->label ."</div>\n"; $str .= $indent . " <div class=\"widget\"><input type=\"checkbox\" name=\"vars[".$this->name."]\" value=\"".$this->value."\"/></div>\n"; $str .= $indent . "</div>\n"; return $str; } } class ComboBox { private $label, $name, $value, $values; public function ComboBox($label, $name, $value, $values) { $this->label = $label; $this->name = $name; $this->value = $value; $this->values = $values; } public function render($indent = "") { $str = $indent . "<div class=\"input\">\n"; $str .= $indent . " <div class=\"label\">".$this->label."</div>\n"; $str .= $indent . " <div class=\"widget\">\n"; $str .= $indent . " <select name=\"vars[".$this->name."]\">\n"; foreach($this->values as $k => $v) { if($v != $this->value) $str .= $indent . " <option value=\"".$v."\">".$k."</option>\n"; else $str .= $indent . " <option value=\"".$v."\" selected>".$k."</option>\n"; } $str .= $indent . " </select>\n"; $str .= $indent . " </div>\n"; $str .= $indent . "</div>\n"; return $str; } } class Hidden { private $values; public function Hidden($values) { $this->values = $values; } public function render($indent = "") { $str = ""; foreach($this->values as $key => $value) { $str .= $indent . "<input type=\"hidden\" name=\"vars[".$key."]\" value=\"".$value."\"/>\n"; } return $str; } } class TextEdit { private $label, $name, $value; function TextEdit($label, $name, $value = "") { $this->label = $label; $this->name = $name; $this->value = $value; } function render($indent = "") { $str = $indent . "<div class=\"input\">\n"; $str .= $indent . " <div class=\"label\">". $this->label ."</div>\n"; $str .= $indent . " <div class=\"widget\"><textarea class=\"textedit\" name=\"vars[".$this->name."]\">".$this->value."</textarea></div>\n"; $str .= $indent . "</div>\n"; return $str; } } class DateTimeEdit { private $label, $name, $timestamp; function DateTimeEdit($label, $name, $timestamp = 0) { $this->label = $label; $this->name = $name; $this->timestamp = $timestamp; } function render($indent = "") { if($this->timestamp == 0) $t = time(); else $t = $this->timestamp; $second = date('s',$t); $minute = date('i',$t); $hour = date('G',$t); $day = date('d',$t); $month = date('m',$t); $year = date('Y',$t); $str = $indent . "<div class=\"input\">\n"; $str .= $indent . " <div class=\"label\">".$this->label."</div>\n"; $str .= $indent . " <div class=\"widget\">\n"; $str .= $indent . " <input style=\"width: 50px;\" name=\"vars[".$this->name."_year]\" value=\"".$year."\"/>"; $str .= "/<input style=\"width: 30px;\" name=\"vars[".$this->name."_month]\" value=\"".$month."\"/>"; $str .= "/<input style=\"width: 30px;\" name=\"vars[".$this->name."_day]\" value=\"".$day."\"/>"; $str .= " - "; $str .= "<input style=\"width: 30px;\" name=\"vars[".$this->name."_hour]\" value=\"".$hour."\"/>"; $str .= ":<input style=\"width: 30px;\" name=\"vars[".$this->name."_minute]\" value=\"".$minute."\"/>"; $str .= ":<input style=\"width: 30px;\" name=\"vars[".$this->name."_second]\" value=\"".$second."\"/>\n"; $str .= $indent . " </div>\n"; $str .= $indent . "</div>\n"; return $str; } public function toTimestamp($t, $name) { $timestring = sprintf("%d", $t[$name."_year"]) ."/". sprintf("%d", $t[$name."_month"]) ."/". sprintf("%d", $t[$name."_day"]) ." ". sprintf("%d", $t[$name."_hour"]) .":". sprintf("%02d", $t[$name."_minute"]).":". sprintf("%02d", $t[$name."_second"]); return strtotime($timestring); } } class ImageComboBox { private $label, $name, $value, $values; public function ImageComboBox($label, $name, $value, $values) { $this->label = $label; $this->name = $name; $this->value = $value; $this->values = $values; } public function render($indent = "") { $str = $indent . "<div class=\"input\">\n"; $str .= $indent . " <div class=\"label\">".$this->label."</div>\n"; $str .= $indent . " <div class=\"widget\">\n"; $str .= $indent . " <select name=\"vars[".$this->name."]\">\n"; foreach($this->values as $k => $v) { $str .= $indent . " <optgroup style=\"background-image: url(".$v."); height: 100px; width: 100px;\"/>\n"; $str .= $indent . " <option value=\"".$k."\""; if($v == $value) $str .= " selected"; $str .=">".$k."</option>\n"; $str .= $indent . " </optgroup>\n"; } $str .= $indent . " </select>\n"; $str .= $indent . " </div>\n"; $str .= $indent . "</div>\n"; return $str; } } class Form { private $widgets = array(); private $action; private $hasFileUpload = false; public function addWidget($widget) { if(get_class($widget) == "FileUpload") $this->hasFileUpload = true; array_push($this->widgets, $widget); } public function render($indent = "") { global $m, $s; $str = $indent . "<form method=\"post\"\n"; if($this->hasFileUpload) $str .= $indent . " enctype=\"multipart/form-data\"\n"; $str .= $indent . " action=\"?page=admin&m=".$m."&s=".$s."&a=".$this->action."\">\n"; foreach($this->widgets as $widget) { $str .= $widget->render($indent . " "); } $str .= $indent . "</form>\n"; echo $str; } public function Form($action) { $this->action = $action; } } ?>