Index: trunk/phase3/maintenance/language/messages.inc |
— | — | @@ -2913,6 +2913,7 @@ |
2914 | 2914 | 'version-hook-name', |
2915 | 2915 | 'version-hook-subscribedby', |
2916 | 2916 | 'version-version', |
| 2917 | + 'version-revision', |
2917 | 2918 | 'version-license', |
2918 | 2919 | 'version-software', |
2919 | 2920 | 'version-software-product', |
Index: trunk/phase3/includes/specials/SpecialVersion.php |
— | — | @@ -114,7 +114,7 @@ |
115 | 115 | public static function getVersion() { |
116 | 116 | global $wgVersion, $IP; |
117 | 117 | wfProfileIn( __METHOD__ ); |
118 | | - $svn = self::getSvnRevision( $IP ); |
| 118 | + $svn = self::getSvnRevision( $IP, false ); |
119 | 119 | $version = $svn ? "$wgVersion (r$svn)" : $wgVersion; |
120 | 120 | wfProfileOut( __METHOD__ ); |
121 | 121 | return $version; |
— | — | @@ -129,7 +129,7 @@ |
130 | 130 | public static function getVersionLinked() { |
131 | 131 | global $wgVersion, $IP; |
132 | 132 | wfProfileIn( __METHOD__ ); |
133 | | - $svn = self::getSvnRevision( $IP ); |
| 133 | + $svn = self::getSvnRevision( $IP, false ); |
134 | 134 | $viewvc = 'http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/?pathrev='; |
135 | 135 | $version = $svn ? "$wgVersion ([{$viewvc}{$svn} r$svn])" : $wgVersion; |
136 | 136 | wfProfileOut( __METHOD__ ); |
— | — | @@ -163,7 +163,9 @@ |
164 | 164 | |
165 | 165 | foreach ( $wgExtensionCredits[$type] as $extension ) { |
166 | 166 | $version = null; |
167 | | - $subVersion = ''; |
| 167 | + $subVersion = null; |
| 168 | + if (isset($extension['path'])) |
| 169 | + $subVersion = self::getSvnRevision(dirname($extension['path']), true); |
168 | 170 | if ( isset( $extension['version'] ) ) { |
169 | 171 | $version = $extension['version']; |
170 | 172 | } |
— | — | @@ -171,6 +173,7 @@ |
172 | 174 | $out .= $this->formatCredits( |
173 | 175 | isset ( $extension['name'] ) ? $extension['name'] : '', |
174 | 176 | $version, |
| 177 | + $subVersion, |
175 | 178 | isset ( $extension['author'] ) ? $extension['author'] : '', |
176 | 179 | isset ( $extension['url'] ) ? $extension['url'] : null, |
177 | 180 | isset ( $extension['description'] ) ? $extension['description'] : '', |
— | — | @@ -217,9 +220,10 @@ |
218 | 221 | } |
219 | 222 | } |
220 | 223 | |
221 | | - function formatCredits( $name, $version = null, $author = null, $url = null, $description = null, $descriptionMsg = null ) { |
| 224 | + function formatCredits( $name, $version = null, $subVersion = null, $author = null, $url = null, $description = null, $descriptionMsg = null ) { |
222 | 225 | $extension = isset( $url ) ? "[$url $name]" : $name; |
223 | | - $version = isset( $version ) ? "(" . wfMsg( 'version-version' ) . " $version)" : ''; |
| 226 | + $version = isset( $version ) ? "(" . wfMsg( 'version-version' ) . " $version)" : ''; |
| 227 | + $subVersion = isset( $subVersion ) ? "(" . wfMsg( 'version-revision' ) . " r$subVersion)" : ''; |
224 | 228 | |
225 | 229 | # Look for a localized description |
226 | 230 | if( isset( $descriptionMsg ) ) { |
— | — | @@ -230,7 +234,7 @@ |
231 | 235 | } |
232 | 236 | |
233 | 237 | return "<tr> |
234 | | - <td><em>$extension $version</em></td> |
| 238 | + <td><em>$extension $version $subVersion</em></td> |
235 | 239 | <td>$description</td> |
236 | 240 | <td>" . $this->listToText( (array)$author ) . "</td> |
237 | 241 | </tr>\n"; |
— | — | @@ -337,7 +341,7 @@ |
338 | 342 | * @param string $dir |
339 | 343 | * @return mixed revision number as int, or false if not a SVN checkout |
340 | 344 | */ |
341 | | - public static function getSvnRevision( $dir ) { |
| 345 | + public static function getSvnRevision( $dir , $extension = false) { |
342 | 346 | // http://svnbook.red-bean.com/nightly/en/svn.developer.insidewc.html |
343 | 347 | $entries = $dir . '/.svn/entries'; |
344 | 348 | |
— | — | @@ -372,8 +376,13 @@ |
373 | 377 | } |
374 | 378 | return false; |
375 | 379 | } else { |
376 | | - // subversion is release 1.4 |
377 | | - return intval( $content[3] ); |
| 380 | + // subversion is release 1.4 or above |
| 381 | + if ($extension) |
| 382 | + // get the last file revsion number |
| 383 | + return intval( $content[10]) ; |
| 384 | + else |
| 385 | + // get the directory revsion number |
| 386 | + return intval( $content[3] ); |
378 | 387 | } |
379 | 388 | } |
380 | 389 | |
Index: trunk/phase3/languages/messages/MessagesZh_hans.php |
— | — | @@ -3026,6 +3026,7 @@ |
3027 | 3027 | 'version-hook-name' => '钩名', |
3028 | 3028 | 'version-hook-subscribedby' => '署名', |
3029 | 3029 | 'version-version' => '版本', |
| 3030 | +'version-revision' => '修订', |
3030 | 3031 | 'version-license' => '授权', |
3031 | 3032 | 'version-software' => '已安装软件', |
3032 | 3033 | 'version-software-product' => '产品', |
Index: trunk/phase3/languages/messages/MessagesYue.php |
— | — | @@ -2975,6 +2975,7 @@ |
2976 | 2976 | 'version-hook-name' => '鈎名', |
2977 | 2977 | 'version-hook-subscribedby' => '利用於', |
2978 | 2978 | 'version-version' => '版本', |
| 2979 | +'version-revision' => '修訂', |
2979 | 2980 | 'version-license' => '牌照', |
2980 | 2981 | 'version-software' => '裝咗嘅軟件', |
2981 | 2982 | 'version-software-product' => '產品', |
Index: trunk/phase3/languages/messages/MessagesZh_hant.php |
— | — | @@ -3002,6 +3002,7 @@ |
3003 | 3003 | 'version-hook-name' => '鈎名', |
3004 | 3004 | 'version-hook-subscribedby' => '利用於', |
3005 | 3005 | 'version-version' => '版本', |
| 3006 | +'version-revision' => '修訂', |
3006 | 3007 | 'version-license' => '授權', |
3007 | 3008 | 'version-software' => '已經安裝的軟件', |
3008 | 3009 | 'version-software-product' => '產品', |
Index: trunk/phase3/languages/messages/MessagesEn.php |
— | — | @@ -3834,6 +3834,7 @@ |
3835 | 3835 | 'version-hook-name' => 'Hook name', |
3836 | 3836 | 'version-hook-subscribedby' => 'Subscribed by', |
3837 | 3837 | 'version-version' => 'Version', |
| 3838 | +'version-revision' => 'Revision', |
3838 | 3839 | 'version-license' => 'License', |
3839 | 3840 | 'version-software' => 'Installed software', |
3840 | 3841 | 'version-software-product' => 'Product', |
Index: trunk/phase3/languages/messages/MessagesLzh.php |
— | — | @@ -2431,6 +2431,7 @@ |
2432 | 2432 | 'version-hook-name' => '鈎名', |
2433 | 2433 | 'version-hook-subscribedby' => '用於', |
2434 | 2434 | 'version-version' => '版', |
| 2435 | +'version-revision' => '訂', |
2435 | 2436 | 'version-license' => '牌', |
2436 | 2437 | 'version-software' => '裝件', |
2437 | 2438 | 'version-software-product' => '品', |
Index: trunk/phase3/RELEASE-NOTES |
— | — | @@ -177,6 +177,8 @@ |
178 | 178 | * Added $wgExtPGAlteredFields to allow extensions to easily alter the data |
179 | 179 | type of columns when using the Postgres backend. |
180 | 180 | * (bug 16950) Show move log when viewing/creating a deleted page |
| 181 | +* (bug 18242) Show the Subversion revision number per extensions in |
| 182 | + Special:Version |
181 | 183 | |
182 | 184 | |
183 | 185 | === Bug fixes in 1.15 === |
Index: trunk/extensions/Renameuser/SpecialRenameuser.php |
— | — | @@ -15,6 +15,7 @@ |
16 | 16 | $wgGroupPermissions['bureaucrat']['renameuser'] = true; |
17 | 17 | |
18 | 18 | $wgExtensionCredits['specialpage'][] = array( |
| 19 | + 'path' => __FILE__, |
19 | 20 | 'name' => 'Renameuser', |
20 | 21 | 'author' => array( 'Ævar Arnfjörð Bjarmason', 'Aaron Schulz' ), |
21 | 22 | 'url' => 'http://www.mediawiki.org/wiki/Extension:Renameuser', |
Index: trunk/extensions/AdvancedSearch/AdvancedSearch.setup.php |
— | — | @@ -24,6 +24,7 @@ |
25 | 25 | } |
26 | 26 | |
27 | 27 | $wgExtensionCredits['specialpage'][] = array( |
| 28 | + 'path' => __FILE__, |
28 | 29 | 'name' => 'AdvancedSearch', |
29 | 30 | 'author' => 'Roan Kattouw', |
30 | 31 | 'url' => 'http://www.mediawiki.org/wiki/Extension:AdvancedSearch', |
Index: trunk/extensions/AuthorProtect/AuthorProtect.php |
— | — | @@ -10,6 +10,7 @@ |
11 | 11 | } |
12 | 12 | |
13 | 13 | $wgExtensionCredits['other'][] = array( |
| 14 | + 'path' => __FILE__, |
14 | 15 | 'name' => 'Author Protect', |
15 | 16 | 'author' => 'Ryan Schmidt', |
16 | 17 | 'url' => 'http://www.mediawiki.org/wiki/Extension:AuthorProtect', |
Index: trunk/extensions/AmazonPlus/AmazonPlus.php |
— | — | @@ -44,6 +44,7 @@ |
45 | 45 | } |
46 | 46 | |
47 | 47 | $wgExtensionCredits['other'][] = array( |
| 48 | + 'path' => __FILE__, |
48 | 49 | 'name' => 'AmazonPlus', |
49 | 50 | 'description' => 'A highly customizable extension to display Amazon information', |
50 | 51 | 'descriptionmsg' => 'amazonplus-desc', |
— | — | @@ -468,4 +469,4 @@ |
469 | 470 | } |
470 | 471 | return 'com'; |
471 | 472 | } |
472 | | -} |
\ No newline at end of file |
| 473 | +} |
Index: trunk/extensions/AntiSpoof/AntiSpoof.php |
— | — | @@ -1,6 +1,7 @@ |
2 | 2 | <?php |
3 | 3 | |
4 | 4 | $wgExtensionCredits['other'][] = array( |
| 5 | + 'path' => __FILE__, |
5 | 6 | 'name' => 'AntiSpoof', |
6 | 7 | 'url' => 'http://www.mediawiki.org/wiki/Extension:AntiSpoof', |
7 | 8 | 'author' => 'Brion Vibber', |
Index: trunk/extensions/AdvancedRandom/SpecialAdvancedRandom.php |
— | — | @@ -19,6 +19,7 @@ |
20 | 20 | */ |
21 | 21 | |
22 | 22 | $wgExtensionCredits['specialpage'][] = array( |
| 23 | + 'path' => __FILE__, |
23 | 24 | 'name' => 'AdvancedRandom', |
24 | 25 | 'url' => 'http://www.mediawiki.org/wiki/Extension:AdvancedRandom', |
25 | 26 | 'description' => 'Get a random page from any namespace, the talk or subjectpage ' . |
Index: trunk/extensions/AjaxShowEditors/Load.php |
— | — | @@ -3,6 +3,7 @@ |
4 | 4 | $wgAjaxShowEditorsTimeout = 60; |
5 | 5 | |
6 | 6 | $wgExtensionCredits['other'][] = array( |
| 7 | + 'path' => __FILE__, |
7 | 8 | 'name' => 'Ajax Show Editors', |
8 | 9 | 'url' => 'http://www.mediawiki.org/wiki/Extension:AjaxShowEditors', |
9 | 10 | 'author' => 'Ashar Voultoiz', |
Index: trunk/extensions/Autoincrement/Autoincrement.php |
— | — | @@ -12,6 +12,7 @@ |
13 | 13 | */ |
14 | 14 | |
15 | 15 | $wgExtensionCredits['variable'][] = array( |
| 16 | + 'path' => __FILE__, |
16 | 17 | 'name' => 'Autoincrement', |
17 | 18 | 'description' => 'a variable hook that adds an autoincrementing variable, <nowiki>{{AUTOINCREMENT}}</nowiki>', |
18 | 19 | 'author' => 'Ævar Arnfjörð Bjarmason', |
Index: trunk/extensions/ParserFunctions/ParserFunctions.php |
— | — | @@ -6,6 +6,7 @@ |
7 | 7 | |
8 | 8 | $wgExtensionFunctions[] = 'wfSetupParserFunctions'; |
9 | 9 | $wgExtensionCredits['parserhook'][] = array( |
| 10 | + 'path' => __FILE__, |
10 | 11 | 'name' => 'ParserFunctions', |
11 | 12 | 'version' => '1.1.1', |
12 | 13 | 'url' => 'http://www.mediawiki.org/wiki/Extension:ParserFunctions', |
Index: trunk/extensions/APC/ViewAPC.php |
— | — | @@ -10,6 +10,7 @@ |
11 | 11 | */ |
12 | 12 | |
13 | 13 | $wgExtensionCredits['specialpage'][] = array( |
| 14 | + 'path' => __FILE__, |
14 | 15 | 'name' => 'Apc', |
15 | 16 | 'version' => '2008-09-04', |
16 | 17 | 'author' => 'Niklas Laxström', |
Index: trunk/extensions/AjaxTest/AjaxTest.php |
— | — | @@ -27,6 +27,7 @@ |
28 | 28 | * Register extension setup hook and credits |
29 | 29 | */ |
30 | 30 | $wgExtensionCredits['specialpage'][] = array( |
| 31 | + 'path' => __FILE__, |
31 | 32 | 'name' => 'AjaxTest', |
32 | 33 | 'author' => 'Daniel Kinzler', |
33 | 34 | 'description' => 'AjaxTest extension', |
Index: trunk/extensions/ABC/ABC.php |
— | — | @@ -53,6 +53,7 @@ |
54 | 54 | $abcDelayedRendering = false; |
55 | 55 | |
56 | 56 | $wgExtensionCredits['parserhooks'][] = array( |
| 57 | + 'path' => __FILE__, |
57 | 58 | 'name' => 'ABC', |
58 | 59 | 'author' => 'River Tarnell', |
59 | 60 | 'url' => 'http://www.mediawiki.org/wiki/Extension:ABC', |
Index: trunk/extensions/CategoryTree/CategoryTree.php |
— | — | @@ -109,6 +109,7 @@ |
110 | 110 | */ |
111 | 111 | $wgExtensionFunctions[] = 'efCategoryTree'; |
112 | 112 | $wgExtensionCredits['specialpage'][] = array( |
| 113 | + 'path' => __FILE__, |
113 | 114 | 'name' => 'CategoryTree', |
114 | 115 | 'author' => 'Daniel Kinzler', |
115 | 116 | 'url' => 'http://www.mediawiki.org/wiki/Extension:CategoryTree', |
— | — | @@ -116,6 +117,7 @@ |
117 | 118 | 'descriptionmsg' => 'categorytree-desc', |
118 | 119 | ); |
119 | 120 | $wgExtensionCredits['parserhook'][] = array( |
| 121 | + 'path' => __FILE__, |
120 | 122 | 'name' => 'CategoryTree', |
121 | 123 | 'author' => 'Daniel Kinzler', |
122 | 124 | 'url' => 'http://www.mediawiki.org/wiki/Extension:CategoryTree', |
— | — | @@ -389,4 +391,4 @@ |
390 | 392 | $result = $embed . implode ( "{$pop} {$sep} {$embed}" , $links ) . $pop; |
391 | 393 | |
392 | 394 | return false; |
393 | | -} |
\ No newline at end of file |
| 395 | +} |
Index: trunk/extensions/Nuke/SpecialNuke.php |
— | — | @@ -9,6 +9,7 @@ |
10 | 10 | $wgExtensionAliasesFiles['Nuke'] = $dir . 'SpecialNuke.alias.php'; |
11 | 11 | |
12 | 12 | $wgExtensionCredits['specialpage'][] = array( |
| 13 | + 'path' => __FILE__, |
13 | 14 | 'name' => 'Nuke', |
14 | 15 | 'description' => 'Gives sysops the ability to mass delete pages', |
15 | 16 | 'descriptionmsg' => 'nuke-desc', |
Index: trunk/extensions/AbsenteeLandlord/AbsenteeLandlord.php |
— | — | @@ -11,6 +11,7 @@ |
12 | 12 | $wgAbsenteeLandlordMaxDays = 90; //how many days do the sysops have to be inactive for? |
13 | 13 | |
14 | 14 | $wgExtensionCredits['other'][] = array( |
| 15 | + 'path' => __FILE__, |
15 | 16 | 'name' => 'Absentee Landlord', |
16 | 17 | 'author' => array( 'Ryan Schmidt', 'Tim Laqua' ), |
17 | 18 | 'version' => '1.1', |
Index: trunk/extensions/AjaxLogin/AjaxLogin.php |
— | — | @@ -16,6 +16,7 @@ |
17 | 17 | |
18 | 18 | // Extension credits that will show up on Special:Version |
19 | 19 | $wgExtensionCredits['other'][] = array( |
| 20 | + 'path' => __FILE__, |
20 | 21 | 'name' => 'AjaxLogin', |
21 | 22 | 'version' => '1.1.1', |
22 | 23 | 'author' => array( 'Inez Korczyński', 'Jack Phoenix' ), |
— | — | @@ -134,4 +135,4 @@ |
135 | 136 | </div>' ); |
136 | 137 | } |
137 | 138 | return true; |
138 | | -} |
\ No newline at end of file |
| 139 | +} |
Index: trunk/extensions/Asksql/Asksql.php |
— | — | @@ -15,6 +15,7 @@ |
16 | 16 | exit; |
17 | 17 | |
18 | 18 | $wgExtensionCredits['specialpage'][] = array( |
| 19 | + 'path' => __FILE__, |
19 | 20 | 'name' => 'Ask SQL', |
20 | 21 | 'description' => 'Do SQL queries through a [[Special:Asksql|special page]]', |
21 | 22 | 'descriptionmsg' => 'asksql-desc', |
Index: trunk/extensions/AbuseFilter/AbuseFilter.php |
— | — | @@ -17,6 +17,7 @@ |
18 | 18 | |
19 | 19 | $dir = dirname(__FILE__); |
20 | 20 | $wgExtensionCredits['other'][] = array( |
| 21 | + 'path' => __FILE__, |
21 | 22 | 'name' => 'Abuse Filter', |
22 | 23 | 'author' => array('Andrew Garrett','River Tarnell', 'Victor Vasiliev'), |
23 | 24 | 'description' => 'Applies automatic heuristics to edits.', |
Index: trunk/extensions/Translate/Translate.php |
— | — | @@ -14,6 +14,7 @@ |
15 | 15 | define( 'TRANSLATE_VERSION', '11:2009-04-24' ); |
16 | 16 | |
17 | 17 | $wgExtensionCredits['specialpage'][] = array( |
| 18 | + 'path' => __FILE__, |
18 | 19 | 'name' => 'Translate', |
19 | 20 | 'version' => TRANSLATE_VERSION, |
20 | 21 | 'author' => array( 'Niklas Laxström', 'Siebrand Mazeland' ), |
Index: trunk/extensions/AssertEdit/AssertEdit.php |
— | — | @@ -18,6 +18,7 @@ |
19 | 19 | */ |
20 | 20 | |
21 | 21 | $wgExtensionCredits['other'][] = array( |
| 22 | + 'path' => __FILE__, |
22 | 23 | 'name' => 'AssertEdit', |
23 | 24 | 'author' => 'Steve Sanbeg', |
24 | 25 | 'description' => 'Adds edit assertions for use by bots', |
Index: trunk/extensions/CrossNamespaceLinks/SpecialCrossNamespaceLinks.php |
— | — | @@ -12,6 +12,7 @@ |
13 | 13 | */ |
14 | 14 | |
15 | 15 | $wgExtensionCredits['specialpage'][] = array( |
| 16 | + 'path' => __FILE__, |
16 | 17 | 'name' => 'Cross-namespace links', |
17 | 18 | 'description' => 'lists links across namespaces that shouldn\'t exist on Wikimedia projects', |
18 | 19 | 'descriptionmsg' => 'crossnamespacelinks-desc', |
Index: trunk/extensions/AjaxQueryPages/Load.php |
— | — | @@ -12,6 +12,7 @@ |
13 | 13 | ); |
14 | 14 | } else { |
15 | 15 | $wgExtensionCredits['other'][] = array( |
| 16 | + 'path' => __FILE__, |
16 | 17 | 'name' => 'Ajax Query Pages', |
17 | 18 | 'url' => 'http://www.mediawiki.org/wiki/Extension:AjaxQueryPages', |
18 | 19 | 'author' => 'Ashar Voultoiz', |
Index: trunk/extensions/AntiBot/AntiBot.php |
— | — | @@ -32,6 +32,7 @@ |
33 | 33 | /** END CONFIGURATION */ |
34 | 34 | |
35 | 35 | $wgExtensionCredits['other'][] = array( |
| 36 | + 'path' => __FILE__, |
36 | 37 | 'name' => 'AntiBot', |
37 | 38 | 'url' => 'http://www.mediawiki.org/wiki/Extension:AntiBot', |
38 | 39 | 'author' => 'Tim Starling', |