From 260d7369b1270f77aafe9e6d10a67ac8331270b3 Mon Sep 17 00:00:00 2001 From: rWatcher Date: Mon, 13 Jun 2011 00:49:57 -0400 Subject: [PATCH] Added the option to display Pages links in the menu. --- 3.0/modules/pages/controllers/admin_pages.php | 15 ++++++++++++--- 3.0/modules/pages/helpers/pages_event.php | 15 +++++++++++++++ 3.0/modules/pages/helpers/pages_installer.php | 10 +++++++++- 3.0/modules/pages/module.info | 2 +- 3.1/modules/pages/controllers/admin_pages.php | 15 ++++++++++++--- 3.1/modules/pages/helpers/pages_event.php | 15 +++++++++++++++ 3.1/modules/pages/helpers/pages_installer.php | 10 +++++++++- 3.1/modules/pages/module.info | 2 +- 8 files changed, 74 insertions(+), 10 deletions(-) diff --git a/3.0/modules/pages/controllers/admin_pages.php b/3.0/modules/pages/controllers/admin_pages.php index 2b567c0e..f35ae9af 100644 --- a/3.0/modules/pages/controllers/admin_pages.php +++ b/3.0/modules/pages/controllers/admin_pages.php @@ -57,12 +57,14 @@ class Admin_Pages_Controller extends Admin_Controller { $page_name = urlencode(trim(Input::instance()->post("page_name"))); $page_title = Input::instance()->post("page_title"); $page_code = Input::instance()->post("page_code"); + $display_menu = Input::instance()->post("display_menu"); // If $page_id is set, update an existing page. if (isset($page_id)) { $update_page = ORM::factory("static_page", $page_id); $update_page->title = $page_title; $update_page->html_code = $page_code; + $update_page->display_menu = $display_menu; $update_page->save(); message::success(t("Page %page_name updated", array("page_name" => $update_page->name))); log::success("pages", t("Page %page_name updated", array("page_name" => $update_page->name))); @@ -81,6 +83,7 @@ class Admin_Pages_Controller extends Admin_Controller { $new_page->name = $page_name; $new_page->title = $page_title; $new_page->html_code = $page_code; + $new_page->display_menu = $display_menu; $new_page->save(); message::success(t("Page %page_name created", array("page_name" => $page_name))); log::success("pages", t("Page %page_name created", array("page_name" => $page_name))); @@ -92,7 +95,7 @@ class Admin_Pages_Controller extends Admin_Controller { $view = new Admin_View("admin.html"); $view->page_title = t("Edit page"); $view->content = new View("admin_pages_new.html"); - $view->content->form = $this->get_overwrite_page_form($existing_page[0]->id, $page_name, $page_title, $page_code); + $view->content->form = $this->get_overwrite_page_form($existing_page[0]->id, $page_name, $page_title, $page_code, $display_menu); print $view; } } @@ -196,13 +199,16 @@ class Admin_Pages_Controller extends Admin_Controller { ->label(t("Title")); $pages_group->textarea("page_code") ->label(t("HTML Code")); + $pages_group->checkbox("display_menu") + ->label(t("Display in menu?")) + ->checked(false); $pages_group->submit("save_page") ->value(t("Save")); return $form; } - private function get_overwrite_page_form($id, $name, $title, $html_code) { + private function get_overwrite_page_form($id, $name, $title, $html_code, $display_menu) { // Generate a form for overwriting an existing page. $form = new Forge("admin/pages/savepage", "", "post", array("id" => "g-pages-admin-form")); @@ -220,6 +226,9 @@ class Admin_Pages_Controller extends Admin_Controller { $pages_group->textarea("page_code") ->label(t("HTML Code")) ->value($html_code); + $pages_group->checkbox("display_menu") + ->label(t("Display in menu?")) + ->checked($display_menu); $pages_group->submit("save_page") ->value(t("Save")); @@ -228,6 +237,6 @@ class Admin_Pages_Controller extends Admin_Controller { private function get_edit_page_form($existing_page) { // Generate a form for editing an existing page. Reuse the overwrite form for as it's basically the same thing. - return ($this->get_overwrite_page_form($existing_page->id, $existing_page->name, $existing_page->title, $existing_page->html_code)); + return ($this->get_overwrite_page_form($existing_page->id, $existing_page->name, $existing_page->title, $existing_page->html_code, $existing_page->display_menu)); } } diff --git a/3.0/modules/pages/helpers/pages_event.php b/3.0/modules/pages/helpers/pages_event.php index 110ee16f..9e37aa8b 100644 --- a/3.0/modules/pages/helpers/pages_event.php +++ b/3.0/modules/pages/helpers/pages_event.php @@ -26,4 +26,19 @@ class pages_event_Core { ->label(t("Pages Settings")) ->url(url::site("admin/pages"))); } + + static function site_menu($menu, $theme) { + $menu_pages = ORM::factory("static_page") + ->where("display_menu", "=", true) + ->order_by("title", "DESC") + ->find_all(); + if (count($menu_pages) > 0) { + foreach ($menu_pages as $one_page) { + $menu->add_after("home", Menu::factory("link") + ->id("pages-" . $one_page->id) + ->label($one_page->title) + ->url(url::site("pages/show/" . $one_page->name))); + } + } + } } diff --git a/3.0/modules/pages/helpers/pages_installer.php b/3.0/modules/pages/helpers/pages_installer.php index 82737a55..cd1f1546 100644 --- a/3.0/modules/pages/helpers/pages_installer.php +++ b/3.0/modules/pages/helpers/pages_installer.php @@ -26,11 +26,19 @@ class pages_installer { `name` varchar(255) default NULL, `title` varchar(255) default NULL, `html_code` text default NULL, + `display_menu` boolean default 0, PRIMARY KEY (`id`), UNIQUE KEY(`name`)) DEFAULT CHARSET=utf8;"); // Set the module version number. - module::set_version("pages", 1); + module::set_version("pages", 2); + } + static function upgrade($version) { + $db = Database::instance(); + if ($version == 1) { + $db->query("ALTER TABLE {static_pages} ADD COLUMN `display_menu` boolean default 0"); + module::set_version("pages", $version = 2); + } } } diff --git a/3.0/modules/pages/module.info b/3.0/modules/pages/module.info index 2978cfbb..be37cc06 100644 --- a/3.0/modules/pages/module.info +++ b/3.0/modules/pages/module.info @@ -1,6 +1,6 @@ name = "Pages" description = "Allows Gallery admins to create static pages." -version = 1 +version = 2 author_name = "rWatcher" author_url = "http://codex.gallery2.org/User:RWatcher" info_url = "http://codex.gallery2.org/Gallery3:Modules:Pages" diff --git a/3.1/modules/pages/controllers/admin_pages.php b/3.1/modules/pages/controllers/admin_pages.php index 2b567c0e..f35ae9af 100644 --- a/3.1/modules/pages/controllers/admin_pages.php +++ b/3.1/modules/pages/controllers/admin_pages.php @@ -57,12 +57,14 @@ class Admin_Pages_Controller extends Admin_Controller { $page_name = urlencode(trim(Input::instance()->post("page_name"))); $page_title = Input::instance()->post("page_title"); $page_code = Input::instance()->post("page_code"); + $display_menu = Input::instance()->post("display_menu"); // If $page_id is set, update an existing page. if (isset($page_id)) { $update_page = ORM::factory("static_page", $page_id); $update_page->title = $page_title; $update_page->html_code = $page_code; + $update_page->display_menu = $display_menu; $update_page->save(); message::success(t("Page %page_name updated", array("page_name" => $update_page->name))); log::success("pages", t("Page %page_name updated", array("page_name" => $update_page->name))); @@ -81,6 +83,7 @@ class Admin_Pages_Controller extends Admin_Controller { $new_page->name = $page_name; $new_page->title = $page_title; $new_page->html_code = $page_code; + $new_page->display_menu = $display_menu; $new_page->save(); message::success(t("Page %page_name created", array("page_name" => $page_name))); log::success("pages", t("Page %page_name created", array("page_name" => $page_name))); @@ -92,7 +95,7 @@ class Admin_Pages_Controller extends Admin_Controller { $view = new Admin_View("admin.html"); $view->page_title = t("Edit page"); $view->content = new View("admin_pages_new.html"); - $view->content->form = $this->get_overwrite_page_form($existing_page[0]->id, $page_name, $page_title, $page_code); + $view->content->form = $this->get_overwrite_page_form($existing_page[0]->id, $page_name, $page_title, $page_code, $display_menu); print $view; } } @@ -196,13 +199,16 @@ class Admin_Pages_Controller extends Admin_Controller { ->label(t("Title")); $pages_group->textarea("page_code") ->label(t("HTML Code")); + $pages_group->checkbox("display_menu") + ->label(t("Display in menu?")) + ->checked(false); $pages_group->submit("save_page") ->value(t("Save")); return $form; } - private function get_overwrite_page_form($id, $name, $title, $html_code) { + private function get_overwrite_page_form($id, $name, $title, $html_code, $display_menu) { // Generate a form for overwriting an existing page. $form = new Forge("admin/pages/savepage", "", "post", array("id" => "g-pages-admin-form")); @@ -220,6 +226,9 @@ class Admin_Pages_Controller extends Admin_Controller { $pages_group->textarea("page_code") ->label(t("HTML Code")) ->value($html_code); + $pages_group->checkbox("display_menu") + ->label(t("Display in menu?")) + ->checked($display_menu); $pages_group->submit("save_page") ->value(t("Save")); @@ -228,6 +237,6 @@ class Admin_Pages_Controller extends Admin_Controller { private function get_edit_page_form($existing_page) { // Generate a form for editing an existing page. Reuse the overwrite form for as it's basically the same thing. - return ($this->get_overwrite_page_form($existing_page->id, $existing_page->name, $existing_page->title, $existing_page->html_code)); + return ($this->get_overwrite_page_form($existing_page->id, $existing_page->name, $existing_page->title, $existing_page->html_code, $existing_page->display_menu)); } } diff --git a/3.1/modules/pages/helpers/pages_event.php b/3.1/modules/pages/helpers/pages_event.php index 110ee16f..9e37aa8b 100644 --- a/3.1/modules/pages/helpers/pages_event.php +++ b/3.1/modules/pages/helpers/pages_event.php @@ -26,4 +26,19 @@ class pages_event_Core { ->label(t("Pages Settings")) ->url(url::site("admin/pages"))); } + + static function site_menu($menu, $theme) { + $menu_pages = ORM::factory("static_page") + ->where("display_menu", "=", true) + ->order_by("title", "DESC") + ->find_all(); + if (count($menu_pages) > 0) { + foreach ($menu_pages as $one_page) { + $menu->add_after("home", Menu::factory("link") + ->id("pages-" . $one_page->id) + ->label($one_page->title) + ->url(url::site("pages/show/" . $one_page->name))); + } + } + } } diff --git a/3.1/modules/pages/helpers/pages_installer.php b/3.1/modules/pages/helpers/pages_installer.php index 82737a55..cd1f1546 100644 --- a/3.1/modules/pages/helpers/pages_installer.php +++ b/3.1/modules/pages/helpers/pages_installer.php @@ -26,11 +26,19 @@ class pages_installer { `name` varchar(255) default NULL, `title` varchar(255) default NULL, `html_code` text default NULL, + `display_menu` boolean default 0, PRIMARY KEY (`id`), UNIQUE KEY(`name`)) DEFAULT CHARSET=utf8;"); // Set the module version number. - module::set_version("pages", 1); + module::set_version("pages", 2); + } + static function upgrade($version) { + $db = Database::instance(); + if ($version == 1) { + $db->query("ALTER TABLE {static_pages} ADD COLUMN `display_menu` boolean default 0"); + module::set_version("pages", $version = 2); + } } } diff --git a/3.1/modules/pages/module.info b/3.1/modules/pages/module.info index 2978cfbb..be37cc06 100644 --- a/3.1/modules/pages/module.info +++ b/3.1/modules/pages/module.info @@ -1,6 +1,6 @@ name = "Pages" description = "Allows Gallery admins to create static pages." -version = 1 +version = 2 author_name = "rWatcher" author_url = "http://codex.gallery2.org/User:RWatcher" info_url = "http://codex.gallery2.org/Gallery3:Modules:Pages"