From 1475b772bd256238e7e5e8c0985daede9e18a16f Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 10 Jul 2009 08:18:58 +0800 Subject: Change the tag importer to convert spaces to a dot in multi word tags. Signed-off-by: Tim Almdal --- modules/g2_import/helpers/g2_import.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index d67d4c04..66787467 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -623,8 +623,10 @@ class g2_import_Core { } $tags = ""; + // Multiword tags have the space changed to dots.s foreach ($tag_names as $tag_name) { - $tags .= (strlen($tags) ? ", " : "") . tag::add($g3_item, $tag_name); + $tags .= (strlen($tags) ? ", " : "") . + tag::add($g3_item, preg_replace('/\s\s+/', '.', $tag_name)); } // Tag operations are idempotent so we don't need to map them. Which is good because we don't -- cgit v1.2.3 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 +++++++++++++++++++++++++++ modules/dynamic/helpers/dynamic_installer.php | 46 +++++++++++++ modules/dynamic/helpers/dynamic_menu.php | 27 ++++++++ modules/dynamic/helpers/dynamic_theme.php | 39 +++++++++++ modules/dynamic/module.info | 3 + modules/dynamic/views/admin_dynamic.html.php | 5 ++ modules/dynamic/views/dynamic_block.html.php | 10 +++ 8 files changed, 303 insertions(+) create mode 100644 modules/dynamic/controllers/admin_dynamic.php create mode 100644 modules/dynamic/controllers/dynamic.php create mode 100644 modules/dynamic/helpers/dynamic_installer.php create mode 100644 modules/dynamic/helpers/dynamic_menu.php create mode 100644 modules/dynamic/helpers/dynamic_theme.php create mode 100644 modules/dynamic/module.info create mode 100644 modules/dynamic/views/admin_dynamic.html.php create mode 100644 modules/dynamic/views/dynamic_block.html.php (limited to 'modules') 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 diff --git a/modules/dynamic/helpers/dynamic_installer.php b/modules/dynamic/helpers/dynamic_installer.php new file mode 100644 index 00000000..8780864b --- /dev/null +++ b/modules/dynamic/helpers/dynamic_installer.php @@ -0,0 +1,46 @@ + false, + "limit" => null, + "description" => "", + "key_field" => "view_count", + "title" => t("Most Viewed")))); + module::set_var("dynamic", "updates", + serialize((object)array("enabled" => false, + "limit" => null, + "description" => "", + "key_field" => "created", + "title" => t("Recent Updates")))); + module::set_version("dynamic", 1); + } + } + + static function upgrade($version) { + } + + static function uninstall() { + /* @todo Put database table drops here */ + module::delete("dynamic"); + } +} diff --git a/modules/dynamic/helpers/dynamic_menu.php b/modules/dynamic/helpers/dynamic_menu.php new file mode 100644 index 00000000..b2c73d6f --- /dev/null +++ b/modules/dynamic/helpers/dynamic_menu.php @@ -0,0 +1,27 @@ +get("content_menu") + ->append(Menu::factory("link") + ->id("dynamic_menu") + ->label(t("Dynamic Albums")) + ->url(url::site("admin/dynamic"))); + } +} diff --git a/modules/dynamic/helpers/dynamic_theme.php b/modules/dynamic/helpers/dynamic_theme.php new file mode 100644 index 00000000..ba355098 --- /dev/null +++ b/modules/dynamic/helpers/dynamic_theme.php @@ -0,0 +1,39 @@ +enabled) { + $albums[$album] = $album_defn->title; + } + } + if (!empty($albums)) { + $block = new Block(); + $block->css_id = "gDynamic"; + $block->title = t("Dynamic Albums"); + $block->content = new View("dynamic_block.html"); + $block->content->albums = $albums; + return $block; + } + return ""; + } + +} diff --git a/modules/dynamic/module.info b/modules/dynamic/module.info new file mode 100644 index 00000000..4167df4b --- /dev/null +++ b/modules/dynamic/module.info @@ -0,0 +1,3 @@ +name = Dynamic +description = Dynamic album +version = 1 diff --git a/modules/dynamic/views/admin_dynamic.html.php b/modules/dynamic/views/admin_dynamic.html.php new file mode 100644 index 00000000..cd7ccfea --- /dev/null +++ b/modules/dynamic/views/admin_dynamic.html.php @@ -0,0 +1,5 @@ + +
+

+ +
diff --git a/modules/dynamic/views/dynamic_block.html.php b/modules/dynamic/views/dynamic_block.html.php new file mode 100644 index 00000000..d14c2900 --- /dev/null +++ b/modules/dynamic/views/dynamic_block.html.php @@ -0,0 +1,10 @@ + +
+
    + $text): ?> +
  • + "> +
  • + +
+
-- 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') 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') 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 From f4f6dacf7dd6f96c47db0486ab56c3ab546ba4ac Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 10 Jul 2009 12:41:59 +0800 Subject: Correct the pattern match to compress multiple spaces into a single dot. Signed-off-by: Tim Almdal --- modules/g2_import/helpers/g2_import.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'modules') diff --git a/modules/g2_import/helpers/g2_import.php b/modules/g2_import/helpers/g2_import.php index 66787467..7dd799c8 100644 --- a/modules/g2_import/helpers/g2_import.php +++ b/modules/g2_import/helpers/g2_import.php @@ -626,7 +626,7 @@ class g2_import_Core { // Multiword tags have the space changed to dots.s foreach ($tag_names as $tag_name) { $tags .= (strlen($tags) ? ", " : "") . - tag::add($g3_item, preg_replace('/\s\s+/', '.', $tag_name)); + tag::add($g3_item, preg_replace('/\s+/', '.', $tag_name)); } // Tag operations are idempotent so we don't need to map them. Which is good because we don't -- cgit v1.2.3 From a059eff25d3e4975f39ad04181039d4544e47059 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Fri, 10 Jul 2009 13:11:49 +0800 Subject: Make the tag event handle the iptc keywords consistently with other tag add mechanisms Signed-off-by: Tim Almdal --- modules/tag/helpers/tag_event.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'modules') diff --git a/modules/tag/helpers/tag_event.php b/modules/tag/helpers/tag_event.php index 946326c0..7a170bf8 100644 --- a/modules/tag/helpers/tag_event.php +++ b/modules/tag/helpers/tag_event.php @@ -34,10 +34,13 @@ class tag_event_Core { if (!empty($iptc["2#025"])) { foreach($iptc["2#025"] as $tag) { $tag = str_replace("\0", "", $tag); - if (function_exists("mb_detect_encoding") && mb_detect_encoding($tag) != "UTF-8") { - $tag = utf8_encode($tag); + foreach (preg_split("/[,;]/", $tag) as $word) { + $word = preg_replace('/\s+/', '.', trim($word)); + if (function_exists("mb_detect_encoding") && mb_detect_encoding($word) != "UTF-8") { + $word = utf8_encode($word); + } + $tags[$word] = 1; } - $tags[$tag] = 1; } } } -- cgit v1.2.3