diff --git a/modules/tag_cloud/controllers/admin_tag_cloud.php b/modules/tag_cloud/controllers/admin_tag_cloud.php new file mode 100644 index 00000000..7b3fa3d6 --- /dev/null +++ b/modules/tag_cloud/controllers/admin_tag_cloud.php @@ -0,0 +1,85 @@ +content = new View("admin_tag_cloud.html"); + $view->content->form = $this->_get_admin_form(); + + print $view; + } + + public function edit() { + access::verify_csrf(); + + $form = $this->_get_admin_form(); + if ($form->validate()) { + $options = $form->tag_cloud_options; + $valid = true; + if (preg_match("/^0x[0-9A-Fa-f]{6}$/", $options->tagcolor->value) == 0) { + $options->tagcolor->add_error("not_valid", 1); + $valid = false; + } + if (preg_match("/^0x[0-9A-Fa-f]{6}$/", $options->background_color->value) == 0) { + $options->background_color->add_error("not_valid", 1); + $valid = false; + } + if ($valid) { + module::set_var("tag_cloud", "tagcolor", $options->tagcolor->value); + module::set_var("tag_cloud", "background_color", $options->background_color->value); + module::set_var("tag_cloud", "transparent", $options->transparent->value); + module::set_var("tag_cloud", "speed", $options->speed->value); + module::set_var("tag_cloud", "distribution", $options->distribution->value); + message::success(t("Tag cloud options updated successfully")); + url::redirect("admin/tag_cloud"); + } + } + + $view = new Admin_View("admin.html"); + $view->content = new View("admin_tag_cloud.html"); + $view->content->form = $form; + + print $view; + } + + private function _get_admin_form() { + $form = new Forge("admin/tag_cloud/edit", "", "post", + array("id" => "gTagCloudAdminForm")); + $group = $form->group("tag_cloud_options")->label(t("Tag Cloud Options")); + $group->input("tagcolor") ->label(t("Tag color")) + ->value(module::get_var("tag_cloud", "tagcolor", "0x333333")) + ->error_message("not_valid", t("The color value must be specified as '0xhhhhhh'")) + ->rules("required|length[8]"); + $group->input("background_color")->label(t("Background color")) + ->value(module::get_var("tag_cloud", "background_color", "0xffffff")) + ->error_message("not_valid", t("The color value must be specified as '0xhhhhhh'")) + ->rules("required|length[8]"); + $group->checkbox("transparent")->label(t("Transparent mode")) + ->checked(module::get_var("tag_cloud", "transparent", 0) == 1); + $group->input("speed")->label(t("Rotation speed")) + ->value(module::get_var("tag_cloud", "speed", "100")) + ->rules("required|valid_numeric|length[1,3]"); + $group->checkbox("distribution")->label(t("Distribute tags evenly")) + ->checked(module::get_var("tag_cloud", "distribution", 1) == 1); + $group->submit("")->value(t("Save")); + + return $form; + } +} diff --git a/modules/tag_cloud/helpers/tag_cloud_block.php b/modules/tag_cloud/helpers/tag_cloud_block.php index 12e7ac94..16f5a50a 100644 --- a/modules/tag_cloud/helpers/tag_cloud_block.php +++ b/modules/tag_cloud/helpers/tag_cloud_block.php @@ -27,11 +27,36 @@ class tag_cloud_block { $block = ""; switch ($block_id) { case "tag_cloud_site": + $options = array(); + foreach (array("tagcolor", "background_color", "transparent", "speed", "distribution") + as $option) { + $value = module::get_var("tag_cloud", $option, null); + if (!empty($value)) { + switch ($option) { + case "tagcolor": + $options["tcolor"] = $value; + break; + case "background_color": + $options["bgColor"] = $value; + break; + case "transparent": + $options["wmode"] = "\"transparent\""; + break; + case "speed": + $options["tspeed"] = $value; + break; + case "distribution": + $options["distr"] = "\"true\""; + break; + } + } + } $block = new Block(); $block->css_id = "gTag3D"; $block->title = t("Tag Cloud"); $block->content = new View("tag_cloud_block.html"); $block->content->cloud = tag::cloud(30); + $block->content->options = $options; if ($theme->item() && $theme->page_type() != "tag" && access::can("edit", $theme->item())) { $controller = new Tags_Controller(); diff --git a/modules/tag_cloud/helpers/tag_cloud_event.php b/modules/tag_cloud/helpers/tag_cloud_event.php new file mode 100644 index 00000000..3a2a30e7 --- /dev/null +++ b/modules/tag_cloud/helpers/tag_cloud_event.php @@ -0,0 +1,28 @@ +get("appearance_menu") + ->append(Menu::factory("link") + ->id("tag_cloud") + ->label(t("Tag Cloud")) + ->url(url::site("admin/tag_cloud"))); + } +} diff --git a/modules/tag_cloud/js/tag_cloud.js b/modules/tag_cloud/js/tag_cloud.js index 243bc1d6..6c268d8f 100644 --- a/modules/tag_cloud/js/tag_cloud.js +++ b/modules/tag_cloud/js/tag_cloud.js @@ -56,7 +56,7 @@ "&distr=" + self.options.distr + "&mode=" + self.options.mode + "&tagcloud=" + escape("" + $(tags).html() + ""); $(object).append("") - .append("") + .append("") .append("") .append("") .append(""); diff --git a/modules/tag_cloud/views/admin_tag_cloud.html.php b/modules/tag_cloud/views/admin_tag_cloud.html.php new file mode 100644 index 00000000..54f28741 --- /dev/null +++ b/modules/tag_cloud/views/admin_tag_cloud.html.php @@ -0,0 +1,7 @@ + +
+

+ +

+ +
diff --git a/modules/tag_cloud/views/tag_cloud_block.html.php b/modules/tag_cloud/views/tag_cloud_block.html.php index 620b62c6..52c61bf6 100644 --- a/modules/tag_cloud/views/tag_cloud_block.html.php +++ b/modules/tag_cloud/views/tag_cloud_block.html.php @@ -2,7 +2,10 @@