From 03e78bd19f045aee7d9c304f1991f479c99dce7c Mon Sep 17 00:00:00 2001
From: Justin Brewer <madoushi90@gmail.com>
Date: Wed, 7 Aug 2013 15:58:58 -0500
Subject: [PATCH] Tag Category integration

---
 ext/tag_editcloud/main.php  | 31 +++++++++++++++++++++++++++----
 ext/tag_editcloud/script.js | 17 ++++++-----------
 2 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/ext/tag_editcloud/main.php b/ext/tag_editcloud/main.php
index 56a5ec51..a1e790d0 100644
--- a/ext/tag_editcloud/main.php
+++ b/ext/tag_editcloud/main.php
@@ -71,6 +71,14 @@ class TagEditCloud extends Extension {
 
 		$ignore_tags = explode(' ',$config->get_string("tageditcloud_ignoretags"));
 
+		if(class_exists("TagCategories")){
+			$categories = $database->get_all("SELECT category, color FROM image_tag_categories");
+			$cat_color = array();
+			foreach($categories as $row){
+				$cat_color[$row['category']] = $row['color'];
+			}
+		}
+
 		switch($sort_method){
 		case 'a':
 		case 'p':
@@ -93,19 +101,34 @@ class TagEditCloud extends Extension {
 				$cloud .= "<div id='tagcloud_extra' style='display: none;'>\n";
 			}
 
-			$h_tag = html_escape($row['tag']);
+			if(class_exists("TagCategories")){
+				$full_tag = $row['tag'];
+				$tc = explode(':',$full_tag);
+				if(isset($tc[1]) && isset($cat_color[$tc[0]])){
+					$h_tag = html_escape($tc[1]);
+					$color = '; color:'.$cat_color[$tc[0]];
+				} else {
+					$h_tag = html_escape($full_tag);
+					$color = '';
+				}
+			} else {
+				$full_tag = $row['tag'];
+				$h_tag = html_escape($full_tag);
+				$color = '';
+			}
+
 			$size = sprintf("%.2f", max($row['scaled'],0.5));
 			
 			if(array_search($row['tag'],$image->tag_array) !== FALSE) {
 				if($used_first) {
-					$precloud .= "&nbsp;<span onclick='tageditcloud_toggle_tag(this)' class='tag-selected' style='font-size: ${size}em' title='${row['count']}'>$h_tag</span>&nbsp;\n";
+					$precloud .= "&nbsp;<span onclick='tageditcloud_toggle_tag(this,\"$full_tag\")' class='tag-selected' style='font-size: ${size}em$color' title='${row['count']}'>$h_tag</span>&nbsp;\n";
 				} else {
 					$counter++;
-					$cloud .= "&nbsp;<span onclick='tageditcloud_toggle_tag(this)' class='tag-selected' style='font-size: ${size}em' title='${row['count']}'>$h_tag</span>&nbsp;\n";
+					$cloud .= "&nbsp;<span onclick='tageditcloud_toggle_tag(this,\"$full_tag\")' class='tag-selected' style='font-size: ${size}em$color' title='${row['count']}'>$h_tag</span>&nbsp;\n";
 				}
 			} else {
 				$counter++;
-				$cloud .= "&nbsp;<span onclick='tageditcloud_toggle_tag(this)' style='font-size: ${size}em' title='${row['count']}'>$h_tag</span>&nbsp;\n";
+				$cloud .= "&nbsp;<span onclick='tageditcloud_toggle_tag(this,\"$full_tag\")' style='font-size: ${size}em$color' title='${row['count']}'>$h_tag</span>&nbsp;\n";
 			}
 		}
 
diff --git a/ext/tag_editcloud/script.js b/ext/tag_editcloud/script.js
index f7c84d94..ae4d8eb1 100644
--- a/ext/tag_editcloud/script.js
+++ b/ext/tag_editcloud/script.js
@@ -29,23 +29,18 @@ function tageditcloud_toggle_extra(hide) {
 	hide.innerHTML = (el.style.display != 'none' ? 'show fewer tags' : hide_text );
 }
 
-function tageditcloud_toggle_tag(ele) {
-    var thisTag = ele.innerHTML;
+function tageditcloud_toggle_tag(ele,fullTag) {
     var taglist = document.getElementById('tag_editor');
     var tags = taglist.value.split(' ');
-    
-    // If tag is already listed, remove it
-    if (tags.editcloud_contains(thisTag)) {
-        tags = tags.editcloud_remove(thisTag);
+
+    if (tags.editcloud_contains(fullTag)) {
+        tags = tags.editcloud_remove(fullTag);
         ele.className = 'tag-unselected';
-        
-    // Otherwise add it
     } else {
-        tags.splice(0, 0, thisTag);
+        tags.splice(0, 0, fullTag);
         ele.className = 'tag-selected';
     }
-     
+
     taglist.value = tags.join(' ');
-    
     document.getElementById('tags').focus();
 }