diff --git a/contrib/tag_editcloud/main.php b/contrib/tag_editcloud/main.php
index a75cb4fe..95bf9ab4 100644
--- a/contrib/tag_editcloud/main.php
+++ b/contrib/tag_editcloud/main.php
@@ -20,17 +20,46 @@ class TagEditCloud implements Extension {
//if(is_null($this->theme)) $this->theme = get_theme_object($this);
if($event instanceof ImageInfoBoxBuildingEvent) {
- if($this->can_tag($event->image)) {
- $cfgstub_sortbyname=false; // FIXME
- $cfgstub_showtop=40; // Derp
- $cfgstub_minuse=2; // Derp
- if($cfgstub_sortbyname) {
- $event->add_part($this->build_tag_map($event->image,$cfgstub_minuse,false),40);
- } else {
- $event->add_part($this->build_tag_map($event->image,$cfgstub_showtop,4096),40);
+ if(!$config->get_bool("tageditcloud_disable")) {
+ if($this->can_tag($event->image)) {
+ if(!$cfg_minusage=$config->get_int("tageditcloud_minusage")) $cfg_minusage=2;
+ if(!$cfg_defcount=$config->get_int("tageditcloud_defcount")) $cfg_defcount=40;
+ if(!$cfg_maxcount=$config->get_int("tageditcloud_maxcount")) $cfg_maxcount=4096;
+ if($config->get_string("tageditcloud_sort") != "p") {
+ $event->add_part($this->build_tag_map($event->image,$cfg_minusage,false),40);
+ } else {
+ $event->add_part($this->build_tag_map($event->image,$cfg_defcount,$cfg_maxcount),40);
+ }
}
}
}
+
+ if($event instanceof InitExtEvent) {
+ $config->set_default_bool("tageditcloud_disable",false);
+ $config->set_default_bool("tageditcloud_usedfirst",true);
+ $config->set_default_string("tageditcloud_sort",'a');
+ $config->set_default_int("tageditcloud_minusage",2);
+ $config->set_default_int("tageditcloud_defcount",40);
+ $config->set_default_int("tageditcloud_maxcount",4096);
+ }
+
+ if($event instanceof SetupBuildingEvent) {
+ $sort_by = array('Alphabetical'=>'a','Popularity'=>'p');
+
+ $sb = new SetupBlock("Tag Edit Cloud");
+ $sb->add_bool_option("tageditcloud_disable", "Disable Tag Selection Cloud: ");
+ $sb->add_choice_option("tageditcloud_sort", $sort_by, "
Sort the tags by:");
+ $sb->add_bool_option("tageditcloud_usedfirst","
Always show used tags first: ");
+ $sb->add_label("
Alpha sort:
Only show tags used at least ");
+ $sb->add_int_option("tageditcloud_minusage");
+ $sb->add_label(" times.
Popularity sort:
Show ");
+ $sb->add_int_option("tageditcloud_defcount");
+ $sb->add_label(" tags by default.
Show a maximum of ");
+ $sb->add_int_option("tageditcloud_maxcount");
+ $sb->add_label(" tags.");
+
+ $event->panel->add_block($sb);
+ }
}
private function tag_link($tag) {
@@ -42,12 +71,13 @@ class TagEditCloud implements Extension {
// build_tag_map($image|false, $minusage|false) -- taglist sorted by alpha, only showing tags with usage >= $minusage
private function build_tag_map($image,$defcount,$maxcount) { //
-
- global $database;
+ global $database,$config;
$html="";$cloud="";$precloud="";
$itags=Array();
$tags_min=1;
$alphasort=false;
+ $usedfirst=$config->get_bool("tageditcloud_usedfirst");
+
if(!is_int($defcount)) $defcount=20;
if(!is_int($maxcount)) { // Derp this is pretty cheesy.
$maxcount=4096; // Hurrrr
@@ -75,9 +105,14 @@ class TagEditCloud implements Extension {
$usecount=$row['count'];
$link = $this->tag_link($row['tag']);
if($size<0.5) $size = 0.5;
+
if(isset($itags[$row['tag']])) {
-// if($size<0.75) $size = 0.75;
- $precloud .= " $h_tag \n";
+ if($usedfirst) {
+ $precloud .= " $h_tag \n";
+ } else {
+ $counter++;
+ $cloud .= " $h_tag \n";
+ }
} else {
$counter++;
$cloud .= " $h_tag \n";
@@ -86,8 +121,6 @@ class TagEditCloud implements Extension {
if ($precloud != '') $html .= "
'.var_export($itags,true).''; return "