jenkins-bot has submitted this change and it was merged.

Change subject: Unbreak this extension by killing $wgCategoryTreeDynamicTag
......................................................................


Unbreak this extension by killing $wgCategoryTreeDynamicTag

Somewhere along the line this extension's JS was refactored,
except for a part which was left as is, and was calling functions
since renamed, and still assuming top loaded...

Just kill $wgCategoryTreeDynamicTag, since it doesn't work, it
hasn't worked for a while, and it looks like a bit of work to
make it work properly. Also change the cache disabling defaults
of this extension to be 6 hours so it doesn't cause explosions.

If someone wants the feature represented by $wgCategoryTreeDynamicTag
they can of course re-introduce it in a subsequent commit. In the
mean time, let's not have broken code.

Bug: 59798
Change-Id: I01e0bd264e2a007cd9de017d10667bb2809d70a9
---
M CategoryTree.php
M CategoryTreeFunctions.php
2 files changed, 18 insertions(+), 36 deletions(-)

Approvals:
  Ori.livneh: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/CategoryTree.php b/CategoryTree.php
index 5d0bbdf..bcc5e01 100644
--- a/CategoryTree.php
+++ b/CategoryTree.php
@@ -38,9 +38,8 @@
  *
  * $wgCategoryTreeMaxChildren - maximum number of children shown in a tree 
node. Default is 200
  * $wgCategoryTreeAllowTag - enable <categorytree> tag. Default is true.
- * $wgCategoryTreeDynamicTag - loads the first level of the tree in a 
<categorytag> dynamically.
- *                             This way, the cache does not need to be 
disabled. Default is false.
- * $wgCategoryTreeDisableCache - disabled the parser cache for pages with a 
<categorytree> tag. Default is true.
+ * $wgCategoryTreeDisableCache - disable the parser cache for pages with a 
<categorytree> tag or provide
+ *                              max cache time in seconds. Default is 6 hours.
  * $wgCategoryTreeUseCache - enable HTTP cache for anon users. Default is 
false.
  * $wgCategoryTreeMaxDepth - maximum value for depth argument; An array that 
maps mode values to
  *                           the maximum depth acceptable for the depth option.
@@ -53,8 +52,7 @@
 
 $wgCategoryTreeMaxChildren = 200;
 $wgCategoryTreeAllowTag = true;
-$wgCategoryTreeDisableCache = true;
-$wgCategoryTreeDynamicTag = false;
+$wgCategoryTreeDisableCache = 6*60*60;
 $wgCategoryTreeHTTPCache = false;
 # $wgCategoryTreeUnifiedView = true;
 $wgCategoryTreeMaxDepth = array( CT_MODE_PAGES => 1, CT_MODE_ALL => 1, 
CT_MODE_CATEGORIES => 2 );
diff --git a/CategoryTreeFunctions.php b/CategoryTreeFunctions.php
index a84ba3d..0b0d262 100644
--- a/CategoryTreeFunctions.php
+++ b/CategoryTreeFunctions.php
@@ -395,16 +395,19 @@
         * @return bool|string
         */
        function getTag( $parser, $category, $hideroot = false, $attr, $depth = 
1, $allowMissing = false ) {
-               global $wgCategoryTreeDisableCache, $wgCategoryTreeDynamicTag;
-               static $uniq = 0;
+               global $wgCategoryTreeDisableCache;
 
                $category = trim( $category );
                if ( $category === '' ) {
                        return false;
                }
 
-               if ( $parser && $wgCategoryTreeDisableCache && 
!$wgCategoryTreeDynamicTag ) {
-                       $parser->disableCache();
+               if ( $parser ) {
+                       if ( is_bool( $wgCategoryTreeDisableCache ) && 
$wgCategoryTreeDisableCache === true ) {
+                               $parser->disableCache();
+                       } elseif ( is_int( $wgCategoryTreeDisableCache ) ) {
+                               $parser->getOutput()->updateCacheExpiry( 
$wgCategoryTreeDisableCache );
+                       }
                }
 
                $title = self::makeTitle( $category );
@@ -436,18 +439,9 @@
                        }
                else {
                        if ( !$hideroot ) {
-                               $html .= $this->renderNode( $title, $depth, 
$wgCategoryTreeDynamicTag );
-                       } elseif ( !$wgCategoryTreeDynamicTag ) {
-                               $html .= $this->renderChildren( $title, $depth 
);
+                               $html .= $this->renderNode( $title, $depth, 
false );
                        } else {
-                               $uniq += 1;
-                               $load = 'ct-' . $uniq . '-' . mt_rand( 1, 
100000 );
-
-                               $html .= Xml::openElement( 'script', array( 
'type' => 'text/javascript', 'id' => $load ) );
-                               $html .= 'categoryTreeLoadChildren("' . 
Xml::escapeJsString( $title->getDBkey() ) . '", '
-                                               . 
$this->getOptionsAsJsStructure( $depth )
-                                               . ', document.getElementById("' 
. $load . '").parentNode);';
-                               $html .= Xml::closeElement( 'script' );
+                               $html .= $this->renderChildren( $title, $depth 
);
                        }
                }
 
@@ -537,7 +531,7 @@
                                $cat = Category::newFromRow( $row, $t );
                        }
 
-                       $s = $this->renderNodeInfo( $t, $cat, $depth - 1, false 
);
+                       $s = $this->renderNodeInfo( $t, $cat, $depth - 1 );
                        $s .= "\n\t\t";
 
                        if ( $row->page_namespace == NS_CATEGORY ) {
@@ -612,10 +606,9 @@
         * Returns a string with a HTML represenation of the given page.
         * @param $title Title
         * @param int $children
-        * @param bool $loadchildren
         * @return string
         */
-       function renderNode( $title, $children = 0, $loadchildren = false ) {
+       function renderNode( $title, $children = 0 ) {
                global $wgCategoryTreeUseCategoryTable;
 
                if ( $wgCategoryTreeUseCategoryTable && $title->getNamespace() 
== NS_CATEGORY && !$this->isInverse() ) {
@@ -624,7 +617,7 @@
                        $cat = null;
                }
 
-               return $this->renderNodeInfo( $title, $cat, $children, 
$loadchildren );
+               return $this->renderNodeInfo( $title, $cat, $children );
        }
 
        /**
@@ -633,20 +626,11 @@
         * @param $title Title
         * @param $cat Category
         * @param $children int
-        * @param $loadchildren bool
         * @return string
         */
-       function renderNodeInfo( $title, $cat, $children = 0, $loadchildren = 
false ) {
-               static $uniq = 0;
-
+       function renderNodeInfo( $title, $cat, $children = 0 ) {
                $mode = $this->getOption( 'mode' );
                $load = false;
-
-               if ( $children > 0 && $loadchildren ) {
-                       $uniq += 1;
-
-                       $load = 'ct-' . $uniq . '-' . mt_rand( 1, 100000 );
-               }
 
                $ns = $title->getNamespace();
                $key = $title->getDBkey();
@@ -740,7 +724,7 @@
                                $linkattr['style'] = 'display: none;'; // 
Unhidden by JS
                                $linkattr['data-ct-title'] = $key;
 
-                               if ( $children == 0 || $loadchildren ) {
+                               if ( $children == 0 ) {
                                        $tag = 'span';
                                        $txt = wfMessage( 
'categorytree-expand-bullet' )->plain();
                                        # Don't load this message for ajax 
requests, so that we don't have to initialise $wgLang
@@ -818,7 +802,7 @@
                        )
                );
 
-               if ( $ns == NS_CATEGORY && $children > 0 && !$loadchildren ) {
+               if ( $ns == NS_CATEGORY && $children > 0 ) {
                        $children = $this->renderChildren( $title, $children );
                        if ( $children == '' ) {
                                $s .= Xml::openElement( 'i', array( 'class' => 
'CategoryTreeNotice' ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/114142
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I01e0bd264e2a007cd9de017d10667bb2809d70a9
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/CategoryTree
Gerrit-Branch: master
Gerrit-Owner: Brian Wolff <[email protected]>
Gerrit-Reviewer: Krinkle <[email protected]>
Gerrit-Reviewer: Mark Bergsma <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>
Gerrit-Reviewer: Reedy <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to