Index: trunk/extensions/CategoryTree/CategoryTreeFunctions.php |
— | — | @@ -19,6 +19,10 @@ |
20 | 20 | var $mIsAjaxRequest = false; |
21 | 21 | var $mOptions = array(); |
22 | 22 | |
| 23 | + /** |
| 24 | + * @param $options array |
| 25 | + * @param $ajax bool |
| 26 | + */ |
23 | 27 | function __construct( $options, $ajax = false ) { |
24 | 28 | global $wgCategoryTreeDefaultOptions; |
25 | 29 | |
— | — | @@ -56,38 +60,56 @@ |
57 | 61 | } |
58 | 62 | } |
59 | 63 | |
| 64 | + /** |
| 65 | + * @param $name string |
| 66 | + * @return mixed |
| 67 | + */ |
60 | 68 | function getOption( $name ) { |
61 | 69 | return $this->mOptions[$name]; |
62 | 70 | } |
63 | 71 | |
| 72 | + /** |
| 73 | + * @return bool |
| 74 | + */ |
64 | 75 | function isInverse( ) { |
65 | 76 | return $this->getOption( 'mode' ) == CT_MODE_PARENTS; |
66 | 77 | } |
67 | 78 | |
| 79 | + /** |
| 80 | + * @param $nn |
| 81 | + * @return array|bool |
| 82 | + */ |
68 | 83 | static function decodeNamespaces( $nn ) { |
69 | 84 | global $wgContLang; |
70 | 85 | |
71 | | - if ( !$nn ) |
| 86 | + if ( !$nn ) { |
72 | 87 | return false; |
| 88 | + } |
73 | 89 | |
74 | | - if ( !is_array( $nn ) ) |
| 90 | + if ( !is_array( $nn ) ) { |
75 | 91 | $nn = preg_split( '![\s#:|]+!', $nn ); |
| 92 | + } |
76 | 93 | |
77 | 94 | $namespaces = array(); |
78 | 95 | |
79 | 96 | foreach ( $nn as $n ) { |
80 | 97 | if ( is_int( $n ) ) { |
81 | 98 | $ns = $n; |
82 | | - } |
83 | | - else { |
| 99 | + } else { |
84 | 100 | $n = trim( $n ); |
85 | | - if ( $n === '' ) continue; |
| 101 | + if ( $n === '' ) { |
| 102 | + continue; |
| 103 | + } |
86 | 104 | |
87 | 105 | $lower = strtolower( $n ); |
88 | 106 | |
89 | | - if ( is_numeric( $n ) ) $ns = (int)$n; |
90 | | - elseif ( $n == '-' || $n == '_' || $n == '*' || $lower == 'main' ) $ns = NS_MAIN; |
91 | | - else $ns = $wgContLang->getNsIndex( $n ); |
| 107 | + if ( is_numeric( $n ) ) { |
| 108 | + $ns = (int)$n; |
| 109 | + } elseif ( $n == '-' || $n == '_' || $n == '*' || $lower == 'main' ) { |
| 110 | + $ns = NS_MAIN; |
| 111 | + } else { |
| 112 | + $ns = $wgContLang->getNsIndex( $n ); |
| 113 | + } |
92 | 114 | } |
93 | 115 | |
94 | 116 | if ( is_int( $ns ) ) { |
— | — | @@ -99,61 +121,111 @@ |
100 | 122 | return $namespaces; |
101 | 123 | } |
102 | 124 | |
| 125 | + /** |
| 126 | + * @param $mode |
| 127 | + * @return int|string |
| 128 | + */ |
103 | 129 | static function decodeMode( $mode ) { |
104 | 130 | global $wgCategoryTreeDefaultOptions; |
105 | 131 | |
106 | | - if ( is_null( $mode ) ) return $wgCategoryTreeDefaultOptions['mode']; |
107 | | - if ( is_int( $mode ) ) return $mode; |
| 132 | + if ( is_null( $mode ) ) { |
| 133 | + return $wgCategoryTreeDefaultOptions['mode']; |
| 134 | + } |
| 135 | + if ( is_int( $mode ) ) { |
| 136 | + return $mode; |
| 137 | + } |
108 | 138 | |
109 | 139 | $mode = trim( strtolower( $mode ) ); |
110 | 140 | |
111 | | - if ( is_numeric( $mode ) ) return (int)$mode; |
| 141 | + if ( is_numeric( $mode ) ) { |
| 142 | + return (int)$mode; |
| 143 | + } |
112 | 144 | |
113 | | - if ( $mode == 'all' ) $mode = CT_MODE_ALL; |
114 | | - elseif ( $mode == 'pages' ) $mode = CT_MODE_PAGES; |
115 | | - elseif ( $mode == 'categories' || $mode == 'sub' ) $mode = CT_MODE_CATEGORIES; |
116 | | - elseif ( $mode == 'parents' || $mode == 'super' || $mode == 'inverse' ) $mode = CT_MODE_PARENTS; |
117 | | - elseif ( $mode == 'default' ) $mode = $wgCategoryTreeDefaultOptions['mode']; |
| 145 | + if ( $mode == 'all' ) { |
| 146 | + $mode = CT_MODE_ALL; |
| 147 | + } elseif ( $mode == 'pages' ) { |
| 148 | + $mode = CT_MODE_PAGES; |
| 149 | + } elseif ( $mode == 'categories' || $mode == 'sub' ) { |
| 150 | + $mode = CT_MODE_CATEGORIES; |
| 151 | + } elseif ( $mode == 'parents' || $mode == 'super' || $mode == 'inverse' ) { |
| 152 | + $mode = CT_MODE_PARENTS; |
| 153 | + } elseif ( $mode == 'default' ) { |
| 154 | + $mode = $wgCategoryTreeDefaultOptions['mode']; |
| 155 | + } |
118 | 156 | |
119 | 157 | return (int)$mode; |
120 | 158 | } |
121 | 159 | |
122 | 160 | /** |
123 | | - * Helper function to convert a string to a boolean value. |
124 | | - * Perhaps make this a global function in MediaWiki proper |
125 | | - */ |
| 161 | + * Helper function to convert a string to a boolean value. |
| 162 | + * Perhaps make this a global function in MediaWiki proper |
| 163 | + * @param $value |
| 164 | + * @return bool|null|string |
| 165 | + */ |
126 | 166 | static function decodeBoolean( $value ) { |
127 | | - if ( is_null( $value ) ) return null; |
128 | | - if ( is_bool( $value ) ) return $value; |
129 | | - if ( is_int( $value ) ) return ( $value > 0 ); |
| 167 | + if ( is_null( $value ) ) { |
| 168 | + return null; |
| 169 | + } |
| 170 | + if ( is_bool( $value ) ) { |
| 171 | + return $value; |
| 172 | + } |
| 173 | + if ( is_int( $value ) ) { |
| 174 | + return ( $value > 0 ); |
| 175 | + } |
130 | 176 | |
131 | 177 | $value = trim( strtolower( $value ) ); |
132 | | - if ( is_numeric( $value ) ) return ( (int)$value > 0 ); |
| 178 | + if ( is_numeric( $value ) ) { |
| 179 | + return ( (int)$value > 0 ); |
| 180 | + } |
133 | 181 | |
134 | | - if ( $value == 'yes' || $value == 'y' || $value == 'true' || $value == 't' || $value == 'on' ) return true; |
135 | | - elseif ( $value == 'no' || $value == 'n' || $value == 'false' || $value == 'f' || $value == 'off' ) return false; |
136 | | - elseif ( $value == 'null' || $value == 'default' || $value == 'none' || $value == 'x' ) return null; |
137 | | - else return false; |
| 182 | + if ( $value == 'yes' || $value == 'y' || $value == 'true' || $value == 't' || $value == 'on' ) { |
| 183 | + return true; |
| 184 | + } elseif ( $value == 'no' || $value == 'n' || $value == 'false' || $value == 'f' || $value == 'off' ) { |
| 185 | + return false; |
| 186 | + } elseif ( $value == 'null' || $value == 'default' || $value == 'none' || $value == 'x' ) { |
| 187 | + return null; |
| 188 | + } else { |
| 189 | + return false; |
| 190 | + } |
138 | 191 | } |
139 | 192 | |
| 193 | + /** |
| 194 | + * @param $value |
| 195 | + * @return int|string |
| 196 | + */ |
140 | 197 | static function decodeHidePrefix( $value ) { |
141 | 198 | global $wgCategoryTreeDefaultOptions; |
142 | 199 | |
143 | | - if ( is_null( $value ) ) return $wgCategoryTreeDefaultOptions['hideprefix']; |
144 | | - if ( is_int( $value ) ) return $value; |
145 | | - if ( $value === true ) return CT_HIDEPREFIX_ALWAYS; |
146 | | - if ( $value === false ) return CT_HIDEPREFIX_NEVER; |
| 200 | + if ( is_null( $value ) ) { |
| 201 | + return $wgCategoryTreeDefaultOptions['hideprefix']; |
| 202 | + } |
| 203 | + if ( is_int( $value ) ) { |
| 204 | + return $value; |
| 205 | + } |
| 206 | + if ( $value === true ) { |
| 207 | + return CT_HIDEPREFIX_ALWAYS; |
| 208 | + } |
| 209 | + if ( $value === false ) { |
| 210 | + return CT_HIDEPREFIX_NEVER; |
| 211 | + } |
147 | 212 | |
148 | 213 | $value = trim( strtolower( $value ) ); |
149 | 214 | |
150 | | - if ( $value == 'yes' || $value == 'y' || $value == 'true' || $value == 't' || $value == 'on' ) return CT_HIDEPREFIX_ALWAYS; |
151 | | - elseif ( $value == 'no' || $value == 'n' || $value == 'false' || $value == 'f' || $value == 'off' ) return CT_HIDEPREFIX_NEVER; |
152 | | - // elseif ( $value == 'null' || $value == 'default' || $value == 'none' || $value == 'x' ) return $wgCategoryTreeDefaultOptions['hideprefix']; |
153 | | - elseif ( $value == 'always' ) return CT_HIDEPREFIX_ALWAYS; |
154 | | - elseif ( $value == 'never' ) return CT_HIDEPREFIX_NEVER; |
155 | | - elseif ( $value == 'auto' ) return CT_HIDEPREFIX_AUTO; |
156 | | - elseif ( $value == 'categories' || $value == 'category' || $value == 'smart' ) return CT_HIDEPREFIX_CATEGORIES; |
157 | | - else return $wgCategoryTreeDefaultOptions['hideprefix']; |
| 215 | + if ( $value == 'yes' || $value == 'y' || $value == 'true' || $value == 't' || $value == 'on' ) { |
| 216 | + return CT_HIDEPREFIX_ALWAYS; |
| 217 | + } elseif ( $value == 'no' || $value == 'n' || $value == 'false' || $value == 'f' || $value == 'off' ) { |
| 218 | + return CT_HIDEPREFIX_NEVER; |
| 219 | + } elseif ( $value == 'always' ) { |
| 220 | + return CT_HIDEPREFIX_ALWAYS; |
| 221 | + } elseif ( $value == 'never' ) { |
| 222 | + return CT_HIDEPREFIX_NEVER; |
| 223 | + } elseif ( $value == 'auto' ) { |
| 224 | + return CT_HIDEPREFIX_AUTO; |
| 225 | + } elseif ( $value == 'categories' || $value == 'category' || $value == 'smart' ) { |
| 226 | + return CT_HIDEPREFIX_CATEGORIES; |
| 227 | + } else { |
| 228 | + return $wgCategoryTreeDefaultOptions['hideprefix']; |
| 229 | + } |
158 | 230 | } |
159 | 231 | |
160 | 232 | /** |
— | — | @@ -179,6 +251,12 @@ |
180 | 252 | return $json; |
181 | 253 | } |
182 | 254 | |
| 255 | + /** |
| 256 | + * @param $options |
| 257 | + * @param $enc |
| 258 | + * @return mixed |
| 259 | + * @throws MWException |
| 260 | + */ |
183 | 261 | static function encodeOptions( $options, $enc ) { |
184 | 262 | if ( $enc == 'mode' || $enc == '' ) { |
185 | 263 | $opt = $options['mode']; |
— | — | @@ -192,6 +270,12 @@ |
193 | 271 | return $opt; |
194 | 272 | } |
195 | 273 | |
| 274 | + /** |
| 275 | + * @param $options |
| 276 | + * @param $enc |
| 277 | + * @return array|mixed |
| 278 | + * @throws MWException |
| 279 | + */ |
196 | 280 | static function decodeOptions( $options, $enc ) { |
197 | 281 | if ( $enc == 'mode' || $enc == '' ) { |
198 | 282 | $opt = array( "mode" => $options ); |
— | — | @@ -206,6 +290,10 @@ |
207 | 291 | return $opt; |
208 | 292 | } |
209 | 293 | |
| 294 | + /** |
| 295 | + * @param $depth null |
| 296 | + * @return string |
| 297 | + */ |
210 | 298 | function getOptionsAsCacheKey( $depth = null ) { |
211 | 299 | $key = ""; |
212 | 300 | |
— | — | @@ -214,10 +302,16 @@ |
215 | 303 | $key .= $k . ':' . $v . ';'; |
216 | 304 | } |
217 | 305 | |
218 | | - if ( !is_null( $depth ) ) $key .= ";depth=" . $depth; |
| 306 | + if ( !is_null( $depth ) ) { |
| 307 | + $key .= ";depth=" . $depth; |
| 308 | + } |
219 | 309 | return $key; |
220 | 310 | } |
221 | 311 | |
| 312 | + /** |
| 313 | + * @param $depthnull |
| 314 | + * @return mixed |
| 315 | + */ |
222 | 316 | function getOptionsAsJsStructure( $depth = null ) { |
223 | 317 | if ( !is_null( $depth ) ) { |
224 | 318 | $opt = $this->mOptions; |
— | — | @@ -230,10 +324,17 @@ |
231 | 325 | return $s; |
232 | 326 | } |
233 | 327 | |
234 | | - function getOptionsAsJsString( $depth = NULL ) { |
| 328 | + /** |
| 329 | + * @param $depth null |
| 330 | + * @return String |
| 331 | + */ |
| 332 | + function getOptionsAsJsString( $depth = null ) { |
235 | 333 | return Xml::escapeJsString( $this->getOptionsAsJsStructure( $depth ) ); |
236 | 334 | } |
237 | 335 | |
| 336 | + /** |
| 337 | + * @return string |
| 338 | + */ |
238 | 339 | function getOptionsAsUrlParameters() { |
239 | 340 | $u = ''; |
240 | 341 | |
— | — | @@ -246,9 +347,12 @@ |
247 | 348 | } |
248 | 349 | |
249 | 350 | /** |
250 | | - * Ajax call. This is called by efCategoryTreeAjaxWrapper, which is used to |
251 | | - * load CategoryTreeFunctions.php on demand. |
252 | | - */ |
| 351 | + * Ajax call. This is called by efCategoryTreeAjaxWrapper, which is used to |
| 352 | + * load CategoryTreeFunctions.php on demand. |
| 353 | + * @param $category |
| 354 | + * @param $depth int |
| 355 | + * @return AjaxResponse|bool |
| 356 | + */ |
253 | 357 | function ajax( $category, $depth = 1 ) { |
254 | 358 | global $wgLang, $wgContLang, $wgRenderHashAppend; |
255 | 359 | $title = self::makeTitle( $category ); |
— | — | @@ -266,7 +370,12 @@ |
267 | 371 | 'page_title' => $dbkey, |
268 | 372 | ), __METHOD__ ); |
269 | 373 | |
270 | | - $mckey = wfMemcKey( "categorytree(" . $this->getOptionsAsCacheKey( $depth ) . ")", $dbkey, $wgLang->getCode(), $wgContLang->getExtraHashOptions(), $wgRenderHashAppend ); |
| 374 | + $mckey = wfMemcKey( |
| 375 | + "categorytree(" . $this->getOptionsAsCacheKey( $depth ) . ")", |
| 376 | + $dbkey, $wgLang->getCode(), |
| 377 | + $wgContLang->getExtraHashOptions(), |
| 378 | + $wgRenderHashAppend |
| 379 | + ); |
271 | 380 | |
272 | 381 | $response = new AjaxResponse(); |
273 | 382 | |
— | — | @@ -368,9 +477,11 @@ |
369 | 478 | } |
370 | 479 | |
371 | 480 | /** |
372 | | - * Returns a string with an HTML representation of the children of the given category. |
373 | | - * @param $title Title |
374 | | - */ |
| 481 | + * Returns a string with an HTML representation of the children of the given category. |
| 482 | + * @param $title Title |
| 483 | + * @param $depth int |
| 484 | + * @return string |
| 485 | + */ |
375 | 486 | function renderChildren( $title, $depth = 1 ) { |
376 | 487 | global $wgCategoryTreeMaxChildren, $wgCategoryTreeUseCategoryTable; |
377 | 488 | |
— | — | @@ -459,9 +570,10 @@ |
460 | 571 | } |
461 | 572 | |
462 | 573 | /** |
463 | | - * Returns a string with an HTML representation of the parents of the given category. |
464 | | - * @var $title Title |
465 | | - */ |
| 574 | + * Returns a string with an HTML representation of the parents of the given category. |
| 575 | + * @param $title Title |
| 576 | + * @return string |
| 577 | + */ |
466 | 578 | function renderParents( $title ) { |
467 | 579 | global $wgCategoryTreeMaxChildren; |
468 | 580 | |
— | — | @@ -513,9 +625,12 @@ |
514 | 626 | } |
515 | 627 | |
516 | 628 | /** |
517 | | - * Returns a string with a HTML represenation of the given page. |
518 | | - * $title must be a Title object |
519 | | - */ |
| 629 | + * Returns a string with a HTML represenation of the given page. |
| 630 | + * @param $title Title |
| 631 | + * @param int $children |
| 632 | + * @param bool $loadchildren |
| 633 | + * @return string |
| 634 | + */ |
520 | 635 | function renderNode( $title, $children = 0, $loadchildren = false ) { |
521 | 636 | global $wgCategoryTreeUseCategoryTable; |
522 | 637 | |
— | — | @@ -529,9 +644,14 @@ |
530 | 645 | } |
531 | 646 | |
532 | 647 | /** |
533 | | - * Returns a string with a HTML represenation of the given page. |
534 | | - * $info must be an associative array, containing at least a Title object under the 'title' key. |
535 | | - */ |
| 648 | + * Returns a string with a HTML represenation of the given page. |
| 649 | + * $info must be an associative array, containing at least a Title object under the 'title' key. |
| 650 | + * @param $title Title |
| 651 | + * @param $cat Category |
| 652 | + * @param $children int |
| 653 | + * @param $loadchildren bool |
| 654 | + * @return string |
| 655 | + */ |
536 | 656 | function renderNodeInfo( $title, $cat, $children = 0, $loadchildren = false ) { |
537 | 657 | static $uniq = 0; |
538 | 658 | |
— | — | @@ -739,8 +859,10 @@ |
740 | 860 | } |
741 | 861 | |
742 | 862 | /** |
743 | | - * Creates a Title object from a user provided (and thus unsafe) string |
744 | | - */ |
| 863 | + * Creates a Title object from a user provided (and thus unsafe) string |
| 864 | + * @param $title string |
| 865 | + * @return null|Title |
| 866 | + */ |
745 | 867 | static function makeTitle( $title ) { |
746 | 868 | $title = trim( $title ); |
747 | 869 | |
Index: trunk/extensions/CategoryTree/CategoryPageSubclass.php |
— | — | @@ -7,11 +7,21 @@ |
8 | 8 | class CategoryTreeCategoryViewer extends CategoryViewer { |
9 | 9 | var $child_cats; |
10 | 10 | |
| 11 | + /** |
| 12 | + * @var CategoryTree |
| 13 | + */ |
| 14 | + var $categorytree; |
| 15 | + |
| 16 | + /** |
| 17 | + * @return CategoryTree |
| 18 | + */ |
11 | 19 | function getCategoryTree() { |
12 | 20 | global $wgOut, $wgCategoryTreeCategoryPageOptions, $wgCategoryTreeForceHeaders; |
13 | 21 | |
14 | | - if ( ! isset( $this->categorytree ) ) { |
15 | | - if ( !$wgCategoryTreeForceHeaders ) CategoryTree::setHeaders( $wgOut ); |
| 22 | + if ( !isset( $this->categorytree ) ) { |
| 23 | + if ( !$wgCategoryTreeForceHeaders ) { |
| 24 | + CategoryTree::setHeaders( $wgOut ); |
| 25 | + } |
16 | 26 | |
17 | 27 | $this->categorytree = new CategoryTree( $wgCategoryTreeCategoryPageOptions ); |
18 | 28 | } |
— | — | @@ -21,6 +31,10 @@ |
22 | 32 | |
23 | 33 | /** |
24 | 34 | * Add a subcategory to the internal lists |
| 35 | + * @param $cat Category |
| 36 | + * @param $sortkey |
| 37 | + * @param $pageLength |
| 38 | + * @return |
25 | 39 | */ |
26 | 40 | function addSubcategoryObject( Category $cat, $sortkey, $pageLength ) { |
27 | 41 | global $wgRequest; |
— | — | @@ -28,7 +42,8 @@ |
29 | 43 | $title = $cat->getTitle(); |
30 | 44 | |
31 | 45 | if ( $wgRequest->getCheck( 'notree' ) ) { |
32 | | - return parent::addSubcategoryObject( $cat, $sortkey, $pageLength ); |
| 46 | + parent::addSubcategoryObject( $cat, $sortkey, $pageLength ); |
| 47 | + return; |
33 | 48 | } |
34 | 49 | |
35 | 50 | $tree = $this->getCategoryTree(); |
Index: trunk/extensions/CategoryTree/CategoryTreePage.php |
— | — | @@ -19,13 +19,14 @@ |
20 | 20 | var $target = ''; |
21 | 21 | var $tree = null; |
22 | 22 | |
23 | | - /** |
24 | | - * Constructor |
25 | | - */ |
26 | 23 | function __construct() { |
27 | 24 | parent::__construct( 'CategoryTree', '', true ); |
28 | 25 | } |
29 | 26 | |
| 27 | + /** |
| 28 | + * @param $name |
| 29 | + * @return mixed |
| 30 | + */ |
30 | 31 | function getOption( $name ) { |
31 | 32 | global $wgCategoryTreeDefaultOptions; |
32 | 33 | |
— | — | @@ -38,16 +39,19 @@ |
39 | 40 | |
40 | 41 | /** |
41 | 42 | * Main execution function |
42 | | - * @param $par Parameters passed to the page |
| 43 | + * @param $par array Parameters passed to the page |
43 | 44 | */ |
44 | 45 | function execute( $par ) { |
45 | | - global $wgRequest, $wgOut, $wgCategoryTreeDefaultOptions, $wgCategoryTreeSpecialPageOptions, $wgCategoryTreeForceHeaders; |
| 46 | + global $wgCategoryTreeDefaultOptions, $wgCategoryTreeSpecialPageOptions, $wgCategoryTreeForceHeaders; |
46 | 47 | |
47 | 48 | $this->setHeaders(); |
| 49 | + $request = $this->getRequest(); |
| 50 | + if ( $par ) { |
| 51 | + $this->target = $par; |
| 52 | + } else { |
| 53 | + $this->target = $request->getVal( 'target', wfMsg( 'rootcategory' ) ); |
| 54 | + } |
48 | 55 | |
49 | | - if ( $par ) $this->target = $par; |
50 | | - else $this->target = $wgRequest->getVal( 'target', wfMsg( 'rootcategory' ) ); |
51 | | - |
52 | 56 | $this->target = trim( $this->target ); |
53 | 57 | |
54 | 58 | # HACK for undefined root category |
— | — | @@ -59,47 +63,50 @@ |
60 | 64 | |
61 | 65 | # grab all known options from the request. Normalization is done by the CategoryTree class |
62 | 66 | foreach ( $wgCategoryTreeDefaultOptions as $option => $default ) { |
63 | | - if ( isset( $wgCategoryTreeSpecialPageOptions[$option] ) ) |
| 67 | + if ( isset( $wgCategoryTreeSpecialPageOptions[$option] ) ) { |
64 | 68 | $default = $wgCategoryTreeSpecialPageOptions[$option]; |
| 69 | + } |
65 | 70 | |
66 | | - $options[$option] = $wgRequest->getVal( $option, $default ); |
| 71 | + $options[$option] = $request->getVal( $option, $default ); |
67 | 72 | } |
68 | 73 | |
69 | 74 | $this->tree = new CategoryTree( $options ); |
70 | 75 | |
71 | | - $wgOut->addWikiMsg( 'categorytree-header' ); |
| 76 | + $output = $this->getOutput(); |
| 77 | + $output->addWikiMsg( 'categorytree-header' ); |
72 | 78 | |
73 | 79 | $this->executeInputForm(); |
74 | 80 | |
75 | 81 | if ( $this->target !== '' && $this->target !== null ) { |
76 | | - if ( !$wgCategoryTreeForceHeaders ) CategoryTree::setHeaders( $wgOut ); |
| 82 | + if ( !$wgCategoryTreeForceHeaders ) { |
| 83 | + CategoryTree::setHeaders( $output ); |
| 84 | + } |
77 | 85 | |
78 | 86 | $title = CategoryTree::makeTitle( $this->target ); |
79 | 87 | |
80 | 88 | if ( $title && $title->getArticleID() ) { |
81 | | - $wgOut->addHTML( Xml::openElement( 'div', array( 'class' => 'CategoryTreeParents' ) ) ); |
82 | | - $wgOut->addHTML( wfMsgExt( 'categorytree-parents', 'parseinline' ) ); |
83 | | - $wgOut->addHTML( wfMsg( 'colon-separator' ) ); |
| 89 | + $output->addHTML( Xml::openElement( 'div', array( 'class' => 'CategoryTreeParents' ) ) ); |
| 90 | + $output->addHTML( wfMsgExt( 'categorytree-parents', 'parseinline' ) ); |
| 91 | + $output->addHTML( wfMsg( 'colon-separator' ) ); |
84 | 92 | |
85 | 93 | $parents = $this->tree->renderParents( $title ); |
86 | 94 | |
87 | 95 | if ( $parents == '' ) { |
88 | | - $wgOut->addHTML( wfMsgExt( 'categorytree-no-parent-categories', 'parseinline' ) ); |
| 96 | + $output->addHTML( wfMsgExt( 'categorytree-no-parent-categories', 'parseinline' ) ); |
89 | 97 | } else { |
90 | | - $wgOut->addHTML( $parents ); |
| 98 | + $output->addHTML( $parents ); |
91 | 99 | } |
92 | 100 | |
93 | | - $wgOut->addHTML( Xml::closeElement( 'div' ) ); |
| 101 | + $output->addHTML( Xml::closeElement( 'div' ) ); |
94 | 102 | |
95 | | - $wgOut->addHTML( Xml::openElement( 'div', array( 'class' => 'CategoryTreeResult' ) ) ); |
96 | | - $wgOut->addHTML( $this->tree->renderNode( $title, 1 ) ); |
97 | | - $wgOut->addHTML( Xml::closeElement( 'div' ) ); |
| 103 | + $output->addHTML( Xml::openElement( 'div', array( 'class' => 'CategoryTreeResult' ) ) ); |
| 104 | + $output->addHTML( $this->tree->renderNode( $title, 1 ) ); |
| 105 | + $output->addHTML( Xml::closeElement( 'div' ) ); |
| 106 | + } else { |
| 107 | + $output->addHTML( Xml::openElement( 'div', array( 'class' => 'CategoryTreeNotice' ) ) ); |
| 108 | + $output->addHTML( wfMsgExt( 'categorytree-not-found', 'parseinline' , $this->target ) ); |
| 109 | + $output->addHTML( Xml::closeElement( 'div' ) ); |
98 | 110 | } |
99 | | - else { |
100 | | - $wgOut->addHTML( Xml::openElement( 'div', array( 'class' => 'CategoryTreeNotice' ) ) ); |
101 | | - $wgOut->addHTML( wfMsgExt( 'categorytree-not-found', 'parseinline' , $this->target ) ); |
102 | | - $wgOut->addHTML( Xml::closeElement( 'div' ) ); |
103 | | - } |
104 | 111 | } |
105 | 112 | } |
106 | 113 | |
— | — | @@ -107,22 +114,23 @@ |
108 | 115 | * Input form for entering a category |
109 | 116 | */ |
110 | 117 | function executeInputForm() { |
111 | | - global $wgScript, $wgOut; |
| 118 | + global $wgScript; |
112 | 119 | $thisTitle = SpecialPage::getTitleFor( $this->getName() ); |
113 | 120 | $mode = $this->getOption( 'mode' ); |
114 | 121 | |
115 | | - $wgOut->addHTML( Xml::openElement( 'form', array( 'name' => 'categorytree', 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-categorytree-form' ) ) ); |
116 | | - $wgOut->addHTML( Xml::openElement( 'fieldset' ) ); |
117 | | - $wgOut->addHTML( Xml::element( 'legend', null, wfMsgNoTrans( 'categorytree-legend' ) ) ); |
118 | | - $wgOut->addHTML( Html::Hidden( 'title', $thisTitle->getPrefixedDbKey() ) ); |
119 | | - $wgOut->addHTML( Xml::inputLabel( wfMsgNoTrans( 'categorytree-category' ), 'target', 'target', 20, $this->target ) . ' ' ); |
120 | | - $wgOut->addHTML( Xml::openElement( 'select', array( 'name' => 'mode' ) ) ); |
121 | | - $wgOut->addHTML( Xml::option( wfMsgNoTrans( 'categorytree-mode-categories' ), 'categories', $mode == CT_MODE_CATEGORIES ? true : false ) ); |
122 | | - $wgOut->addHTML( Xml::option( wfMsgNoTrans( 'categorytree-mode-pages' ), 'pages', $mode == CT_MODE_PAGES ? true : false ) ); |
123 | | - $wgOut->addHTML( Xml::option( wfMsgNoTrans( 'categorytree-mode-all' ), 'all', $mode == CT_MODE_ALL ? true : false ) ); |
124 | | - $wgOut->addHTML( Xml::closeElement( 'select' ) . ' ' ); |
125 | | - $wgOut->addHTML( Xml::submitButton( wfMsgNoTrans( 'categorytree-go' ), array( 'name' => 'dotree' ) ) ); |
126 | | - $wgOut->addHTML( Xml::closeElement( 'fieldset' ) ); |
127 | | - $wgOut->addHTML( Xml::closeElement( 'form' ) ); |
| 122 | + $output = $this->getOutput(); |
| 123 | + $output->addHTML( Xml::openElement( 'form', array( 'name' => 'categorytree', 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-categorytree-form' ) ) ); |
| 124 | + $output->addHTML( Xml::openElement( 'fieldset' ) ); |
| 125 | + $output->addHTML( Xml::element( 'legend', null, wfMsgNoTrans( 'categorytree-legend' ) ) ); |
| 126 | + $output->addHTML( Html::Hidden( 'title', $thisTitle->getPrefixedDbKey() ) ); |
| 127 | + $output->addHTML( Xml::inputLabel( wfMsgNoTrans( 'categorytree-category' ), 'target', 'target', 20, $this->target ) . ' ' ); |
| 128 | + $output->addHTML( Xml::openElement( 'select', array( 'name' => 'mode' ) ) ); |
| 129 | + $output->addHTML( Xml::option( wfMsgNoTrans( 'categorytree-mode-categories' ), 'categories', $mode == CT_MODE_CATEGORIES ) ); |
| 130 | + $output->addHTML( Xml::option( wfMsgNoTrans( 'categorytree-mode-pages' ), 'pages', $mode == CT_MODE_PAGES ) ); |
| 131 | + $output->addHTML( Xml::option( wfMsgNoTrans( 'categorytree-mode-all' ), 'all', $mode == CT_MODE_ALL ) ); |
| 132 | + $output->addHTML( Xml::closeElement( 'select' ) . ' ' ); |
| 133 | + $output->addHTML( Xml::submitButton( wfMsgNoTrans( 'categorytree-go' ), array( 'name' => 'dotree' ) ) ); |
| 134 | + $output->addHTML( Xml::closeElement( 'fieldset' ) ); |
| 135 | + $output->addHTML( Xml::closeElement( 'form' ) ); |
128 | 136 | } |
129 | 137 | } |
Index: trunk/extensions/CategoryTree/CategoryTree.php |
— | — | @@ -217,6 +217,10 @@ |
218 | 218 | $wgHooks['ResourceLoaderGetConfigVars'][] = 'efCategoryTreeGetConfigVars'; |
219 | 219 | } |
220 | 220 | |
| 221 | +/** |
| 222 | + * @param $parser Parser |
| 223 | + * @return bool |
| 224 | + */ |
221 | 225 | function efCategoryTreeSetHooks( $parser ) { |
222 | 226 | $parser->setHook( 'categorytree' , 'efCategoryTreeParserHook' ); |
223 | 227 | $parser->setFunctionHook( 'categorytree' , 'efCategoryTreeParserFunction' ); |
— | — | @@ -229,6 +233,10 @@ |
230 | 234 | * If $enc is not given, '' is asumed, which simulates the old call interface, |
231 | 235 | * namely, only providing the mode name or number. |
232 | 236 | * This loads CategoryTreeFunctions.php and calls CategoryTree::ajax() |
| 237 | + * @param $category |
| 238 | + * @param $options array |
| 239 | + * @param $enc string |
| 240 | + * @return AjaxResponse|bool |
233 | 241 | */ |
234 | 242 | function efCategoryTreeAjaxWrapper( $category, $options = array(), $enc = '' ) { |
235 | 243 | global $wgCategoryTreeHTTPCache, $wgSquidMaxage, $wgUseSquid; |
— | — | @@ -254,8 +262,10 @@ |
255 | 263 | |
256 | 264 | /** |
257 | 265 | * Internal function to cap depth |
| 266 | + * @param $mode |
| 267 | + * @param $depth |
| 268 | + * @return int|mixed |
258 | 269 | */ |
259 | | - |
260 | 270 | function efCategoryTreeCapDepth( $mode, $depth ) { |
261 | 271 | global $wgCategoryTreeMaxDepth; |
262 | 272 | |
— | — | @@ -280,6 +290,8 @@ |
281 | 291 | /** |
282 | 292 | * Entry point for the {{#categorytree}} tag parser function. |
283 | 293 | * This is a wrapper around efCategoryTreeParserHook |
| 294 | + * @param $parser Parser |
| 295 | + * @return array|string |
284 | 296 | */ |
285 | 297 | function efCategoryTreeParserFunction( $parser ) { |
286 | 298 | $params = func_get_args(); |
— | — | @@ -297,8 +309,7 @@ |
298 | 310 | if ( preg_match( '/^\s*(\S.*?)\s*=\s*(.*?)\s*$/', $p, $m ) ) { |
299 | 311 | $k = $m[1]; |
300 | 312 | $v = preg_replace( '/^"\s*(.*?)\s*"$/', '$1', $m[2] ); // strip any quotes enclusing the value |
301 | | - } |
302 | | - else { |
| 313 | + } else { |
303 | 314 | $k = trim( $p ); |
304 | 315 | $v = true; |
305 | 316 | } |
— | — | @@ -314,13 +325,16 @@ |
315 | 326 | /** |
316 | 327 | * Hook implementation for injecting a category tree into the sidebar. |
317 | 328 | * Registered automatically if $wgCategoryTreeSidebarRoot is set to a category name. |
| 329 | + * @param $skin |
| 330 | + * @param $tpl SkinTemplate |
| 331 | + * @return bool |
318 | 332 | */ |
319 | 333 | function efCategoryTreeSkinTemplateOutputPageBeforeExec( $skin, $tpl ) { |
320 | 334 | global $wgCategoryTreeSidebarRoot, $wgCategoryTreeSidebarOptions; |
321 | 335 | |
322 | 336 | $html = efCategoryTreeParserHook( $wgCategoryTreeSidebarRoot, $wgCategoryTreeSidebarOptions ); |
323 | 337 | if ( $html ) { |
324 | | - $tpl->data['sidebar']['categorytree-portlet'] = $html; // requires MW 1.13, r36917 |
| 338 | + $tpl->data['sidebar']['categorytree-portlet'] = $html; |
325 | 339 | } |
326 | 340 | |
327 | 341 | return true; |
— | — | @@ -329,6 +343,11 @@ |
330 | 344 | /** |
331 | 345 | * Entry point for the <categorytree> tag parser hook. |
332 | 346 | * This loads CategoryTreeFunctions.php and calls CategoryTree::getTag() |
| 347 | + * @param $cat |
| 348 | + * @param $argv |
| 349 | + * @param $parser Parser |
| 350 | + * @param $allowMissing bool |
| 351 | + * @return bool|string |
333 | 352 | */ |
334 | 353 | function efCategoryTreeParserHook( $cat, $argv, $parser = null, $allowMissing = false ) { |
335 | 354 | global $wgOut; |
— | — | @@ -356,9 +375,12 @@ |
357 | 376 | } |
358 | 377 | |
359 | 378 | /** |
360 | | -* Hook callback that injects messages and things into the <head> tag |
361 | | -* Does nothing if $parserOutput->mCategoryTreeTag is not set |
362 | | -*/ |
| 379 | + * Hook callback that injects messages and things into the <head> tag |
| 380 | + * Does nothing if $parserOutput->mCategoryTreeTag is not set |
| 381 | + * @param $outputPage OutputPage |
| 382 | + * @param $parserOutput ParserOutput |
| 383 | + * @return bool |
| 384 | + */ |
363 | 385 | function efCategoryTreeParserOutput( $outputPage, $parserOutput ) { |
364 | 386 | if ( !empty( $parserOutput->mCategoryTreeTag ) ) { |
365 | 387 | CategoryTree::setHeaders( $outputPage ); |
— | — | @@ -371,6 +393,7 @@ |
372 | 394 | * |
373 | 395 | * @param $title Title |
374 | 396 | * @param $article Article |
| 397 | + * @return bool |
375 | 398 | */ |
376 | 399 | function efCategoryTreeArticleFromTitle( $title, &$article ) { |
377 | 400 | if ( $title->getNamespace() == NS_CATEGORY ) { |
— | — | @@ -381,6 +404,10 @@ |
382 | 405 | |
383 | 406 | /** |
384 | 407 | * OutputPageMakeCategoryLinks hook, override category links |
| 408 | + * @param $out |
| 409 | + * @param $categories |
| 410 | + * @param $links |
| 411 | + * @return bool |
385 | 412 | */ |
386 | 413 | function efCategoryTreeOutputPageMakeCategoryLinks( $out, &$categories, &$links ) { |
387 | 414 | global $wgCategoryTreePageCategoryOptions; |
— | — | @@ -392,6 +419,12 @@ |
393 | 420 | return false; |
394 | 421 | } |
395 | 422 | |
| 423 | +/** |
| 424 | + * @param $skin |
| 425 | + * @param $links |
| 426 | + * @param $result |
| 427 | + * @return bool |
| 428 | + */ |
396 | 429 | function efCategoryTreeSkinJoinCategoryLinks( $skin, &$links, &$result ) { |
397 | 430 | $embed = '<div class="CategoryTreeCategoryBarItem">'; |
398 | 431 | $pop = '</div>'; |
— | — | @@ -402,6 +435,10 @@ |
403 | 436 | return false; |
404 | 437 | } |
405 | 438 | |
| 439 | +/** |
| 440 | + * @param $vars |
| 441 | + * @return bool |
| 442 | + */ |
406 | 443 | function efCategoryTreeGetConfigVars( &$vars ) { |
407 | 444 | global $wgCategoryTreeCategoryPageOptions; |
408 | 445 | |
— | — | @@ -409,4 +446,4 @@ |
410 | 447 | $ct = new CategoryTree( $wgCategoryTreeCategoryPageOptions ); |
411 | 448 | $vars['wgCategoryTreePageCategoryOptions'] = $ct->getOptionsAsJsStructure(); |
412 | 449 | return true; |
413 | | -} |
\ No newline at end of file |
| 450 | +} |