var $mUserLanguage, $mUserVariant;
var $mSearch, $mRecent, $mHourDiff, $mSearchLines, $mSearchChars, $mAction;
var $mReset, $mPosted, $mToggles, $mSearchNs, $mRealName, $mImageSize;
- var $mUnderline;
+ var $mUnderline, $mWatchlistEdits;
/**
* Constructor
$this->mReset = $request->getCheck( 'wpReset' );
$this->mPosted = $request->wasPosted();
$this->mSuccess = $request->getCheck( 'success' );
+ $this->mWatchlistDays = $request->getVal( 'wpWatchlistDays' );
+ $this->mWatchlistEdits = $request->getVal( 'wpWatchlistEdits' );
$this->mSaveprefs = $request->getCheck( 'wpSaveprefs' ) &&
$this->mPosted &&
global $wgUser, $wgOut;
if ( $wgUser->isAnon() ) {
- $wgOut->errorpage( 'prefsnologin', 'prefsnologintext' );
+ $wgOut->showErrorPage( 'prefsnologin', 'prefsnologintext' );
return;
}
if ( wfReadOnly() ) {
return $val;
}
+ /**
+ * @access private
+ */
+ function validateFloat( &$val, $min, $max=0x7fffffff ) {
+ $val = floatval( $val );
+ $val = min( $val, $max );
+ $val = max( $val, $min );
+ return( $val );
+ }
+
/**
* @access private
*/
} else {
$this->mainPrefsForm( 'error', wfMsg( 'badsig' ) );
}
+ } else {
+ // When no fancy sig used, make sure ~{3,5} get removed.
+ $this->mNick = $wgParser->cleanSigInSig( $this->mNick );
}
$wgUser->setOption( 'language', $this->mUserLanguage );
$wgUser->setOption( 'contextlines', $this->validateIntOrNull( $this->mSearchLines ) );
$wgUser->setOption( 'contextchars', $this->validateIntOrNull( $this->mSearchChars ) );
$wgUser->setOption( 'rclimit', $this->validateIntOrNull( $this->mRecent ) );
+ $wgUser->setOption( 'wllimit', $this->validateIntOrNull( $this->mWatchlistEdits, 0, 1000 ) );
$wgUser->setOption( 'rows', $this->validateInt( $this->mRows, 4, 1000 ) );
$wgUser->setOption( 'cols', $this->validateInt( $this->mCols, 4, 1000 ) );
$wgUser->setOption( 'stubthreshold', $this->validateIntOrNull( $this->mStubs ) );
$wgUser->setOption( 'imagesize', $this->mImageSize );
$wgUser->setOption( 'thumbsize', $this->mThumbSize );
$wgUser->setOption( 'underline', $this->validateInt($this->mUnderline, 0, 2) );
+ $wgUser->setOption( 'watchlistdays', $this->validateFloat( $this->mWatchlistDays, 0, 7 ) );
# Set search namespace options
foreach( $this->mSearchNs as $i => $value ) {
$this->mImageSize = $wgUser->getOption( 'imagesize' );
$this->mThumbSize = $wgUser->getOption( 'thumbsize' );
$this->mRecent = $wgUser->getOption( 'rclimit' );
+ $this->mWatchlistEdits = $wgUser->getOption( 'wllimit' );
$this->mUnderline = $wgUser->getOption( 'underline' );
+ $this->mWatchlistDays = $wgUser->getOption( 'watchlistdays' );
$togs = $wgLang->getUserToggles();
foreach ( $togs as $tname ) {
}
# </FIXME>
- if ($wgAllowRealName || $wgEnableEmail) {
- $wgOut->addHTML("<div class='prefsectiontip'>");
- $rn = $wgAllowRealName ? wfMsg('prefs-help-realname') : '';
- $em = $wgEnableEmail ? '<br />' . wfMsg('prefs-help-email') : '';
- $wgOut->addHTML( $rn . $em . '</div>');
- }
+ # 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( '<div class="prefsectiontip">' . implode( '<br />', $tips ) . '</div>' );
+ }
$wgOut->addHTML( '</fieldset>' );
} else {
# Need to output a hidden option even if the relevant skin is not in use,
# otherwise the preference will get reset to 0 on submit
- $wgOut->addHTML( "<input type='hidden' name='wpQuickbar' value='{$this->mQuickbar}' />" );
+ $wgOut->addHtml( wfHidden( 'wpQuickbar', $this->mQuickbar ) );
}
# Skin
if ($dateopts) {
$wgOut->addHTML( "<fieldset>\n<legend>" . wfMsg( 'dateformat' ) . "</legend>\n" );
$idCnt = 0;
- $epoch = '20010115161234';
+ $epoch = '20010408091234';
foreach($dateopts as $key => $option) {
if( $key == MW_DATE_DEFAULT ) {
$formatted = wfMsgHtml( 'datedefault' );
# Editing
#
- global $wgLivePreview;
+ global $wgLivePreview, $wgUseRCPatrol;
$wgOut->addHTML( '<fieldset><legend>' . wfMsg( 'textboxsize' ) . '</legend>
- <div>
- <label for="wpRows">' . wfMsg( 'rows' ) . "</label> <input type='text' name='wpRows' id='wpRows' value=\"{$this->mRows}\" size='3' />
- <label for='wpCols'>" . wfMsg( 'columns' ) . "</label> <input type='text' name='wpCols' id='wpCols' value=\"{$this->mCols}\" size='3' />
- </div>" .
+ <div>' .
+ wfInputLabel( wfMsg( 'rows' ), 'wpRows', 'wpRows', 3, $this->mRows ) .
+ ' ' .
+ wfInputLabel( wfMsg( 'columns' ), 'wpCols', 'wpCols', 3, $this->mCols ) .
+ "</div>" .
$this->getToggles( array(
'editsection',
'editsectiononrightclick',
'minordefault',
'externaleditor',
'externaldiff',
- $wgLivePreview ? 'uselivepreview' : false, )
- ) . '</fieldset>'
+ $wgLivePreview ? 'uselivepreview' : false,
+ $wgUser->isAllowed( 'patrol' ) && $wgUseRCPatrol ? 'autopatrol' : false,
+ 'forceeditsummary',
+ ) ) . '</fieldset>'
);
+ $this->mUsedToggles['autopatrol'] = true; # Don't show this up for users who can't; the handler below is dumb and doesn't know it
$wgOut->addHTML( '<fieldset><legend>' . htmlspecialchars(wfMsg('prefs-rc')) . '</legend>' .
- '<label for="wpRecent">' . wfMsg ( 'recentchangescount' ) .
- "</label> <input type='text' name='wpRecent' id='wpRecent' value=\"$this->mRecent\" size='3' />" .
+ wfInputLabel( wfMsg( 'recentchangescount' ),
+ 'wpRecent', 'wpRecent', 3, $this->mRecent ) .
$this->getToggles( array(
'hideminor',
$wgRCShowWatchingUsers ? 'shownumberswatching' : false,
) . '</fieldset>'
);
+ # Watchlist
+ $wgOut->addHTML( '<fieldset><legend>' . wfMsgHtml( 'prefs-watchlist' ) . '</legend>' );
+
+ $wgOut->addHTML( wfInputLabel( wfMsg( 'prefs-watchlist-days' ),
+ 'wpWatchlistDays', 'wpWatchlistDays', 3, $this->mWatchlistDays ) );
+ $wgOut->addHTML( '<br /><br />' ); # Spacing
+ $wgOut->addHTML( $this->getToggles( array( 'watchlisthideown', 'watchlisthidebots', 'extendwatchlist' ) ) );
+ $wgOut->addHTML( wfInputLabel( wfMsg( 'prefs-watchlist-edits' ),
+ 'wpWatchlistEdits', 'wpWatchlistEdits', 3, $this->mWatchlistEdits ) );
+
+ $wgOut->addHTML( '</fieldset>' );
+
+ # Search
$wgOut->addHTML( '<fieldset><legend>' . wfMsg( 'searchresultshead' ) . '</legend><table>' .
$this->addRow(
- '<label for="wpSearch">' . wfMsg( 'resultsperpage' ) . '</label>',
- "<input type='text' name='wpSearch' id='wpSearch' value=\"$this->mSearch\" size='4' />"
+ wfLabel( wfMsg( 'resultsperpage' ), 'wpSearch' ),
+ wfInput( 'wpSearch', 4, $this->mSearch, array( 'id' => 'wpSearch' ) )
) .
$this->addRow(
- '<label for="wpSearchLines">' . wfMsg( 'contextlines' ) . '</label>',
- "<input type='text' name='wpSearchLines' id='wpSearchLines' value=\"$this->mSearchLines\" size='4' />"
+ wfLabel( wfMsg( 'contextlines' ), 'wpSearchLines' ),
+ wfInput( 'wpSearchLines', 4, $this->mSearchLines, array( 'id' => 'wpSearchLines' ) )
) .
$this->addRow(
- '<label for="wpSearchChars">' . wfMsg( 'contextchars' ) . '</label>',
- "<input type='text' name='wpSearchChars' id='wpSearchChars' value=\"$this->mSearchChars\" size='4' />"
+ wfLabel( wfMsg( 'contextchars' ), 'wpSearchChars' ),
+ wfInput( 'wpSearchChars', 4, $this->mSearchChars, array( 'id' => 'wpSearchChars' ) )
) .
"</table><fieldset><legend>" . wfMsg( 'defaultns' ) . "</legend>$ps</fieldset></fieldset>" );
# Misc
#
$wgOut->addHTML('<fieldset><legend>' . wfMsg('prefs-misc') . '</legend>');
- $wgOut->addHTML(
- '<label for="wpStubs">' . htmlspecialchars ( wfMsg ( 'stubthreshold' ) ) . '</label>' .
- " <input type='text' name='wpStubs' id='wpStubs' value=\"$this->mStubs\" size='6' />"
- );
+ $wgOut->addHTML( wfInputLabel( wfMsg( 'stubthreshold' ),
+ 'wpStubs', 'wpStubs', 6, $this->mStubs ) );
$msgUnderline = htmlspecialchars( wfMsg ( 'tog-underline' ) );
$msgUnderlinenever = htmlspecialchars( wfMsg ( 'underline-never' ) );
$msgUnderlinealways = htmlspecialchars( wfMsg ( 'underline-always' ) );