Index: branches/wmf/1.17wmf1/maintenance/language/messages.inc |
— | — | @@ -2698,6 +2698,7 @@ |
2699 | 2699 | 'exif-gpsareainformation', |
2700 | 2700 | 'exif-gpsdatestamp', |
2701 | 2701 | 'exif-gpsdifferential', |
| 2702 | + 'exif-objectname', |
2702 | 2703 | ), |
2703 | 2704 | 'exif-values' => array( |
2704 | 2705 | 'exif-make-value', |
Index: branches/wmf/1.17wmf1/maintenance/language/messageTypes.inc |
— | — | @@ -601,4 +601,5 @@ |
602 | 602 | 'exif-gpsdestdistance-n', |
603 | 603 | 'exif-gpsdirection-t', |
604 | 604 | 'exif-gpsdirection-m', |
| 605 | + 'exif-objectname', |
605 | 606 | ); |
Index: branches/wmf/1.17wmf1/skins/chick/main.css |
— | — | @@ -47,6 +47,7 @@ |
48 | 48 | background: none; |
49 | 49 | font-weight: normal; |
50 | 50 | margin: 0; |
| 51 | + overflow: hidden; |
51 | 52 | padding-top: 0.5em; |
52 | 53 | padding-bottom: 0.17em; |
53 | 54 | border-bottom: 1px solid #aaaaaa; |
— | — | @@ -279,7 +280,6 @@ |
280 | 281 | /* thumbnails */ |
281 | 282 | div.thumb { |
282 | 283 | margin-bottom: 0.5em; |
283 | | - border-style: solid; border-color: white; |
284 | 284 | width: auto; |
285 | 285 | } |
286 | 286 | div.thumbinner { |
— | — | @@ -312,13 +312,12 @@ |
313 | 313 | div.tright { |
314 | 314 | clear: right; |
315 | 315 | float: right; |
316 | | - border-width: 0.5em 0 0.8em 1.4em; |
| 316 | + margin: 0.5em 0 1.3em 1.4em; |
317 | 317 | } |
318 | 318 | div.tleft { |
319 | 319 | float: left; |
320 | 320 | clear: left; |
321 | | - margin-right:0.5em; |
322 | | - border-width: 0.5em 1.4em 0.8em 0; |
| 321 | + margin: 0.5em 1.4em 1.3em 0; |
323 | 322 | } |
324 | 323 | img.thumbborder { |
325 | 324 | border: 1px solid #dddddd; |
Index: branches/wmf/1.17wmf1/skins/monobook/main.css |
— | — | @@ -117,6 +117,7 @@ |
118 | 118 | background: none; |
119 | 119 | font-weight: normal; |
120 | 120 | margin: 0; |
| 121 | + overflow: hidden; |
121 | 122 | padding-top: .5em; |
122 | 123 | padding-bottom: .17em; |
123 | 124 | border-bottom: 1px solid #aaa; |
— | — | @@ -404,8 +405,6 @@ |
405 | 406 | /* thumbnails */ |
406 | 407 | div.thumb { |
407 | 408 | margin-bottom: .5em; |
408 | | - border-style: solid; |
409 | | - border-color: white; |
410 | 409 | width: auto; |
411 | 410 | } |
412 | 411 | div.thumbinner { |
— | — | @@ -439,13 +438,12 @@ |
440 | 439 | div.tright { |
441 | 440 | clear: right; |
442 | 441 | float: right; |
443 | | - border-width: .5em 0 .8em 1.4em; |
| 442 | + margin: .5em 0 1.3em 1.4em; |
444 | 443 | } |
445 | 444 | div.tleft { |
446 | 445 | float: left; |
447 | 446 | clear: left; |
448 | | - margin-right: .5em; |
449 | | - border-width: .5em 1.4em .8em 0; |
| 447 | + margin: .5em 1.4em 1.3em 0; |
450 | 448 | } |
451 | 449 | img.thumbborder { |
452 | 450 | border: 1px solid #dddddd; |
— | — | @@ -1270,4 +1268,4 @@ |
1271 | 1269 | /* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */ |
1272 | 1270 | .tipsy { |
1273 | 1271 | font-size: 127%; |
1274 | | -} |
\ No newline at end of file |
| 1272 | +} |
Index: branches/wmf/1.17wmf1/skins/modern/main.css |
— | — | @@ -333,6 +333,10 @@ |
334 | 334 | border-bottom: solid 1px #003366; |
335 | 335 | } |
336 | 336 | |
| 337 | +h1, h2, h3, h4, h5, h6 { |
| 338 | + overflow: hidden; |
| 339 | +} |
| 340 | + |
337 | 341 | #preftoc { |
338 | 342 | width: 100%; |
339 | 343 | margin: 0 0 0 0; |
— | — | @@ -487,8 +491,6 @@ |
488 | 492 | /* thumbnails */ |
489 | 493 | div.thumb { |
490 | 494 | margin-bottom: .5em; |
491 | | - border-style: solid; |
492 | | - border-color: white; |
493 | 495 | width: auto; |
494 | 496 | } |
495 | 497 | div.thumbinner { |
— | — | @@ -522,13 +524,12 @@ |
523 | 525 | div.tright { |
524 | 526 | clear: right; |
525 | 527 | float: right; |
526 | | - border-width: .5em 0 .8em 1.4em; |
| 528 | + margin: .5em 0 .8em 1.4em; |
527 | 529 | } |
528 | 530 | div.tleft { |
529 | 531 | float: left; |
530 | 532 | clear: left; |
531 | | - margin-right: .5em; |
532 | | - border-width: .5em 1.4em .8em 0; |
| 533 | + margin: .5em 1.4em .8em 0; |
533 | 534 | } |
534 | 535 | img.thumbborder { |
535 | 536 | border: 1px solid #dddddd; |
— | — | @@ -879,4 +880,4 @@ |
880 | 881 | /* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */ |
881 | 882 | .tipsy { |
882 | 883 | font-size: 130%; |
883 | | -} |
\ No newline at end of file |
| 884 | +} |
Index: branches/wmf/1.17wmf1/skins/common/shared.css |
— | — | @@ -9,6 +9,10 @@ |
10 | 10 | .mw-plusminus-neg { color: #8b0000; } /* dark red */ |
11 | 11 | .mw-plusminus-null { color: #aaa; } /* gray */ |
12 | 12 | |
| 13 | +/* Links to redirects appear italicized on [[Special:AllPages]], |
| 14 | + and in category listings */ |
| 15 | +.allpagesredirect, .redirect-in-category { font-style: italic; } |
| 16 | + |
13 | 17 | /* Comment and username portions of RC entries */ |
14 | 18 | span.comment { |
15 | 19 | font-style: italic; |
Property changes on: branches/wmf/1.17wmf1/skins/common/shared.css |
___________________________________________________________________ |
Modified: svn:mergeinfo |
16 | 20 | Merged /trunk/phase3/skins/common/shared.css:r78964,79086-79087,79091,82004,82025,82048,82070,82073,82081,82085,82088,82090-82091,82096,82100-82101,82114,82128-82131,82146 |
Index: branches/wmf/1.17wmf1/skins/common/mwsuggest.js |
— | — | @@ -7,6 +7,12 @@ |
8 | 8 | * by Robert Stojnic (April 2008) |
9 | 9 | */ |
10 | 10 | |
| 11 | +// Make sure wgMWSuggestTemplate is defined |
| 12 | +if ( !mw.config.exists( 'wgMWSuggestTemplate' ) ) { |
| 13 | + mw.config.set( 'wgMWSuggestTemplate', mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) |
| 14 | + + "/api.php?action=opensearch\x26search={searchTerms}\x26namespace={namespaces}\x26suggest" ); |
| 15 | +} |
| 16 | + |
11 | 17 | // search_box_id -> Results object |
12 | 18 | window.os_map = {}; |
13 | 19 | // cached data, url -> json_text |
— | — | @@ -40,6 +46,9 @@ |
41 | 47 | window.os_container_max_width = 2; |
42 | 48 | // currently active animation timer |
43 | 49 | window.os_animation_timer = null; |
| 50 | +// whether MWSuggest is enabled. Set to false when os_MWSuggestDisable() is called |
| 51 | +window.os_enabled = true; |
| 52 | + |
44 | 53 | /** |
45 | 54 | * <datalist> is a new HTML5 element that allows you to manually supply |
46 | 55 | * suggestion lists and have them rendered according to the right platform |
— | — | @@ -99,7 +108,11 @@ |
100 | 109 | |
101 | 110 | /** Initialization, call upon page onload */ |
102 | 111 | window.os_MWSuggestInit = function() { |
103 | | - for( i = 0; i < os_autoload_inputs.length; i++ ) { |
| 112 | + if ( !window.os_enabled ) { |
| 113 | + return; |
| 114 | + } |
| 115 | + |
| 116 | + for( var i = 0; i < os_autoload_inputs.length; i++ ) { |
104 | 117 | var id = os_autoload_inputs[i]; |
105 | 118 | var form = os_autoload_forms[i]; |
106 | 119 | element = document.getElementById( id ); |
— | — | @@ -109,6 +122,25 @@ |
110 | 123 | } |
111 | 124 | }; |
112 | 125 | |
| 126 | +/* Teardown, called when things like SimpleSearch need to disable MWSuggest */ |
| 127 | +window.os_MWSuggestTeardown = function() { |
| 128 | + for( var i = 0; i < os_autoload_inputs.length; i++ ) { |
| 129 | + var id = os_autoload_inputs[i]; |
| 130 | + var form = os_autoload_forms[i]; |
| 131 | + element = document.getElementById( id ); |
| 132 | + if( element != null ) { |
| 133 | + os_teardownHandlers( id, form, element ); |
| 134 | + } |
| 135 | + } |
| 136 | +}; |
| 137 | + |
| 138 | +/* Call this to disable MWSuggest. Works regardless of whether MWSuggest has been initialized already. */ |
| 139 | +window.os_MWSuggestDisable = function() { |
| 140 | + window.os_MWSuggestTeardown(); |
| 141 | + window.os_enabled = false; |
| 142 | +} |
| 143 | + |
| 144 | + |
113 | 145 | /** Init Result objects and event handlers */ |
114 | 146 | window.os_initHandlers = function( name, formname, element ) { |
115 | 147 | var r = new os_Results( name, formname ); |
— | — | @@ -118,20 +150,20 @@ |
119 | 151 | return; |
120 | 152 | } |
121 | 153 | // event handler |
122 | | - os_hookEvent( element, 'keyup', function( event ) { os_eventKeyup( event ); } ); |
123 | | - os_hookEvent( element, 'keydown', function( event ) { os_eventKeydown( event ); } ); |
124 | | - os_hookEvent( element, 'keypress', function( event ) { os_eventKeypress( event ); } ); |
| 154 | + os_hookEvent( element, 'keyup', os_eventKeyup ); |
| 155 | + os_hookEvent( element, 'keydown', os_eventKeydown ); |
| 156 | + os_hookEvent( element, 'keypress', os_eventKeypress ); |
125 | 157 | if ( !os_use_datalist ) { |
126 | 158 | // These are needed for the div hack to hide it if the user blurs. |
127 | | - os_hookEvent( element, 'blur', function( event ) { os_eventBlur( event ); } ); |
128 | | - os_hookEvent( element, 'focus', function( event ) { os_eventFocus( event ); } ); |
| 159 | + os_hookEvent( element, 'blur', os_eventBlur ); |
| 160 | + os_hookEvent( element, 'focus', os_eventFocus ); |
129 | 161 | // We don't want browser auto-suggestions interfering with our div, but |
130 | 162 | // autocomplete must be on for datalist to work (at least in Opera |
131 | 163 | // 10.10). |
132 | 164 | element.setAttribute( 'autocomplete', 'off' ); |
133 | 165 | } |
134 | 166 | // stopping handler |
135 | | - os_hookEvent( formElement, 'submit', function( event ) { return os_eventOnsubmit( event ); } ); |
| 167 | + os_hookEvent( formElement, 'submit', os_eventOnsubmit ); |
136 | 168 | os_map[name] = r; |
137 | 169 | // toggle link |
138 | 170 | if( document.getElementById( r.toggle ) == null ) { |
— | — | @@ -159,6 +191,30 @@ |
160 | 192 | |
161 | 193 | }; |
162 | 194 | |
| 195 | +window.os_teardownHandlers = function( name, formname, element ) { |
| 196 | + var formElement = document.getElementById( formname ); |
| 197 | + if( !formElement ) { |
| 198 | + // Older browsers (Opera 8) cannot get form elements |
| 199 | + return; |
| 200 | + } |
| 201 | + |
| 202 | + os_unhookEvent( element, 'keyup', os_eventKeyup ); |
| 203 | + os_unhookEvent( element, 'keydown', os_eventKeydown ); |
| 204 | + os_unhookEvent( element, 'keypress', os_eventKeypress ); |
| 205 | + if ( !os_use_datalist ) { |
| 206 | + // These are needed for the div hack to hide it if the user blurs. |
| 207 | + os_unhookEvent( element, 'blur', os_eventBlur ); |
| 208 | + os_unhookEvent( element, 'focus', os_eventFocus ); |
| 209 | + // We don't want browser auto-suggestions interfering with our div, but |
| 210 | + // autocomplete must be on for datalist to work (at least in Opera |
| 211 | + // 10.10). |
| 212 | + element.removeAttribute( 'autocomplete' ); |
| 213 | + } |
| 214 | + // stopping handler |
| 215 | + os_unhookEvent( formElement, 'submit', os_eventOnsubmit ); |
| 216 | +}; |
| 217 | + |
| 218 | + |
163 | 219 | window.os_hookEvent = function( element, hookName, hookFunct ) { |
164 | 220 | if ( element.addEventListener ) { |
165 | 221 | element.addEventListener( hookName, hookFunct, false ); |
— | — | @@ -167,6 +223,14 @@ |
168 | 224 | } |
169 | 225 | }; |
170 | 226 | |
| 227 | +window.os_unhookEvent = function( element, hookName, hookFunct ) { |
| 228 | + if ( element.removeEventListener ) { |
| 229 | + element.removeEventListener( hookName, hookFunct, false ); |
| 230 | + } else if ( element.detachEvent ) { |
| 231 | + element.detachEvent( 'on' + hookName, hookFunct ); |
| 232 | + } |
| 233 | +} |
| 234 | + |
171 | 235 | /******************** |
172 | 236 | * Keyboard events |
173 | 237 | ********************/ |
— | — | @@ -414,7 +478,7 @@ |
415 | 479 | var r = os_timer.r; |
416 | 480 | var query = os_timer.query; |
417 | 481 | os_timer = null; |
418 | | - var path = wgMWSuggestTemplate.replace( "{namespaces}", os_getNamespaces( r ) ) |
| 482 | + var path = mw.config.get( 'wgMWSuggestTemplate' ).replace( "{namespaces}", os_getNamespaces( r ) ) |
419 | 483 | .replace( "{dbname}", wgDBname ) |
420 | 484 | .replace( "{searchTerms}", os_encodeQuery( query ) ); |
421 | 485 | |
Index: branches/wmf/1.17wmf1/skins/vector/screen.css |
— | — | @@ -710,6 +710,7 @@ |
711 | 711 | background: none; |
712 | 712 | font-weight: normal; |
713 | 713 | margin: 0; |
| 714 | + overflow: hidden; |
714 | 715 | padding-top: .5em; |
715 | 716 | padding-bottom: .17em; |
716 | 717 | border-bottom: 1px solid #aaa; |
— | — | @@ -903,8 +904,6 @@ |
904 | 905 | /* Thumbnails */ |
905 | 906 | div.thumb { |
906 | 907 | margin-bottom: .5em; |
907 | | - border-style: solid; |
908 | | - border-color: white; |
909 | 908 | width: auto; |
910 | 909 | background-color: transparent; |
911 | 910 | } |
— | — | @@ -940,14 +939,13 @@ |
941 | 940 | div.tright { |
942 | 941 | clear: right; |
943 | 942 | float: right; |
944 | | - border-width: .5em 0 .8em 1.4em; |
| 943 | + margin: .5em 0 1.3em 1.4em; |
945 | 944 | } |
946 | 945 | /* @noflip */ |
947 | 946 | div.tleft { |
948 | 947 | float: left; |
949 | 948 | clear: left; |
950 | | - margin-right: .5em; |
951 | | - border-width: .5em 1.4em .8em 0; |
| 949 | + margin: .5em 1.4em 1.3em 0; |
952 | 950 | } |
953 | 951 | img.thumbborder { |
954 | 952 | border: 1px solid #dddddd; |
— | — | @@ -1204,4 +1202,4 @@ |
1205 | 1203 | /* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */ |
1206 | 1204 | .tipsy { |
1207 | 1205 | font-size: 0.8em; |
1208 | | -} |
\ No newline at end of file |
| 1206 | +} |
Property changes on: branches/wmf/1.17wmf1/skins/vector/screen.css |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1209 | 1207 | Merged /trunk/phase3/skins/vector/screen.css:r78964,79086-79087,79091,82004,82025,82048,82070,82073,82081,82085,82088,82090-82091,82096,82100-82101,82114,82128-82131,82146 |
Index: branches/wmf/1.17wmf1/extensions/DoubleWiki/DoubleWiki_body.php |
— | — | @@ -121,7 +121,8 @@ |
122 | 122 | $left_chunk = ''; |
123 | 123 | $right_chunk = ''; |
124 | 124 | |
125 | | - for ( $i=0 ; $i < count($left_slices) ; $i++ ) { |
| 125 | + $leftSliceCount = count( $left_slices ); |
| 126 | + for ( $i=0 ; $i < $leftSliceCount; $i++ ) { |
126 | 127 | |
127 | 128 | // some slices might be empty |
128 | 129 | if( $left_slices[$i] == '' ) { |
— | — | @@ -167,7 +168,8 @@ |
168 | 169 | |
169 | 170 | $left_chunk = ''; |
170 | 171 | $right_chunk = ''; |
171 | | - for($l=0; $l < count( $left_bits ) ; $l++ ) { |
| 172 | + $leftBitCount = count( $left_bits ); |
| 173 | + for($l=0; $l < $leftBitCount ; $l++ ) { |
172 | 174 | $body .= |
173 | 175 | "<tr><td valign=\"top\" style=\"vertical-align:100%;padding-right: 0.5em\" lang=\"{$left_lang}\">" |
174 | 176 | ."<div style=\"width:35em; margin:0px auto\">\n".$left_bits[$l]."</div>" |
— | — | @@ -201,7 +203,8 @@ |
202 | 204 | preg_match_all( $this->tags, $text, $m, PREG_SET_ORDER); |
203 | 205 | $counter = 0; |
204 | 206 | $out = ''; |
205 | | - for($i=0; $i < count($m); $i++){ |
| 207 | + $matchCount = count( $m ); |
| 208 | + for( $i = 0; $i < $matchCount; $i++ ){ |
206 | 209 | $t = $m[$i][0]; |
207 | 210 | if( substr( $t, 0, 2) != "</" ) { |
208 | 211 | $counter++; |
— | — | @@ -253,7 +256,8 @@ |
254 | 257 | for( $i=0 ; $i < $n ; $i++) { |
255 | 258 | preg_match_all( $this->tags, $left_slices[$i], $m, PREG_SET_ORDER); |
256 | 259 | $counter = 0; |
257 | | - for($k=0 ; $k < count($m) ; $k++) { |
| 260 | + $matchCount = count( $m ); |
| 261 | + for($k=0 ; $k < $matchCount ; $k++) { |
258 | 262 | $t = $m[$k]; |
259 | 263 | if( substr( $t[0], 0, 2) != "</" ) { |
260 | 264 | $counter++; |
Index: branches/wmf/1.17wmf1/extensions/Vector/modules/ext.vector.simpleSearch.js |
— | — | @@ -1,11 +1,5 @@ |
2 | 2 | /* JavaScript for SimpleSearch extension */ |
3 | 3 | |
4 | | -// XXX: Disable mwsuggest.js's effect on searchInput |
5 | | -if ( typeof os_autoload_inputs !== 'undefined' && os_autoload_forms !== 'undefined' ) { |
6 | | - os_autoload_inputs = []; |
7 | | - os_autoload_forms = []; |
8 | | -} |
9 | | - |
10 | 4 | $( document ).ready( function() { |
11 | 5 | |
12 | 6 | // Compatibility map |
— | — | @@ -34,6 +28,11 @@ |
35 | 29 | return true; |
36 | 30 | } |
37 | 31 | |
| 32 | + // Disable MWSuggest if loaded |
| 33 | + if ( window.os_MWSuggestDisable ) { |
| 34 | + window.os_MWSuggestDisable(); |
| 35 | + } |
| 36 | + |
38 | 37 | // Placeholder text for SimpleSearch box |
39 | 38 | $( 'div#simpleSearch > input#searchInput' ) |
40 | 39 | .attr( 'placeholder', mediaWiki.msg( 'vector-simplesearch-search' ) ) |
Property changes on: branches/wmf/1.17wmf1/extensions/Vector/modules/ext.vector.simpleSearch.js |
___________________________________________________________________ |
Modified: svn:mergeinfo |
41 | 40 | Merged /trunk/extensions/Vector/modules/ext.vector.simpleSearch.js:r78964,79086-79087,79091,82004,82025,82048,82070,82073,82081,82085,82088,82090-82091,82096,82100-82101,82114,82128-82131,82146 |
Index: branches/wmf/1.17wmf1/extensions/PagedTiffHandler/PagedTiffHandler.i18n.php |
— | — | @@ -28,7 +28,7 @@ |
29 | 29 | 'tiff_size_error' => 'The reported file size does not match the actual file size.', |
30 | 30 | 'tiff_script_detected' => 'The uploaded file contains scripts.', |
31 | 31 | 'tiff_bad_file' => 'The uploaded file contains errors: $1', |
32 | | - 'tiff-file-info-size' => 'page $5, $1 × $2 pixel, file size: $3, MIME type: $4', |
| 32 | + 'tiff-file-info-size' => 'page $5, $1 × $2 pixels, file size: $3, MIME type: $4', |
33 | 33 | ); |
34 | 34 | |
35 | 35 | /** Message documentation (Message documentation) |
Index: branches/wmf/1.17wmf1/extensions/CodeReview/CodeReview.i18n.php |
— | — | @@ -162,8 +162,10 @@ |
163 | 163 | 'codereview-email-body3' => 'User "$1" changed the status of $2. |
164 | 164 | |
165 | 165 | Old Status: $3 |
166 | | -New Status: $4', |
| 166 | +New Status: $4 |
167 | 167 | |
| 168 | +Full URL: $5', |
| 169 | + |
168 | 170 | 'codereview-email-subj4' => '[$1 $2]: New comment added, and revision status changed', |
169 | 171 | 'codereview-email-body4' => 'User "$1" changed the status of $2. |
170 | 172 | |
— | — | @@ -205,6 +207,7 @@ |
206 | 208 | 'right-codereview-set-status' => 'Change revisions status', |
207 | 209 | 'right-codereview-signoff' => 'Sign off on revisions', |
208 | 210 | 'right-codereview-link-user' => 'Link authors to wiki users', |
| 211 | + 'right-codereview-associate' => 'Manage revision associations', |
209 | 212 | |
210 | 213 | 'specialpages-group-developer' => 'Developer tools', |
211 | 214 | ); |
Index: branches/wmf/1.17wmf1/extensions/CodeReview/ui/CodeRevisionCommitter.php |
— | — | @@ -117,18 +117,18 @@ |
118 | 118 | $dbw->commit(); |
119 | 119 | |
120 | 120 | if ( $statusChanged || $commentAdded ) { |
| 121 | + $url = $this->mRev->getFullUrl( $commentId ); |
121 | 122 | if ( $statusChanged && $commentAdded ) { |
122 | | - $url = $this->mRev->getFullUrl( $commentId ); |
123 | 123 | $this->mRev->emailNotifyUsersOfChanges( 'codereview-email-subj4', 'codereview-email-body4', |
124 | | - $wgUser->getName(), $this->mRev->getIdStringUnique(), $this->mRev->mOldStatus, $this->mRev->mStatus, |
125 | | - $url, $this->text |
| 124 | + $wgUser->getName(), $this->mRev->getIdStringUnique(), $this->mRev->mOldStatus, |
| 125 | + $this->mRev->getStatus(), $url, $this->text |
126 | 126 | ); |
127 | 127 | } else if ( $statusChanged ) { |
128 | 128 | $this->mRev->emailNotifyUsersOfChanges( 'codereview-email-subj3', 'codereview-email-body3', |
129 | | - $wgUser->getName(), $this->mRev->getIdStringUnique(), $this->mRev->mOldStatus, $this->mRev->mStatus |
| 129 | + $wgUser->getName(), $this->mRev->getIdStringUnique(), $this->mRev->mOldStatus, |
| 130 | + $this->mRev->getStatus(), $url |
130 | 131 | ); |
131 | 132 | } else if ( $commentAdded ) { |
132 | | - $url = $this->mRev->getFullUrl( $commentId ); |
133 | 133 | $this->mRev->emailNotifyUsersOfChanges( 'codereview-email-subj', 'codereview-email-body', |
134 | 134 | $wgUser->getName(), $url, $this->mRev->getIdStringUnique(), $this->text |
135 | 135 | ); |
Index: branches/wmf/1.17wmf1/extensions/CodeReview/ui/CodeRevisionView.php |
— | — | @@ -136,12 +136,23 @@ |
137 | 137 | "<div class='mw-codereview-diff' id='mw-codereview-diff'>" . $diffHtml . "</div>\n"; |
138 | 138 | $html .= $this->formatImgDiff(); |
139 | 139 | } |
| 140 | + |
140 | 141 | # Show sign-offs |
141 | | - $html .= "<h2 id='code-signoffs'>" . wfMsgHtml( 'code-signoffs' ) . |
142 | | - "</h2>\n" . $this->formatSignoffs( $this->canSignoff() ); |
| 142 | + $userCanSignoff = $this->canSignoff(); |
| 143 | + $signOffs = $this->mRev->getSignoffs(); |
| 144 | + if ( count( $signOffs ) || $userCanSignoff ) { |
| 145 | + $html .= "<h2 id='code-signoffs'>" . wfMsgHtml( 'code-signoffs' ) . |
| 146 | + "</h2>\n" . $this->formatSignoffs( $signOffs, $userCanSignoff ); |
| 147 | + } |
| 148 | + |
143 | 149 | # Show code relations |
144 | | - $html .= "<h2 id='code-references'>" . wfMsgHtml( 'code-references' ) . |
145 | | - "</h2>\n" . $this->formatReferences( $this->canAssociate() ); |
| 150 | + $userCanAssociate = $this->canAssociate(); |
| 151 | + $references = $this->mRev->getReferences(); |
| 152 | + if ( count( $references ) || $userCanAssociate ) { |
| 153 | + $html .= "<h2 id='code-references'>" . wfMsgHtml( 'code-references' ) . |
| 154 | + "</h2>\n" . $this->formatReferences( $references, $userCanAssociate ); |
| 155 | + } |
| 156 | + |
146 | 157 | # Add revision comments |
147 | 158 | if ( $comments ) { |
148 | 159 | $html .= "<h2 id='code-comments'>" . wfMsgHtml( 'code-comments' ) . |
— | — | @@ -446,9 +457,9 @@ |
447 | 458 | * @param $showButtons bool Whether the buttons to strike and submit sign-offs should be shown |
448 | 459 | * @return string HTML |
449 | 460 | */ |
450 | | - protected function formatSignoffs( $showButtons ) { |
| 461 | + protected function formatSignoffs( $signOffs, $showButtons ) { |
451 | 462 | $signoffs = implode( "\n", |
452 | | - array_map( array( $this, 'formatSignoffInline' ), $this->mRev->getSignoffs() ) |
| 463 | + array_map( array( $this, 'formatSignoffInline' ), $signOffs ) |
453 | 464 | ); |
454 | 465 | $header = '<th></th>'; |
455 | 466 | $header .= '<th>' . wfMsgHtml( 'code-signoff-field-user' ) . '</th>'; |
— | — | @@ -481,9 +492,9 @@ |
482 | 493 | return "<ul class='mw-codereview-changes'>$changes</ul>"; |
483 | 494 | } |
484 | 495 | |
485 | | - protected function formatReferences( $showButtons ) { |
| 496 | + protected function formatReferences( $references, $showButtons ) { |
486 | 497 | $refs = implode( "\n", |
487 | | - array_map( array( $this, 'formatReferenceInline' ), $this->mRev->getReferences() ) |
| 498 | + array_map( array( $this, 'formatReferenceInline' ), $references ) |
488 | 499 | ); |
489 | 500 | $header = '<th></th>'; |
490 | 501 | $header .= '<th>' . wfMsgHtml( 'code-field-id' ) . '</th>'; |
Index: branches/wmf/1.17wmf1/extensions/NewUserMessage/NewUserMessage.class.php |
— | — | @@ -79,16 +79,16 @@ |
80 | 80 | } |
81 | 81 | |
82 | 82 | /** |
83 | | - * Produce the text of the message. |
| 83 | + * Produce the template that contains the text of the message. |
84 | 84 | * @returns String |
85 | 85 | */ |
86 | 86 | static function fetchText() { |
87 | | - $text = self::fetchTemplateIfExists( wfMsg( 'newusermessage-template-body' ) ); |
| 87 | + $template = wfMsg( 'newusermessage-template-body' ); |
88 | 88 | // Fall back if necessary to the old template |
89 | | - if ( !$text ) { |
90 | | - $text = self::fetchTemplateIfExists( wfMsg( 'newusermessage-template' ) ); |
| 89 | + if ( !$template ) { |
| 90 | + $template = wfMsg( 'newusermessage-template' ); |
91 | 91 | } |
92 | | - return $text; |
| 92 | + return $template; |
93 | 93 | } |
94 | 94 | |
95 | 95 | /** |
— | — | @@ -123,9 +123,9 @@ |
124 | 124 | $substitute = wfMsgForContent( 'newusermessage-substitute' ); |
125 | 125 | |
126 | 126 | if ( $substitute ) { |
127 | | - $str = "{{subst:{{$str}}}|realName=$realName|name=$name}}"; |
| 127 | + $str = '{{subst:' . "$str|realName=$realName|name=$name}}"; |
128 | 128 | } else { |
129 | | - $str = "{{{$str}|realName=$realName|name=$name}}"; |
| 129 | + $str = '{{' . "$str|realName=$realName|name=$name}}"; |
130 | 130 | } |
131 | 131 | |
132 | 132 | if ( $preparse ) { |
Index: branches/wmf/1.17wmf1/extensions/CategoryTree/CategoryTreeFunctions.php |
— | — | @@ -767,7 +767,9 @@ |
768 | 768 | # The title must be in the category namespace |
769 | 769 | # Ignore a leading Category: if there is one |
770 | 770 | $t = Title::newFromText( $title, NS_CATEGORY ); |
771 | | - if ( $t && ( $t->getNamespace() != NS_CATEGORY || $t->getInterWiki() != '' ) ) { |
| 771 | + if ( !$t || $t->getNamespace() != NS_CATEGORY || $t->getInterWiki() != '' ) { |
| 772 | + // If we were given something like "Wikipedia:Foo" or "Template:", |
| 773 | + // try it again but forced. |
772 | 774 | $title = "Category:$title"; |
773 | 775 | $t = Title::newFromText( $title ); |
774 | 776 | } |
Property changes on: branches/wmf/1.17wmf1/extensions/CategoryTree/CategoryTreeFunctions.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
775 | 777 | Merged /trunk/extensions/CategoryTree/CategoryTreeFunctions.php:r78964,79086-79087,79091,82004,82025,82048,82070,82073,82081,82085,82088,82090-82091,82096,82100-82101,82114,82128-82131,82146 |
Index: branches/wmf/1.17wmf1/extensions/CentralAuth/centralauth.js |
— | — | @@ -21,7 +21,9 @@ |
22 | 22 | methodHint.style.left = wgCursorPosition.x + 'px'; |
23 | 23 | methodHint.style.top = wgCursorPosition.y + 'px'; |
24 | 24 | methodHint.setAttribute( 'onclick', 'hideMethodHint()' ); |
25 | | - document.getElementById( 'globalWrapper' ).appendChild( methodHint ); |
| 25 | + |
| 26 | + var content = document.getElementById('content') || document.getElementById('mw_content') || document.body; |
| 27 | + content.appendChild( methodHint ); |
26 | 28 | } |
27 | 29 | |
28 | 30 | function hideMethodHint() { |
Index: branches/wmf/1.17wmf1/includes/json/FormatJson.php |
— | — | @@ -44,11 +44,11 @@ |
45 | 45 | */ |
46 | 46 | public static function decode( $value, $assoc = false ) { |
47 | 47 | if ( !function_exists( 'json_decode' ) ) { |
48 | | - $json = new Services_JSON(); |
| 48 | + if( $assoc ) |
| 49 | + $json = new Services_JSON( SERVICES_JSON_LOOSE_TYPE ); |
| 50 | + else |
| 51 | + $json = new Services_JSON(); |
49 | 52 | $jsonDec = $json->decode( $value ); |
50 | | - if( $assoc ) { |
51 | | - $jsonDec = wfObjectToArray( $jsonDec ); |
52 | | - } |
53 | 53 | return $jsonDec; |
54 | 54 | } else { |
55 | 55 | return json_decode( $value, $assoc ); |
Index: branches/wmf/1.17wmf1/includes/PrefixSearch.php |
— | — | @@ -78,6 +78,9 @@ |
79 | 79 | protected static function specialSearch( $search, $limit ) { |
80 | 80 | global $wgContLang; |
81 | 81 | |
| 82 | + # normalize searchKey, so aliases with spaces can be found - bug 25675 |
| 83 | + $search = str_replace( ' ', '_', $search ); |
| 84 | + |
82 | 85 | $searchKey = $wgContLang->caseFold( $search ); |
83 | 86 | |
84 | 87 | // Unlike SpecialPage itself, we want the canonical forms of both |
Index: branches/wmf/1.17wmf1/includes/GlobalFunctions.php |
— | — | @@ -3501,10 +3501,13 @@ |
3502 | 3502 | } |
3503 | 3503 | |
3504 | 3504 | /* Recursively converts the parameter (an object) to an array with the same data */ |
3505 | | -function wfObjectToArray( $object, $recursive = true ) { |
| 3505 | +function wfObjectToArray( $objOrArray, $recursive = true ) { |
3506 | 3506 | $array = array(); |
3507 | | - foreach ( get_object_vars( $object ) as $key => $value ) { |
3508 | | - if ( is_object( $value ) && $recursive ) { |
| 3507 | + if( is_object( $objOrArray ) ) { |
| 3508 | + $objOrArray = get_object_vars( $objOrArray ); |
| 3509 | + } |
| 3510 | + foreach ( $objOrArray as $key => $value ) { |
| 3511 | + if ( $recursive && ( is_object( $value ) || is_array( $value ) ) ) { |
3509 | 3512 | $value = wfObjectToArray( $value ); |
3510 | 3513 | } |
3511 | 3514 | |
Property changes on: branches/wmf/1.17wmf1/includes/GlobalFunctions.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
3512 | 3515 | Merged /trunk/phase3/includes/GlobalFunctions.php:r78964,79086-79087,79091,82004,82025,82048,82070,82073,82081,82085,82088,82090-82091,82096,82100-82101,82114,82128-82131,82146 |
Index: branches/wmf/1.17wmf1/includes/WatchedItem.php |
— | — | @@ -84,6 +84,8 @@ |
85 | 85 | * @return bool |
86 | 86 | */ |
87 | 87 | public function removeWatch() { |
| 88 | + wfProfileIn( __METHOD__ ); |
| 89 | + |
88 | 90 | $success = false; |
89 | 91 | $dbw = wfGetDB( DB_MASTER ); |
90 | 92 | $dbw->delete( 'watchlist', |
— | — | @@ -112,6 +114,8 @@ |
113 | 115 | if ( $dbw->affectedRows() ) { |
114 | 116 | $success = true; |
115 | 117 | } |
| 118 | + |
| 119 | + wfProfileOut( __METHOD__ ); |
116 | 120 | return $success; |
117 | 121 | } |
118 | 122 | |
Index: branches/wmf/1.17wmf1/includes/media/SVG.php |
— | — | @@ -206,11 +206,22 @@ |
207 | 207 | |
208 | 208 | // Sort fields into visible and collapsed |
209 | 209 | $visibleFields = $this->visibleMetadataFields(); |
| 210 | + |
| 211 | + // Rename fields to be compatible with exif, so that |
| 212 | + // the labels for these fields work. |
| 213 | + $conversion = array( 'width' => 'imagewidth', |
| 214 | + 'height' => 'imagelength', |
| 215 | + 'description' => 'imagedescription', |
| 216 | + 'title' => 'objectname', |
| 217 | + ); |
210 | 218 | foreach ( $metadata as $name => $value ) { |
211 | 219 | $tag = strtolower( $name ); |
| 220 | + if ( isset( $conversion[$tag] ) ) { |
| 221 | + $tag = $conversion[$tag]; |
| 222 | + } |
212 | 223 | self::addMeta( $result, |
213 | 224 | in_array( $tag, $visibleFields ) ? 'visible' : 'collapsed', |
214 | | - 'svg', |
| 225 | + 'exif', |
215 | 226 | $tag, |
216 | 227 | $value |
217 | 228 | ); |
Index: branches/wmf/1.17wmf1/includes/Title.php |
— | — | @@ -3945,7 +3945,8 @@ |
3946 | 3946 | } |
3947 | 3947 | // Check cache first |
3948 | 3948 | $uid = $user->getId(); |
3949 | | - if ( isset( $this->mNotificationTimestamp[$uid] ) ) { |
| 3949 | + // avoid isset here, as it'll return false for null entries |
| 3950 | + if ( array_key_exists( $uid, $this->mNotificationTimestamp ) ) { |
3950 | 3951 | return $this->mNotificationTimestamp[$uid]; |
3951 | 3952 | } |
3952 | 3953 | if ( !$uid || !$wgShowUpdatedMarker ) { |
Property changes on: branches/wmf/1.17wmf1/includes/Title.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
3953 | 3954 | Merged /trunk/phase3/includes/Title.php:r78964,79086-79087,79091,82004,82025,82048,82070,82073,82081,82085,82088,82090-82091,82096,82100-82101,82114,82128-82131,82146 |
Index: branches/wmf/1.17wmf1/includes/specials/SpecialListfiles.php |
— | — | @@ -213,7 +213,7 @@ |
214 | 214 | Xml::fieldset( wfMsg( 'listfiles' ) ) . |
215 | 215 | Html::openElement( 'table', array( 'id' => 'mw-listfiles-table' ) ) . |
216 | 216 | Xml::buildForm( $inputForm, 'table_pager_limit_submit' ) . |
217 | | - $this->getHiddenFields( array( 'limit', 'ilsearch', 'username' ) ) . |
| 217 | + $this->getHiddenFields( array( 'limit', 'ilsearch', 'user' ) ) . |
218 | 218 | Html::closeElement( 'table' ) . |
219 | 219 | Html::closeElement( 'fieldset' ) . |
220 | 220 | Html::closeElement( 'form' ) . "\n"; |
Index: branches/wmf/1.17wmf1/languages/messages/MessagesQqq.php |
— | — | @@ -3295,6 +3295,7 @@ |
3296 | 3296 | See also Wikipedia on [http://en.wikipedia.org/wiki/Focal_length#In_photography focal length].', |
3297 | 3297 | 'exif-gpslatitude' => '{{Identical|Latitude}}', |
3298 | 3298 | 'exif-gpslongitude' => '{{Identical|Longitude}}', |
| 3299 | +'exif-objectname' => 'This message labels a field in the image metadata table that is a short name or title for the image. (As compared to {{msg-mw|exif-imagedescription}} which is a long description of the image).', |
3299 | 3300 | |
3300 | 3301 | # EXIF attributes |
3301 | 3302 | 'exif-compression-6' => '{{optional}}', |
Index: branches/wmf/1.17wmf1/languages/messages/MessagesEn.php |
— | — | @@ -3771,6 +3771,7 @@ |
3772 | 3772 | 'exif-gpsareainformation' => 'Name of GPS area', |
3773 | 3773 | 'exif-gpsdatestamp' => 'GPS date', |
3774 | 3774 | 'exif-gpsdifferential' => 'GPS differential correction', |
| 3775 | +'exif-objectname' => 'Short title', |
3775 | 3776 | |
3776 | 3777 | # Make & model, can be wikified in order to link to the camera and model name |
3777 | 3778 | 'exif-make-value' => '$1', # do not translate or duplicate this message to other languages |