- <?php
- class CategoryTreeCategoryPage extends CategoryPage {
- function closeShowCategory() {
- global $wgOut, $wgRequest;
- $from = $wgRequest->getVal( 'from' );
- $until = $wgRequest->getVal( 'until' );
- $viewer = new CategoryTreeCategoryViewer( $this->mTitle, $from, $until );
- $wgOut->addHTML( $viewer->getHTML() );
- }
- }
- class CategoryTreeCategoryViewer extends CategoryViewer {
- var $child_titles;
- /**
- * Add a subcategory to the internal lists
- */
- function addSubcategory( $title, $sortkey, $pageLength ) {
- global $wgContLang, $wgOut, $wgRequest, $wgCategoryTreeCategoryPageMode;
- if ( $wgRequest->getCheck( 'notree' ) ) {
- return parent::addSubcategory( $title, $sortkey, $pageLength );
- }
- if ( ! $GLOBALS['wgCategoryTreeUnifiedView'] ) {
- $this->child_titles[] = $title;
- return parent::addSubcategory( $title, $sortkey, $pageLength );
- }
- if ( ! isset($this->categorytree) ) {
- CategoryTree::setHeaders( $wgOut );
- $this->categorytree = new CategoryTree;
- }
- $this->children[] = $this->categorytree->renderNode( $title, $wgCategoryTreeCategoryPageMode );
- $this->children_start_char[] = $this->getSubcategorySortChar( $title, $sortkey );
- }
- function getSubcategorySection() {
- global $wgOut, $wgRequest, $wgCookiePrefix, $wgCategoryTreeCategoryPageMode;
- if ( $wgRequest->getCheck( 'notree' ) ) {
- return parent::getSubcategorySection();
- }
- if ( $GLOBALS['wgCategoryTreeUnifiedView'] ) {
- return parent::getSubcategorySection();
- }
- if( count( $this->children ) == 0 ) {
- return '';
- }
- $r = '<h2>' . wfMsg( 'subcategories' ) . "</h2>\n" .
- wfMsgExt( 'subcategorycount', array( 'parse' ), count( $this->children) );
- # Use a cookie to save the user's last selection, so that AJAX doesn't
- # keep coming back to haunt them.
- #
- # FIXME: This doesn't work very well with IMS handling in
- # OutputPage::checkLastModified, because when the cookie changes, the
- # category pages are not, at present, invalidated.
- $cookieName = $wgCookiePrefix.'ShowSubcatAs';
- $cookieVal = @$_COOKIE[$cookieName];
- $reqShowAs = $wgRequest->getVal( 'showas' );
- if ( $reqShowAs == 'list' ) {
- $showAs = 'list';
- } elseif ( $reqShowAs == 'tree' ) {
- $showAs = 'tree';
- } elseif ( $cookieVal == 'list' || $cookieVal == 'tree' ) {
- $showAs = $cookieVal;
- } else {
- $showAs = 'tree';
- }
- if ( !is_null( $reqShowAs ) ) {
- global $wgCookieExpiration, $wgCookiePath, $wgCookieDomain, $wgCookieSecure;
- $exp = time() + $wgCookieExpiration;
- setcookie( $cookieName, $showAs, $exp, $wgCookiePath, $wgCookieDomain, $wgCookieSecure );
- }
- if ( $showAs == 'tree' && count( $this->children ) > $this->limit ) {
- # Tree doesn't page properly
- $showAs = 'list';
- $r .= self::msg( 'too-many-subcats' );
- } else {
- $sk = $this->getSkin();
- $r .= '<p>' .
- $this->makeShowAsLink( 'tree', $showAs ) .
- ' | ' .
- $this->makeShowAsLink( 'list', $showAs ) .
- '</p>';
- }
- if ( $showAs == 'list' ) {
- $r .= $this->formatList( $this->children, $this->children_start_char );
- } else {
- CategoryTree::setHeaders( $wgOut );
- $ct = new CategoryTree;
- foreach ( $this->child_titles as $title ) {
- $r .= $ct->renderNode( $title, $wgCategoryTreeCategoryPageMode );
- }
- }
- return $r;
- }
- function makeShowAsLink( $targetValue, $currentValue ) {
- $msg = htmlspecialchars( CategoryTree::msg( "show-$targetValue" ) );
- if ( $targetValue == $currentValue ) {
- return "<strong>$msg</strong>";
- } else {
- return $this->getSkin()->makeKnownLinkObj( $this->title, $msg, "showas=$targetValue" );
- }
- }
- function clearCategoryState() {
- $this->child_titles = array();
- parent::clearCategoryState();
- }
- function finaliseCategoryState() {
- if( $this->flip ) {
- $this->child_titles = array_reverse( $this->child_titles );
- }
- parent::finaliseCategoryState();
- }
- }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 6192 | Sam Stafford | A handful of Mediawiki extensions, skins, and whatnot. Not all of these are aut...hored by me, but I want them all in one place and I need to keep track of any tweaks made. « |
17 years ago |