diff --git a/ext/tag_editcloud/main.php b/ext/tag_editcloud/main.php
index 233dcf68..0695f1a2 100644
--- a/ext/tag_editcloud/main.php
+++ b/ext/tag_editcloud/main.php
@@ -2,31 +2,21 @@
/*
* Name: Tag EditCloud
* Author: AtomicDryad
+ * Contributors:
+ * Schizius (Relevance Sort, Category Integration, Cleanup)
* Description: Add or remove tags to the editor via clicking.
*/
/* Todo:
- * Be less kludgy
- * $cfgstub->board prefs
- * toggle sorting method via javascript || usepref(todo2: port userpref)
- * colorize used tags in cloud || always show used tags in front of cloud
+ * usepref(todo2: port userpref)
* theme junk
*/
class TagEditCloud extends Extension {
public function onImageInfoBoxBuilding(ImageInfoBoxBuildingEvent $event) {
global $config;
- 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(!$config->get_bool("tageditcloud_disable") && $this->can_tag($event->image)) {
+ $event->add_part($this->build_tag_map($event->image),40);
}
}
@@ -38,10 +28,11 @@ class TagEditCloud extends Extension {
$config->set_default_int("tageditcloud_minusage",2);
$config->set_default_int("tageditcloud_defcount",40);
$config->set_default_int("tageditcloud_maxcount",4096);
+ $config->set_default_string("tageditcloud_ignoretags",'tagme');
}
public function onSetupBuilding(SetupBuildingEvent $event) {
- $sort_by = array('Alphabetical'=>'a','Popularity'=>'p');
+ $sort_by = array('Alphabetical'=>'a','Popularity'=>'p','Relevance'=>'r');
$sb = new SetupBlock("Tag Edit Cloud");
$sb->add_bool_option("tageditcloud_disable", "Disable Tag Selection Cloud: ");
@@ -49,84 +40,117 @@ class TagEditCloud extends Extension {
$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_label(" times.
Popularity/Relevance 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.");
+ $sb->add_label("
Relevance sort:
Ignore tags (space separated): ");
+ $sb->add_text_option("tageditcloud_ignoretags");
$event->panel->add_block($sb);
}
- private function tag_link($tag) {
- $u_tag = url_escape($tag);
- return make_link("post/list/$u_tag/1");
- }
-///// build_tag_map: output cloud of clickable tags
-// build_tag_map($image|false, $defcount, $maxcount|false) -- taglist sorted by usage, displaying $defcount by default, up to $maxcount via toggle.
-// build_tag_map($image|false, $minusage|false) -- taglist sorted by alpha, only showing tags with usage >= $minusage
+ private function build_tag_map($image) {
+ global $database, $config;
- private function build_tag_map($image,$defcount,$maxcount) { //
- global $database,$config;
- $html="";$cloud="";$precloud="";
- $itags=Array();
- $tags_min=1;
- $alphasort=false;
- $usedfirst=$config->get_bool("tageditcloud_usedfirst");
+ $html = "";
+ $cloud = "";
+ $precloud = "";
+ $postcloud = "";
- if(!is_int($defcount)) $defcount=20;
- if(!is_int($maxcount)) { // Derp this is pretty cheesy.
- $maxcount=4096; // Hurrrr
- $tags_min=$defcount;
- $alphasort=true;
- }
+ $sort_method = $config->get_string("tageditcloud_sort");
+ $tags_min = $config->get_int("tageditcloud_minusage");
+ $used_first = $config->get_bool("tageditcloud_usedfirst");
+ $max_count = $config->get_int("tageditcloud_maxcount");
+ $def_count = $config->get_int("tageditcloud_defcount");
- if ((gettype($image) == 'object') && (isset($image->tag_array)) && ($itags=$image->tag_array)) $itags=array_fill_keys(array_values($itags),true);
+ $ignore_tags = Tag::explode($config->get_string("tageditcloud_ignoretags"));
- $tag_data = $database->get_all(" SELECT tag, FLOOR(LOG(2.7, LOG(2.7, count - ? + 1)+1)*1.5*100)/100 AS scaled, count
- FROM tags WHERE count >= ? ORDER BY ".
- (!$alphasort ? "count DESC":"tag").
- " limit $maxcount",
- array($tags_min,$tags_min)
- );
-
- $counter=1;
- foreach($tag_data as $row) {
- if((!$alphasort)&&($counter==$defcount)) $cloud .= "
'.var_export($itags,true).''; - return "