]> git.sur5r.net Git - contagged/commitdiff
weighted tagcloud
authorAndreas Gohr <gohr@cosmocode.de>
Mon, 11 Sep 2006 12:01:15 +0000 (14:01 +0200)
committerAndreas Gohr <gohr@cosmocode.de>
Mon, 11 Sep 2006 12:01:15 +0000 (14:01 +0200)
darcs-hash:20060911120115-6e07b-de95c8d8d3abb9e2334ee4971aab4c26b94ab4f1.gz

README
VERSION
tags.php
templates/style.css

diff --git a/README b/README
index 4d3cee7e91bd9e7ff60d44c0f6da62eca6967b03..d37c79668fc95542068e25f9e3b04a7dbc664794 100644 (file)
--- a/README
+++ b/README
@@ -11,8 +11,8 @@ You need to have a running LDAP Server with some users (objectClass=posixUser)
 in it. It is important that you already have these users because LDAPab uses
 them to authenticate.
 
-You need a webserver (peferable Apache) with PHP4. PHP4 needs to be compiled
-with LDAP support (compiled in or as extension)
+You need a webserver (peferable Apache) with PHP (4.3 or higher). PHP needs to
+be compiled with LDAP support (compiled in or as extension)
 
 === SETUP LDAPab ===
 
diff --git a/VERSION b/VERSION
index be586341736ee60d6ca2be0f3762a307e8fe79f9..bd73f47072b1fe4b9914ec14a7f6d47fcc8f816a 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.3
+0.4
index bd26632768980a60d296f070d20f45e91b52bbad..443ed67cd8271ff8539ef4263aadfe91fb9a8a0a 100644 (file)
--- a/tags.php
+++ b/tags.php
     global $conf;
     global $LDAP_CON;
     if(!$conf['extended']) return;
-    
+
     $result = ldap_queryabooks('(objectClass=contactPerson)','marker');
 
     $max = 0;
+    $min = 999999999;
     $tags = array();
     foreach ($result as $entry){
       if(!empty($entry['marker']) && count($entry['marker'])){
           if (empty($tags[$marker])) { $tags[$marker]=0; }
           $tags[$marker] += 1;
           if($tags[$marker] > $max) $max = $tags[$marker];
+          if($tags[$marker] < $min) $min = $tags[$marker];
         }
       }
     }
     ksort($tags);
+    tag_cloud_weight(&$tags,$min,$max,6);
 
     $out = '';
     foreach($tags as $tag => $cnt){
-      $pct = round($cnt * 20 / $max); // percents from 0 to 20
-
-      $out .= '<a href="index.php?marker='.rawurlencode($tag).'" class="tc'.$pct.'">';
+      $out .= '<a href="index.php?marker='.rawurlencode($tag).'" class="cloud_'.$cnt.'">';
       $out .= htmlspecialchars($tag).'</a> ';
     }
 
     return $out;
   }
 
-?>
+  /**
+   * Calculate weights for a nicer tagcloud distribution
+   */
+  function tag_cloud_weight(&$tags,$min,$max,$levels){
+    // calculate tresholds
+    $tresholds = array();
+    for($i=0; $i<=$levels; $i++){
+        $tresholds[$i] = pow($max - $min + 1, $i/$levels);
+    }
+
+    // assign weights
+    foreach($tags as $tag => $cnt){
+        foreach($tresholds as $tresh => $val){
+            if($cnt <= $val){
+                $tags[$tag] = $tresh;
+                break;
+            }
+            $tags[$tag] = $levels;
+        }
+    }
+  }
+
+
index b0f4a58188d4eec94f5f49b74a7088e60afe88eb..60347996ab62ba0fd4fa44240c43ce9859237722 100644 (file)
@@ -54,7 +54,7 @@ td    {background-color:#66CCFF:margin:3px}
               margin:2px;
               font-family:Lucida,Helvetica,Verdana,Arial,Sans-Serif;
               font-size: 12px;}
-               
+
 .photo {
   margin-top: 1em;
   border-width:1px;
@@ -140,27 +140,13 @@ h1 img {
 }
 
 /* TagCloud */
-a.tc0  { font-size: 80%; }
-a.tc1  { font-size: 100%; }
-a.tc2  { font-size: 120%; }
-a.tc3  { font-size: 130%; }
-a.tc4  { font-size: 140%; }
-a.tc5  { font-size: 150%; }
-a.tc6  { font-size: 160%; }
-a.tc7  { font-size: 170%; }
-a.tc8  { font-size: 180%; }
-a.tc9  { font-size: 190%; }
-a.tc10 { font-size: 200%; }
-a.tc11 { font-size: 210%; }
-a.tc12 { font-size: 220%; }
-a.tc13 { font-size: 230%; }
-a.tc14 { font-size: 240%; }
-a.tc15 { font-size: 250%; }
-a.tc16 { font-size: 260%; }
-a.tc17 { font-size: 270%; }
-a.tc18 { font-size: 280%; }
-a.tc19 { font-size: 290%; }
-a.tc20 { font-size: 300%; }
+a.cloud_0 {font-size: 90%; }
+a.cloud_1 {font-size: 110%; }
+a.cloud_2 {font-size: 140%; }
+a.cloud_3 {font-size: 150%; }
+a.cloud_4 {font-size: 160%; }
+a.cloud_5 {font-size: 180%; }
+a.cloud_6 {font-size: 200%; }
 
 a.tag {
   background: url(../pix/tag_blue.png) left center no-repeat;