specialpreferences.php
来自「php 开发的内容管理系统」· PHP 代码 · 共 939 行 · 第 1/3 页
PHP
939 行
} } else { $error = wfMsg( 'invalidemailaddress' ); } } else { $wgUser->setEmail( $this->mUserEmail ); $wgUser->setCookies(); $wgUser->saveSettings(); } } if( $needRedirect && $error === false ) { $title =& Title::makeTitle( NS_SPECIAL, "Preferences" ); $wgOut->redirect($title->getFullURL('success')); return; } $wgOut->setParserOptions( ParserOptions::newFromUser( $wgUser ) ); $po = ParserOptions::newFromUser( $wgUser ); $this->mainPrefsForm( $error === false ? 'success' : 'error', $error); } /** * @access private */ function resetPrefs() { global $wgUser, $wgLang, $wgContLang, $wgAllowRealName; $this->mOldpass = $this->mNewpass = $this->mRetypePass = ''; $this->mUserEmail = $wgUser->getEmail(); $this->mUserEmailAuthenticationtimestamp = $wgUser->getEmailAuthenticationtimestamp(); $this->mRealName = ($wgAllowRealName) ? $wgUser->getRealName() : ''; $this->mUserLanguage = $wgUser->getOption( 'language' ); if( empty( $this->mUserLanguage ) ) { # Quick hack for conversions, where this value is blank global $wgContLanguageCode; $this->mUserLanguage = $wgContLanguageCode; } $this->mUserVariant = $wgUser->getOption( 'variant'); $this->mEmailFlag = $wgUser->getOption( 'disablemail' ) == 1 ? 1 : 0; $this->mNick = $wgUser->getOption( 'nickname' ); $this->mQuickbar = $wgUser->getOption( 'quickbar' ); $this->mSkin = Skin::normalizeKey( $wgUser->getOption( 'skin' ) ); $this->mMath = $wgUser->getOption( 'math' ); $this->mDate = $wgUser->getOption( 'date' ); $this->mRows = $wgUser->getOption( 'rows' ); $this->mCols = $wgUser->getOption( 'cols' ); $this->mStubs = $wgUser->getOption( 'stubthreshold' ); $this->mHourDiff = $wgUser->getOption( 'timecorrection' ); $this->mSearch = $wgUser->getOption( 'searchlimit' ); $this->mSearchLines = $wgUser->getOption( 'contextlines' ); $this->mSearchChars = $wgUser->getOption( 'contextchars' ); $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 ) { $ttext = wfMsg('tog-'.$tname); $this->mToggles[$tname] = $wgUser->getOption( $tname ); } $namespaces = $wgContLang->getNamespaces(); foreach ( $namespaces as $i => $namespace ) { if ( $i >= NS_MAIN ) { $this->mSearchNs[$i] = $wgUser->getOption( 'searchNs'.$i ); } } } /** * @access private */ function namespacesCheckboxes() { global $wgContLang; # Determine namespace checkboxes $namespaces = $wgContLang->getNamespaces(); $r1 = null; foreach ( $namespaces as $i => $name ) { if ($i < 0) continue; $checked = $this->mSearchNs[$i] ? "checked='checked'" : ''; $name = str_replace( '_', ' ', $namespaces[$i] ); if ( empty($name) ) $name = wfMsg( 'blanknamespace' ); $r1 .= "<input type='checkbox' value='1' name='wpNs$i' id='wpNs$i' {$checked}/> <label for='wpNs$i'>{$name}</label><br />\n"; } return $r1; } function getToggle( $tname, $trailer = false, $disabled = false ) { global $wgUser, $wgLang; $this->mUsedToggles[$tname] = true; $ttext = $wgLang->getUserToggle( $tname ); $checked = $wgUser->getOption( $tname ) == 1 ? ' checked="checked"' : ''; $disabled = $disabled ? ' disabled="disabled"' : ''; $trailer = $trailer ? $trailer : ''; return "<div class='toggle'><input type='checkbox' value='1' id=\"$tname\" name=\"wpOp$tname\"$checked$disabled />" . " <span class='toggletext'><label for=\"$tname\">$ttext</label>$trailer</span></div>\n"; } function getToggles( $items ) { $out = ""; foreach( $items as $item ) { if( $item === false ) continue; if( is_array( $item ) ) { list( $key, $trailer ) = $item; } else { $key = $item; $trailer = false; } $out .= $this->getToggle( $key, $trailer ); } return $out; } function addRow($td1, $td2) { return "<tr><td align='right'>$td1</td><td align='left'>$td2</td></tr>"; } /** * @access private */ function mainPrefsForm( $status , $message = '' ) { global $wgUser, $wgOut, $wgLang, $wgContLang; global $wgAllowRealName, $wgImageLimits, $wgThumbLimits; global $wgDisableLangConversion; global $wgEnotifWatchlist, $wgEnotifUserTalk,$wgEnotifMinorEdits; global $wgRCShowWatchingUsers, $wgEnotifRevealEditorAddress; global $wgEnableEmail, $wgEnableUserEmail, $wgEmailAuthentication; global $wgContLanguageCode, $wgDefaultSkin, $wgSkipSkins, $wgAuth; $wgOut->setPageTitle( wfMsg( 'preferences' ) ); $wgOut->setArticleRelated( false ); $wgOut->setRobotpolicy( 'noindex,nofollow' ); if ( $this->mSuccess || 'success' == $status ) { $wgOut->addWikitext( '<div class="successbox"><strong>'. wfMsg( 'savedprefs' ) . '</strong></div>' ); } else if ( 'error' == $status ) { $wgOut->addWikitext( '<div class="errorbox"><strong>' . $message . '</strong></div>' ); } else if ( '' != $status ) { $wgOut->addWikitext( $message . "\n----" ); } $qbs = $wgLang->getQuickbarSettings(); $skinNames = $wgLang->getSkinNames(); $mathopts = $wgLang->getMathNames(); $dateopts = $wgLang->getDateFormats(); $togs = $wgLang->getUserToggles(); $titleObj = Title::makeTitle( NS_SPECIAL, 'Preferences' ); $action = $titleObj->escapeLocalURL(); # Pre-expire some toggles so they won't show if disabled $this->mUsedToggles[ 'shownumberswatching' ] = true; $this->mUsedToggles[ 'showupdated' ] = true; $this->mUsedToggles[ 'enotifwatchlistpages' ] = true; $this->mUsedToggles[ 'enotifusertalkpages' ] = true; $this->mUsedToggles[ 'enotifminoredits' ] = true; $this->mUsedToggles[ 'enotifrevealaddr' ] = true; $this->mUsedToggles[ 'uselivepreview' ] = true; # Enotif # <FIXME> $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 = ''; } if ($wgEmailAuthentication && ($this->mUserEmail != '') ) { if( $wgUser->getEmailAuthenticationTimestamp() ) { $emailauthenticated = wfMsg('emailauthenticated',$wgLang->timeanddate($wgUser->getEmailAuthenticationTimestamp(), true ) ).'<br />'; $disableEmailPrefs = false; } else { $disableEmailPrefs = true; $skin = $wgUser->getSkin(); $emailauthenticated = wfMsg('emailnotauthenticated').'<br />' . $skin->makeKnownLinkObj( Title::makeTitle( NS_SPECIAL, 'Confirmemail' ), wfMsg( 'emailconfirmlink' ) ); } } else { $emailauthenticated = ''; $disableEmailPrefs = false; } if ($this->mUserEmail == '') { $emailauthenticated = wfMsg( 'noemailprefs' ); } $ps = $this->namespacesCheckboxes(); $enotifwatchlistpages = ($wgEnotifWatchlist) ? $this->getToggle( 'enotifwatchlistpages', false, $disableEmailPrefs ) : ''; $enotifusertalkpages = ($wgEnotifUserTalk) ? $this->getToggle( 'enotifusertalkpages', false, $disableEmailPrefs ) : ''; $enotifminoredits = ($wgEnotifWatchlist && $wgEnotifMinorEdits) ? $this->getToggle( 'enotifminoredits', false, $disableEmailPrefs ) : ''; $enotifrevealaddr = (($wgEnotifWatchlist || $wgEnotifUserTalk) && $wgEnotifRevealEditorAddress) ? $this->getToggle( 'enotifrevealaddr', false, $disableEmailPrefs ) : ''; $prefs_help_email_enotif = ( $wgEnotifWatchlist || $wgEnotifUserTalk) ? ' ' . wfMsg('prefs-help-email-enotif') : ''; $prefs_help_realname = ''; # </FIXME> $wgOut->addHTML( "<form action=\"$action\" method='post'>" ); $wgOut->addHTML( "<div id='preferences'>" ); # User data # $wgOut->addHTML( "<fieldset>\n<legend>" . wfMsg('prefs-personal') . "</legend>\n<table>\n"); $wgOut->addHTML( $this->addRow( wfMsg( 'username'), $wgUser->getName() ) ); $wgOut->addHTML( $this->addRow( wfMsg( 'uid' ), $wgUser->getID() ) ); if ($wgAllowRealName) { $wgOut->addHTML( $this->addRow( '<label for="wpRealName">' . wfMsg('yourrealname') . '</label>', "<input type='text' name='wpRealName' id='wpRealName' value=\"{$this->mRealName}\" size='25' />" ) ); } if ($wgEnableEmail) { $wgOut->addHTML( $this->addRow( '<label for="wpUserEmail">' . wfMsg( 'youremail' ) . '</label>', "<input type='text' name='wpUserEmail' id='wpUserEmail' value=\"{$this->mUserEmail}\" size='25' />" ) ); } global $wgParser; if( !empty( $this->mToggles['fancysig'] ) && false === $wgParser->validateSig( $rawNick ) ) { $invalidSig = $this->addRow( ' ', '<span class="error">' . wfMsgHtml( 'badsig' ) . '<span>' ); } else { $invalidSig = ''; } $wgOut->addHTML( $this->addRow( '<label for="wpNick">' . wfMsg( 'yournick' ) . '</label>', "<input type='text' name='wpNick' id='wpNick' value=\"{$this->mNick}\" size='25' />" ) . $invalidSig . # FIXME: The <input> part should be where the is, getToggle() needs # to be changed to out return its output in two parts. -忙var $this->addRow( ' ', $this->getToggle( 'fancysig' ) ) ); /** * Make sure the site language is in the list; a custom language code * might not have a defined name... */ $languages = $wgLang->getLanguageNames(); 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; $selbox = null; foreach($languages as $code => $name) { global $IP; /* only add languages that have a file */ $langfile="$IP/languages/Language".str_replace('-', '_', ucfirst($code)).".php"; if(file_exists($langfile) || $code == $wgContLanguageCode) { $sel = ($code == $selectedLang)? ' selected="selected"' : ''; $selbox .= "<option value=\"$code\"$sel>$code - $name</option>\n"; } } $wgOut->addHTML( $this->addRow( '<label for="wpUserLanguage">' . wfMsg('yourlanguage') . '</label>', "<select name='wpUserLanguage' id='wpUserLanguage'>$selbox</select>" ) );
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?