Index: branches/REL1_17/phase3/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/REL1_17/phase3/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; |
Index: branches/REL1_17/phase3/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; |
Index: branches/REL1_17/phase3/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/REL1_17/phase3/skins/common/shared.css |
___________________________________________________________________ |
Modified: svn:mergeinfo |
16 | 20 | Merged /trunk/phase3/skins/common/shared.css:r78108,78179,78344,78347,78350,78365,78380,78425,78539,78886,78893,78897,78909,78964,79086-79087,79091 |
Index: branches/REL1_17/phase3/skins/common/wikibits.js |
— | — | @@ -620,13 +620,13 @@ |
621 | 621 | for ( var i = 0; i < firstRow.cells.length; i++ ) { |
622 | 622 | var cell = firstRow.cells[i]; |
623 | 623 | if ( (' ' + cell.className + ' ').indexOf(' unsortable ') == -1 ) { |
624 | | - cell.innerHTML += '<a href="#" class="sortheader" ' |
| 624 | + $(cell).append ( '<a href="#" class="sortheader" ' |
625 | 625 | + 'onclick="ts_resortTable(this);return false;">' |
626 | 626 | + '<span class="sortarrow">' |
627 | 627 | + '<img src="' |
628 | 628 | + ts_image_path |
629 | 629 | + ts_image_none |
630 | | - + '" alt="↓"/></span></a>'; |
| 630 | + + '" alt="↓"/></span></a>'); |
631 | 631 | } |
632 | 632 | } |
633 | 633 | if ( ts_alternate_row_colors ) { |
— | — | @@ -1041,8 +1041,9 @@ |
1042 | 1042 | |
1043 | 1043 | updateTooltipAccessKeys( null ); |
1044 | 1044 | setupCheckboxShiftClick(); |
1045 | | - sortables_init(); |
1046 | 1045 | |
| 1046 | + jQuery( document ).ready( sortables_init ); |
| 1047 | + |
1047 | 1048 | // Run any added-on functions |
1048 | 1049 | for ( var i = 0; i < onloadFuncts.length; i++ ) { |
1049 | 1050 | onloadFuncts[i](); |
Index: branches/REL1_17/phase3/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; |
Property changes on: branches/REL1_17/phase3/skins/vector/screen.css |
___________________________________________________________________ |
Modified: svn:mergeinfo |
955 | 953 | Merged /trunk/phase3/skins/vector/screen.css:r78108,78179,78344,78347,78350,78365,78380,78425,78539,78886,78893,78897,78909,78964,79086-79087,79091 |
Index: branches/REL1_17/phase3/includes/MessageCache.php |
— | — | @@ -609,18 +609,25 @@ |
610 | 610 | return substr( $entry, 1 ); |
611 | 611 | } |
612 | 612 | } |
| 613 | + } |
| 614 | + } else { |
| 615 | + // XXX: This is not cached in process cache, should it? |
| 616 | + $message = false; |
| 617 | + wfRunHooks('MessagesPreLoad', array( $title, &$message ) ); |
| 618 | + if ( $message !== false ) { |
| 619 | + return $message; |
| 620 | + } |
613 | 621 | |
614 | | - # Call message hooks, in case they are defined |
615 | | - wfRunHooks('MessagesPreLoad', array( $title, &$message ) ); |
616 | | - if ( $message !== false ) { |
617 | | - return $message; |
| 622 | + /* If message cache is in normal mode, it is guaranteed |
| 623 | + * (except bugs) that there is always entry (or placeholder) |
| 624 | + * in the cache if message exists. Thus we can do minor |
| 625 | + * performance improvement and return false early. |
| 626 | + */ |
| 627 | + if ( !$wgAdaptiveMessageCache ) { |
| 628 | + return false; |
| 629 | + } |
618 | 630 | } |
619 | 631 | |
620 | | - # If there is no cache entry and no placeholder, it doesn't exist |
621 | | - if ( $type !== '!' ) { |
622 | | - return false; |
623 | | - } |
624 | | - |
625 | 632 | $titleKey = wfMemcKey( 'messages', 'individual', $title ); |
626 | 633 | |
627 | 634 | # Try the individual message cache |
Index: branches/REL1_17/phase3/includes/HTMLForm.php |
— | — | @@ -187,23 +187,26 @@ |
188 | 188 | } |
189 | 189 | |
190 | 190 | /** |
191 | | - * The here's-one-I-made-earlier option: do the submission if |
192 | | - * posted, or display the form with or without funky valiation |
193 | | - * errors |
194 | | - * @return Bool or Status whether submission was successful. |
| 191 | + * Prepare form for submission |
195 | 192 | */ |
196 | | - function show() { |
| 193 | + function prepareForm() { |
197 | 194 | # Check if we have the info we need |
198 | 195 | if ( ! $this->mTitle ) { |
199 | 196 | throw new MWException( "You must call setTitle() on an HTMLForm" ); |
200 | 197 | } |
201 | 198 | |
| 199 | + // FIXME shouldn't this be closer to displayForm() ? |
202 | 200 | self::addJS(); |
203 | 201 | |
204 | 202 | # Load data from the request. |
205 | 203 | $this->loadData(); |
| 204 | + } |
206 | 205 | |
207 | | - # Try a submission |
| 206 | + /** |
| 207 | + * Try submitting, with edit token check first |
| 208 | + * @return Status|boolean |
| 209 | + */ |
| 210 | + function tryAuthorizedSubmit() { |
208 | 211 | global $wgUser, $wgRequest; |
209 | 212 | $editToken = $wgRequest->getVal( 'wpEditToken' ); |
210 | 213 | |
— | — | @@ -211,12 +214,23 @@ |
212 | 215 | if ( $this->getMethod() != 'post' || $wgUser->matchEditToken( $editToken ) ) { |
213 | 216 | $result = $this->trySubmit(); |
214 | 217 | } |
| 218 | + return $result; |
| 219 | + } |
215 | 220 | |
| 221 | + /** |
| 222 | + * The here's-one-I-made-earlier option: do the submission if |
| 223 | + * posted, or display the form with or without funky valiation |
| 224 | + * errors |
| 225 | + * @return Bool or Status whether submission was successful. |
| 226 | + */ |
| 227 | + function show() { |
| 228 | + $this->prepareForm(); |
| 229 | + |
| 230 | + $result = $this->tryAuthorizedSubmit(); |
216 | 231 | if ( $result === true || ( $result instanceof Status && $result->isGood() ) ){ |
217 | 232 | return $result; |
218 | 233 | } |
219 | 234 | |
220 | | - # Display form. |
221 | 235 | $this->displayForm( $result ); |
222 | 236 | return false; |
223 | 237 | } |
— | — | @@ -541,7 +555,6 @@ |
542 | 556 | $this->mSubmitTooltip = $name; |
543 | 557 | } |
544 | 558 | |
545 | | - |
546 | 559 | /** |
547 | 560 | * Set the id for the submit button. |
548 | 561 | * @param $t String. FIXME: Integrity is *not* validated |
Property changes on: branches/REL1_17/phase3/includes/HTMLForm.php |
___________________________________________________________________ |
Modified: svn:mergeinfo |
549 | 562 | Merged /trunk/phase3/includes/HTMLForm.php:r78108,78179,78344,78347,78350,78365,78380,78425,78539,78886,78893,78897,78909,78964,79086-79087,79091 |
Index: branches/REL1_17/phase3/includes/revisiondelete/RevisionDelete.php |
— | — | @@ -220,7 +220,7 @@ |
221 | 221 | */ |
222 | 222 | class RevDel_ArchiveItem extends RevDel_RevisionItem { |
223 | 223 | public function __construct( $list, $row ) { |
224 | | - parent::__construct( $list, $row ); |
| 224 | + RevDel_Item::__construct( $list, $row ); |
225 | 225 | $this->revision = Revision::newFromArchiveRow( $row, |
226 | 226 | array( 'page' => $this->list->title->getArticleId() ) ); |
227 | 227 | } |
— | — | @@ -526,7 +526,7 @@ |
527 | 527 | */ |
528 | 528 | class RevDel_ArchivedFileItem extends RevDel_FileItem { |
529 | 529 | public function __construct( $list, $row ) { |
530 | | - parent::__construct( $list, $row ); |
| 530 | + RevDel_Item::__construct( $list, $row ); |
531 | 531 | $this->file = ArchivedFile::newFromRow( $row ); |
532 | 532 | } |
533 | 533 | |
Index: branches/REL1_17/phase3/includes/media/Bitmap_ClientOnly.php |
— | — | @@ -16,7 +16,7 @@ |
17 | 17 | */ |
18 | 18 | class BitmapHandler_ClientOnly extends BitmapHandler { |
19 | 19 | function normaliseParams( $image, &$params ) { |
20 | | - return parent::normaliseParams( $image, $params ); |
| 20 | + return ImageHandler::normaliseParams( $image, $params ); |
21 | 21 | } |
22 | 22 | |
23 | 23 | function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) { |
Index: branches/REL1_17/phase3/resources/mediawiki/mediawiki.js |
— | — | @@ -226,6 +226,83 @@ |
227 | 227 | */ |
228 | 228 | function User() { |
229 | 229 | this.options = new Map(); |
| 230 | + |
| 231 | + /* Public Methods */ |
| 232 | + |
| 233 | + /* |
| 234 | + * Generates a random user session ID (32 alpha-numeric characters). |
| 235 | + * |
| 236 | + * This information would potentially be stored in a cookie to identify a user during a |
| 237 | + * session or series of sessions. It's uniqueness should not be depended on. |
| 238 | + * |
| 239 | + * @return string random set of 32 alpha-numeric characters |
| 240 | + */ |
| 241 | + function generateId() { |
| 242 | + var id = ''; |
| 243 | + var seed = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'; |
| 244 | + for ( var i = 0, r; i < 32; i++ ) { |
| 245 | + r = Math.floor( Math.random() * seed.length ); |
| 246 | + id += seed.substring( r, r + 1 ); |
| 247 | + } |
| 248 | + return id; |
| 249 | + } |
| 250 | + |
| 251 | + /* |
| 252 | + * Gets the current user's name. |
| 253 | + * |
| 254 | + * @return mixed user name string or null if users is anonymous |
| 255 | + */ |
| 256 | + this.name = function() { |
| 257 | + return mediaWiki.config.get( 'wgUserName' ); |
| 258 | + }; |
| 259 | + |
| 260 | + /* |
| 261 | + * Gets a random session ID automatically generated and kept in a cookie. |
| 262 | + * |
| 263 | + * This ID is ephemeral for everyone, staying in their browser only until they close |
| 264 | + * their browser. |
| 265 | + * |
| 266 | + * Do not use this method before the first call to mediaWiki.loader.go(), it depends on |
| 267 | + * jquery.cookie, which is added to the first pay-load just after mediaWiki is defined, but |
| 268 | + * won't be loaded until the first call to go(). |
| 269 | + * |
| 270 | + * @return string user name or random session ID |
| 271 | + */ |
| 272 | + this.sessionId = function () { |
| 273 | + var sessionId = $.cookie( 'mediaWiki.user.sessionId' ); |
| 274 | + if ( typeof sessionId == 'undefined' || sessionId == null ) { |
| 275 | + sessionId = generateId(); |
| 276 | + $.cookie( 'mediaWiki.user.sessionId', sessionId, { 'expires': null, 'path': '/' } ); |
| 277 | + } |
| 278 | + return sessionId; |
| 279 | + }; |
| 280 | + |
| 281 | + /* |
| 282 | + * Gets the current user's name or a random ID automatically generated and kept in a cookie. |
| 283 | + * |
| 284 | + * This ID is persistent for anonymous users, staying in their browser up to 1 year. The |
| 285 | + * expiration time is reset each time the ID is queried, so in most cases this ID will |
| 286 | + * persist until the browser's cookies are cleared or the user doesn't visit for 1 year. |
| 287 | + * |
| 288 | + * Do not use this method before the first call to mediaWiki.loader.go(), it depends on |
| 289 | + * jquery.cookie, which is added to the first pay-load just after mediaWiki is defined, but |
| 290 | + * won't be loaded until the first call to go(). |
| 291 | + * |
| 292 | + * @return string user name or random session ID |
| 293 | + */ |
| 294 | + this.id = function() { |
| 295 | + var name = that.name(); |
| 296 | + if ( name ) { |
| 297 | + return name; |
| 298 | + } |
| 299 | + var id = $.cookie( 'mediaWiki.user.id' ); |
| 300 | + if ( typeof id == 'undefined' || id == null ) { |
| 301 | + id = generateId(); |
| 302 | + } |
| 303 | + // Set cookie if not set, or renew it if already set |
| 304 | + $.cookie( 'mediaWiki.user.id', id, { 'expires': 365, 'path': '/' } ); |
| 305 | + return id; |
| 306 | + }; |
230 | 307 | } |
231 | 308 | |
232 | 309 | /* Public Members */ |
— | — | @@ -1022,6 +1099,9 @@ |
1023 | 1100 | delete startUp; |
1024 | 1101 | } |
1025 | 1102 | |
| 1103 | +// Add jQuery Cookie to initial payload (used in mediaWiki.user) |
| 1104 | +mediaWiki.loader.load( 'jquery.cookie' ); |
| 1105 | + |
1026 | 1106 | // Alias $j to jQuery for backwards compatibility |
1027 | 1107 | window.$j = jQuery; |
1028 | 1108 | window.mw = mediaWiki; |
Property changes on: branches/REL1_17/phase3/resources/mediawiki/mediawiki.js |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1029 | 1109 | Merged /trunk/phase3/resources/mediawiki/mediawiki.js:r78108,78179,78344,78347,78350,78365,78380,78425,78539,78886,78893,78897,78909,78964,79086-79087,79091 |
Property changes on: branches/REL1_17/phase3 |
___________________________________________________________________ |
Modified: svn:mergeinfo |
1030 | 1110 | Merged /trunk/phase3:r78108,78179,78344,78347,78350,78365,78380,78425,78539,78886,78893,78897,78909,78964,79086-79087,79091 |