r45027 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r45026‎ | r45027 | r45028 >
Date:15:22, 25 December 2008
Author:ialex
Status:reverted (Comments)
Tags:
Comment:
* summary and subject messages now uses wiki text rather than raw HTML
* Added the colon in summary, subject and subject-preview messages rather than using colon-separator
* Changed the note in RELEASE-NOTES to also point to bug 212
* Also escaped other messages that weren't escaped
* Added new $attribs option to Xml::label(), using it in Xml::inputLabel(), Xml::inputLabelSep(), Xml::checkLabel() and Xml::radioLabel()
* $fname -> __METHOD__
* Whitespaces tweaks
Modified paths:
  • /trunk/phase3/RELEASE-NOTES (modified) (history)
  • /trunk/phase3/includes/EditPage.php (modified) (history)
  • /trunk/phase3/includes/Xml.php (modified) (history)
  • /trunk/phase3/languages/messages/MessagesEn.php (modified) (history)

Diff [purge]

Index: trunk/phase3/includes/Xml.php
@@ -277,7 +277,7 @@
278278 * @param $attribs other attributes
279279 * @return string HTML
280280 */
281 - public static function check( $name, $checked=false, $attribs=array() ) {
 281+ public static function check( $name, $checked=false, $attribs = array() ) {
282282 return self::element( 'input', array_merge(
283283 array(
284284 'name' => $name,
@@ -295,7 +295,7 @@
296296 * @param $attribs other attributes
297297 * @return string HTML
298298 */
299 - public static function radio( $name, $value, $checked=false, $attribs=array() ) {
 299+ public static function radio( $name, $value, $checked = false, $attribs = array() ) {
300300 return self::element( 'input', array(
301301 'name' => $name,
302302 'type' => 'radio',
@@ -305,11 +305,12 @@
306306 /**
307307 * Convenience function to build an HTML form label
308308 * @param $label text of the label
309 - * @param $id
 309+ * @param $id
 310+ * @param $attribs Array: extra attributes
310311 * @return string HTML
311312 */
312 - public static function label( $label, $id ) {
313 - return self::element( 'label', array( 'for' => $id ), $label );
 313+ public static function label( $label, $id, $attribs = array() ) {
 314+ return self::element( 'label', array( 'for' => $id ) + $attribs, $label );
314315 }
315316
316317 /**
@@ -319,21 +320,22 @@
320321 * @param $id id of the input
321322 * @param $size value of the size attribute
322323 * @param $value value of the value attribute
323 - * @param $attribs other attributes
 324+ * @param $inputAttribs other attributes for the input
 325+ * @param $labelAttribs other attributes for the label
324326 * @return string HTML
325327 */
326 - public static function inputLabel( $label, $name, $id, $size=false, $value=false, $attribs=array() ) {
327 - list( $label, $input ) = self::inputLabelSep( $label, $name, $id, $size, $value, $attribs );
 328+ public static function inputLabel( $label, $name, $id, $size = false, $value = false, $inputAttribs = array(), $labelAttribs = array() ) {
 329+ list( $label, $input ) = self::inputLabelSep( $label, $name, $id, $size, $value, $inputAttribs, $labelAttribs );
328330 return $label . ' ' . $input;
329331 }
330332
331333 /**
332334 * Same as Xml::inputLabel() but return input and label in an array
333335 */
334 - public static function inputLabelSep( $label, $name, $id, $size=false, $value=false, $attribs=array() ) {
 336+ public static function inputLabelSep( $label, $name, $id, $size = false, $value = false, $inputAttribs = array(), $labelAttribs = array() ) {
335337 return array(
336 - Xml::label( $label, $id ),
337 - self::input( $name, $size, $value, array( 'id' => $id ) + $attribs )
 338+ Xml::label( $label, $id, $labelAttribs ),
 339+ self::input( $name, $size, $value, array( 'id' => $id ) + $inputAttribs )
338340 );
339341 }
340342
@@ -341,20 +343,20 @@
342344 * Convenience function to build an HTML checkbox with a label
343345 * @return string HTML
344346 */
345 - public static function checkLabel( $label, $name, $id, $checked=false, $attribs=array() ) {
346 - return self::check( $name, $checked, array( 'id' => $id ) + $attribs ) .
 347+ public static function checkLabel( $label, $name, $id, $checked = false, $inputAttribs = array(), $labelAttribs = array() ) {
 348+ return self::check( $name, $checked, array( 'id' => $id ) + $inputAttribs ) .
347349 ' ' .
348 - self::label( $label, $id );
 350+ self::label( $label, $id, $labelAttribs );
349351 }
350352
351353 /**
352354 * Convenience function to build an HTML radio button with a label
353355 * @return string HTML
354356 */
355 - public static function radioLabel( $label, $name, $value, $id, $checked=false, $attribs=array() ) {
356 - return self::radio( $name, $value, $checked, array( 'id' => $id ) + $attribs ) .
 357+ public static function radioLabel( $label, $name, $value, $id, $checked = false, $inputAttribs = array(), $labelAttribs = array() ) {
 358+ return self::radio( $name, $value, $checked, array( 'id' => $id ) + $inputAttribs ) .
357359 ' ' .
358 - self::label( $label, $id );
 360+ self::label( $label, $id, $labelAttribs );
359361 }
360362
361363 /**
@@ -363,7 +365,7 @@
364366 * @param $attribs Array: optional custom attributes
365367 * @return string HTML
366368 */
367 - public static function submitButton( $value, $attribs=array() ) {
 369+ public static function submitButton( $value, $attribs = array() ) {
368370 return self::element( 'input', array( 'type' => 'submit', 'value' => $value ) + $attribs );
369371 }
370372
@@ -374,7 +376,7 @@
375377 * @param $attribs Array: optional custom attributes
376378 * @return string HTML
377379 */
378 - public static function hidden( $name, $value, $attribs=array() ) {
 380+ public static function hidden( $name, $value, $attribs = array() ) {
379381 return self::element( 'input', array(
380382 'name' => $name,
381383 'type' => 'hidden',
@@ -389,8 +391,8 @@
390392 * @param $attribs array: optional additional HTML attributes
391393 * @return string HTML
392394 */
393 - public static function option( $text, $value=null, $selected=false,
394 - $attribs=array() ) {
 395+ public static function option( $text, $value = null, $selected = false,
 396+ $attribs = array() ) {
395397 if( !is_null( $value ) ) {
396398 $attribs['value'] = $value;
397399 }
@@ -424,7 +426,7 @@
425427 } elseif ( substr( $value, 0, 1) == '*' && substr( $value, 1, 1) != '*' ) {
426428 // A new group is starting ...
427429 $value = trim( substr( $value, 1 ) );
428 - if( $optgroup ) $options .= self::closeElement('optgroup');
 430+ if( $optgroup ) $options .= self::closeElement( 'optgroup' );
429431 $options .= self::openElement( 'optgroup', array( 'label' => $value ) );
430432 $optgroup = true;
431433 } elseif ( substr( $value, 0, 2) == '**' ) {
@@ -433,7 +435,7 @@
434436 $options .= self::option( $value, $value, $selected === $value );
435437 } else {
436438 // groupless reason list
437 - if( $optgroup ) $options .= self::closeElement('optgroup');
 439+ if( $optgroup ) $options .= self::closeElement( 'optgroup' );
438440 $options .= self::option( $value, $value, $selected === $value );
439441 $optgroup = false;
440442 }
Index: trunk/phase3/includes/EditPage.php
@@ -17,30 +17,30 @@
1818 * usually the same, but they are now allowed to be different.
1919 */
2020 class EditPage {
21 - const AS_SUCCESS_UPDATE = 200;
22 - const AS_SUCCESS_NEW_ARTICLE = 201;
23 - const AS_HOOK_ERROR = 210;
24 - const AS_FILTERING = 211;
25 - const AS_HOOK_ERROR_EXPECTED = 212;
26 - const AS_BLOCKED_PAGE_FOR_USER = 215;
27 - const AS_CONTENT_TOO_BIG = 216;
28 - const AS_USER_CANNOT_EDIT = 217;
29 - const AS_READ_ONLY_PAGE_ANON = 218;
30 - const AS_READ_ONLY_PAGE_LOGGED = 219;
31 - const AS_READ_ONLY_PAGE = 220;
32 - const AS_RATE_LIMITED = 221;
33 - const AS_ARTICLE_WAS_DELETED = 222;
34 - const AS_NO_CREATE_PERMISSION = 223;
35 - const AS_BLANK_ARTICLE = 224;
36 - const AS_CONFLICT_DETECTED = 225;
37 - const AS_SUMMARY_NEEDED = 226;
38 - const AS_TEXTBOX_EMPTY = 228;
39 - const AS_MAX_ARTICLE_SIZE_EXCEEDED = 229;
40 - const AS_OK = 230;
41 - const AS_END = 231;
42 - const AS_SPAM_ERROR = 232;
43 - const AS_IMAGE_REDIRECT_ANON = 233;
44 - const AS_IMAGE_REDIRECT_LOGGED = 234;
 21+ const AS_SUCCESS_UPDATE = 200;
 22+ const AS_SUCCESS_NEW_ARTICLE = 201;
 23+ const AS_HOOK_ERROR = 210;
 24+ const AS_FILTERING = 211;
 25+ const AS_HOOK_ERROR_EXPECTED = 212;
 26+ const AS_BLOCKED_PAGE_FOR_USER = 215;
 27+ const AS_CONTENT_TOO_BIG = 216;
 28+ const AS_USER_CANNOT_EDIT = 217;
 29+ const AS_READ_ONLY_PAGE_ANON = 218;
 30+ const AS_READ_ONLY_PAGE_LOGGED = 219;
 31+ const AS_READ_ONLY_PAGE = 220;
 32+ const AS_RATE_LIMITED = 221;
 33+ const AS_ARTICLE_WAS_DELETED = 222;
 34+ const AS_NO_CREATE_PERMISSION = 223;
 35+ const AS_BLANK_ARTICLE = 224;
 36+ const AS_CONFLICT_DETECTED = 225;
 37+ const AS_SUMMARY_NEEDED = 226;
 38+ const AS_TEXTBOX_EMPTY = 228;
 39+ const AS_MAX_ARTICLE_SIZE_EXCEEDED = 229;
 40+ const AS_OK = 230;
 41+ const AS_END = 231;
 42+ const AS_SPAM_ERROR = 232;
 43+ const AS_IMAGE_REDIRECT_ANON = 233;
 44+ const AS_IMAGE_REDIRECT_LOGGED = 234;
4545
4646 var $mArticle;
4747 var $mTitle;
@@ -237,7 +237,7 @@
238238 * To turn the feature on, set $wgUseMetadataEdit = true ; in LocalSettings
239239 * and set $wgMetadataWhitelist to the *full* title of the template whitelist
240240 */
241 - function extractMetaDataFromArticle () {
 241+ function extractMetaDataFromArticle() {
242242 global $wgUseMetadataEdit, $wgMetadataWhitelist, $wgContLang;
243243 $this->mMetaData = '';
244244 if ( !$wgUseMetadataEdit ) return;
@@ -546,9 +546,9 @@
547547 */
548548 function importFormData( &$request ) {
549549 global $wgLang, $wgUser;
550 - $fname = 'EditPage::importFormData';
551 - wfProfileIn( $fname );
552550
 551+ wfProfileIn( __METHOD__ );
 552+
553553 # Section edit can come from either the form or a link
554554 $this->section = $request->getVal( 'wpSection', $request->getVal( 'section' ) );
555555
@@ -572,7 +572,7 @@
573573
574574 if ( is_null( $this->edittime ) ) {
575575 # If the form is incomplete, force to preview.
576 - wfDebug( "$fname: Form data appears to be incomplete\n" );
 576+ wfDebug( __METHOD__ . ": Form data appears to be incomplete\n" );
577577 wfDebug( "POST DATA: " . var_export( $_POST, true ) . "\n" );
578578 $this->preview = true;
579579 } else {
@@ -589,14 +589,14 @@
590590 # if the user hits enter in the comment box.
591591 # The unmarked state will be assumed to be a save,
592592 # if the form seems otherwise complete.
593 - wfDebug( "$fname: Passed token check.\n" );
 593+ wfDebug( __METHOD__ . ": Passed token check.\n" );
594594 } else if ( $this->diff ) {
595595 # Failed token check, but only requested "Show Changes".
596 - wfDebug( "$fname: Failed token check; Show Changes requested.\n" );
 596+ wfDebug( __METHOD__ . ": Failed token check; Show Changes requested.\n" );
597597 } else {
598598 # Page might be a hack attempt posted from
599599 # an external site. Preview instead of saving.
600 - wfDebug( "$fname: Failed token check; forcing preview\n" );
 600+ wfDebug( __METHOD__ . ": Failed token check; forcing preview\n" );
601601 $this->preview = true;
602602 }
603603 }
@@ -626,7 +626,7 @@
627627 $this->autoSumm = $request->getText( 'wpAutoSummary' );
628628 } else {
629629 # Not a posted form? Start with nothing.
630 - wfDebug( "$fname: Not a posted form.\n" );
 630+ wfDebug( __METHOD__ . ": Not a posted form.\n" );
631631 $this->textbox1 = '';
632632 $this->textbox2 = '';
633633 $this->mMetaData = '';
@@ -651,7 +651,7 @@
652652 $this->live = $request->getCheck( 'live' );
653653 $this->editintro = $request->getText( 'editintro' );
654654
655 - wfProfileOut( $fname );
 655+ wfProfileOut( __METHOD__ );
656656 }
657657
658658 /**
@@ -731,9 +731,8 @@
732732 global $wgFilterCallback, $wgUser, $wgOut, $wgParser;
733733 global $wgMaxArticleSize;
734734
735 - $fname = 'EditPage::attemptSave';
736 - wfProfileIn( $fname );
737 - wfProfileIn( "$fname-checks" );
 735+ wfProfileIn( __METHOD__ );
 736+ wfProfileIn( __METHOD__ . '-checks' );
738737
739738 if ( !wfRunHooks( 'EditPage::attemptSave', array( &$this ) ) )
740739 {
@@ -767,96 +766,96 @@
768767 $pdbk = $this->mTitle->getPrefixedDBkey();
769768 $match = str_replace( "\n", '', $match );
770769 wfDebugLog( 'SpamRegex', "$ip spam regex hit [[$pdbk]]: \"$match\"" );
771 - wfProfileOut( "$fname-checks" );
772 - wfProfileOut( $fname );
 770+ wfProfileOut( __METHOD__ . '-checks' );
 771+ wfProfileOut( __METHOD__ );
773772 return self::AS_SPAM_ERROR;
774773 }
775774 if ( $wgFilterCallback && $wgFilterCallback( $this->mTitle, $this->textbox1, $this->section, $this->hookError, $this->summary ) ) {
776775 # Error messages or other handling should be performed by the filter function
777 - wfProfileOut( "$fname-checks" );
778 - wfProfileOut( $fname );
 776+ wfProfileOut( __METHOD__ . '-checks' );
 777+ wfProfileOut( __METHOD__ );
779778 return self::AS_FILTERING;
780779 }
781780 if ( !wfRunHooks( 'EditFilter', array( $this, $this->textbox1, $this->section, &$this->hookError, $this->summary ) ) ) {
782781 # Error messages etc. could be handled within the hook...
783 - wfProfileOut( "$fname-checks" );
784 - wfProfileOut( $fname );
 782+ wfProfileOut( __METHOD__ . '-checks' );
 783+ wfProfileOut( __METHOD__ );
785784 return self::AS_HOOK_ERROR;
786785 } elseif ( $this->hookError != '' ) {
787786 # ...or the hook could be expecting us to produce an error
788 - wfProfileOut( "$fname-checks" );
789 - wfProfileOut( $fname );
 787+ wfProfileOut( __METHOD__ . '-checks' );
 788+ wfProfileOut( __METHOD__ );
790789 return self::AS_HOOK_ERROR_EXPECTED;
791790 }
792791 if ( $wgUser->isBlockedFrom( $this->mTitle, false ) ) {
793792 # Check block state against master, thus 'false'.
794 - wfProfileOut( "$fname-checks" );
795 - wfProfileOut( $fname );
 793+ wfProfileOut( __METHOD__ . '-checks' );
 794+ wfProfileOut( __METHOD__ );
796795 return self::AS_BLOCKED_PAGE_FOR_USER;
797796 }
798797 $this->kblength = (int)(strlen( $this->textbox1 ) / 1024);
799798 if ( $this->kblength > $wgMaxArticleSize ) {
800799 // Error will be displayed by showEditForm()
801800 $this->tooBig = true;
802 - wfProfileOut( "$fname-checks" );
803 - wfProfileOut( $fname );
 801+ wfProfileOut( __METHOD__ . '-checks' );
 802+ wfProfileOut( __METHOD__ );
804803 return self::AS_CONTENT_TOO_BIG;
805804 }
806805
807806 if ( !$wgUser->isAllowed('edit') ) {
808807 if ( $wgUser->isAnon() ) {
809 - wfProfileOut( "$fname-checks" );
810 - wfProfileOut( $fname );
 808+ wfProfileOut( __METHOD__ . '-checks' );
 809+ wfProfileOut( __METHOD__ );
811810 return self::AS_READ_ONLY_PAGE_ANON;
812811 }
813812 else {
814 - wfProfileOut( "$fname-checks" );
815 - wfProfileOut( $fname );
 813+ wfProfileOut( __METHOD__ . '-checks' );
 814+ wfProfileOut( __METHOD__ );
816815 return self::AS_READ_ONLY_PAGE_LOGGED;
817816 }
818817 }
819818
820819 if ( wfReadOnly() ) {
821 - wfProfileOut( "$fname-checks" );
822 - wfProfileOut( $fname );
 820+ wfProfileOut( __METHOD__ . '-checks' );
 821+ wfProfileOut( __METHOD__ );
823822 return self::AS_READ_ONLY_PAGE;
824823 }
825824 if ( $wgUser->pingLimiter() ) {
826 - wfProfileOut( "$fname-checks" );
827 - wfProfileOut( $fname );
 825+ wfProfileOut( __METHOD__ . '-checks' );
 826+ wfProfileOut( __METHOD__ );
828827 return self::AS_RATE_LIMITED;
829828 }
830829
831830 # If the article has been deleted while editing, don't save it without
832831 # confirmation
833832 if ( $this->wasDeletedSinceLastEdit() && !$this->recreate ) {
834 - wfProfileOut( "$fname-checks" );
835 - wfProfileOut( $fname );
 833+ wfProfileOut( __METHOD__ . '-checks' );
 834+ wfProfileOut( __METHOD__ );
836835 return self::AS_ARTICLE_WAS_DELETED;
837836 }
838837
839 - wfProfileOut( "$fname-checks" );
 838+ wfProfileOut( __METHOD__ . '-checks' );
840839
841840 # If article is new, insert it.
842841 $aid = $this->mTitle->getArticleID( GAID_FOR_UPDATE );
843842 if ( 0 == $aid ) {
844843 // Late check for create permission, just in case *PARANOIA*
845844 if ( !$this->mTitle->userCan( 'create' ) ) {
846 - wfDebug( "$fname: no create permission\n" );
847 - wfProfileOut( $fname );
 845+ wfDebug( __METHOD__ . ": no create permission\n" );
 846+ wfProfileOut( __METHOD__ );
848847 return self::AS_NO_CREATE_PERMISSION;
849848 }
850849
851850 # Don't save a new article if it's blank.
852851 if ( '' == $this->textbox1 ) {
853 - wfProfileOut( $fname );
 852+ wfProfileOut( __METHOD__ );
854853 return self::AS_BLANK_ARTICLE;
855854 }
856855
857856 // Run post-section-merge edit filter
858857 if ( !wfRunHooks( 'EditFilterMerged', array( $this, $this->textbox1, &$this->hookError, $this->summary ) ) ) {
859858 # Error messages etc. could be handled within the hook...
860 - wfProfileOut( $fname );
 859+ wfProfileOut( __METHOD__ );
861860 return self::AS_HOOK_ERROR;
862861 }
863862
@@ -865,7 +864,7 @@
866865 $this->mArticle->insertNewArticle( $this->textbox1, $this->summary,
867866 $this->minoredit, $this->watchthis, false, $isComment, $bot);
868867
869 - wfProfileOut( $fname );
 868+ wfProfileOut( __METHOD__ );
870869 return self::AS_SUCCESS_NEW_ARTICLE;
871870 }
872871
@@ -930,7 +929,7 @@
931930 }
932931
933932 if ( $this->isConflict ) {
934 - wfProfileOut( $fname );
 933+ wfProfileOut( __METHOD__ );
935934 return self::AS_CONFLICT_DETECTED;
936935 }
937936
@@ -939,7 +938,7 @@
940939 // Run post-section-merge edit filter
941940 if ( !wfRunHooks( 'EditFilterMerged', array( $this, $text, &$this->hookError, $this->summary ) ) ) {
942941 # Error messages etc. could be handled within the hook...
943 - wfProfileOut( $fname );
 942+ wfProfileOut( __METHOD__ );
944943 return self::AS_HOOK_ERROR;
945944 }
946945
@@ -949,7 +948,7 @@
950949 ) {
951950 if ( md5( $this->summary ) == $this->autoSumm ) {
952951 $this->missingSummary = true;
953 - wfProfileOut( $fname );
 952+ wfProfileOut( __METHOD__ );
954953 return self::AS_SUMMARY_NEEDED;
955954 }
956955 }
@@ -958,13 +957,13 @@
959958 if ( $this->section == 'new' && !$this->allowBlankSummary ) {
960959 if (trim($this->summary) == '') {
961960 $this->missingSummary = true;
962 - wfProfileOut( $fname );
 961+ wfProfileOut( __METHOD__ );
963962 return self::AS_SUMMARY_NEEDED;
964963 }
965964 }
966965
967966 # All's well
968 - wfProfileIn( "$fname-sectionanchor" );
 967+ wfProfileIn( __METHOD__ . '-sectionanchor' );
969968 $sectionanchor = '';
970969 if ( $this->section == 'new' ) {
971970 if ( $this->textbox1 == '' ) {
@@ -989,7 +988,7 @@
990989 $sectionanchor = $wgParser->guessSectionNameFromWikiText( $matches[2] );
991990 }
992991 }
993 - wfProfileOut( "$fname-sectionanchor" );
 992+ wfProfileOut( __METHOD__ . '-sectionanchor' );
994993
995994 // Save errors may fall down to the edit form, but we've now
996995 // merged the section into full text. Clear the section field
@@ -1002,19 +1001,19 @@
10031002 $this->kblength = (int)(strlen( $text ) / 1024);
10041003 if ( $this->kblength > $wgMaxArticleSize ) {
10051004 $this->tooBig = true;
1006 - wfProfileOut( $fname );
 1005+ wfProfileOut( __METHOD__ );
10071006 return self::AS_MAX_ARTICLE_SIZE_EXCEEDED;
10081007 }
10091008
10101009 # update the article here
10111010 if ( $this->mArticle->updateArticle( $text, $this->summary, $this->minoredit,
10121011 $this->watchthis, $bot, $sectionanchor ) ) {
1013 - wfProfileOut( $fname );
 1012+ wfProfileOut( __METHOD__ );
10141013 return self::AS_SUCCESS_UPDATE;
10151014 } else {
10161015 $this->isConflict = true;
10171016 }
1018 - wfProfileOut( $fname );
 1017+ wfProfileOut( __METHOD__ );
10191018 return self::AS_END;
10201019 }
10211020
@@ -1085,7 +1084,7 @@
10861085 $wgOut->setPageTitle( wfMsg( $msg, $wgTitle->getPrefixedText() ) );
10871086 } else {
10881087 # Use the title defined by DISPLAYTITLE magic word when present
1089 - if ( isset($this->mParserOutput)
 1088+ if ( isset( $this->mParserOutput )
10901089 && ( $dt = $this->mParserOutput->getDisplayTitle() ) !== false ) {
10911090 $title = $dt;
10921091 } else {
@@ -1108,11 +1107,10 @@
11091108 # Some hook probably called this function without checking
11101109 # for is_null($wgTitle) first. Bail out right here so we don't
11111110 # do lots of work just to discard it right after.
1112 - if (is_null($wgTitle))
 1111+ if ( is_null( $wgTitle ) )
11131112 return;
11141113
1115 - $fname = 'EditPage::showEditForm';
1116 - wfProfileIn( $fname );
 1114+ wfProfileIn( __METHOD__ );
11171115
11181116 $sk = $wgUser->getSkin();
11191117
@@ -1258,16 +1256,13 @@
12591257 #if ( "no" == $redirect ) { $q .= "&redirect=no"; }
12601258 $action = $wgTitle->escapeLocalURL( $q );
12611259
1262 - $colonSep = wfMsg( 'colon-separator' );
1263 - $summary = wfMsg( 'summary' ) . $colonSep;
1264 - $subject = wfMsg( 'subject' ) . $colonSep;
 1260+ $summary = wfMsgExt( 'summary', array( 'parseinline' ) );
 1261+ $subject = wfMsgExt( 'subject', array( 'parseinline' ) );
12651262
1266 - $cancel = $sk->makeKnownLink( $wgTitle->getPrefixedText(),
1267 - wfMsgExt('cancel', array('parseinline')) );
1268 - $edithelpurl = Skin::makeInternalOrExternalUrl( wfMsgForContent( 'edithelppage' ));
1269 - $edithelp = '<a target="helpwindow" href="'.$edithelpurl.'">'.
1270 - htmlspecialchars( wfMsg( 'edithelp' ) ).'</a> '.
1271 - htmlspecialchars( wfMsg( 'newwindow' ) );
 1263+ $cancel = $sk->makeKnownLinkObj( $wgTitle, wfMsgHtml( 'cancel' ) );
 1264+ $edithelpurl = Skin::makeInternalOrExternalUrl( wfMsgForContent( 'edithelppage' ) );
 1265+ $edithelp = Xml::element( 'a', array( 'target' => 'helpwindow', 'href' => $edithelpurl ), wfMsg( 'edithelp' ) ) .
 1266+ ' ' . wfMsgExt( 'newwindow', array( 'parseinline' ) );
12721267
12731268 global $wgRightsText;
12741269 if ( $wgRightsText ) {
@@ -1332,18 +1327,25 @@
13331328 if ( $this->missingSummary ) $summaryhiddens .= Xml::hidden( 'wpIgnoreBlankSummary', true );
13341329 $autosumm = $this->autoSumm ? $this->autoSumm : md5( $this->summary );
13351330 $summaryhiddens .= Xml::hidden( 'wpAutoSummary', $autosumm );
 1331+ $subjectPreviewMsg = wfMsgExt( 'subject-preview', array( 'escapenoentities' ) );
13361332 if ( $this->section == 'new' ) {
1337 - $commentsubject="<span id='wpSummaryLabel'><label for='wpSummary'>{$subject}</label></span>\n<input tabindex='1' type='text' value=\"$summarytext\" name='wpSummary' id='wpSummary' maxlength='200' size='60' />{$summaryhiddens}<br />";
 1333+ $commentsubject = "<span id='wpSummaryLabel'><label for='wpSummary'>{$subject}</label></span>\n" .
 1334+ "<input tabindex='1' type='text' value=\"$summarytext\" name='wpSummary' id='wpSummary' maxlength='200' size='60' />" .
 1335+ "{$summaryhiddens}<br />";
13381336 $editsummary = "<div class='editOptions'>\n";
13391337 global $wgParser;
13401338 $formattedSummary = wfMsgForContent( 'newsectionsummary', $wgParser->stripSectionName( $this->summary ) );
1341 - $subjectpreview = $summarytext && $this->preview ? "<div class=\"mw-summary-preview\">".wfMsg('subject-preview').$colonSep.$sk->commentBlock( $formattedSummary, $this->mTitle, true )."</div>\n" : '';
 1339+ $subjectpreview = $summarytext && $this->preview ?
 1340+ "<div class=\"mw-summary-preview\">" . $subjectPreviewMsg . $sk->commentBlock( $formattedSummary, $this->mTitle, true ) . "</div>\n" : '';
13421341 $summarypreview = '';
13431342 } else {
13441343 $commentsubject = '';
1345 - $editsummary="<div class='editOptions'>\n<span id='wpSummaryLabel'><label for='wpSummary'>{$summary}</label></span>\n<input tabindex='2' type='text' value=\"$summarytext\" name='wpSummary' id='wpSummary' maxlength='200' size='60' />{$summaryhiddens}<br />";
1346 - $summarypreview = $summarytext && $this->preview ? "<div class=\"mw-summary-preview\">".wfMsg('summary-preview').$colonSep.$sk->commentBlock( $this->summary, $this->mTitle )."</div>\n" : '';
 1344+ $editsummary = "<div class='editOptions'>\n<span id='wpSummaryLabel'><label for='wpSummary'>{$summary}</label></span>\n" .
 1345+ "<input tabindex='2' type='text' value=\"$summarytext\" name='wpSummary' id='wpSummary' maxlength='200' size='60' />" .
 1346+ "{$summaryhiddens}<br />";
13471347 $subjectpreview = '';
 1348+ $summarypreview = $summarytext && $this->preview ?
 1349+ "<div class=\"mw-summary-preview\">" . $subjectPreviewMsg . $sk->commentBlock( $this->summary, $this->mTitle ) . "</div>\n" : '';
13481350 }
13491351
13501352 # Set focus to the edit box on load, except on preview or diff, where it would interfere with the display
@@ -1358,7 +1360,7 @@
13591361
13601362 global $wgUseMetadataEdit ;
13611363 if ( $wgUseMetadataEdit ) {
1362 - $metadata = $this->mMetaData ;
 1364+ $metadata = $this->mMetaData;
13631365 $metadata = htmlspecialchars( $wgContLang->recodeForEdit( $metadata ) ) ;
13641366 $top = wfMsgWikiHtml( 'metadata_help' );
13651367 /* ToDo: Replace with clean code */
@@ -1374,15 +1376,15 @@
13751377 $recreate = '';
13761378 if ( $this->wasDeletedSinceLastEdit() ) {
13771379 if ( 'save' != $this->formtype ) {
1378 - $wgOut->addWikiMsg('deletedwhileediting');
 1380+ $wgOut->addWikiMsg( 'deletedwhileediting' );
13791381 } else {
13801382 // Hide the toolbar and edit area, use can click preview to get it back
13811383 // Add an confirmation checkbox and explanation.
13821384 $toolbar = '';
1383 - $recreate = $wgOut->parse( wfMsg( 'confirmrecreate', $this->lastDelete->user_name , $this->lastDelete->log_comment ));
1384 - $recreate .=
1385 - "<br /><input tabindex='1' type='checkbox' value='1' name='wpRecreate' id='wpRecreate' />".
1386 - "<label for='wpRecreate' title='".wfMsg('tooltip-recreate')."'>". wfMsg('recreate')."</label>";
 1385+ $recreate = wfMsgExt( 'confirmrecreate', array( 'parse' ), $this->lastDelete->user_name , $this->lastDelete->log_comment ) .
 1386+ "<br />" .
 1387+ Xml::checkLabel( wfMsg( 'recreate' ), 'wpRecreate', 'wpRecreate', false,
 1388+ array( 'tabindex' => '1' ), array( 'title' => wfMsg( 'tooltip-recreate' ) ) );
13871389 }
13881390 }
13891391
@@ -1470,13 +1472,13 @@
14711473 );
14721474
14731475 if ( $this->isConflict && wfRunHooks( 'EditPageBeforeConflictDiff', array( &$this, &$wgOut ) ) ) {
1474 - $wgOut->wrapWikiMsg( '==$1==', "yourdiff" );
 1476+ $wgOut->wrapWikiMsg( '==$1==', 'yourdiff' );
14751477
14761478 $de = new DifferenceEngine( $this->mTitle );
14771479 $de->setText( $this->textbox2, $this->textbox1 );
1478 - $de->showDiff( wfMsg( "yourtext" ), wfMsg( "storedversion" ) );
 1480+ $de->showDiff( wfMsgExt( 'yourtext', array( 'parseinline' ) ), wfMsgExt( 'storedversion', array( 'parseinline' ) ) );
14791481
1480 - $wgOut->wrapWikiMsg( '==$1==', "yourtext" );
 1482+ $wgOut->wrapWikiMsg( '==$1==', 'yourtext' );
14811483 $this->showTextbox2();
14821484 }
14831485 $wgOut->addHTML( $this->editFormTextBottom );
@@ -1485,7 +1487,7 @@
14861488 $this->displayPreviewArea( $previewOutput, false );
14871489 }
14881490
1489 - wfProfileOut( $fname );
 1491+ wfProfileOut( __METHOD__ );
14901492 }
14911493
14921494 protected function showFormBeforeText() {
@@ -1821,15 +1823,14 @@
18221824 * @todo document
18231825 */
18241826 function mergeChangesInto( &$editText ){
1825 - $fname = 'EditPage::mergeChangesInto';
1826 - wfProfileIn( $fname );
 1827+ wfProfileIn( __METHOD__ );
18271828
18281829 $db = wfGetDB( DB_MASTER );
18291830
18301831 // This is the revision the editor started from
18311832 $baseRevision = $this->getBaseRevision();
18321833 if ( is_null( $baseRevision ) ) {
1833 - wfProfileOut( $fname );
 1834+ wfProfileOut( __METHOD__ );
18341835 return false;
18351836 }
18361837 $baseText = $baseRevision->getText();
@@ -1838,7 +1839,7 @@
18391840 $currentRevision = Revision::loadFromTitle(
18401841 $db, $this->mTitle );
18411842 if ( is_null( $currentRevision ) ) {
1842 - wfProfileOut( $fname );
 1843+ wfProfileOut( __METHOD__ );
18431844 return false;
18441845 }
18451846 $currentText = $currentRevision->getText();
@@ -1846,10 +1847,10 @@
18471848 $result = '';
18481849 if ( wfMerge( $baseText, $editText, $currentText, $result ) ) {
18491850 $editText = $result;
1850 - wfProfileOut( $fname );
 1851+ wfProfileOut( __METHOD__ );
18511852 return true;
18521853 } else {
1853 - wfProfileOut( $fname );
 1854+ wfProfileOut( __METHOD__ );
18541855 return false;
18551856 }
18561857 }
@@ -1918,109 +1919,109 @@
19191920 */
19201921 $toolarray = array(
19211922 array(
1922 - 'image' => $wgLang->getImageFile('button-bold'),
 1923+ 'image' => $wgLang->getImageFile( 'button-bold' ),
19231924 'id' => 'mw-editbutton-bold',
19241925 'open' => '\'\'\'',
19251926 'close' => '\'\'\'',
1926 - 'sample' => wfMsg('bold_sample'),
1927 - 'tip' => wfMsg('bold_tip'),
 1927+ 'sample' => wfMsg( 'bold_sample' ),
 1928+ 'tip' => wfMsg( 'bold_tip' ),
19281929 'key' => 'B'
19291930 ),
19301931 array(
1931 - 'image' => $wgLang->getImageFile('button-italic'),
 1932+ 'image' => $wgLang->getImageFile( 'button-italic' ),
19321933 'id' => 'mw-editbutton-italic',
19331934 'open' => '\'\'',
19341935 'close' => '\'\'',
1935 - 'sample' => wfMsg('italic_sample'),
1936 - 'tip' => wfMsg('italic_tip'),
 1936+ 'sample' => wfMsg( 'italic_sample' ),
 1937+ 'tip' => wfMsg( 'italic_tip' ),
19371938 'key' => 'I'
19381939 ),
19391940 array(
1940 - 'image' => $wgLang->getImageFile('button-link'),
 1941+ 'image' => $wgLang->getImageFile( 'button-link' ),
19411942 'id' => 'mw-editbutton-link',
19421943 'open' => '[[',
19431944 'close' => ']]',
1944 - 'sample' => wfMsg('link_sample'),
1945 - 'tip' => wfMsg('link_tip'),
 1945+ 'sample' => wfMsg( 'link_sample' ),
 1946+ 'tip' => wfMsg( 'link_tip' ),
19461947 'key' => 'L'
19471948 ),
19481949 array(
1949 - 'image' => $wgLang->getImageFile('button-extlink'),
 1950+ 'image' => $wgLang->getImageFile( 'button-extlink' ),
19501951 'id' => 'mw-editbutton-extlink',
19511952 'open' => '[',
19521953 'close' => ']',
1953 - 'sample' => wfMsg('extlink_sample'),
1954 - 'tip' => wfMsg('extlink_tip'),
 1954+ 'sample' => wfMsg( 'extlink_sample' ),
 1955+ 'tip' => wfMsg( 'extlink_tip' ),
19551956 'key' => 'X'
19561957 ),
19571958 array(
1958 - 'image' => $wgLang->getImageFile('button-headline'),
 1959+ 'image' => $wgLang->getImageFile( 'button-headline' ),
19591960 'id' => 'mw-editbutton-headline',
19601961 'open' => "\n== ",
19611962 'close' => " ==\n",
1962 - 'sample' => wfMsg('headline_sample'),
1963 - 'tip' => wfMsg('headline_tip'),
 1963+ 'sample' => wfMsg( 'headline_sample' ),
 1964+ 'tip' => wfMsg( 'headline_tip' ),
19641965 'key' => 'H'
19651966 ),
19661967 array(
1967 - 'image' => $wgLang->getImageFile('button-image'),
 1968+ 'image' => $wgLang->getImageFile( 'button-image' ),
19681969 'id' => 'mw-editbutton-image',
1969 - 'open' => '[['.$wgContLang->getNsText(NS_FILE).':',
 1970+ 'open' => '[['.$wgContLang->getNsText( NS_FILE ).':',
19701971 'close' => ']]',
1971 - 'sample' => wfMsg('image_sample'),
1972 - 'tip' => wfMsg('image_tip'),
 1972+ 'sample' => wfMsg( 'image_sample' ),
 1973+ 'tip' => wfMsg( 'image_tip' ),
19731974 'key' => 'D'
19741975 ),
19751976 array(
1976 - 'image' => $wgLang->getImageFile('button-media'),
 1977+ 'image' => $wgLang->getImageFile( 'button-media' ),
19771978 'id' => 'mw-editbutton-media',
1978 - 'open' => '[['.$wgContLang->getNsText(NS_MEDIA).':',
 1979+ 'open' => '[['.$wgContLang->getNsText( NS_MEDIA ).':',
19791980 'close' => ']]',
1980 - 'sample' => wfMsg('media_sample'),
1981 - 'tip' => wfMsg('media_tip'),
 1981+ 'sample' => wfMsg( 'media_sample' ),
 1982+ 'tip' => wfMsg( 'media_tip' ),
19821983 'key' => 'M'
19831984 ),
19841985 array(
1985 - 'image' => $wgLang->getImageFile('button-math'),
 1986+ 'image' => $wgLang->getImageFile( 'button-math' ),
19861987 'id' => 'mw-editbutton-math',
19871988 'open' => "<math>",
19881989 'close' => "</math>",
1989 - 'sample' => wfMsg('math_sample'),
1990 - 'tip' => wfMsg('math_tip'),
 1990+ 'sample' => wfMsg( 'math_sample' ),
 1991+ 'tip' => wfMsg( 'math_tip' ),
19911992 'key' => 'C'
19921993 ),
19931994 array(
1994 - 'image' => $wgLang->getImageFile('button-nowiki'),
 1995+ 'image' => $wgLang->getImageFile( 'button-nowiki' ),
19951996 'id' => 'mw-editbutton-nowiki',
19961997 'open' => "<nowiki>",
19971998 'close' => "</nowiki>",
1998 - 'sample' => wfMsg('nowiki_sample'),
1999 - 'tip' => wfMsg('nowiki_tip'),
 1999+ 'sample' => wfMsg( 'nowiki_sample' ),
 2000+ 'tip' => wfMsg( 'nowiki_tip' ),
20002001 'key' => 'N'
20012002 ),
20022003 array(
2003 - 'image' => $wgLang->getImageFile('button-sig'),
 2004+ 'image' => $wgLang->getImageFile( 'button-sig' ),
20042005 'id' => 'mw-editbutton-signature',
20052006 'open' => '--~~~~',
20062007 'close' => '',
20072008 'sample' => '',
2008 - 'tip' => wfMsg('sig_tip'),
 2009+ 'tip' => wfMsg( 'sig_tip' ),
20092010 'key' => 'Y'
20102011 ),
20112012 array(
2012 - 'image' => $wgLang->getImageFile('button-hr'),
 2013+ 'image' => $wgLang->getImageFile( 'button-hr' ),
20132014 'id' => 'mw-editbutton-hr',
20142015 'open' => "\n----\n",
20152016 'close' => '',
20162017 'sample' => '',
2017 - 'tip' => wfMsg('hr_tip'),
 2018+ 'tip' => wfMsg( 'hr_tip' ),
20182019 'key' => 'R'
20192020 )
20202021 );
20212022 $toolbar = "<div id='toolbar'>\n";
20222023 $toolbar.="<script type='$wgJsMimeType'>\n/*<![CDATA[*/\n";
20232024
2024 - foreach($toolarray as $tool) {
 2025+ foreach( $toolarray as $tool ) {
20252026 $params = array(
20262027 $image = $wgStylePath.'/common/images/'.$tool['image'],
20272028 // Note that we use the tip both for the ALT tag and the TITLE tag of the image.
@@ -2061,8 +2062,8 @@
20622063 $checkboxes = array();
20632064
20642065 $checkboxes['minor'] = '';
2065 - $minorLabel = wfMsgExt('minoredit', array('parseinline'));
2066 - if ( $wgUser->isAllowed('minoredit') ) {
 2066+ $minorLabel = wfMsgExt( 'minoredit', array( 'parseinline' ) );
 2067+ if ( $wgUser->isAllowed( 'minoredit' ) ) {
20672068 $attribs = array(
20682069 'tabindex' => ++$tabindex,
20692070 'accesskey' => wfMsg( 'accesskey-minoredit' ),
@@ -2070,10 +2071,10 @@
20712072 );
20722073 $checkboxes['minor'] =
20732074 Xml::check( 'wpMinoredit', $checked['minor'], $attribs ) .
2074 - "&nbsp;<label for='wpMinoredit'".$skin->tooltip('minoredit', 'withaccess').">{$minorLabel}</label>";
 2075+ "&nbsp;<label for='wpMinoredit'" . $skin->tooltip( 'minoredit', 'withaccess' ) . ">{$minorLabel}</label>";
20752076 }
20762077
2077 - $watchLabel = wfMsgExt('watchthis', array('parseinline'));
 2078+ $watchLabel = wfMsgExt( 'watchthis', array( 'parseinline' ) );
20782079 $checkboxes['watch'] = '';
20792080 if ( $wgUser->isLoggedIn() ) {
20802081 $attribs = array(
@@ -2083,7 +2084,7 @@
20842085 );
20852086 $checkboxes['watch'] =
20862087 Xml::check( 'wpWatchthis', $checked['watch'], $attribs ) .
2087 - "&nbsp;<label for='wpWatchthis'".$skin->tooltip('watch', 'withaccess').">{$watchLabel}</label>";
 2088+ "&nbsp;<label for='wpWatchthis'" . $skin->tooltip('watch', 'withaccess') . ">{$watchLabel}</label>";
20882089 }
20892090 wfRunHooks( 'EditPageBeforeEditChecks', array( &$this, &$checkboxes, &$tabindex ) );
20902091 return $checkboxes;
@@ -2097,7 +2098,7 @@
20982099 *
20992100 * @return array
21002101 */
2101 - public function getEditButtons(&$tabindex) {
 2102+ public function getEditButtons( &$tabindex ) {
21022103 global $wgLivePreview, $wgUser;
21032104
21042105 $buttons = array();
@@ -2107,11 +2108,11 @@
21082109 'name' => 'wpSave',
21092110 'type' => 'submit',
21102111 'tabindex' => ++$tabindex,
2111 - 'value' => wfMsg('savearticle'),
2112 - 'accesskey' => wfMsg('accesskey-save'),
 2112+ 'value' => wfMsg( 'savearticle' ),
 2113+ 'accesskey' => wfMsg( 'accesskey-save' ),
21132114 'title' => wfMsg( 'tooltip-save' ).' ['.wfMsg( 'accesskey-save' ).']',
21142115 );
2115 - $buttons['save'] = Xml::element('input', $temp, '');
 2116+ $buttons['save'] = Xml::element( 'input', $temp, '' );
21162117
21172118 ++$tabindex; // use the same for preview and live preview
21182119 if ( $wgLivePreview && $wgUser->getOption( 'uselivepreview' ) ) {
@@ -2120,12 +2121,12 @@
21212122 'name' => 'wpPreview',
21222123 'type' => 'submit',
21232124 'tabindex' => $tabindex,
2124 - 'value' => wfMsg('showpreview'),
 2125+ 'value' => wfMsg( 'showpreview' ),
21252126 'accesskey' => '',
21262127 'title' => wfMsg( 'tooltip-preview' ).' ['.wfMsg( 'accesskey-preview' ).']',
21272128 'style' => 'display: none;',
21282129 );
2129 - $buttons['preview'] = Xml::element('input', $temp, '');
 2130+ $buttons['preview'] = Xml::element( 'input', $temp, '' );
21302131
21312132 $temp = array(
21322133 'id' => 'wpLivePreview',
@@ -2137,18 +2138,18 @@
21382139 'title' => '',
21392140 'onclick' => $this->doLivePreviewScript(),
21402141 );
2141 - $buttons['live'] = Xml::element('input', $temp, '');
 2142+ $buttons['live'] = Xml::element( 'input', $temp, '' );
21422143 } else {
21432144 $temp = array(
21442145 'id' => 'wpPreview',
21452146 'name' => 'wpPreview',
21462147 'type' => 'submit',
21472148 'tabindex' => $tabindex,
2148 - 'value' => wfMsg('showpreview'),
2149 - 'accesskey' => wfMsg('accesskey-preview'),
 2149+ 'value' => wfMsg( 'showpreview' ),
 2150+ 'accesskey' => wfMsg( 'accesskey-preview' ),
21502151 'title' => wfMsg( 'tooltip-preview' ).' ['.wfMsg( 'accesskey-preview' ).']',
21512152 );
2152 - $buttons['preview'] = Xml::element('input', $temp, '');
 2153+ $buttons['preview'] = Xml::element( 'input', $temp, '' );
21532154 $buttons['live'] = '';
21542155 }
21552156
@@ -2157,11 +2158,11 @@
21582159 'name' => 'wpDiff',
21592160 'type' => 'submit',
21602161 'tabindex' => ++$tabindex,
2161 - 'value' => wfMsg('showdiff'),
2162 - 'accesskey' => wfMsg('accesskey-diff'),
 2162+ 'value' => wfMsg( 'showdiff' ),
 2163+ 'accesskey' => wfMsg( 'accesskey-diff' ),
21632164 'title' => wfMsg( 'tooltip-diff' ).' ['.wfMsg( 'accesskey-diff' ).']',
21642165 );
2165 - $buttons['diff'] = Xml::element('input', $temp, '');
 2166+ $buttons['diff'] = Xml::element( 'input', $temp, '' );
21662167
21672168 wfRunHooks( 'EditPageBeforeEditButtons', array( &$this, &$buttons, &$tabindex ) );
21682169 return $buttons;
@@ -2210,8 +2211,8 @@
22112212 $newtext = $this->mArticle->replaceSection(
22122213 $this->section, $this->textbox1, $this->summary, $this->edittime );
22132214 $newtext = $this->mArticle->preSaveTransform( $newtext );
2214 - $oldtitle = wfMsgExt( 'currentrev', array('parseinline') );
2215 - $newtitle = wfMsgExt( 'yourtext', array('parseinline') );
 2215+ $oldtitle = wfMsgExt( 'currentrev', array( 'parseinline' ) );
 2216+ $newtitle = wfMsgExt( 'yourtext', array( 'parseinline' ) );
22162217 if ( $oldtext !== false || $newtext != '' ) {
22172218 $de = new DifferenceEngine( $this->mTitle );
22182219 $de->setText( $oldtext, $newtext );
Index: trunk/phase3/languages/messages/MessagesEn.php
@@ -1039,8 +1039,8 @@
10401040 'hr_tip' => 'Horizontal line (use sparingly)',
10411041
10421042 # Edit pages
1043 -'summary' => 'Summary',
1044 -'subject' => 'Subject/headline',
 1043+'summary' => 'Summary:',
 1044+'subject' => 'Subject/headline:',
10451045 'minoredit' => 'This is a minor edit',
10461046 'watchthis' => 'Watch this page',
10471047 'savearticle' => 'Save page',
@@ -1056,7 +1056,7 @@
10571057 'missingcommentheader' => "'''Reminder:''' You have not provided a subject/headline for this comment.
10581058 If you click Save again, your edit will be saved without one.",
10591059 'summary-preview' => 'Summary preview',
1060 -'subject-preview' => 'Subject/headline preview',
 1060+'subject-preview' => 'Subject/headline preview:',
10611061 'blockedtitle' => 'User is blocked',
10621062 'blockedtext' => "<big>'''Your user name or IP address has been blocked.'''</big>
10631063
Index: trunk/phase3/RELEASE-NOTES
@@ -442,9 +442,9 @@
443443 * (bug 16712) Special:NewFiles updated to use "newer"/"older" paging messages
444444 for clarity over "previous/next"
445445 * (bug 16612) Fixed "noprint" class for Modern skin print style
446 -* (bug 16026) revision-info, revision-info-current, cannotdelete,
447 - redirectedfrom, historywarning and difference messages now use Wiki text
448 - rather than raw HTML markup
 446+* (bugs 212, 16026) revision-info, revision-info-current, cannotdelete,
 447+ redirectedfrom, historywarning, difference, summary and subject messages now
 448+ use Wiki text rather than raw HTML markup
449449 * (bug 13835) Fix rendering of {{filepath:Wiki.png|nowiki}}
450450 * (bug 16772) Special:Upload now correctly rejects files with spaces in the
451451 file extension (e.g. Foo. jpg).

Follow-up revisions

RevisionCommit summaryAuthorDate
r45228Revert r45027, r45028 "* summary and subject messages now uses wiki text rath...brion17:10, 31 December 2008
r45229Partial re-introduction of r45027 after being reverted in r45228...siebrand17:20, 31 December 2008

Comments

#Comment by Aaron Schulz (talk | contribs)   07:17, 26 December 2008

Heh, I was thinking about the label functions missing attribs two days ago!

#Comment by Brion VIBBER (talk | contribs)   19:17, 30 December 2008

Marking FIXME... changing message format is pretty disruptive, and should either be coordinated or should be done by renaming the message to avoid compatibility problems.

Also, PLEASE PLEASE PLEASE do not mix widespread code format tweaks with functional changes! It makes it much harder to track down what actually changed!

#Comment by Brion VIBBER (talk | contribs)   17:10, 31 December 2008

Reverted in r45228

Status & tagging log