diff --git a/3.0/modules/tag_cloud_page/controllers/tag_cloud_page.php b/3.0/modules/tag_cloud_page/controllers/tag_cloud_page.php
new file mode 100644
index 00000000..2fc045df
--- /dev/null
+++ b/3.0/modules/tag_cloud_page/controllers/tag_cloud_page.php
@@ -0,0 +1,66 @@
+content = new View("tag_cloud_page_cloud.html");
+ $template->content->title = t("Tag Cloud");
+
+ // If the tag cloud module is active, load its settings from the database.
+ if (module::is_active("tag_cloud")) {
+ $options = array();
+ foreach (array("tagcolor", "background_color", "mouseover", "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 "mouseover":
+ $options["hicolor"] = $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;
+ }
+ }
+ }
+ $template->content->options = $options;
+ }
+
+ // Display the page.
+ print $template;
+ }
+}
diff --git a/3.0/modules/tag_cloud_page/css/tag_cloud_page.css b/3.0/modules/tag_cloud_page/css/tag_cloud_page.css
new file mode 100644
index 00000000..1eacad23
--- /dev/null
+++ b/3.0/modules/tag_cloud_page/css/tag_cloud_page.css
@@ -0,0 +1,73 @@
+/* Tag cloud page ~~~~~~~~~~~~~~~~~~~~~~~ */
+
+#g-tag-cloud-page ul {
+ font-size: 1.2em;
+ text-align: justify;
+}
+
+#g-tag-cloud-page ul li {
+ display: inline;
+ line-height: 1.5em;
+ text-align: justify;
+}
+
+#g-tag-cloud-page ul li a {
+ text-decoration: none;
+}
+
+#g-tag-cloud-page ul li span {
+ display: none;
+}
+
+#g-tag-cloud-page ul li.size0 a {
+ color: #9cf;
+ font-size: 70%;
+ font-weight: 100;
+}
+
+#g-tag-cloud-page ul li.size1 a {
+ color: #9cf;
+ font-size: 80%;
+ font-weight: 100;
+}
+
+#g-tag-cloud-page ul li.size2 a {
+ color: #69f;
+ font-size: 90%;
+ font-weight: 300;
+}
+
+#g-tag-cloud-page ul li.size3 a {
+ color: #69c;
+ font-size: 100%;
+ font-weight: 500;
+}
+
+#g-tag-cloud-page ul li.size4 a {
+ color: #369;
+ font-size: 110%;
+ font-weight: 700;
+}
+
+#g-tag-cloud-page ul li.size5 a {
+ color: #0e2b52;
+ font-size: 120%;
+ font-weight: 900;
+}
+
+#g-tag-cloud-page ul li.size6 a {
+ color: #0e2b52;
+ font-size: 130%;
+ font-weight: 900;
+}
+
+#g-tag-cloud-page ul li.size7 a {
+ color: #0e2b52;
+ font-size: 140%;
+ font-weight: 900;
+}
+
+#g-tag-cloud-page ul li a:hover {
+ color: #f30;
+ text-decoration: underline;
+}
diff --git a/3.0/modules/tag_cloud_page/helpers/tag_cloud_page_block.php b/3.0/modules/tag_cloud_page/helpers/tag_cloud_page_block.php
new file mode 100644
index 00000000..4ac5278b
--- /dev/null
+++ b/3.0/modules/tag_cloud_page/helpers/tag_cloud_page_block.php
@@ -0,0 +1,40 @@
+ t("Tag Cloud Page Link"));
+ }
+
+ static function get($block_id, $theme) {
+ // Generate the sidebar block for linking to the tag cloud page.
+ $block = "";
+ switch ($block_id) {
+ case "tag_cloud_page":
+ $block = new Block();
+ $block->css_id = "g-tag-cloud-page";
+ $block->title = t("Tag Cloud");
+ $block->content = new View("tag_cloud_page_block.html");
+
+ break;
+ }
+ return $block;
+ }
+}
diff --git a/3.0/modules/tag_cloud_page/helpers/tag_cloud_page_theme.php b/3.0/modules/tag_cloud_page/helpers/tag_cloud_page_theme.php
new file mode 100644
index 00000000..ede2d9f3
--- /dev/null
+++ b/3.0/modules/tag_cloud_page/helpers/tag_cloud_page_theme.php
@@ -0,0 +1,30 @@
+script("tag_cloud_page.js");
+ }
+
+ // Load the tag cloud page's css code.
+ return $theme->css("tag_cloud_page.css");
+ }
+}
diff --git a/3.0/modules/tag_cloud_page/js/tag_cloud_page.js b/3.0/modules/tag_cloud_page/js/tag_cloud_page.js
new file mode 100644
index 00000000..66d1ddab
--- /dev/null
+++ b/3.0/modules/tag_cloud_page/js/tag_cloud_page.js
@@ -0,0 +1,89 @@
+(function($) {
+ $.widget("ui.gallery_tag_cloud_page", {
+ _init: function() {
+ var self = this;
+ self._set_tag_cloud();
+ this._ajax_form();
+ this._autocomplete();
+ },
+
+ _autocomplete: function() {
+ var url = $("#g-tag-cloud-page-animation").attr("ref") + "/autocomplete";
+ $("#g-add-tag-form input:text").autocomplete(
+ url, {
+ max: 30,
+ multiple: true,
+ multipleSeparator: ',',
+ cacheLength: 1}
+ );
+ },
+
+ _ajax_form: function() {
+ var self = this;
+ var form = $("#g-add-tag-form");
+ form.ajaxForm({
+ dataType: "json",
+ success: function(data) {
+ if (data.result == "success") {
+ $.get($("#g-tag-cloud-page-animation").attr("ref"), function(data, textStatus) {
+ $("#g-tag-cloud-movie-page").remove();
+ $("#g-tag-cloud-page-animation").append("
" + data + "
");
+ self._set_tag_cloud();
+ });
+ }
+ form.resetForm();
+ $("#g-add-tag-form :text").blur();
+ }
+ });
+ },
+
+ _set_tag_cloud: function() {
+ var self = this;
+ var taglist = $("#g-tag-cloud-page-animation a");
+
+ if (taglist.length == 0) {
+ return;
+ }
+ var width = $("#g-tag-cloud-page-animation").width();
+ var tags = document.createElement("tags");
+ taglist.each(function(i) {
+ var addr = $(this).clone();
+ $(addr).attr("style", "font-size: 14pt;");
+ $(tags).append(addr);
+ });
+
+ var flashvars = {
+ tcolor: self.options.tcolor,
+ tcolor2: self.options.tcolor2,
+ mode: "tags",
+ distr: self.options.distr,
+ tspeed: self.options.tspeed,
+ hicolor: self.options.hicolor,
+ tagcloud: escape("" + $(tags).html() + "").toLowerCase()
+ };
+ var params = {
+ bgcolor: self.options.bgColor,
+ wmode: self.options.wmode,
+ allowscriptaccess: self.options.scriptAccess
+ };
+
+ swfobject.embedSWF(self.options.movie, "g-tag-cloud-movie-page", width, .60 * width, "9", false,
+ flashvars, params);
+ }
+ });
+
+ $.extend($.ui.gallery_tag_cloud_page, {
+ defaults: {
+ bgColor: "0xFFFFFF",
+ wmode: "transparent",
+ scriptAccess: "always",
+ tcolor: "0x333333",
+ tcolor2: "0x009900",
+ hicolor: "0x000000",
+ tspeed: "100",
+ distr: "true",
+ mode: "tag"
+ }
+ });
+
+})(jQuery);
diff --git a/3.0/modules/tag_cloud_page/module.info b/3.0/modules/tag_cloud_page/module.info
new file mode 100644
index 00000000..a6a83c7d
--- /dev/null
+++ b/3.0/modules/tag_cloud_page/module.info
@@ -0,0 +1,3 @@
+name = "Tag Cloud Page"
+description = "Displays a tag cloud of all tags used in the Gallery on a seperate page."
+version = 1
diff --git a/3.0/modules/tag_cloud_page/views/tag_cloud_page_block.html.php b/3.0/modules/tag_cloud_page/views/tag_cloud_page_block.html.php
new file mode 100644
index 00000000..46fd70ea
--- /dev/null
+++ b/3.0/modules/tag_cloud_page/views/tag_cloud_page_block.html.php
@@ -0,0 +1,2 @@
+
+">View cloud
diff --git a/3.0/modules/tag_cloud_page/views/tag_cloud_page_cloud.html.php b/3.0/modules/tag_cloud_page/views/tag_cloud_page_cloud.html.php
new file mode 100644
index 00000000..acd31ed4
--- /dev/null
+++ b/3.0/modules/tag_cloud_page/views/tag_cloud_page_cloud.html.php
@@ -0,0 +1,35 @@
+
+
+
+
+ if (module::is_active("tag_cloud")) { ?>
+
+
+
">
+
+ = tag::cloud(ORM::factory("tag")->count_all()); ?>
+
+
+
+
+ } else { ?>
+
+ = tag::cloud(ORM::factory("tag")->count_all()); ?>
+
+ } ?>
+
+= $theme->dynamic_bottom() ?>
diff --git a/3.1/modules/tag_cloud_page/controllers/tag_cloud_page.php b/3.1/modules/tag_cloud_page/controllers/tag_cloud_page.php
new file mode 100644
index 00000000..2fc045df
--- /dev/null
+++ b/3.1/modules/tag_cloud_page/controllers/tag_cloud_page.php
@@ -0,0 +1,66 @@
+content = new View("tag_cloud_page_cloud.html");
+ $template->content->title = t("Tag Cloud");
+
+ // If the tag cloud module is active, load its settings from the database.
+ if (module::is_active("tag_cloud")) {
+ $options = array();
+ foreach (array("tagcolor", "background_color", "mouseover", "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 "mouseover":
+ $options["hicolor"] = $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;
+ }
+ }
+ }
+ $template->content->options = $options;
+ }
+
+ // Display the page.
+ print $template;
+ }
+}
diff --git a/3.1/modules/tag_cloud_page/css/tag_cloud_page.css b/3.1/modules/tag_cloud_page/css/tag_cloud_page.css
new file mode 100644
index 00000000..1eacad23
--- /dev/null
+++ b/3.1/modules/tag_cloud_page/css/tag_cloud_page.css
@@ -0,0 +1,73 @@
+/* Tag cloud page ~~~~~~~~~~~~~~~~~~~~~~~ */
+
+#g-tag-cloud-page ul {
+ font-size: 1.2em;
+ text-align: justify;
+}
+
+#g-tag-cloud-page ul li {
+ display: inline;
+ line-height: 1.5em;
+ text-align: justify;
+}
+
+#g-tag-cloud-page ul li a {
+ text-decoration: none;
+}
+
+#g-tag-cloud-page ul li span {
+ display: none;
+}
+
+#g-tag-cloud-page ul li.size0 a {
+ color: #9cf;
+ font-size: 70%;
+ font-weight: 100;
+}
+
+#g-tag-cloud-page ul li.size1 a {
+ color: #9cf;
+ font-size: 80%;
+ font-weight: 100;
+}
+
+#g-tag-cloud-page ul li.size2 a {
+ color: #69f;
+ font-size: 90%;
+ font-weight: 300;
+}
+
+#g-tag-cloud-page ul li.size3 a {
+ color: #69c;
+ font-size: 100%;
+ font-weight: 500;
+}
+
+#g-tag-cloud-page ul li.size4 a {
+ color: #369;
+ font-size: 110%;
+ font-weight: 700;
+}
+
+#g-tag-cloud-page ul li.size5 a {
+ color: #0e2b52;
+ font-size: 120%;
+ font-weight: 900;
+}
+
+#g-tag-cloud-page ul li.size6 a {
+ color: #0e2b52;
+ font-size: 130%;
+ font-weight: 900;
+}
+
+#g-tag-cloud-page ul li.size7 a {
+ color: #0e2b52;
+ font-size: 140%;
+ font-weight: 900;
+}
+
+#g-tag-cloud-page ul li a:hover {
+ color: #f30;
+ text-decoration: underline;
+}
diff --git a/3.1/modules/tag_cloud_page/helpers/tag_cloud_page_block.php b/3.1/modules/tag_cloud_page/helpers/tag_cloud_page_block.php
new file mode 100644
index 00000000..4ac5278b
--- /dev/null
+++ b/3.1/modules/tag_cloud_page/helpers/tag_cloud_page_block.php
@@ -0,0 +1,40 @@
+ t("Tag Cloud Page Link"));
+ }
+
+ static function get($block_id, $theme) {
+ // Generate the sidebar block for linking to the tag cloud page.
+ $block = "";
+ switch ($block_id) {
+ case "tag_cloud_page":
+ $block = new Block();
+ $block->css_id = "g-tag-cloud-page";
+ $block->title = t("Tag Cloud");
+ $block->content = new View("tag_cloud_page_block.html");
+
+ break;
+ }
+ return $block;
+ }
+}
diff --git a/3.1/modules/tag_cloud_page/helpers/tag_cloud_page_theme.php b/3.1/modules/tag_cloud_page/helpers/tag_cloud_page_theme.php
new file mode 100644
index 00000000..ede2d9f3
--- /dev/null
+++ b/3.1/modules/tag_cloud_page/helpers/tag_cloud_page_theme.php
@@ -0,0 +1,30 @@
+script("tag_cloud_page.js");
+ }
+
+ // Load the tag cloud page's css code.
+ return $theme->css("tag_cloud_page.css");
+ }
+}
diff --git a/3.1/modules/tag_cloud_page/js/tag_cloud_page.js b/3.1/modules/tag_cloud_page/js/tag_cloud_page.js
new file mode 100644
index 00000000..66d1ddab
--- /dev/null
+++ b/3.1/modules/tag_cloud_page/js/tag_cloud_page.js
@@ -0,0 +1,89 @@
+(function($) {
+ $.widget("ui.gallery_tag_cloud_page", {
+ _init: function() {
+ var self = this;
+ self._set_tag_cloud();
+ this._ajax_form();
+ this._autocomplete();
+ },
+
+ _autocomplete: function() {
+ var url = $("#g-tag-cloud-page-animation").attr("ref") + "/autocomplete";
+ $("#g-add-tag-form input:text").autocomplete(
+ url, {
+ max: 30,
+ multiple: true,
+ multipleSeparator: ',',
+ cacheLength: 1}
+ );
+ },
+
+ _ajax_form: function() {
+ var self = this;
+ var form = $("#g-add-tag-form");
+ form.ajaxForm({
+ dataType: "json",
+ success: function(data) {
+ if (data.result == "success") {
+ $.get($("#g-tag-cloud-page-animation").attr("ref"), function(data, textStatus) {
+ $("#g-tag-cloud-movie-page").remove();
+ $("#g-tag-cloud-page-animation").append("" + data + "
");
+ self._set_tag_cloud();
+ });
+ }
+ form.resetForm();
+ $("#g-add-tag-form :text").blur();
+ }
+ });
+ },
+
+ _set_tag_cloud: function() {
+ var self = this;
+ var taglist = $("#g-tag-cloud-page-animation a");
+
+ if (taglist.length == 0) {
+ return;
+ }
+ var width = $("#g-tag-cloud-page-animation").width();
+ var tags = document.createElement("tags");
+ taglist.each(function(i) {
+ var addr = $(this).clone();
+ $(addr).attr("style", "font-size: 14pt;");
+ $(tags).append(addr);
+ });
+
+ var flashvars = {
+ tcolor: self.options.tcolor,
+ tcolor2: self.options.tcolor2,
+ mode: "tags",
+ distr: self.options.distr,
+ tspeed: self.options.tspeed,
+ hicolor: self.options.hicolor,
+ tagcloud: escape("" + $(tags).html() + "").toLowerCase()
+ };
+ var params = {
+ bgcolor: self.options.bgColor,
+ wmode: self.options.wmode,
+ allowscriptaccess: self.options.scriptAccess
+ };
+
+ swfobject.embedSWF(self.options.movie, "g-tag-cloud-movie-page", width, .60 * width, "9", false,
+ flashvars, params);
+ }
+ });
+
+ $.extend($.ui.gallery_tag_cloud_page, {
+ defaults: {
+ bgColor: "0xFFFFFF",
+ wmode: "transparent",
+ scriptAccess: "always",
+ tcolor: "0x333333",
+ tcolor2: "0x009900",
+ hicolor: "0x000000",
+ tspeed: "100",
+ distr: "true",
+ mode: "tag"
+ }
+ });
+
+})(jQuery);
diff --git a/3.1/modules/tag_cloud_page/module.info b/3.1/modules/tag_cloud_page/module.info
new file mode 100644
index 00000000..a6a83c7d
--- /dev/null
+++ b/3.1/modules/tag_cloud_page/module.info
@@ -0,0 +1,3 @@
+name = "Tag Cloud Page"
+description = "Displays a tag cloud of all tags used in the Gallery on a seperate page."
+version = 1
diff --git a/3.1/modules/tag_cloud_page/views/tag_cloud_page_block.html.php b/3.1/modules/tag_cloud_page/views/tag_cloud_page_block.html.php
new file mode 100644
index 00000000..46fd70ea
--- /dev/null
+++ b/3.1/modules/tag_cloud_page/views/tag_cloud_page_block.html.php
@@ -0,0 +1,2 @@
+
+">View cloud
diff --git a/3.1/modules/tag_cloud_page/views/tag_cloud_page_cloud.html.php b/3.1/modules/tag_cloud_page/views/tag_cloud_page_cloud.html.php
new file mode 100644
index 00000000..acd31ed4
--- /dev/null
+++ b/3.1/modules/tag_cloud_page/views/tag_cloud_page_cloud.html.php
@@ -0,0 +1,35 @@
+
+
+
+
+ if (module::is_active("tag_cloud")) { ?>
+
+
+
">
+
+ = tag::cloud(ORM::factory("tag")->count_all()); ?>
+
+
+
+
+ } else { ?>
+
+ = tag::cloud(ORM::factory("tag")->count_all()); ?>
+
+ } ?>
+
+= $theme->dynamic_bottom() ?>