X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialSpecialpages.php;h=b3a5520db38969a1d3e282faf6c37f043931c11c;hb=d470d9800dec83a0e625cb5cbd89be464678716b;hp=094ae6138803ce64d92a492441f15fe6a25ca2b5;hpb=e3676a470c57d61b0380238e47b66902e429fbb9;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialSpecialpages.php b/includes/SpecialSpecialpages.php index 094ae61388..b3a5520db3 100644 --- a/includes/SpecialSpecialpages.php +++ b/includes/SpecialSpecialpages.php @@ -1,58 +1,87 @@ setRobotpolicy( "index,nofollow" ); - $sk = $wgUser->getSkin(); +/** + * + */ +function wfSpecialSpecialpages() { + global $wgOut, $wgUser, $wgMessageCache; - # Categorise special pages + $wgMessageCache->loadAllMessages(); - $pages = array( - "" => array(), - "sysop" => array(), - "developer" => array() - ); + $wgOut->setRobotpolicy( 'noindex,nofollow' ); # Is this really needed? + $sk = $wgUser->getSkin(); - foreach ( $wgSpecialPages as $page ) { - $pages[$page->getRestriction()][$page->getName()] = $page; - } + /** Pages available to all */ + wfSpecialSpecialpages_gen( SpecialPage::getRegularPages(), 'spheading', $sk ); + /** Restricted special pages */ + wfSpecialSpecialpages_gen( SpecialPage::getRestrictedPages(), 'restrictedpheading', $sk ); +} - # all users special pages - wfSpecialSpecialpages_gen($pages[""],"spheading",$sk); +/** + * sub function generating the list of pages + * @param $pages the list of pages + * @param $heading header to be used + * @param $sk skin object ??? + */ +function wfSpecialSpecialpages_gen($pages,$heading,$sk) { + global $wgOut, $wgSortSpecialPages; - # sysops only special pages - if ( $wgUser->isSysop() ) { - wfSpecialSpecialpages_gen($pages["sysop"],"sysopspheading",$sk); + if( count( $pages ) == 0 ) { + # Yeah, that was pointless. Thanks for coming. + return; } - # developers only special pages - if ( $wgUser->isDeveloper() ) { - wfSpecialSpecialpages_gen($pages["developer"],"developerspheading",$sk); + /** Put them into a sortable array */ + $groups = array(); + foreach ( $pages as $page ) { + if ( $page->isListed() ) { + $group = SpecialPage::getGroup( $page ); + if( !isset($groups[$group]) ) { + $groups[$group] = array(); + } + $groups[$group][$page->getDescription()] = $page->getTitle(); + } + } + /** Sort */ + if ( $wgSortSpecialPages ) { + foreach( $groups as $group => $sortedPages ) { + ksort( $groups[$group] ); + } + } + + /** Always move "other" to end */ + if( array_key_exists('other',$groups) ) { + $other = $groups['other']; + unset( $groups['other'] ); + $groups['other'] = $other; } -} -# sub function generating the list of pages -# $pages : the list of pages -# $heading : header to be used -# $sk : skin object ??? + /** Now output the HTML */ + $wgOut->addHTML( '

' . wfMsgHtml( $heading ) . "

\n" ); + foreach ( $groups as $group => $sortedPages ) { + $middle = ceil( count($sortedPages)/2 ); + $total = count($sortedPages); + $count = 0; -function wfSpecialSpecialpages_gen($pages,$heading,$sk) -{ - global $wgLang, $wgOut, $wgAllowSysopQueries; + $wgOut->addHTML( "

".wfMsgHtml("specialpages-group-$group")."

\n" ); + $wgOut->addHTML( "" ); + $wgOut->addHTML( "
    \n" ); + foreach ( $sortedPages as $desc => $title ) { + $link = $sk->makeKnownLinkObj( $title , htmlspecialchars( $desc ) ); + $wgOut->addHTML( "
  • {$link}
  • \n" ); - $wgOut->addHTML( "

    " . wfMsg( $heading ) . "

    \n
      " ); - foreach ( $pages as $name => $page ) { - if( !$page->isListed() ) { - continue; + # Slit up the larger groups + $count++; + if( $total > 3 && $count == $middle ) { + $wgOut->addHTML( "
    " ); + } } - $link = $sk->makeKnownLinkObj( $page->getTitle(), $page->getDescription() ); - $wgOut->addHTML( "
  • {$link}
  • \n" ); + $wgOut->addHTML( "
\n" ); } - $wgOut->addHTML( "\n" ); } - -?>