From 7862e8b02ddd41eb68e858278cd909c8ff371550 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 10 Jul 2009 09:59:04 +0800 Subject: Created the dynamic albums module which provides a dynamic album containing either recent updates or most viewed images. Signed-off-by: Tim Almdal --- modules/dynamic/controllers/admin_dynamic.php | 79 ++++++++++++++++++++++ modules/dynamic/controllers/dynamic.php | 94 +++++++++++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 modules/dynamic/controllers/admin_dynamic.php create mode 100644 modules/dynamic/controllers/dynamic.php (limited to 'modules/dynamic/controllers') diff --git a/modules/dynamic/controllers/admin_dynamic.php b/modules/dynamic/controllers/admin_dynamic.php new file mode 100644 index 00000000..f559e3d2 --- /dev/null +++ b/modules/dynamic/controllers/admin_dynamic.php @@ -0,0 +1,79 @@ +_get_view(); + } + + public function handler() { + access::verify_csrf(); + + $form = $this->_get_form(); + if ($form->validate()) { + foreach (array("updates", "popular") as $album) { + $album_defn = unserialize(module::get_var("dynamic", $album)); + $album_defn->enabled = $form->$album->enabled->value; + $album_defn->description = $form->$album->description->value; + $album_defn->limit = $form->$album->limit->value === "" ? null : $form->$album->limit->value; + module::set_var("dynamic", $album, serialize($album_defn)); + } + + message::success(t("Dynamic Albums Configured")); + + url::redirect("admin/dynamic"); + } + + print $this->_get_view($form); + } + + private function _get_view($form=null) { + $v = new Admin_View("admin.html"); + $v->content = new View("admin_dynamic.html"); + $v->content->form = empty($form) ? $this->_get_form() : $form; + return $v; + } + + private function _get_form() { + + $form = new Forge("admin/dynamic/handler", "", "post", + array("id" => "gAdminForm")); + + foreach (array("updates", "popular") as $album) { + $album_defn = unserialize(module::get_var("dynamic", $album)); + + $group = $form->group($album)->label(t($album_defn->title)); + $group->checkbox("enabled") + ->label(t("Enable")) + ->value(1) + ->checked($album_defn->enabled); + $group->input("limit") + ->label(t("Limit (leave empty for unlimited)")) + ->value(empty($updates->limit) ? "" : $updates->limit) + ->rules("valid_numeric"); + $group->textarea("description") + ->label(t("Description")) + ->rules("length[0,2048]") + ->value($album_defn->description); + } + + $form->submit("submit")->value(t("Submit")); + + return $form; + } +} \ No newline at end of file diff --git a/modules/dynamic/controllers/dynamic.php b/modules/dynamic/controllers/dynamic.php new file mode 100644 index 00000000..b1fde2ac --- /dev/null +++ b/modules/dynamic/controllers/dynamic.php @@ -0,0 +1,94 @@ +input->get("page", "1"); + + $children_count = ORM::factory("item") + ->viewable() + ->where("type !=", "album") + ->count_all(); + $offset = ($page-1) * $page_size; + print $children_count; + + $max_pages = ceil($children_count / $page_size); + print $max_pages; + + // Make sure that the page references a valid offset + if ($page < 1 || ($children_count && $page > ceil($children_count / $page_size))) { + Kohana::show_404(); + } + + $template = new Theme_View("page.html", "dynamic"); + $template->set_global("page_size", $page_size); + $template->set_global("children", ORM::factory("item") + ->viewable() + ->where("type !=", "album") + ->orderby("created", "DESC") + ->find_all($page_size, $offset)); + $template->set_global("children_count", $children_count); + $template->content = new View("dynamic.html"); + $template->content->title = t("Recent Updates"); + + print $template; + print $this->_show("updates"); + } + + public function popular() { + print $this->_show("popular"); + } + + private function _show($album) { + $page_size = module::get_var("gallery", "page_size", 9); + $page = $this->input->get("page", "1"); + + $album_defn = unserialize(module::get_var("dynamic", $album)); + $children_count = $album_defn->limit; + if (empty($children_count)) { + $children_count = ORM::factory("item") + ->viewable() + ->where("type !=", "album") + ->count_all(); + } + + $offset = ($page-1) * $page_size; + + $max_pages = ceil($children_count / $page_size); + + // Make sure that the page references a valid offset + if ($page < 1 || ($children_count && $page > ceil($children_count / $page_size))) { + Kohana::show_404(); + } + + $template = new Theme_View("page.html", "dynamic"); + $template->set_global("page_size", $page_size); + $template->set_global("children", ORM::factory("item") + ->viewable() + ->where("type !=", "album") + ->orderby($album_defn->key_field, "DESC") + ->find_all($page_size, $offset)); + $template->set_global("children_count", $children_count); + $template->content = new View("dynamic.html"); + $template->content->title = t($album_defn->title); + + print $template; + } + +} \ No newline at end of file -- cgit v1.2.3 From 4b28f7f50e0901ee3abe864a3881ff11d08a73ce Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 10 Jul 2009 10:15:14 +0800 Subject: A few minor changes to add to the dynamic albums module 1) cleanun the two displays of the recent changes page 2) change the name to recent changes. 3) Change the description in module.info Not quite ready for prime time, some issues with the limit to be resolved Signed-off-by: Tim Almdal --- modules/dynamic/controllers/dynamic.php | 30 --------------------------- modules/dynamic/helpers/dynamic_installer.php | 2 +- modules/dynamic/module.info | 2 +- 3 files changed, 2 insertions(+), 32 deletions(-) (limited to 'modules/dynamic/controllers') diff --git a/modules/dynamic/controllers/dynamic.php b/modules/dynamic/controllers/dynamic.php index b1fde2ac..6b5f2915 100644 --- a/modules/dynamic/controllers/dynamic.php +++ b/modules/dynamic/controllers/dynamic.php @@ -18,36 +18,6 @@ */ class Dynamic_Controller extends Controller { public function updates() { - $page_size = module::get_var("gallery", "page_size", 9); - $page = $this->input->get("page", "1"); - - $children_count = ORM::factory("item") - ->viewable() - ->where("type !=", "album") - ->count_all(); - $offset = ($page-1) * $page_size; - print $children_count; - - $max_pages = ceil($children_count / $page_size); - print $max_pages; - - // Make sure that the page references a valid offset - if ($page < 1 || ($children_count && $page > ceil($children_count / $page_size))) { - Kohana::show_404(); - } - - $template = new Theme_View("page.html", "dynamic"); - $template->set_global("page_size", $page_size); - $template->set_global("children", ORM::factory("item") - ->viewable() - ->where("type !=", "album") - ->orderby("created", "DESC") - ->find_all($page_size, $offset)); - $template->set_global("children_count", $children_count); - $template->content = new View("dynamic.html"); - $template->content->title = t("Recent Updates"); - - print $template; print $this->_show("updates"); } diff --git a/modules/dynamic/helpers/dynamic_installer.php b/modules/dynamic/helpers/dynamic_installer.php index 8780864b..66d6298d 100644 --- a/modules/dynamic/helpers/dynamic_installer.php +++ b/modules/dynamic/helpers/dynamic_installer.php @@ -31,7 +31,7 @@ class dynamic_installer { "limit" => null, "description" => "", "key_field" => "created", - "title" => t("Recent Updates")))); + "title" => t("Recent Changes")))); module::set_version("dynamic", 1); } } diff --git a/modules/dynamic/module.info b/modules/dynamic/module.info index 4167df4b..aa5e0432 100644 --- a/modules/dynamic/module.info +++ b/modules/dynamic/module.info @@ -1,3 +1,3 @@ name = Dynamic -description = Dynamic album +description = Adds the Recent Changes and Most Viewed dynamic albums version = 1 -- cgit v1.2.3 From e3e56827d5724c6ec5174d4186db99ab2c55e8f7 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 10 Jul 2009 12:33:37 +0800 Subject: Corrected a problem where the number limit value was being set the same for both popular and recent changes. Signed-off-by: Tim Almdal --- modules/dynamic/controllers/admin_dynamic.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'modules/dynamic/controllers') diff --git a/modules/dynamic/controllers/admin_dynamic.php b/modules/dynamic/controllers/admin_dynamic.php index f559e3d2..50dac459 100644 --- a/modules/dynamic/controllers/admin_dynamic.php +++ b/modules/dynamic/controllers/admin_dynamic.php @@ -28,9 +28,11 @@ class Admin_Dynamic_Controller extends Admin_Controller { if ($form->validate()) { foreach (array("updates", "popular") as $album) { $album_defn = unserialize(module::get_var("dynamic", $album)); - $album_defn->enabled = $form->$album->enabled->value; - $album_defn->description = $form->$album->description->value; - $album_defn->limit = $form->$album->limit->value === "" ? null : $form->$album->limit->value; + $group = $form->inputs[$album]; + $album_defn->enabled = $group->inputs["{$album}_enabled"]->value; + $album_defn->description = $group->inputs["{$album}_description"]->value; + $album_defn->limit = $group->inputs["{$album}_limit"] === "" ? null : + $group->inputs["{$album}_limit"]->value; module::set_var("dynamic", $album, serialize($album_defn)); } @@ -58,15 +60,15 @@ class Admin_Dynamic_Controller extends Admin_Controller { $album_defn = unserialize(module::get_var("dynamic", $album)); $group = $form->group($album)->label(t($album_defn->title)); - $group->checkbox("enabled") + $group->checkbox("{$album}_enabled") ->label(t("Enable")) ->value(1) ->checked($album_defn->enabled); - $group->input("limit") + $group->input("{$album}_limit") ->label(t("Limit (leave empty for unlimited)")) - ->value(empty($updates->limit) ? "" : $updates->limit) + ->value(empty($album_defn->limit) ? "" : $album_defn->limit) ->rules("valid_numeric"); - $group->textarea("description") + $group->textarea("{$album}_description") ->label(t("Description")) ->rules("length[0,2048]") ->value($album_defn->description); -- cgit v1.2.3