Don't show tag filter boxes if no tags are defined. To support this change without...
authorAndrew Garrett <werdna@users.mediawiki.org>
Fri, 30 Jan 2009 23:24:29 +0000 (23:24 +0000)
committerAndrew Garrett <werdna@users.mediawiki.org>
Fri, 30 Jan 2009 23:24:29 +0000 (23:24 +0000)
includes/ChangeTags.php
includes/LogEventsList.php
includes/PageHistory.php
includes/specials/SpecialContributions.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRecentchangeslinked.php

index f83edbf..cbbe67e 100644 (file)
@@ -129,6 +129,10 @@ class ChangeTags {
         * If $fullForm is true, it returns an entire form.
         */
        static function buildTagFilterSelector( $selected='', $fullForm = false /* used to put a full form around the selector */ ) {
+
+               if ( !count( self::listDefinedTags() ) )
+                       return $fullForm ? '' : array();
+       
                global $wgTitle;
                
                $data = array( wfMsgExt( 'tag-filter', 'parseinline' ), Xml::input( 'tagfilter', 20, $selected ) );
@@ -147,6 +151,13 @@ class ChangeTags {
 
        /** Basically lists defined tags which count even if they aren't applied to anything */
        static function listDefinedTags() {
+               // Caching...
+               global $wgMemc;
+               $key = wfMemcKey( 'valid-tags' );
+
+               if ($tags = $wgMemc->get( $key ))
+                       return $tags;
+       
                $emptyTags = array();
 
                // Some DB stuff
@@ -158,6 +169,10 @@ class ChangeTags {
                
                wfRunHooks( 'ListDefinedTags', array(&$emptyTags) );
 
-               return array_filter( array_unique( $emptyTags ) );
+               $emptyTags = array_filter( array_unique( $emptyTags ) );
+
+               // Short-term caching.
+               $wgMemc->set( $key, $emptyTags, 300 );
+               return $emptyTags;
        }
 }
\ No newline at end of file
index 1cae3c7..c8ddd07 100644 (file)
@@ -75,6 +75,8 @@ class LogEventsList {
                $title = SpecialPage::getTitleFor( 'Log' );
                $special = htmlspecialchars( $title->getPrefixedDBkey() );
 
+               $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
+
                $this->out->addHTML( "<form action=\"$action\" method=\"get\"><fieldset>" .
                        Xml::element( 'legend', array(), wfMsg( 'log' ) ) .
                        Xml::hidden( 'title', $special ) . "\n" .
@@ -83,7 +85,7 @@ class LogEventsList {
                        $this->getTitleInput( $page ) . "\n" .
                        ( !$wgMiserMode ? ($this->getTitlePattern( $pattern )."\n") : "" ) .
                        "<p>" . $this->getDateMenu( $year, $month ) . "\n" .
-                       Xml::tags( 'p', null, implode( '&nbsp;', ChangeTags::buildTagFilterSelector( $tagFilter ) ) ) . "\n" .
+                       ( $tagSelector ? Xml::tags( 'p', null, implode( '&nbsp;', $tagSelector ) ) :'' ). "\n" .
                        ( $filter ? "</p><p>".$this->getFilterLinks( $type, $filter )."\n" : "" ) . "\n" .
                        Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "</p>\n" .
                        "</fieldset></form>"
index 0441cf2..f1e23e3 100644 (file)
@@ -113,6 +113,7 @@ class PageHistory {
                $year = $wgRequest->getInt( 'year' );
                $month = $wgRequest->getInt( 'month' );
                $tagFilter = $wgRequest->getVal( 'tagfilter' );
+               $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
 
                $action = htmlspecialchars( $wgScript );
                $wgOut->addHTML(
@@ -121,7 +122,7 @@ class PageHistory {
                        Xml::hidden( 'title', $this->mTitle->getPrefixedDBKey() ) . "\n" .
                        Xml::hidden( 'action', 'history' ) . "\n" .
                        $this->getDateMenu( $year, $month ) . '&nbsp;' .
-                       implode( '&nbsp;', ChangeTags::buildTagFilterSelector( $tagFilter ) ) . '&nbsp;' .
+                       ( $tagSelector ? ( implode( '&nbsp;', $tagSelector ) . '&nbsp;' ) : '' ) .
                        Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
                        '</fieldset></form>'
                );
index aa4187c..3ce5522 100644 (file)
@@ -233,10 +233,6 @@ class SpecialContributions extends SpecialPage {
                if( !isset( $this->opts['month'] ) ) {
                        $this->opts['month'] = '';
                }
-
-               if( !isset( $this->opts['tagfilter'] ) ) {
-                       $this->opts['tagfilter'] = '';
-               }
        
                if( $this->opts['contribs'] == 'newbie' ) {
                        $this->opts['target'] = '';
@@ -250,6 +246,8 @@ class SpecialContributions extends SpecialPage {
                        }
                        $f .= "\t" . Xml::hidden( $name, $value ) . "\n";
                }
+
+               $tagFilter = ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] );
        
                $f .= '<fieldset>' .
                        Xml::element( 'legend', array(), wfMsg( 'sp-contributions-search' ) ) .
@@ -262,7 +260,7 @@ class SpecialContributions extends SpecialPage {
                        Xml::label( wfMsg( 'namespace' ), 'namespace' ) . ' ' .
                        Xml::namespaceSelector( $this->opts['namespace'], '' ) .
                        '</span>' .
-                       Xml::tags( 'p', null, implode( '&nbsp;', ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] ) ) ) .
+                       ( $tagFilter ? Xml::tags( 'p', null, implode( '&nbsp;', $tagFilter ) ) : '' ) .
                        Xml::openElement( 'p' ) .
                        '<span style="white-space: nowrap">' .
                        Xml::label( wfMsg( 'year' ), 'year' ) . ' '.
index 6f1a69c..597d43a 100644 (file)
@@ -177,7 +177,9 @@ class SpecialNewpages extends SpecialPage {
                }
                $hidden = implode( "\n", $hidden );
 
-               list( $tagFilterLabel, $tagFilterSelector ) = ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] );
+               $tagFilter = ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] );
+               if ($tagFilter)
+                       list( $tagFilterLabel, $tagFilterSelector ) = $tagFilter;
 
                $form = Xml::openElement( 'form', array( 'action' => $wgScript ) ) .
                        Xml::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
@@ -190,7 +192,7 @@ class SpecialNewpages extends SpecialPage {
                                <td class='mw-input'>" .
                                        Xml::namespaceSelector( $namespace, 'all' ) .
                                "</td>
-                       </tr>" .
+                       </tr>" . ( $tagFilter ? (
                        "<tr>
                                <td class='mw-label'>" .
                                        $tagFilterLabel .
@@ -198,7 +200,7 @@ class SpecialNewpages extends SpecialPage {
                                <td class='mw-input'>" .
                                        $tagFilterSelector .
                                "</td>
-                       </tr>" .
+                       </tr>" ) : '' ) .
                        ($wgEnableNewpagesUserFilter ?
                        "<tr>
                                <td class='mw-label'>" .
index 9d91a4a..79f00bc 100644 (file)
@@ -462,7 +462,9 @@ class SpecialRecentChanges extends SpecialPage {
                        $extraOpts['category'] = $this->categoryFilterForm( $opts );
                }
 
-               $extraOpts['tagfilter'] = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
+               $tagFilter = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
+               if ( count($tagFilter) )
+                       $extraOpts['tagfilter'] = $tagFilter;
 
                wfRunHooks( 'SpecialRecentChangesPanel', array( &$extraOpts, $opts ) );
                return $extraOpts;
index fb7eb3a..1812eb6 100644 (file)
@@ -172,7 +172,9 @@ class SpecialRecentchangeslinked extends SpecialRecentchanges {
                        Xml::input( 'target', 40, str_replace('_',' ',$opts['target']) ) .
                        Xml::check( 'showlinkedto', $opts['showlinkedto'], array('id' => 'showlinkedto') ) . ' ' .
                        Xml::label( wfMsg("recentchangeslinked-to"), 'showlinkedto' ) );
-               $extraOpts['tagfilter'] = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
+               $tagFilter = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
+               if ($tagFilter)
+                       $extraOpts['tagfilter'] = $tagFilter;
                return $extraOpts;
        }