From abe117f8b2498120590f876a6fb05734973488d4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Niklas=20Laxstr=C3=B6m?= Date: Sun, 6 May 2007 17:54:38 +0000 Subject: [PATCH] * XMLify preferences a little with more clear look as side effect --- includes/SpecialPreferences.php | 230 +++++++++++++++++------------- includes/Xml.php | 34 +++++ languages/messages/MessagesEn.php | 8 +- skins/monobook/handheld.css | 7 +- skins/monobook/main.css | 7 +- 5 files changed, 169 insertions(+), 117 deletions(-) diff --git a/includes/SpecialPreferences.php b/includes/SpecialPreferences.php index 5ca818cdbb..f73c118e95 100644 --- a/includes/SpecialPreferences.php +++ b/includes/SpecialPreferences.php @@ -441,6 +441,28 @@ class PreferencesForm { return "$td1$td2"; } + function tableRow( $td1, $td2, $td3 = null ) { + global $wgLang; + + $a1 = $a2 = array(); + $a1['align'] = $wgLang->isRtl() ? 'left' : 'right'; + $a2['align'] = $wgLang->isRtl() ? 'right' : 'left'; + + if ( is_null( $td3 ) ) { + $td3 = ''; + } else { + $td3 = Xml::tags( 'tr', null, + Xml::tags( 'td', array( 'colspan' => '2' ), $td3 ) + ); + } + + $td1 = Xml::tags( 'td', $a2, $td1 ); + $td2 = Xml::tags( 'td', $a2, $td2 ); + + return Xml::tags( 'tr', null, $td1 . $td2 ). $td3 . "\n"; + + } + /** * @access private */ @@ -484,12 +506,7 @@ class PreferencesForm { $this->mUsedToggles[ 'ccmeonemails' ] = true; $this->mUsedToggles[ 'uselivepreview' ] = true; - # Enotif - # - $this->mUserEmail = htmlspecialchars( $this->mUserEmail ); - $this->mRealName = htmlspecialchars( $this->mRealName ); - $rawNick = $this->mNick; - $this->mNick = htmlspecialchars( $this->mNick ); + if ( !$this->mEmailFlag ) { $emfc = 'checked="checked"'; } else { $emfc = ''; } @@ -529,91 +546,76 @@ class PreferencesForm { # User data # - $wgOut->addHTML( "
\n" . wfMsg('prefs-personal') . "\n\n"); + $wgOut->addHTML( + Xml::openElement( 'fieldset ' ) . + Xml::element( 'legend', null, wfMsg('prefs-personal') ) . + Xml::openElement( 'table' ) . + Xml::tags( 'tr', null, + Xml::tags( 'td', array( 'colspan' => '2' ), + Xml::element( 'h1', null, wfMsg( 'prefs-personal' ) ) + ) + ) + ); $userInformationHtml = - $this->addRow( - wfMsg( 'username'), - $wgUser->getName() - ) . - $this->addRow( - wfMsg( 'uid' ), - $wgUser->getID() - ); - + $this->tableRow( wfMsgHtml( 'username' ), htmlspecialchars( $wgUser->getName() ) ) . + $this->tableRow( wfMsgHtml( 'uid' ), htmlspecialchars( $wgUser->getID() ) ); + if( wfRunHooks( 'PreferencesUserInformationPanel', array( $this, &$userInformationHtml ) ) ) { $wgOut->addHtml( $userInformationHtml ); } - - if ($wgAllowRealName) { + if ( $wgAllowRealName ) { $wgOut->addHTML( - $this->addRow( - '', - "mRealName}\" size='25' />" + $this->tableRow( + Xml::label( wfMsg('yourrealname'), 'wpRealName' ), + Xml::input( 'wpRealName', 25, $this->mRealName, array( 'id' => 'wpRealName' ) ), + Xml::tags('div', array( 'class' => 'prefsectiontip' ), + wfMsgExt( 'prefs-help-realname', 'parseinline' ) + ) ) ); } - if ($wgEnableEmail) { + if ( $wgEnableEmail ) { $wgOut->addHTML( - $this->addRow( - '', - "mUserEmail}\" size='25' />" + $this->tableRow( + Xml::label( wfMsg('youremail'), 'wpUserEmail' ), + Xml::input( 'wpUserEmail', 25, $this->mUserEmail, array( 'id' => 'wpUserEmail' ) ), + Xml::tags('div', array( 'class' => 'prefsectiontip' ), + wfMsgExt( 'prefs-help-email', 'parseinline' ) + ) ) ); } global $wgParser; if( !empty( $this->mToggles['fancysig'] ) && - false === $wgParser->validateSig( $rawNick ) ) { - $invalidSig = $this->addRow( + false === $wgParser->validateSig( $this->mNick ) ) { + $invalidSig = $this->tableRow( ' ', - '' . wfMsgHtml( 'badsig' ) . '' + Xml::element( 'span', array( 'class' => 'error' ), wfMsg( 'badsig' ) ) ); } else { $invalidSig = ''; } $wgOut->addHTML( - $this->addRow( - '', - "mNick}\" size='25' />" + $this->tableRow( + Xml::label( wfMsg( 'yournick' ), 'wpNick' ), + Xml::input( 'wpNick', 25, $this->mNick, array( 'id' => 'wpNick' ) ) ) . $invalidSig . # FIXME: The part should be where the   is, getToggle() needs # to be changed to out return its output in two parts. -ævar - $this->addRow( + $this->tableRow( ' ', $this->getToggle( 'fancysig' ) ) ); - /** - * Make sure the site language is in the list; a custom language code - * might not have a defined name... - */ - $languages = Language::getLanguageNames( true ); - if( !array_key_exists( $wgContLanguageCode, $languages ) ) { - $languages[$wgContLanguageCode] = $wgContLanguageCode; - } - ksort( $languages ); - - /** - * If a bogus value is set, default to the content language. - * Otherwise, no default is selected and the user ends up - * with an Afrikaans interface since it's first in the list. - */ - $selectedLang = isset( $languages[$this->mUserLanguage] ) ? $this->mUserLanguage : $wgContLanguageCode; - $options = "\n"; - foreach( $languages as $code => $name ) { - $selected = ($code == $selectedLang); - $options .= Xml::option( "$code - $name", $code, $selected ) . "\n"; - } + list( $lsLabel, $lsSelect) = Xml::languageSelector( $this->mUserLanguage ); $wgOut->addHTML( - $this->addRow( - '', - "" - ) + $this->tableRow( $lsLabel, $lsSelect ) ); /* see if there are multiple language variants to choose from*/ @@ -621,6 +623,7 @@ class PreferencesForm { $variants = $wgContLang->getVariants(); $variantArray = array(); + $languages = Language::getLanguageNames( true ); foreach($variants as $v) { $v = str_replace( '_', '-', strtolower($v)); if( array_key_exists( $v, $languages ) ) { @@ -637,69 +640,84 @@ class PreferencesForm { if(count($variantArray) > 1) { $wgOut->addHtml( - $this->addRow( wfMsg( 'yourvariant' ), - "" ) + $this->tableRow( + Xml::label( wfMsg( 'yourvariant' ), 'wpUserVariant' ), + Xml::tags( 'select', + array( 'name' => 'wpUserVariant', 'id' => 'wpUserVariant' ), + $options + ) + ) ); } } - $wgOut->addHTML('
'); # Password - if( $wgAuth->allowPasswordChange() ) { - $this->mOldpass = htmlspecialchars( $this->mOldpass ); - $this->mNewpass = htmlspecialchars( $this->mNewpass ); - $this->mRetypePass = htmlspecialchars( $this->mRetypePass ); - - $wgOut->addHTML( '
' . wfMsg( 'changepassword' ) . ''); + if( $wgAuth->allowPasswordChange() ) { $wgOut->addHTML( - $this->addRow( - '', - "mOldpass}\" size='20' />" + Xml::tags( 'tr', null, + Xml::tags( 'td', array( 'colspan' => '2' ), + Xml::element( 'h1', null, wfMsg( 'changepassword' ) ) + ) + ) . + $this->tableRow( + Xml::label( wfMsg( 'oldpassword' ), 'wpOldpass' ), + Xml::input( 'wpOldpass', 25, $this->mOldpass, array( 'id' => 'wpOldpass' ) ) ) . - $this->addRow( - '', - "mNewpass}\" size='20' />" + $this->tableRow( + Xml::label( wfMsg( 'newpassword' ), 'wpNewpass' ), + Xml::input( 'wpNewpass', 25, $this->mNewpass, array( 'id' => 'wpNewpass' ) ) ) . - $this->addRow( - '', - "mRetypePass}\" size='20' />" + $this->tableRow( + Xml::label( wfMsg( 'retypenew' ), 'wpRetypePass' ), + Xml::input( 'wpRetypePass', 25, $this->mRetypePass, array( 'id' => 'wpRetypePass' ) ) ) . - "
\n" . - $this->getToggle( "rememberpassword" ) . "
\n\n" ); + Xml::tags( 'tr', null, + Xml::tags( 'td', array( 'colspan' => '2' ), + $this->getToggle( "rememberpassword" ) + ) + ) + ); } # # Enotif - if ($wgEnableEmail) { - $wgOut->addHTML( '
' . wfMsg( 'email' ) . '' ); - $wgOut->addHTML( - $emailauthenticated. - $enotifrevealaddr. - $enotifwatchlistpages. - $enotifusertalkpages. - $enotifminoredits ); + if ( $wgEnableEmail ) { + + $moreEmail = ''; if ($wgEnableUserEmail) { - $emf = wfMsg( 'allowemail' ); + $emf = wfMsg( 'allowemail' ); $disabled = $disableEmailPrefs ? ' disabled="disabled"' : ''; - $wgOut->addHTML( - "
" ); + $moreEmail = + " "; } - $wgOut->addHtml( $this->getToggle( 'ccmeonemails' ) ); - $wgOut->addHTML( '
' ); + + $wgOut->addHTML( + Xml::tags( 'tr', null, + Xml::tags( 'td', array( 'colspan' => '2' ), + Xml::element( 'h1', null, wfMsg( 'email' ) ) + ) + ) . + Xml::tags( 'tr', null, + Xml::tags( 'td', array( 'colspan' => '2' ), + $emailauthenticated. + $enotifrevealaddr. + $enotifwatchlistpages. + $enotifusertalkpages. + $enotifminoredits. + $moreEmail. + $this->getToggle( 'ccmeonemails' ) + ) + ) + ); } - #
- # Show little "help" tips for the real name and email address options - if( $wgAllowRealName || $wgEnableEmail ) { - if( $wgAllowRealName ) - $tips[] = wfMsg( 'prefs-help-realname' ); - if( $wgEnableEmail ) - $tips[] = wfMsg( 'prefs-help-email' ); - $wgOut->addHtml( '
' . implode( '
', $tips ) . '
' ); - } + $wgOut->addHTML( + Xml::closeElement( 'table' ) . + Xml::closeElement( 'fieldset' ) + ); - $wgOut->addHTML( '
' ); + #
# Quickbar # @@ -753,8 +771,12 @@ class PreferencesForm { if( $wgUseTeX ) { $wgOut->addHTML( "
\n" . wfMsg('math') . '' ); foreach ( $mathopts as $k => $v ) { - $checked = $k == $this->mMath ? ' checked="checked"' : ''; - $wgOut->addHTML( "
\n" ); + $checked = ($k == $this->mMath); + $wgOut->addHTML( + Xml::openElement( 'div' ) . + Xml::radioLabel( wfMsg( $v ), 'wpMath', $k, "mw-sp-math-$k", $checked ) . + Xml::closeElement( 'div' ) . "\n" + ); } $wgOut->addHTML( "
\n\n" ); } @@ -967,7 +989,9 @@ class PreferencesForm { \n" ); - $wgOut->addWikiText( '
' . wfMsg('clearyourcache') . '
' ); + $wgOut->addHtml( Xml::tags( 'div', array( 'class' => "prefcache" ), + wfMsgExt( 'clearyourcache', 'parseinline' ) ) + ); } } diff --git a/includes/Xml.php b/includes/Xml.php index 0fedcfa08d..2c7a82bea2 100644 --- a/includes/Xml.php +++ b/includes/Xml.php @@ -110,6 +110,40 @@ class Xml { return $s; } + public static function languageSelector( $selected, $customisedOnly = true ) { + global $wgContLanguageCode; + /** + * Make sure the site language is in the list; a custom language code + * might not have a defined name... + */ + $languages = Language::getLanguageNames( $customisedOnly ); + if( !array_key_exists( $wgContLanguageCode, $languages ) ) { + $languages[$wgContLanguageCode] = $wgContLanguageCode; + } + ksort( $languages ); + + /** + * If a bogus value is set, default to the content language. + * Otherwise, no default is selected and the user ends up + * with an Afrikaans interface since it's first in the list. + */ + $selectedLang = isset( $languages[$selected] ) ? $selected : $wgContLanguageCode; + $options = "\n"; + foreach( $languages as $code => $name ) { + $selected = ($code == $selectedLang); + $options .= Xml::option( "$code - $name", $code, $selected ) . "\n"; + } + + return array( + Xml::label( wfMsg('yourlanguage'), 'wpUserLanguage' ), + Xml::tags( 'select', + array( 'id' => 'wpUserLanguage', 'name' => 'wpUserLanguage' ), + $options + ) + ); + + } + public static function span( $text, $class, $attribs=array() ) { return self::element( 'span', array( 'class' => $class ) + $attribs, $text ); } diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index a80804da65..8e77ef44fc 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -822,19 +822,19 @@ Your account has been created. Don't forget to change your {{SITENAME}} preferen 'createaccountmail' => 'by e-mail', 'badretype' => 'The passwords you entered do not match.', 'userexists' => 'Username entered already in use. Please choose a different name.', -'youremail' => 'E-mail *:', +'youremail' => 'E-mail:', 'username' => 'Username:', 'uid' => 'User ID:', -'yourrealname' => 'Real name *:', +'yourrealname' => 'Real name:', 'yourlanguage' => 'Language:', 'yourvariant' => 'Variant', 'yournick' => 'Nickname:', 'badsig' => 'Invalid raw signature; check HTML tags.', 'email' => 'E-mail', 'prefs-help-email-enotif' => 'This address is also used to send you e-mail notifications if you enabled the options.', -'prefs-help-realname' => '* Real name (optional): if you choose to provide it this will be used for giving you attribution for your work.', +'prefs-help-realname' => 'Optional: if you choose to provide it this will be used for giving you attribution for your work.', 'loginerror' => 'Login error', -'prefs-help-email' => '* E-mail (optional): Enables others to contact you through your user or user_talk page without needing to reveal your identity.', +'prefs-help-email' => 'Optional: Enables others to contact you through your user or user_talk page without needing to reveal your identity.', 'nocookiesnew' => 'The user account was created, but you are not logged in. {{SITENAME}} uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.', 'nocookieslogin' => '{{SITENAME}} uses cookies to log in users. You have cookies disabled. Please enable them and try again.', 'noname' => 'You have not specified a valid user name.', diff --git a/skins/monobook/handheld.css b/skins/monobook/handheld.css index 754aba9f55..153344d620 100644 --- a/skins/monobook/handheld.css +++ b/skins/monobook/handheld.css @@ -872,11 +872,8 @@ head:first-child+body #footer li { white-space: nowrap; } background-color: #F9F9F9; } div.prefsectiontip { - font-size: 95%; - margin-top: 0; - background-color: #FFC1C1; - padding: .2em .7em; - clear: both; + font-size: x-small; + padding: .2em 2em; } .btnSavePrefs { font-weight: bold; diff --git a/skins/monobook/main.css b/skins/monobook/main.css index 783efd466f..1fa96e323f 100644 --- a/skins/monobook/main.css +++ b/skins/monobook/main.css @@ -1141,11 +1141,8 @@ input.searchButton { } /* } */ div.prefsectiontip { - font-size: 95%; - margin-top: 0; - background-color: #FFC1C1; - padding: .2em .7em; - clear: both; + font-size: x-small; + padding: .2em 2em; } .btnSavePrefs { font-weight: bold; -- 2.20.1