From 9854238d0d44ea269d97509d6d35f49d3b46e834 Mon Sep 17 00:00:00 2001 From: deva Date: Thu, 23 Apr 2009 18:39:15 +0000 Subject: Crafted very ugly but slightly usable menu editor. --- utils/forms.php | 129 ++++++++++++++++++++++++++++++++++++++++++----- utils/modules/config.php | 24 +++++---- utils/modules/pages.php | 2 +- 3 files changed, 131 insertions(+), 24 deletions(-) (limited to 'utils') diff --git a/utils/forms.php b/utils/forms.php index dd0a768..8f2238e 100644 --- a/utils/forms.php +++ b/utils/forms.php @@ -1,6 +1,6 @@ label = $label; + $this->name = $name; + $this->namewidget = $namewidget; + $this->valuewidget = $valuewidget; + $this->values = $values; + } + + public function render($indent = "") + { + $str = $indent . "\n"; + $str .= $indent . "
\n"; + $str .= $indent . "
\n"; + $str .= $indent . "
\n"; + $str .= $this->namewidget->render($indent); + $str .= $this->valuewidget->render($indent); + $str .= "
\n"; + $str .= $indent . "
\n"; + return $str; + } + + public function splitValues($values) + { + $out = array(); + foreach($values as $value) { + $vals = explode(":", $value); + $out[$vals[0]]=$vals[1]; + } + return $out; + } +} + class Form { - private $widgets = array(); - private $action; - private $hasFileUpload = false; + public $widgets = array(); + public $action; + public $hasFileUpload = false; + public $hasListEditor = false; public function addWidget($widget) { if(get_class($widget) == "FileUpload") $this->hasFileUpload = true; + if(get_class($widget) == "ListEditor") $this->hasListEditor = true; array_push($this->widgets, $widget); } @@ -245,6 +349,7 @@ class Form { global $m, $s; $str = $indent . "
hasFileUpload) $str .= $indent . " enctype=\"multipart/form-data\"\n"; + if($this->hasListEditor) $str .= $indent . " onsubmit=\"selectAll();\"\n"; $str .= $indent . " action=\"?page=admin&m=".$m."&s=".$s."&a=".$this->action."\">\n"; foreach($this->widgets as $widget) { $str .= $widget->render($indent . " "); diff --git a/utils/modules/config.php b/utils/modules/config.php index a7068ef..4afb264 100644 --- a/utils/modules/config.php +++ b/utils/modules/config.php @@ -35,22 +35,24 @@ class Config { { switch($action) { case "update": - $this->setValue("menu", array("news" => "News", - "shop" => "Shop", - "downloads" => "Downloads", - "biography" => "Biography", - "live" => "Concerts", - "discography" => "Discography", - "guestbook" => "Guestbook", - "members" => "Members", - "gallery" => "Gallery", - "contact" => "Contact")); + global $menulist; + $menu = ListEditor::splitValues($menulist); + $this->setValue("menu", $menu); $this->write(); break; default: + global $config; + global $pages; + $pagetitles = array(); + foreach($pages->pages as $page) { + $pagetitles[$page->title] = $page->title; + } $form = new Form("update"); - echo "Coming soon!"; + $form->addWidget(new ListEditor("Menu items", "menulist", + new LineEdit("Title", "title"), + new ComboBox("Page", "page", "", $pagetitles), + $config->value("menu"))); $form->addWidget(new Button("Update")); $form->render(); break; diff --git a/utils/modules/pages.php b/utils/modules/pages.php index a3979d3..d69b9e9 100644 --- a/utils/modules/pages.php +++ b/utils/modules/pages.php @@ -53,7 +53,7 @@ class Page { class Pages { private $file; - private $pages = array(); + public $pages = array(); // Admin config public $admin_title = "Pages"; -- cgit v1.2.3