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 .= "
$precloud
"; $html .="
$cloud
"; $rem=count($tag_data)-$defcount; -// $script = ""; -// $html.=$script; if((!$alphasort)&&($counter>=$defcount)) $html .= "
[show $rem more tags]"; // $html.='
'.var_export($itags,true).'
'; return "
$html
"; // FIXME: stupidasallhell