$this->BlockAddress = $wgRequest->getVal( 'wpBlockAddress', $wgRequest->getVal( 'ip', $par ) );
$this->BlockAddress = strtr( $this->BlockAddress, '_', ' ' );
$this->BlockReason = $wgRequest->getText( 'wpBlockReason' );
+ $this->BlockReasonList = $wgRequest->getText( 'wpBlockReasonList' );
$this->BlockExpiry = $wgRequest->getVal( 'wpBlockExpiry', wfMsg('ipbotheroption') );
$this->BlockOther = $wgRequest->getVal( 'wpBlockOther', '' );
$mIpbexpiry = Xml::label( wfMsg( 'ipbexpiry' ), 'wpBlockExpiry' );
$mIpbother = Xml::label( wfMsg( 'ipbother' ), 'mw-bi-other' );
$mIpbothertime = wfMsgHtml( 'ipbotheroption' );
- $mIpbreason = Xml::label( wfMsg( 'ipbreason' ), 'mw-bi-reason' );
+ $mIpbreasonother = Xml::label( wfMsg( 'ipbreason' ), 'wpBlockReasonList' );
+ $mIpbreason = Xml::label( wfMsg( 'ipbotherreason' ), 'mw-bi-reason' );
+ $mIpbreasonotherlist = wfMsgHtml( 'ipbreasonotherlist' );
+
$titleObj = SpecialPage::getTitleFor( 'Blockip' );
$action = $titleObj->escapeLocalURL( "action=submit" );
$blockExpiryFormOptions .= "<option value=\"$value\"$selected>$show</option>";
}
+ $scBlockReasonList = wfMsgForContent( 'ipbreason-dropdown' );
+ $blockReasonList = '';
+ if ( $scBlockReasonList != '' && $scBlockReasonList != '-' ) {
+ $blockReasonList = "<option value=\"other\">$mIpbreasonotherlist</option>";
+ $optgroup = "";
+ foreach ( explode( "\n", $scBlockReasonList ) as $option) {
+ $value = trim( htmlspecialchars($option) );
+ if ( $value == '' ) {
+ continue;
+ } elseif ( substr( $value, 0, 1) == '*' && substr( $value, 1, 1) != '*' ) {
+ // A new group is starting ...
+ $value = trim( substr( $value, 1 ) );
+ $blockReasonList .= "$optgroup<optgroup label=\"$value\">";
+ $optgroup = "</optgroup>";
+ } elseif ( substr( $value, 0, 2) == '**' ) {
+ // groupmember
+ $selected = "";
+ $value = trim( substr( $value, 2 ) );
+ if ( $this->BlockReasonList === $value)
+ $selected = ' selected="selected"';
+ $blockReasonList .= "<option value=\"$value\"$selected>$value</option>";
+ } else {
+ // groupless block reason
+ $selected = "";
+ if ( $this->BlockReasonList === $value)
+ $selected = ' selected="selected"';
+ $blockReasonList .= "$optgroup<option value=\"$value\"$selected>$value</option>";
+ $optgroup = "";
+ }
+ }
+ $blockReasonList .= $optgroup;
+ }
+
$token = htmlspecialchars( $wgUser->editToken() );
global $wgStylePath, $wgStyleVersion;
</td>
");
}
-
$wgOut->addHTML("
</tr>
<tr id='wpBlockOther'>
" . Xml::input( 'wpBlockOther', 45, $this->BlockOther,
array( 'tabindex' => '3', 'id' => 'mw-bi-other' ) ) . "
</td>
- </tr>
- <tr>
+ </tr>");
+ if ( $blockReasonList != '' ) {
+ $wgOut->addHTML("
+ <tr>
+ <td align=\"right\">{$mIpbreasonother}:</td>
+ <td align=\"left\">
+ <select tabindex='4' id=\"wpBlockReasonList\" name=\"wpBlockReasonList\">
+ $blockReasonList
+ </select>
+ </td>
+ </tr>");
+ }
+ $wgOut->addHTML("
+ <tr id=\"wpBlockReason\">
<td align=\"right\">{$mIpbreason}:</td>
<td align=\"left\">
" . Xml::input( 'wpBlockReason', 45, $this->BlockReason,
- array( 'tabindex' => '3', 'id' => 'mw-bi-reason' ) ) . "
+ array( 'tabindex' => '5', 'id' => 'mw-bi-reason' ) ) . "
</td>
</tr>
<tr id='wpAnonOnlyRow'>
<td align=\"left\">
" . wfCheckLabel( wfMsgHtml( 'ipbanononly' ),
'wpAnonOnly', 'wpAnonOnly', $this->BlockAnonOnly,
- array( 'tabindex' => '4' ) ) . "
+ array( 'tabindex' => '6' ) ) . "
</td>
</tr>
<tr id='wpCreateAccountRow'>
<td align=\"left\">
" . wfCheckLabel( wfMsgHtml( 'ipbcreateaccount' ),
'wpCreateAccount', 'wpCreateAccount', $this->BlockCreateAccount,
- array( 'tabindex' => '5' ) ) . "
+ array( 'tabindex' => '7' ) ) . "
</td>
</tr>
<tr id='wpEnableAutoblockRow'>
<td align=\"left\">
" . wfCheckLabel( wfMsgHtml( 'ipbenableautoblock' ),
'wpEnableAutoblock', 'wpEnableAutoblock', $this->BlockEnableAutoblock,
- array( 'tabindex' => '6' ) ) . "
+ array( 'tabindex' => '8' ) ) . "
</td>
</tr>
");
<td align=\"left\">
" . wfCheckLabel( wfMsgHtml( 'ipbhidename' ),
'wpHideName', 'wpHideName', $this->BlockHideName,
- array( 'tabindex' => '6' ) ) . "
+ array( 'tabindex' => '9' ) ) . "
</td>
</tr>
");
<td style='padding-top: 1em'> </td>
<td style='padding-top: 1em' align=\"left\">
" . Xml::submitButton( wfMsgHtml( 'ipbsubmit' ),
- array( 'name' => 'wpBlock', 'tabindex' => '7' ) ) . "
+ array( 'name' => 'wpBlock', 'tabindex' => '10' ) ) . "
</td>
</tr>
</table>" .
}
}
+ $reasonstr = $this->BlockReasonList;
+ if ( $reasonstr != 'other' && $this->BlockReason != '') {
+ // Entry from drop down menu + additional comment
+ $reasonstr .= ': ' . $this->BlockReason;
+ } elseif ( $reasonstr == 'other' ) {
+ $reasonstr = $this->BlockReason;
+ }
+
$expirestr = $this->BlockExpiry;
if( $expirestr == 'other' )
$expirestr = $this->BlockOther;
# Note: for a user block, ipb_address is only for display purposes
$block = new Block( $this->BlockAddress, $userId, $wgUser->getID(),
- $this->BlockReason, wfTimestampNow(), 0, $expiry, $this->BlockAnonOnly,
+ $reasonstr, wfTimestampNow(), 0, $expiry, $this->BlockAnonOnly,
$this->BlockCreateAccount, $this->BlockEnableAutoblock, $this->BlockHideName);
if (wfRunHooks('BlockIp', array(&$block, &$wgUser))) {
$log_type = ($this->BlockHideName) ? 'oversight' : 'block';
$log = new LogPage( $log_type );
$log->addEntry( 'block', Title::makeTitle( NS_USER, $this->BlockAddress ),
- $this->BlockReason, $logParams );
+ $reasonstr, $logParams );
# Report to the user
$titleObj = SpecialPage::getTitleFor( 'Blockip' );
private function getConvenienceLinks() {
global $wgUser;
$skin = $wgUser->getSkin();
+ $links[] = $skin->makeLink ( 'MediaWiki:ipbreason-dropdown', wfMsgHtml( 'ipb-edit-dropdown' ) );
$links[] = $this->getUnblockLink( $skin );
$links[] = $this->getBlockListLink( $skin );
return '<p class="mw-ipb-conveniencelinks">' . implode( ' | ', $links ) . '</p>';
'ipadressorusername' => 'IP-Adresse oder Benutzername',
'ipbexpiry' => 'Sperrdauer',
'ipbreason' => 'Begründung',
+'ipbreasonotherlist' => 'Andere Begründung',
+'ipbreason-dropdown' => '
+* Allgemeine Sperrgründe
+** Löschen von Seiten
+** Einstellen unsinniger Seiten
+** Fortgesetzte Verstöße gegen die Richtlinien für Weblinks
+** Verstoß gegen den Grundsatz „Keine persönlichen Angriffe“
+* Benutzerspezifische Sperrgründe
+** Ungeeigneter Benutzername
+** Neuanmeldung eines unbeschränkt gesperrten Benutzers
+* IP-spezifische Sperrgründe
+** Proxy, wegen Vandalismus einzelner Benutzer längerfristig gesperrt',
'ipbanononly' => 'Nur anonyme Benutzer sperren',
'ipbcreateaccount' => 'Erstellung von Benutzerkonten verhindern',
'ipbenableautoblock' => 'Sperre die aktuell von diesem Benutzer genutzte IP-Adresse sowie automatisch alle folgenden, von denen aus er Bearbeitungen oder das Anlegen von Benutzeraccounts versucht',
'ipbother' => 'Andere Dauer (englisch)',
'ipboptions' => '1 Stunde:1 hour,2 Stunden:2 hours,6 Stunden:6 hours,1 Tag:1 day,3 Tage:3 days,1 Woche:1 week,2 Wochen:2 weeks,1 Monat:1 month,3 Monate:3 months,1 Jahr:1 year,Unbeschränkt:indefinite',
'ipbotheroption' => 'Andere Dauer',
+'ipbotherreason' => 'Andere/ergänzende Begründung',
'ipbhidename' => 'Benutzername/IP-Adresse im Sperr-Logbuch, der Liste aktiver Sperren und dem Benutzerverzeichnis verstecken.',
'badipaddress' => 'Die IP-Adresse hat ein falsches Format.',
'blockipsuccesssub' => 'Sperre erfolgreich',
'blockipsuccesstext' => 'Der Benutzer/die IP-Adresse [[{{ns:special}}:Contributions/$1|$1]] wurde gesperrt und die Aktion im [[{{ns:special}}:Log/block|Benutzersperr-Logbuch]] protokolliert
Zur Aufhebung der Sperre siehe die [[{{ns:special}}:Ipblocklist|Liste aller aktiven Sperren]].',
+'ipb-edit-dropdown' => 'Sperrgründe bearbeiten',
'ipb-unblock-addr' => '„$1“ freigeben',
'ipb-unblock' => 'IP-Adresse/Benutzer freigeben',
'ipb-blocklist-addr' => 'Aktuelle Sperre für „$1“ anzeigen',
'unblocklogentry' => 'hat die Sperre von [[$1]] aufgehoben.',
'block-log-flags-anononly' => 'nur Anonyme',
'block-log-flags-nocreate' => 'Erstellung von Benutzerkonten gesperrt',
-'block-log-flags-autoblock' => 'Autoblock aktiviert',
+'block-log-flags-noautoblock' => 'Autoblock deaktiviert',
'range_block_disabled' => 'Die Möglichkeit, ganze Adressräume zu sperren, ist nicht aktiviert.',
'ipb_expiry_invalid' => 'Die eingegebene Dauer ist ungültig.',
'ipb_already_blocked' => '„$1“ wurde bereits gesperrt',
'ipadressorusername' => 'IP Address or username',
'ipbexpiry' => 'Expiry',
'ipbreason' => 'Reason',
+'ipbreasonotherlist' => 'Other reason',
+
+// These are examples only. They can be translated but should be adjusted via
+// [[MediaWiki:ipbreason-list]] by the local community
+// defines a block reason not part of a group
+// * defines a block reason group in the drow down menu
+// ** defines a block reason
+// To disable this drop down menu enter '-' in [[MediaWiki:ipbreason-dropdown]].
+'ipbreason-dropdown' => '
+*Common block reasons
+** Inserting false information
+** Removing content from pages
+** Spamming links to external sites
+** Inserting nonsense/gibberish into pages
+** Intimidating behaviour/harassment
+** Abusing multiple accounts
+** Unacceptable username',
'ipbanononly' => 'Block anonymous users only',
'ipbcreateaccount' => 'Prevent account creation',
'ipbenableautoblock' => 'Automatically block the last IP address used by this user, and any subsequent IPs they try to edit from',
'ipbother' => 'Other time',
'ipboptions' => '2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
'ipbotheroption' => 'other',
+'ipbotherreason' => 'Other/additional reason',
'ipbhidename' => 'Hide username/IP from the block log, active block list and user list',
'badipaddress' => 'Invalid IP address',
'blockipsuccesssub' => 'Block succeeded',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] has been blocked.
<br />See [[Special:Ipblocklist|IP block list]] to review blocks.',
+'ipb-edit-dropdown' => 'Edit block reasons',
'ipb-unblock-addr' => 'Unblock $1',
'ipb-unblock' => 'Unblock a username or IP address',
'ipb-blocklist-addr' => 'View existing blocks for $1',
'blocklink' => 'block',
'unblocklink' => 'unblock',
'contribslink' => 'contribs',
-'autoblocker' => 'Autoblocked because your IP address has been recently used by "[[User:$1|$1]]". The reason given for $1\'s block is: "\'\'\'$2\'\'\'"',
+'autoblocker' => 'Autoblocked because your IP address has been recently used by "[[User:$1|$1]]". The reason given for $1\'s block is: "$2"',
'blocklogpage' => 'Block log',
'blocklogentry' => 'blocked "[[$1]]" with an expiry time of $2 $3',
'blocklogtext' => 'This is a log of user blocking and unblocking actions. Automatically