diff options
Diffstat (limited to 'utils/modules')
-rw-r--r-- | utils/modules/news.php | 196 |
1 files changed, 154 insertions, 42 deletions
diff --git a/utils/modules/news.php b/utils/modules/news.php index 2505ffb..6137049 100644 --- a/utils/modules/news.php +++ b/utils/modules/news.php @@ -21,6 +21,11 @@ class NewsEntry { return $str; } + public function __toString() + { + return $this->title; + } + public function NewsEntry($title, $time, $category, $description) { $this->title = $title; @@ -41,57 +46,164 @@ class News { "Edit Newsentry" => "edit", "Delete Newsentry" => "delete"); + + public function admin_add($action, $vars) + { + switch($action) { + case "add": + $n = new NewsEntry($vars["title"], totimestamp($vars, "time"), $vars["category"], $vars["description"]); + $this->add($n); + $this->write(); + break; + + case "preview": + $n = new NewsEntry($vars["title"], totimestamp($vars, "time"), $vars["category"], $vars["description"]); + echo "<div class=\"preview\">\n"; + echo "<div class=\"content\">\n"; + echo $n->show(); + echo "</div>\n"; + echo "</div>\n"; + echo "<p>Looking ok?</p>"; + beginform("add"); + hidden($vars); + button("yes"); + endform(); + beginform("retry"); + hidden($vars); + button("no"); + endform(); + break; + + case "retry": + $title = $vars["title"]; + $time = totimestamp($vars, "time"); + $category = $vars["category"]; + $description = $vars["description"]; + default: + beginform("preview"); + lineedit("Title", "title", $title); + datetimeedit("Time", "time", $time); + combobox("Category", "category", $category, array("Main" => "main", "Site" => "site")); + textedit("Description", "description", $description); + button("Post news"); + endform(); + break; + } + } + + public function admin_edit($action, $vars) + { + switch($action) { + case "add": + $this->news[$vars["newsid"]]->title = $vars["title"]; + $this->news[$vars["newsid"]]->time = totimestamp($vars, "time"); + $this->news[$vars["newsid"]]->category = $vars["category"]; + $this->news[$vars["newsid"]]->description = $vars["description"]; + $this->write(); + echo "\"" . $this->news[$vars["newsid"]]->title . "\" has now been edited."; + break; + + case "preview": + $n = new NewsEntry($vars["title"], totimestamp($vars, "time"), $vars["category"], $vars["description"]); + echo "<div class=\"preview\">\n"; + echo "<div class=\"content\">\n"; + echo $n->show(); + echo "</div>\n"; + echo "</div>\n"; + echo "<p>Looking ok?</p>"; + beginform("add"); + hidden($vars); + button("yes"); + endform(); + beginform("retry"); + hidden($vars); + button("no"); + endform(); + break; + + case "edit": + case "retry": + if(isset($vars["title"])) $title = $vars["title"]; + else $title = $this->news[$vars["newsid"]]->title; + if(isset($vars["time_year"])) $time = totimestamp($vars, "time"); + else $time = $this->news[$vars["newsid"]]->time; + if(isset($vars["category"])) $category = $vars["category"]; + else $category = $this->news[$vars["newsid"]]->category; + if(isset($vars["description"])) $description = $vars["description"]; + else $description = $this->news[$vars["newsid"]]->description; + + beginform("preview"); + hidden($vars); + lineedit("Title", "title", $title); + datetimeedit("Time", "time", $time); + combobox("Category", "category", $category, array("Main" => "main", "Site" => "site")); + textedit("Description", "description", $description); + button("Post news"); + endform(); + break; + + case "select": + default: + $newslist = array(); + foreach($this->news as $newsentry) { + $newslist[$newsentry->title] = $newsentry->time; + } + beginform("edit"); + combobox("Edit this entry:", "newsid", "", $newslist); + button("Edit..."); + endform(); + break; + } + } + + public function admin_delete($sub, $action, $vars) + { + switch($action) { + case "delete": + echo $this->news[$vars["newsid"]]->title . " has now been deleted."; + unset($this->news[$vars["newsid"]]); + $this->write(); + break; + + case "confirm": + echo "Really delete: " . $this->news[$vars["newsid"]]->title . "?"; + beginform("delete"); + hidden($vars); + button("yes"); + endform(); + beginform("select"); + hidden($vars); + button("no"); + endform(); + break; + + case "select": + default: + $newslist = array(); + foreach($this->news as $newsentry) { + $newslist[$newsentry->title] = $newsentry->time; + } + beginform("confirm"); + combobox("Delete this entry:", "newsid", "", $newslist); + button("Delete..."); + endform(); + break; + } + } + public function admin($sub, $action, $vars) { switch($sub) { case "new": - switch($action) { - case "add": - $n = new NewsEntry($vars["title"], totimestamp($vars, "time"), $vars["category"], $vars["description"]); - $this->add($n); - $this->write(); - break; - - case "preview": - $n = new NewsEntry($vars["title"], totimestamp($vars, "time"), $vars["category"], $vars["description"]); - echo "<div class=\"preview\">\n"; - echo "<div class=\"content\">\n"; - echo $n->show(); - echo "</div>\n"; - echo "</div>\n"; - echo "<p>Looking ok?</p>"; - beginform("add"); - hidden($vars); - button("yes"); - endform(); - beginform("retry"); - hidden($vars); - button("no"); - endform(); - break; - - case "retry": - $title = $vars["title"]; - $time = totimestamp($vars, "time"); - $category = $vars["category"]; - $description = $vars["description"]; - default: - beginform("preview"); - lineedit("Title", "title", $title); - datetimeedit("Time", "time", $time); - combobox("Category", "category", $category, array("Main" => "main", "Site" => "site")); - textedit("Description", "description", $description); - button("Post news"); - endform(); - break; - } + $this->admin_add($action, $vars); break; case "edit": - echo "Edit"; + $this->admin_edit($action, $vars); break; + case "delete": - echo "Delete"; + $this->admin_delete($action, $vars); break; } } |