blob: 4959f107ebe6858cca9877b30e9bd2e191371234 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
<?php
/**
* @file
* @ingroup SpecialPage
*/
/**
*
*/
function wfSpecialSpecialpages() {
global $wgOut, $wgUser, $wgMessageCache, $wgSortSpecialPages;
$wgMessageCache->loadAllMessages();
$wgOut->setRobotPolicy( 'noindex,nofollow' ); # Is this really needed?
$sk = $wgUser->getSkin();
$pages = SpecialPage::getUsablePages();
if( count( $pages ) == 0 ) {
# Yeah, that was pointless. Thanks for coming.
return;
}
/** 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()] = array( $page->getTitle(), $page->isRestricted() );
}
}
/** 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;
}
$includesRestrictedPages = false;
/** Now output the HTML */
foreach ( $groups as $group => $sortedPages ) {
$middle = ceil( count($sortedPages)/2 );
$total = count($sortedPages);
$count = 0;
$wgOut->wrapWikiMsg( "<h4 class='mw-specialpagesgroup'>$1</h4>\n", "specialpages-group-$group" );
$wgOut->addHTML( "<table style='width: 100%;' class='mw-specialpages-table'><tr>" );
$wgOut->addHTML( "<td width='30%' valign='top'><ul>\n" );
foreach( $sortedPages as $desc => $specialpage ) {
list( $title, $restricted ) = $specialpage;
$link = $sk->makeKnownLinkObj( $title , htmlspecialchars( $desc ) );
if( $restricted ) {
$includesRestrictedPages = true;
$wgOut->addHTML( "<li class='mw-specialpages-page mw-specialpagerestricted'>{$link}</li>\n" );
} else {
$wgOut->addHTML( "<li>{$link}</li>\n" );
}
# Split up the larger groups
$count++;
if( $total > 3 && $count == $middle ) {
$wgOut->addHTML( "</ul></td><td width='10%'></td><td width='30%' valign='top'><ul>" );
}
}
$wgOut->addHTML( "</ul></td><td width='30%' valign='top'></td></tr></table>\n" );
}
if ( $includesRestrictedPages ) {
$wgOut->wrapWikiMsg( "<div class=\"mw-specialpages-notes\">\n$1\n</div>", 'specialpages-note' );
}
}
|