https://www.mediawiki.org/wiki/Special:Code/MediaWiki/115462

Revision: 115462
Author:   fptc
Date:     2012-05-30 14:22:08 +0000 (Wed, 30 May 2012)
Log Message:
-----------
FreqPatternTagCloud: Bugfixes, Support of all attribute types, Make Specialpage 
includable

Modified Paths:
--------------
    trunk/extensions/FreqPatternTagCloud/FreqPatternTagCloud.body.php
    trunk/extensions/FreqPatternTagCloud/freqpatterntagcloud.sql
    trunk/extensions/FreqPatternTagCloud/includes/FrequentPattern.php
    trunk/extensions/FreqPatternTagCloud/includes/TagCloud.php
    
trunk/extensions/FreqPatternTagCloud/includes/computation/FrequentPatternAlgorithm.php
    
trunk/extensions/FreqPatternTagCloud/includes/computation/FrequentPatternApriori.php
    trunk/extensions/FreqPatternTagCloud/javascripts/main.js

Added Paths:
-----------
    trunk/extensions/FreqPatternTagCloud/javascripts/jquery.parseJSON.js

Modified: trunk/extensions/FreqPatternTagCloud/FreqPatternTagCloud.body.php
===================================================================
--- trunk/extensions/FreqPatternTagCloud/FreqPatternTagCloud.body.php   
2012-05-29 20:08:17 UTC (rev 115461)
+++ trunk/extensions/FreqPatternTagCloud/FreqPatternTagCloud.body.php   
2012-05-30 14:22:08 UTC (rev 115462)
@@ -3,7 +3,7 @@
  * Frequent Pattern Tag Cloud Plug-in
  * Special page
  *
- * @author Tobias Beck, University of Heidelberg
+ * @author Tobias Beck (TB), University of Heidelberg
  * @author Andreas Fay, University of Heidelberg
  * @version 1.0
  */
@@ -129,7 +129,8 @@
        public static function getSearchSuggestions( $currentSearchValue ) {
                $dbr = wfGetDB( DB_SLAVE );
 
-               // Get possible attribute values
+               // Get possible attribute values 
+               // TB: Include attribute values from table smw_atts2
                $res = $dbr->query(
                        "(SELECT DISTINCT vals.smw_title AS val, atts.smw_title 
AS att
                                FROM ".$dbr->tableName("smw_ids")." vals, 
".$dbr->tableName("smw_ids")." atts, ".$dbr->tableName("smw_rels2")." rels
@@ -141,8 +142,18 @@
                                AND LENGTH(atts.smw_iw) = 0
                                        AND vals.smw_title LIKE 
'%".mysql_real_escape_string($currentSearchValue)."%'
                                        ORDER BY vals.smw_title
-                                       LIMIT 20) UNION (
-                                       SELECT smw_title AS val, 
'".mysql_real_escape_string(wfMsg("fptc-categoryname"))."' AS att
+                                       LIMIT 14) 
+                               UNION (
+                               SELECT DISTINCT vals.value_xsd AS val, 
atts.smw_title AS att
+                               FROM ".$dbr->tableName("smw_atts2")." AS vals, 
".$dbr->tableName("smw_ids")." AS atts
+                               WHERE vals.p_id = atts.smw_id
+                                       AND atts.smw_namespace = 102
+                                       AND LENGTH(atts.smw_iw) = 0
+                                       AND value_xsd LIKE 
'%".mysql_real_escape_string($currentSearchValue)."%'
+                               ORDER BY value_xsd
+                               LIMIT 14)
+                               UNION (
+                               SELECT smw_title AS val, 
'".mysql_real_escape_string(wfMsg("fptc-categoryname"))."' AS att
                                        FROM ".$dbr->tableName("smw_ids")."
                                        WHERE smw_title LIKE 
'%".mysql_real_escape_string($currentSearchValue)."%'
                                        AND smw_namespace = 14
@@ -247,7 +258,8 @@
 
                        // Context menu
                        $wgOut->addHTML(
-                               '<ul id="fptc_contextMenu" class="contextMenu">
+                                       '<div id="fptc_baseAttribute" 
style="display:none">' . $attribute . '</div>
+                               <ul id="fptc_contextMenu" class="contextMenu">
                                        <li class="browse">
                                                <a href="#browse">' . wfMsg( 
'fptc-context-menu-browse' ) . '</a>
                                        </li>
@@ -284,32 +296,39 @@
        private function printTag( Tag $tag, $attribute ) {
                global $wgOut;
 
-               $wgOut->addHTML(
+               if ($attribute == wfMsg( 'fptc-categoryname' )) {
+                       $wgOut->addHTML(
                        sprintf(
-                               '<div class="fptc_tag" 
style="font-size:%dpx;">%s</div>',
-                               $this->fontSizeMin + ( $this->fontSizeMax - 
$this->fontSizeMin ) * $tag->getRate(),
-                               $attribute == wfMsg( 'fptc-categoryname' )
-                                       ? $wgOut->parseInline(
+                               '<div class="fptc_tag" 
style="font-size:%dpx;">',
+                               $this->fontSizeMin + ( $this->fontSizeMax - 
$this->fontSizeMin ) * $tag->getRate()) .
+                               $this->sandboxParse(
+                                        // $wgOut->parseInline(
                                                sprintf(
                                                        '[[:%s:%s|%s]]',
                                                        self::CATEGORY_PAGE,
                                                        $tag->getValue(),
                                                        $tag->getValue()
                                                )
-                                       )
-                                       : $wgOut->parseInline(
-                                               sprintf(
-                                                       '[[:%s:%s/%s/%s|%s]]',
-                                                       
self::SPECIALPAGE_PREFIX,
-                                                       
self::ATTRIBUTE_VALUE_INDEX_SPECIALPAGE,
-                                                       $attribute,
-                                                       $tag->getValue(),
-                                                       $tag->getValue()
-                                               )
-                                       )
-                       )
-               );
+                                       ) . '</div>');
+               } else {
+                       $wgOut->addHTML(
+                       sprintf('<div class="fptc_tag" 
style="font-size:%dpx;">',
+                               $this->fontSizeMin + ( $this->fontSizeMax - 
$this->fontSizeMin ) * $tag->getRate()) . 
+                               html::element( 'a', array('href' => 
+                                       SpecialPage::getTitleFor( 
self::ATTRIBUTE_VALUE_INDEX_SPECIALPAGE)->getLinkURL(
+                                       array('property' => $attribute, 'value' 
=> $tag->getValue()))), $tag->getValue()) . 
+                               '</div>'
+                       );
+               }
        }
+       
+       private function sandboxParse($wikiText) {
+               global $wgTitle, $wgUser;
+               $myParser = new Parser();
+               $myParserOptions = ParserOptions::newFromUser($wgUser);
+               $result = $myParser->parse($wikiText, $wgTitle, 
$myParserOptions);
+               return $result->getText();
+       }
 
        /**
         * Prints the result of the search for attribute <code>attribute</code> 
to
@@ -343,6 +362,7 @@
                                                                '<a href=' . 
$possibleAttribute . '>' .
                                                                        
$possibleAttribute . '</a>'
                                                        );
+                                                       
                                                        if ( $w < count( 
$proposal->getProposal() ) ) {
                                                                
$wgOut->addHTML( ', ' );
                                                        }

Modified: trunk/extensions/FreqPatternTagCloud/freqpatterntagcloud.sql
===================================================================
--- trunk/extensions/FreqPatternTagCloud/freqpatterntagcloud.sql        
2012-05-29 20:08:17 UTC (rev 115461)
+++ trunk/extensions/FreqPatternTagCloud/freqpatterntagcloud.sql        
2012-05-30 14:22:08 UTC (rev 115462)
@@ -8,7 +8,7 @@
 CREATE INDEX /*i*/p_id ON /*_*/fptc_associationrules (p_id);
 
 CREATE TABLE IF NOT EXISTS /*_*/fptc_items (
-       `o_id` INT(8) NOT NULL,
+       `o_id` varbinary(255) NOT NULL,
        `rule_id` INT NOT NULL,
        `item_order` TINYINT(1) NOT NULL,
        PRIMARY KEY ( `o_id` , `rule_id` )

Modified: trunk/extensions/FreqPatternTagCloud/includes/FrequentPattern.php
===================================================================
--- trunk/extensions/FreqPatternTagCloud/includes/FrequentPattern.php   
2012-05-29 20:08:17 UTC (rev 115461)
+++ trunk/extensions/FreqPatternTagCloud/includes/FrequentPattern.php   
2012-05-30 14:22:08 UTC (rev 115462)
@@ -4,7 +4,7 @@
  * Frequent Pattern Tag Cloud Plug-in
  * Frequent pattern functions
  * 
- * @author Tobias Beck, University of Heidelberg
+ * @author Tobias Beck (TB), University of Heidelberg
  * @author Andreas Fay, University of Heidelberg
  * @version 1.0
  */
@@ -80,6 +80,10 @@
                        $res = $dbr->query("SELECT GROUP_CONCAT(DISTINCT o_id)
                                                FROM 
".$dbr->tableName("smw_rels2")."
                                                WHERE p_id = 
".mysql_real_escape_string($attributeId)."
+                                               GROUP BY p_id
+                                               UNION SELECT 
GROUP_CONCAT(DISTINCT value_xsd)
+                                               FROM 
".$dbr->tableName("smw_atts2")."
+                                               WHERE p_id = 
".mysql_real_escape_string($attributeId)."
                                                GROUP BY p_id");
                }
                $row = $res->fetchRow();
@@ -94,9 +98,15 @@
                                                AND ids.smw_namespace = 14
                                                GROUP BY catlinks.cl_from");
                } else {
+                       // TB: Table smw_rels2 and smw_atts2 are independent 
because s_id appears only in one of both tables at a time
                        $res = $dbr->query("SELECT GROUP_CONCAT(o_id)
                                                FROM 
".$dbr->tableName("smw_rels2")."
                                                WHERE p_id = 
".mysql_real_escape_string($attributeId)."
+                                               GROUP BY s_id
+                                               UNION SELECT 
GROUP_CONCAT(value_xsd)
+                                               FROM 
".$dbr->tableName("smw_atts2")." As a
+                                               INNER JOIN 
".$dbr->tableName("smw_ids")." AS i ON i.smw_id = a.p_id
+                                               WHERE (i.smw_namespace <> 102 
OR length(i.smw_iw) = 0) AND p_id = ".mysql_real_escape_string($attributeId)."
                                                GROUP BY s_id");
                }
                $transactions = array();
@@ -116,12 +126,12 @@
                        
                        foreach ($rule->getAssumption() as $item) {
                                $dbw->query("INSERT INTO 
".$dbw->tableName("fptc_items")." (o_id, rule_id, item_order)
-                                                       VALUES 
(".mysql_real_escape_string($item).", ".mysql_real_escape_string($ruleId).", 
0)");
+                                                       VALUES 
('".mysql_real_escape_string($item)."', ".mysql_real_escape_string($ruleId).", 
0)");
                        }
                        
                        foreach ($rule->getConclusion() as $item) {
                                $dbw->query("INSERT INTO 
".$dbw->tableName("fptc_items")." (o_id, rule_id, item_order)
-                                                       VALUES 
(".mysql_real_escape_string($item).", ".mysql_real_escape_string($ruleId).", 
1)");
+                                                       VALUES 
('".mysql_real_escape_string($item)."', ".mysql_real_escape_string($ruleId).", 
1)");
                        }
                }
                
@@ -166,7 +176,8 @@
                $attributeId = $row[0];
                $res->free();
                
-               // Get id of assumption
+               // Get id of assumption from table smw_ids
+           // TB: Or name of assumtion from table smw_atts2
                if (wfMsg("fptc-categoryname") == $attribute) {
                        $res = $dbr->query("SELECT smw_id
                                                FROM 
".$dbr->tableName("smw_ids")."
@@ -174,11 +185,15 @@
                                                AND smw_namespace = 14
                                                AND LENGTH(smw_iw) = 0");
                } else {
-                       $res = $dbr->query("SELECT smw_id
-                                               FROM 
".$dbr->tableName("smw_ids")."
-                                               WHERE smw_title = 
'".mysql_real_escape_string($assumption)."'
-                                               AND smw_namespace = 0
-                                               AND LENGTH(smw_iw) = 0");
+                       $res = $dbr->query("(SELECT smw_id
+                                                       FROM 
".$dbr->tableName("smw_ids")."
+                                                       WHERE smw_title = 
'".mysql_real_escape_string($assumption)."'
+                                                       AND smw_namespace = 0
+                                                       AND LENGTH(smw_iw) = 0)
+                                               UNION
+                                                       (SELECT a.value_xsd 
FROM ".$dbr->tableName("smw_atts2")." AS a INNER JOIN 
".$dbr->tableName("smw_ids")." AS i ON i.smw_id = a.p_id
+                                                       WHERE (i.smw_namespace 
<> 102 OR length(i.smw_iw) = 0) AND a.value_xsd = 
'".mysql_real_escape_string($assumption)."')
+                                               ORDER BY smw_id desc");
                }       
                $row = $res->fetchRow();
                $assumptionId = $row[0];
@@ -189,18 +204,23 @@
                                        FROM 
".$dbr->tableName("fptc_associationrules")." rules, 
".$dbr->tableName("fptc_items")." items
                                        WHERE rules.rule_id = items.rule_id
                                        AND item_order = 0
-                                       AND o_id = 
".mysql_real_escape_string($assumptionId)."
+                                       AND o_id = 
'".mysql_real_escape_string($assumptionId)."'
                                        AND NOT EXISTS( SELECT 1 FROM 
".$dbr->tableName("fptc_items")." WHERE rule_id = rules.rule_id AND item_order 
= 0 AND o_id != items.o_id )
                                        ORDER BY rule_support DESC, 
rule_confidence DESC");
                $conclusions = array();
                while ($row = $res->fetchRow()) {
                        // Get conclusions
-                       $resItems = $dbr->query("SELECT smw_title
+                       $resItems = $dbr->query("(SELECT smw_title
                                                FROM 
".$dbr->tableName("smw_ids")." ids, ".$dbr->tableName("fptc_items")." items
                                                WHERE ids.smw_id = items.o_id
                                                AND item_order = 1
-                                               AND rule_id = 
".mysql_real_escape_string($row['rule_id']));
-                       
+                                               AND rule_id = 
".mysql_real_escape_string($row['rule_id']).")
+                                               UNION
+                                               (SELECT value_xsd AS smw_title 
FROM ".$dbr->tableName("smw_atts2")." atts2, ".$dbr->tableName("fptc_items")." 
items
+                                               WHERE atts2.value_xsd = 
items.o_id
+                                               AND item_order = 1
+                                               AND rule_id = 
".mysql_real_escape_string($row['rule_id']).")");
+                                               
                        // Only consider rules with single conclusion
                        if ($resItems->numRows() > 1) {
                                continue;
@@ -217,6 +237,7 @@
        
        /**
         * Shows all rules (for debugging purposes)
+        * TB: Attention, attribute types which are saved in table smw_atts2 
are not yet considered here
         *
         * @return void 
         * @throws SQLException 

Modified: trunk/extensions/FreqPatternTagCloud/includes/TagCloud.php
===================================================================
--- trunk/extensions/FreqPatternTagCloud/includes/TagCloud.php  2012-05-29 
20:08:17 UTC (rev 115461)
+++ trunk/extensions/FreqPatternTagCloud/includes/TagCloud.php  2012-05-30 
14:22:08 UTC (rev 115462)
@@ -4,7 +4,7 @@
  * Frequent Pattern Tag Cloud Plug-in
  * TagCloud
  * 
- * @author Tobias Beck, University of Heidelberg
+ * @author Tobias Beck (TB), University of Heidelberg
  * @author Andreas Fay, University of Heidelberg
  * @version 1.0
  */
@@ -94,9 +94,12 @@
                        $res = $dbr->query("SELECT SUM(cat_pages)
                                                FROM 
".$dbr->tableName("category"));
                } else {
-                       $res = $dbr->query("SELECT COUNT(1)
-                                               FROM 
".$dbr->tableName("smw_rels2")."
-                                               WHERE p_id = 
".mysql_real_escape_string($this->_attributeId));
+                       // TB: Select only relevant tags in table smw_atts2 
through JOIN with table smw_ids
+                       $res = $dbr->query("SELECT SUM(num)
+                                               FROM ((SELECT COUNT(1) num FROM 
".$dbr->tableName("smw_rels2")." WHERE p_id = 
".mysql_real_escape_string($this->_attributeId).") 
+                                               UNION (SELECT COUNT(1) num FROM 
".$dbr->tableName("smw_atts2")." AS a
+                                                       INNER JOIN 
".$dbr->tableName("smw_ids")." AS i ON i.smw_id = a.p_id
+                                                       WHERE (i.smw_namespace 
<> 102 OR length(i.smw_iw) = 0) AND p_id = 
".mysql_real_escape_string($this->_attributeId).")) t");
                }
                
                $row = $res->fetchRow();
@@ -116,11 +119,17 @@
                                                AND LENGTH(smw_iw) = 0
                                                ORDER BY smw_title");
                } else {
+                       // TB: Get tags also from table smw_atts2
                        $res = $dbr->query("SELECT smw_id, smw_title, (SELECT 
COUNT(1) FROM ".$dbr->tableName("smw_rels2")." WHERE o_id = smw_id AND p_id = 
".mysql_real_escape_string($this->_attributeId).")/$numValues AS rate
-                                               FROM 
".$dbr->tableName("smw_ids")."
-                                               WHERE smw_namespace = 0
-                                               AND LENGTH(smw_iw) = 0
-                                               AND smw_id <> 
".mysql_real_escape_string($this->_attributeId)."
+                                                       FROM 
".$dbr->tableName("smw_ids")."
+                                                       WHERE smw_namespace = 0
+                                                       AND LENGTH(smw_iw) = 0
+                                                       AND smw_id <> 
".mysql_real_escape_string($this->_attributeId)."
+                                               UNION   
+                                               SELECT 'atts2', a.value_xsd as 
smw_title, (SELECT COUNT(1) FROM ".$dbr->tableName("smw_atts2")." WHERE 
value_xsd = a.value_xsd AND p_id = 
".mysql_real_escape_string($this->_attributeId).")/$numValues AS rate 
+                                                       FROM 
".$dbr->tableName("smw_atts2")." AS a INNER JOIN
+                                                       
".$dbr->tableName("smw_ids")." AS i ON i.smw_id = a.p_id
+                                                       WHERE (i.smw_namespace 
<> 102 OR length(i.smw_iw) = 0) AND p_id = 
".mysql_real_escape_string($this->_attributeId)."
                                                ORDER BY smw_title");
                }
                

Modified: 
trunk/extensions/FreqPatternTagCloud/includes/computation/FrequentPatternAlgorithm.php
===================================================================
--- 
trunk/extensions/FreqPatternTagCloud/includes/computation/FrequentPatternAlgorithm.php
      2012-05-29 20:08:17 UTC (rev 115461)
+++ 
trunk/extensions/FreqPatternTagCloud/includes/computation/FrequentPatternAlgorithm.php
      2012-05-30 14:22:08 UTC (rev 115462)
@@ -26,7 +26,8 @@
                $numerator = 0;
                $denominator = 0;
                foreach ($transactions as $transaction) {
-                       // For each occurrence of the assumption -> increase 
denominator
+                       set_time_limit(0);
+                       // For each occurence of the assumption -> increase 
denominator
                        // If the conclusion occurs too -> increase numerator
                        
                        // Check if transaction contains assumption
@@ -84,7 +85,8 @@
                $count = count($itemset);
                $members = pow(2,$count);
                $powerset = array();
-               for ($i = 0; $i < $members; $i++) {
+               for ($i = 0; $i < $members; $i++) {
+                       set_time_limit(0);
                $b = sprintf("%0".$count."b",$i);
                $out = array();
                for ($j = 0; $j < $count; $j++) {
@@ -122,6 +124,7 @@
                        
                        // Generate subset A of X where X is frequent itemset 
such that A => (X-A)
                        foreach ($this->computePowerSet($itemset->getItems()) 
as $subsetOfX) {
+                               set_time_limit(0);
                                if (count($subsetOfX) == 0 || $subsetOfX == 
$itemset->getItems()) {
                                        // Ignore empty set and identity
                                        continue;

Modified: 
trunk/extensions/FreqPatternTagCloud/includes/computation/FrequentPatternApriori.php
===================================================================
--- 
trunk/extensions/FreqPatternTagCloud/includes/computation/FrequentPatternApriori.php
        2012-05-29 20:08:17 UTC (rev 115461)
+++ 
trunk/extensions/FreqPatternTagCloud/includes/computation/FrequentPatternApriori.php
        2012-05-30 14:22:08 UTC (rev 115462)
@@ -21,55 +21,58 @@
                        return array(); 
                }
                else {
-               // Get all 1-frequent itemsets
-               foreach ($items as $item) {
-                       $freq = 0;
-                       foreach ($transactions as $transaction) {
-                               if (in_array($item, $transaction)) {
-                                       $freq++;
-                               }
-                       }
-                       
-                       if ((float)$freq / $numTransactions >= $minSupport) {
-                               $allFrequentItemsets[] = new 
FrequentItemset(array($item), (float)$freq / $numTransactions);
-                       }
-               }
-               
-               // Now compute all k-frequent itemsets
-               $freqK_1Itemsets = $allFrequentItemsets;
-               while (count($freqK_1Itemsets) > 0) {
-                       $freqKItemsets = 
$this->generateCandidates($freqK_1Itemsets);
-                       
-                       $freqK_1Itemsets = array();
-                       
-                       // Check support for each candidate
-                       foreach ($freqKItemsets as $freqItemset) {
+                       // Get all 1-frequent itemsets
+                       foreach ($items as $item) {
+                               set_time_limit(0);
                                $freq = 0;
                                foreach ($transactions as $transaction) {
-                                       $inArray = true;
-                                       foreach ($freqItemset->getItems() as 
$item) {
-                                               if (!in_array($item, 
$transaction)) {
-                                                       $inArray = false;
-                                                       break;
-                                               }
-                                       }
-                                       
-                                       if ($inArray) {
+                                       if (in_array($item, $transaction)) {
                                                $freq++;
                                        }
                                }
                                
                                if ((float)$freq / $numTransactions >= 
$minSupport) {
-                                       $freqItemset->setSupport((float)$freq / 
$numTransactions);
-                                       $freqK_1Itemsets[] = 
$allFrequentItemsets[] = $freqItemset;
-                               } else {
-                                       unset($freqItemset);
+                                       $allFrequentItemsets[] = new 
FrequentItemset(array($item), (float)$freq / $numTransactions);
                                }
                        }
+                       
+                       // Now compute all k-frequent itemsets
+                       $freqK_1Itemsets = $allFrequentItemsets;
+                       while (count($freqK_1Itemsets) > 0) {
+                               $freqKItemsets = 
$this->generateCandidates($freqK_1Itemsets);
+                               
+                               $freqK_1Itemsets = array();
+                               
+                               // Check support for each candidate
+                               foreach ($freqKItemsets as $freqItemset) {
+                                       set_time_limit(0);
+                                       $freq = 0;
+                                       foreach ($transactions as $transaction) 
{
+                                               set_time_limit(0);
+                                               $inArray = true;
+                                               foreach 
($freqItemset->getItems() as $item) {
+                                                       if (!in_array($item, 
$transaction)) {
+                                                               $inArray = 
false;
+                                                               break;
+                                                       }
+                                               }
+                                               
+                                               if ($inArray) {
+                                                       $freq++;
+                                               }
+                                       }
+                                       
+                                       if ((float)$freq / $numTransactions >= 
$minSupport) {
+                                               
$freqItemset->setSupport((float)$freq / $numTransactions);
+                                               $freqK_1Itemsets[] = 
$allFrequentItemsets[] = $freqItemset;
+                                       } else {
+                                               unset($freqItemset);
+                                       }
+                               }
+                       }
+                       
+                       return $allFrequentItemsets;
                }
-               
-               return $allFrequentItemsets;
-               }
        }
        
        
@@ -85,6 +88,7 @@
                        $freqItemsetA = $freqK_1Itemsets[$a];
                        
                        for ($b = $a + 1; $b < count($freqK_1Itemsets); $b++) {
+                               set_time_limit(0);
                                $freqItemsetB = $freqK_1Itemsets[$b];
                                
                                // Check whether they have i=k-2 items in common

Added: trunk/extensions/FreqPatternTagCloud/javascripts/jquery.parseJSON.js
===================================================================
--- trunk/extensions/FreqPatternTagCloud/javascripts/jquery.parseJSON.js        
                        (rev 0)
+++ trunk/extensions/FreqPatternTagCloud/javascripts/jquery.parseJSON.js        
2012-05-30 14:22:08 UTC (rev 115462)
@@ -0,0 +1,36 @@
+jQuery( document ).ready( function( $ ) { 
+
+/**
+ * Frequent Pattern Tag Cloud Plug-in
+ * Addition of parseJSON for older jQuery versions
+ * 
+ * @author Tobias Beck, University of Heidelberg
+ * @author Andreas Fay, University of Heidelberg
+ * @version 1.0
+ */
+
+/**
+ * Enable parseJSON
+ */
+ if (!$j.parseJSON) { ( function() { 
+    $j.extend({
+        parseJSON: function( data ) {
+            if ( typeof data !== "string" || !data ) {
+                return null;
+            }    
+            data = jQuery.trim( data );    
+            if ( 
/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
+                
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, 
"]")
+                .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {    
+                return window.JSON && window.JSON.parse ?
+                    window.JSON.parse( data ) :
+                    (new Function("return " + data))();    
+            } else {
+                jQuery.error( "Invalid JSON: " + data );
+            }
+        }
+    });
+       
+    })(jQuery);
+}
+});


Property changes on: 
trunk/extensions/FreqPatternTagCloud/javascripts/jquery.parseJSON.js
___________________________________________________________________
Added: svn:eol-style
   + native

Modified: trunk/extensions/FreqPatternTagCloud/javascripts/main.js
===================================================================
--- trunk/extensions/FreqPatternTagCloud/javascripts/main.js    2012-05-29 
20:08:17 UTC (rev 115461)
+++ trunk/extensions/FreqPatternTagCloud/javascripts/main.js    2012-05-30 
14:22:08 UTC (rev 115462)
@@ -2,7 +2,7 @@
  * Frequent Pattern Tag Cloud Plug-in
  * Main javascript
  * 
- * @author Tobias Beck, University of Heidelberg
+ * @author Tobias Beck (TB), University of Heidelberg
  * @author Andreas Fay, University of Heidelberg
  * @version 1.0
  */
@@ -28,7 +28,7 @@
                }
        });
        
-       var attribute = $j("#fptc_attributeName").val();
+       var attribute = $j("#fptc_baseAttribute").text();
        
        // Context menu for tag cloud
     $j(".fptc_tag a").contextMenu({
@@ -46,9 +46,14 @@
         }
     }, function(action, el, pos, menu) {
         if (action == "browse") {
-            window.location = el.attr("href");
+               window.location = el.attr("href");
         } else if (action == "browse_similar_tag") {
-            window.location = el.attr("href").replace(new 
RegExp(encodeURI(el.text())), menu.attr("title"));
+               // TB: Changes due to the support of all attribute types
+               var newDirName = menu.attr("title");
+               var oldDirName = el.text();
+               // Construct the corresponding URL
+               // window.location = el.attr("href").replace(new 
RegExp(encodeURI(el.text())), menu.attr("title"));
+               window.location = el.attr("href").replace(oldDirName, 
newDirName);
         }
     });
     
@@ -62,4 +67,4 @@
             });
         }
     });
-});
\ No newline at end of file
+});


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to