Update to MediaWiki 1.35.3

This commit is contained in:
Pierre Schmitz 2021-07-15 08:03:32 +02:00
parent 4978b6aa18
commit 7516b74040
135 changed files with 1245 additions and 661 deletions

View File

@ -9,11 +9,51 @@ declare 1.35 as supporting PHP 8.0.
PHP 8.0 workboard: https://phabricator.wikimedia.org/tag/php_8.0_support/
== MediaWiki 1.35.3 ==
This is a security and maintenance release of the MediaWiki 1.35 branch.
=== Changes since MediaWiki 1.35.2 ===
* (T259685) SQLite compatibility with ZeroConf VisualEditor was fixed in 1.35.2.
* (T196906, T242751) Fix the test MonologSpiTest::testDefaultChannel.
* (T279964) Parser: Trim trailing whitespace as the last step in pre-save
transform.
* (T278026) rdbms: Add DB_PRIMARY to replace DB_MASTER.
* (T252853) Update updateSearchIndex.php to 2006+ standards.
* (T276945) Define a batch size in maintenance/manageJobs.php.
* (T276945) Implement JobQueueDB::getAllAbandonedJobs.
* (T269676) authevents: strval() variables passed to status when logging.
* (T280944) $wgIncludejQueryMigrate - This setting allows the jQuery Migrate
plugin to be disabled. It has been enabled by default since MediaWiki 1.27.
* (T281584) apihelp-query+iwlinks-param-prop: s/interlanguage/interwiki/.
* (T281635) Delete maintenance/cleanupAncientTables.php.
* (T282133) RedisConnectionPool: Suppress phan issue.
* (T281549) WebInstaller: Don't show the announce-l subscribe
checkbox temporarily.
* (T278266) Fix annoying E_NOTICE about undefined 'alt' index in
Skin#makeFooterIcon.
* (T264214) UserRightsProxy::addGroup has to be allowed to update the
old group as well, which is used for granting interwiki rights.
* (T269776, T278266) getFooterIcons should not return empty arrays.
* (T274966) Skip AvroFormatterTest::testSchemaNotAvailable on PHP 8.0.
* phpunit: fail on warnings.
* (T283247) Freenode -> Libera per wikimedia moving from
freenode to libera.
* (T243124) Make phpunit:unit accept extension*.json to populate the classes.
* (T142663) Add extension.json merge strategy "provide_default".
* (T283540) HookContainer: Fix normalization of callback for static handler.
* (T283464) Fix array order for array_replace_recursive merge strategy.
* (T247223) Optimise MessageCache::isMainCacheable() for the single-message
case.
* (T278579) Don't send headers on ob_end_clean().
* (T280226, CVE-2021-35197) SECURITY: Prevent blocked users from purging
pages.
== MediaWiki 1.35.2 ==
This is a security and maintenance release of the MediaWiki 1.35 branch.
MediaWiki 1.35.2 supports Composer 2.0. It is reccommended to make sure your
MediaWiki 1.35.2 supports Composer 2.0. It is recommended to make sure your
libraries are up to date on Composer 1.x, before running Composer 2.x.
While normally running update.php isn't required for point releases,
@ -344,10 +384,10 @@ See the file UPGRADE for more detailed upgrade instructions, including
important information when upgrading from versions prior to 1.11.
Some specific notes for MediaWiki 1.35 upgrades are below:
* (T259685) Zeroconf (zero-configuration) VisualEditor/Parsoid doesn't work
using SQLite as the database backend for MediaWiki. This is due to the lack
of write concurrency in SQLite. If you wish to use this feature, it is
recommended to use MySQL/MariaDB rather than SQLite.
* (T259685) When using SQLite as the database backend for MediaWiki,
Zeroconf (zero-configuration) VisualEditor/Parsoid only works with
MediaWiki 1.35.2 and above. It is still recommended to use
MySQL/MariaDB rather than SQLite when using VisualEditor.
For notes on 1.34.x and older releases, see HISTORY.
@ -1772,4 +1812,4 @@ It's highly recommended that you sign up for one of these lists if you're
going to run a public MediaWiki, so you can be notified of security fixes.
== IRC help ==
There's usually someone online in #mediawiki on irc.freenode.net.
There's usually someone online in #mediawiki on irc.libera.chat.

View File

@ -264,7 +264,6 @@ $wgAutoloadLocalClasses = [
'CheckStorage' => __DIR__ . '/maintenance/storage/checkStorage.php',
'CheckUsernames' => __DIR__ . '/maintenance/checkUsernames.php',
'ClassCollector' => __DIR__ . '/includes/utils/ClassCollector.php',
'CleanupAncientTables' => __DIR__ . '/maintenance/cleanupAncientTables.php',
'CleanupBlocks' => __DIR__ . '/maintenance/cleanupBlocks.php',
'CleanupCaps' => __DIR__ . '/maintenance/cleanupCaps.php',
'CleanupEmptyCategories' => __DIR__ . '/maintenance/cleanupEmptyCategories.php',

View File

@ -16,7 +16,7 @@
"license": "GPL-2.0-or-later",
"support": {
"issues": "https://bugs.mediawiki.org/",
"irc": "irc://irc.freenode.net/mediawiki",
"irc": "irc://irc.libera.chat/mediawiki",
"wiki": "https://www.mediawiki.org/"
},
"prefer-stable": true,

View File

@ -148,7 +148,7 @@ might find that the best place to post if you want to get developers' attention
is the wikitech-l mailing list
<https://lists.wikimedia.org/mailman/listinfo/wikitech-l>. Posts to wikitech-l
will inevitably be read by multiple experienced MediaWiki developers. There's
also an active IRC chat at <irc://irc.freenode.net/mediawiki>, where there are
also an active IRC chat at <irc://irc.libera.chat/mediawiki>, where there are
usually several developers at reasonably busy times of day.
Our Git repositories are hosted at <https://gerrit.wikimedia.org>, see

View File

@ -1021,7 +1021,8 @@
"array_replace_recursive",
"array_plus_2d",
"array_plus",
"array_merge"
"array_merge",
"provide_default"
],
"default": "array_merge"
}

View File

@ -1051,7 +1051,8 @@
"array_replace_recursive",
"array_plus_2d",
"array_plus",
"array_merge"
"array_merge",
"provide_default"
],
"default": "array_merge"
},

View File

@ -9,7 +9,7 @@
"license-name": "GPL-2.0-or-later",
"type": "antispam",
"MessagesDirs": {
"hNoCaptcha": [
"HCaptcha": [
"i18n"
]
},
@ -37,5 +37,36 @@
"value": false
}
},
"ConfigRegistry": {
"hcaptcha": "GlobalVarConfig::newInstance"
},
"ResourceFileModulePaths": {
"localBasePath": "resources",
"remoteExtPath": "ConfirmEdit/hCaptcha/resources"
},
"ResourceModules": {
"ext.confirmEdit.hCaptcha.visualEditor": {
"scripts": "ve-confirmedit-hCaptcha/ve.init.mw.HCaptchaSaveErrorHandler.js",
"targets": [
"desktop",
"mobile"
]
}
},
"Hooks": {
"ResourceLoaderGetConfigVars": "resourceloader"
},
"HookHandlers": {
"resourceloader": {
"class": "MediaWiki\\Extensions\\ConfirmEdit\\hCaptcha\\Hooks\\ResourceLoaderHooks"
}
},
"attributes": {
"VisualEditor": {
"PluginModules": [
"ext.confirmEdit.hCaptcha.visualEditor"
]
}
},
"manifest_version": 2
}

View File

@ -5,12 +5,14 @@ namespace MediaWiki\Extensions\ConfirmEdit\hCaptcha;
use ApiBase;
use CaptchaAuthenticationRequest;
use ConfirmEditHooks;
use ContentSecurityPolicy;
use FormatJson;
use Html;
use MediaWiki\Auth\AuthenticationRequest;
use MediaWiki\MediaWikiServices;
use Message;
use RawMessage;
use RequestContext;
use SimpleCaptcha;
use Status;
use WebRequest;
@ -20,7 +22,17 @@ class HCaptcha extends SimpleCaptcha {
// hcaptcha-create, hcaptcha-sendemail via getMessage()
protected static $messagePrefix = 'hcaptcha-';
private $error;
private $error = null;
private $hCaptchaConfig;
private $siteKey;
public function __construct() {
$this->hCaptchaConfig = MediaWikiServices::getInstance()->getConfigFactory()
->makeConfig( 'hcaptcha' );
$this->siteKey = $this->hCaptchaConfig->get( 'HCaptchaSiteKey' );
}
/**
* Get the captcha form.
@ -28,14 +40,12 @@ class HCaptcha extends SimpleCaptcha {
* @return array
*/
public function getFormInformation( $tabIndex = 1 ) {
global $wgHCaptchaSiteKey;
$output = Html::element( 'div', [
'class' => [
'h-captcha',
'mw-confirmedit-captcha-fail' => (bool)$this->error,
],
'data-sitekey' => $wgHCaptchaSiteKey
'data-sitekey' => $this->siteKey
] );
return [
@ -53,6 +63,22 @@ class HCaptcha extends SimpleCaptcha {
return [ 'https://hcaptcha.com', 'https://*.hcaptcha.com' ];
}
/**
* Adds the CSP policies necessary for the captcha module to work in a CSP enforced
* setup.
*
* @param ContentSecurityPolicy $csp The CSP instance to add the policies to, usually
* obtained from {@link OutputPage::getCSP()}
*/
public static function addCSPSources( ContentSecurityPolicy $csp ) {
foreach ( static::getCSPUrls() as $src ) {
// Since frame-src is not supported
$csp->addDefaultSrc( $src );
$csp->addScriptSrc( $src );
$csp->addStyleSrc( $src );
}
}
/**
* @param Status|array|string $info
*/
@ -74,7 +100,10 @@ class HCaptcha extends SimpleCaptcha {
* @return array
*/
protected function getCaptchaParamsFromRequest( WebRequest $request ) {
$response = $request->getVal( 'h-captcha-response' );
$response = $request->getVal(
'h-captcha-response',
$request->getVal( 'captchaWord', $request->getVal( 'captchaword' ) )
);
return [ '', $response ];
}
@ -89,15 +118,19 @@ class HCaptcha extends SimpleCaptcha {
* @return bool
*/
protected function passCaptcha( $_, $token ) {
global $wgRequest, $wgHCaptchaSecretKey, $wgHCaptchaSendRemoteIP, $wgHCaptchaProxy;
$webRequest = RequestContext::getMain()->getRequest();
$secretKey = $this->hCaptchaConfig->get( 'HCaptchaSecretKey' );
$sendRemoteIp = $this->hCaptchaConfig->get( 'HCaptchaSendRemoteIP' );
$proxy = $this->hCaptchaConfig->get( 'HCaptchaProxy' );
$url = 'https://hcaptcha.com/siteverify';
$data = [
'secret' => $wgHCaptchaSecretKey,
'secret' => $secretKey,
'response' => $token,
];
if ( $wgHCaptchaSendRemoteIP ) {
$data['remoteip'] = $wgRequest->getIP();
if ( $sendRemoteIp ) {
$data['remoteip'] = $webRequest->getIP();
}
$options = [
@ -105,8 +138,8 @@ class HCaptcha extends SimpleCaptcha {
'postData' => $data,
];
if ( $wgHCaptchaProxy ) {
$options['proxy'] = $wgHCaptchaProxy;
if ( $proxy ) {
$options['proxy'] = $proxy;
}
$request = MediaWikiServices::getInstance()->getHttpRequestFactory()
@ -137,17 +170,18 @@ class HCaptcha extends SimpleCaptcha {
* @param array &$resultArr
*/
protected function addCaptchaAPI( &$resultArr ) {
$resultArr['captcha'] = $this->describeCaptchaType();
$resultArr['captcha']['error'] = $this->error;
}
/**
* @return array
*/
public function describeCaptchaType() {
global $wgHCaptchaSiteKey;
return [
'type' => 'hcaptcha',
'mime' => 'application/javascript',
'key' => $wgHCaptchaSiteKey,
'key' => $this->siteKey,
];
}
@ -187,6 +221,8 @@ class HCaptcha extends SimpleCaptcha {
* @inheritDoc
*/
public function storeCaptcha( $info ) {
// hCaptcha is stored externally, the ID will be generated at that time as well, and
// the one returned here won't be used. Just pretend this worked.
return 'not used';
}
@ -202,6 +238,7 @@ class HCaptcha extends SimpleCaptcha {
* @inheritDoc
*/
public function getCaptcha() {
// hCaptcha is handled by frontend code + an external provider; nothing to do here.
return [];
}
@ -221,8 +258,6 @@ class HCaptcha extends SimpleCaptcha {
public function onAuthChangeFormFields(
array $requests, array $fieldInfo, array &$formDescriptor, $action
) {
global $wgHCaptchaSiteKey;
$req = AuthenticationRequest::getRequestByClass(
$requests,
CaptchaAuthenticationRequest::class,
@ -237,7 +272,7 @@ class HCaptcha extends SimpleCaptcha {
$formDescriptor['captchaWord'] = [
'class' => HTMLHCaptchaField::class,
'key' => $wgHCaptchaSiteKey,
'key' => $this->siteKey,
'error' => $captcha->getError(),
] + $formDescriptor['captchaWord'];
}

View File

@ -0,0 +1,29 @@
<?php
declare( strict_types=1 );
namespace MediaWiki\Extensions\ConfirmEdit\hCaptcha\Hooks;
use Config;
use MediaWiki\MediaWikiServices;
use MediaWiki\ResourceLoader\Hook\ResourceLoaderGetConfigVarsHook;
class ResourceLoaderHooks implements ResourceLoaderGetConfigVarsHook {
/**
* Adds extra variables to the global config
*
* @param array &$vars Global variables object
* @param string $skin
* @param Config $config
* @return void
*/
public function onResourceLoaderGetConfigVars( array &$vars, $skin, Config $config ) : void {
$hCaptchaConfig = MediaWikiServices::getInstance()->getConfigFactory()->makeConfig( 'hcaptcha' );
if ( $hCaptchaConfig->get( 'CaptchaClass' ) === 'MediaWiki\\Extensions\\ConfirmEdit\\hCaptcha\\HCaptcha' ) {
$vars['wgConfirmEditConfig'] = [
'hCaptchaSiteKey' => $hCaptchaConfig->get( 'HCaptchaSiteKey' ),
'hCaptchaScriptURL' => 'https://hcaptcha.com/1/api.js',
];
}
}
}

View File

@ -0,0 +1,68 @@
mw.loader.using( 'ext.visualEditor.targetLoader' ).then( function () {
mw.libs.ve.targetLoader.addPlugin( function () {
ve.init.mw.HCaptchaSaveErrorHandler = function () {};
OO.inheritClass( ve.init.mw.HCaptchaSaveErrorHandler, ve.init.mw.SaveErrorHandler );
ve.init.mw.HCaptchaSaveErrorHandler.static.name = 'confirmEditHCaptcha';
ve.init.mw.HCaptchaSaveErrorHandler.static.getReadyPromise = function () {
var onLoadFn = 'onHcaptchaLoadCallback' + Date.now(),
deferred, config, scriptURL, params;
if ( !this.readyPromise ) {
deferred = $.Deferred();
config = mw.config.get( 'wgConfirmEditConfig' );
scriptURL = new mw.Uri( config.hCaptchaScriptURL );
params = { onload: onLoadFn, render: 'explicit' };
scriptURL.query = $.extend( scriptURL.query, params );
this.readyPromise = deferred.promise();
window[ onLoadFn ] = deferred.resolve;
mw.loader.load( scriptURL.toString() );
}
return this.readyPromise;
};
ve.init.mw.HCaptchaSaveErrorHandler.static.matchFunction = function ( data ) {
var captchaData = ve.getProp( data, 'visualeditoredit', 'edit', 'captcha' );
return !!( captchaData && captchaData.type === 'hcaptcha' );
};
ve.init.mw.HCaptchaSaveErrorHandler.static.process = function ( data, target ) {
var self = this,
config = mw.config.get( 'wgConfirmEditConfig' ),
siteKey = config.hCaptchaSiteKey,
$container = $( '<div>' );
// Register extra fields
target.saveFields.wpCaptchaWord = function () {
// eslint-disable-next-line no-jquery/no-global-selector
return $( '[name=h-captcha-response]' ).val();
};
this.getReadyPromise()
.then( function () {
// ProcessDialog's error system isn't great for this yet.
target.saveDialog.clearMessage( 'api-save-error' );
target.saveDialog.showMessage( 'api-save-error', $container, { wrap: false } );
self.widgetId = window.hcaptcha.render( $container[ 0 ], {
sitekey: siteKey,
callback: function () {
target.saveDialog.executeAction( 'save' );
},
'expired-callback': function () {},
'error-callback': function () {}
} );
target.saveDialog.popPending();
target.saveDialog.updateSize();
target.emit( 'saveErrorCaptcha' );
} );
};
ve.init.mw.saveErrorHandlerFactory.register( ve.init.mw.HCaptchaSaveErrorHandler );
} );
} );

View File

@ -15,6 +15,7 @@
"parallel-lint . --exclude node_modules --exclude vendor",
"phpcs -p -s",
"minus-x check ."
]
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -2,12 +2,13 @@
"@metadata": {
"authors": [
"Aram1985",
"Xelgen"
"Xelgen",
"Աշոտ1997"
]
},
"gadgets-desc": "Թույլ է տալիս օգտագործողներին ընտրել հատուկ [[Special:Gadgets|ՍիԷսԷս և ՋավաՍկիրպտ (CSS and JavaScript) գադջեթներ]] իրանց [[Special:Preferences#mw-prefsection-gadgets|նախընտրությունների]] էջում։",
"prefs-gadgets": "Գադջեթներ",
"gadgets-prefstext": "Այստեղ բերված են հատուկ հավելումներ՝ գաջեթներ, որոնք դուք կարող եք միացնել ըստ ձեր ցանկության։\nՀավելումները հիմնված են ՋավաՍկրիպտի վրա, ուստի հավելումների աշխատանքի համար անհրաժեշտ է, որ ձեր դիտարկչում ՋավաՍկրիպտը միացված լինի։\nՀաշվի առեք, որ գադջեթների աշխատանքը այս էջում չի նկատվի։\n\nՆկատի ունեցեք, որ ստորև բերված հավելումները ՄեդիաՎիքի ծրագրի մաս չեն հանդիսանում, և որպես կանոն իրանք ստեղծվում և սպասարկվում են ձեր վիքիի մասնակիցների կողմից։\nՎիքիի ադմինիստրատորները կարող են խմբագրել հասանելի գադջեթների [[MediaWiki:Gadgets-definition|ցանկը]] և [[Special:Gadgets|նկարագրությունը]]։",
"gadgets-prefstext": "Այստեղ բերված են հատուկ հավելումներ՝ գաջեթներ, որոնք դուք կարող եք միացնել ըստ ձեր ցանկության։\nՀավելումները հիմնված են ՋավաՍկրիպտի վրա, ուստի հավելումների աշխատանքի համար անհրաժեշտ է, որ ձեր դիտարկչում ՋավաՍկրիպտը միացված լինի։\nՀաշվի առեք, որ գադջեթների աշխատանքը այս էջում չի նկատվի։\n\nՆկատի ունեցեք, որ ստորև բերված հավելումները ՄեդիաՎիքի ծրագրի մաս չեն հանդիսանում, և որպես կանոն դրանք ստեղծվում և սպասարկվում են ձեր վիքիի մասնակիցների կողմից։\nՎիքիի ինտերֆեյսի ադմինիստրատորները կարող են խմբագրել հասանելի գադջեթների [[MediaWiki:Gadgets-definition|ցանկը]], վիքիի ադմինիստրատորները կարող են խմբագրել [[Special:Gadgets|նկարագրությունը]], որտեղ կարող եք գտնել գադջեթների կոդը։ Այս վիքիում յուրաքանչյուր գադջեթի օգտագործողների թիվը հնարավոր է տեսնել [[Special:GadgetUsage|օգտագործման վիճակագրությունում]]։",
"gadgets": "Գադջեթներ",
"gadgets-title": "Գադջեթներ",
"gadgets-uses": "Օգտագործում է",

View File

@ -14,11 +14,11 @@
"composer/installers": "1.*,>=1.0.1"
},
"require-dev": {
"jakub-onderka/php-parallel-lint": "1.0.0",
"jakub-onderka/php-console-highlighter": "0.4.0",
"mediawiki/mediawiki-codesniffer": "30.0.0",
"mediawiki/minus-x": "1.0.0",
"mediawiki/mediawiki-phan-config": "0.9.2"
"mediawiki/mediawiki-codesniffer": "31.0.0",
"mediawiki/mediawiki-phan-config": "0.10.2",
"mediawiki/minus-x": "1.1.0",
"php-parallel-lint/php-console-highlighter": "0.5.0",
"php-parallel-lint/php-parallel-lint": "1.2.0"
},
"scripts": {
"fix": [
@ -29,9 +29,7 @@
"parallel-lint . --exclude vendor --exclude node_modules",
"phpcs -p -s",
"minus-x check ."
]
},
"extra": {
"phan-taint-check-plugin": "2.0.1"
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -19,5 +19,5 @@
"AutoloadNamespaces": {
"MediaWiki\\Extensions\\ImageMap\\": "includes/"
},
"manifest_version": 1
"manifest_version": 2
}

View File

@ -1,21 +1,23 @@
{
"@metadata": {
"authors": [
"Diki Ananta",
"Meursault2004",
"NoiX180",
"Pras"
"Pras",
"Sumbukompor"
]
},
"imagemap_desc": "Nyedyakaké péta gambar sing bisa diklik saka klièn mawa nganggo tag <code>&lt;imagemap&gt;</code>",
"imagemap_no_image": "Error: kudu mènèhi sawijining gambar ing baris kapisan",
"imagemap_no_image": "Kasalahan: kudu mènèhi sawijining gambar ing baris kapisan.",
"imagemap_invalid_image": "Masalah: Gambar ora trep utawa ora ana.",
"imagemap_bad_image": "Masalah: Barkas ora diidinaké ing kaca iki",
"imagemap_no_link": "Masalah: Pranala sing trep ora ana ing pungkasané $1.",
"imagemap_invalid_title": "Error: irah-irahan ora absah ing pranala ing baris kaping $1",
"imagemap_missing_coord": "Error: ora cukup koordinat kanggo wujud ing baris kaping $1",
"imagemap_unrecognised_shape": "Error: wujud ora ditepungi ing baris kaping $1, saben baris kudu diwiwiti mawa salah siji saka: <code>default</code>, <code>rect</code>, <code>circle</code> utawa <code>poly</code>",
"imagemap_invalid_coord": "Error: koordinat ora absah ing baris kaping $1, kudu awujud angka",
"imagemap_invalid_desc": "Error: spésifikasi desc ora absah, kudu salah siji saka: $1",
"imagemap_invalid_title": "Kasalahan: irah-irahan ora absah ing pranala ing baris kaping $1.",
"imagemap_missing_coord": "Kasalahan: ora cukup koordhinat kanggo wujud ing baris kaping $1.",
"imagemap_unrecognised_shape": "Kasalahan: wujud ora dikenali ing baris kaping $1, saben baris kudu diwiwiti mawa salah siji saka: <code>default</code>, <code>rect</code>, <code>circle</code> utawa <code>poly</code>.",
"imagemap_invalid_coord": "Kasalahan: koordhinat ora absah ing baris kaping $1, kudu awujud angka.",
"imagemap_invalid_desc": "Kasalahan: spésifikasi desc ora absah, kudu salah siji saka: <code>$1</code>.",
"imagemap_description": "Prekara gambar iki",
"imagemap_poly_odd": "Kasalahan: ana poligon kanthi nomer koordinat kliru ing larikan $1"
}

View File

@ -32,13 +32,12 @@ use Title;
use Xml;
class ImageMap {
public static $id = 0;
const TOP_RIGHT = 0;
const BOTTOM_RIGHT = 1;
const BOTTOM_LEFT = 2;
const TOP_LEFT = 3;
const NONE = 4;
private const TOP_RIGHT = 0;
private const BOTTOM_RIGHT = 1;
private const BOTTOM_LEFT = 2;
private const TOP_LEFT = 3;
private const NONE = 4;
/**
* @param Parser $parser
@ -53,7 +52,7 @@ class ImageMap {
* @param Parser $parser
* @return string HTML (Image map, or error message)
*/
public static function render( $input, $params, $parser ) {
public static function render( $input, $params, Parser $parser ) {
global $wgUrlProtocols, $wgNoFollowLinks;
$config = ConfigFactory::getDefaultInstance()->makeConfig( 'main' );
@ -66,7 +65,6 @@ class ImageMap {
$thumbWidth = 0;
$thumbHeight = 0;
$imageTitle = null;
$lineNum = 0;
$mapHTML = '';
$links = [];
@ -79,12 +77,12 @@ class ImageMap {
$services = MediaWikiServices::getInstance();
$repoGroup = $services->getRepoGroup();
$badFileLookup = $services->getBadFileLookup();
foreach ( $lines as $line ) {
++$lineNum;
foreach ( $lines as $lineNum => $line ) {
$lineNum++;
$externLink = false;
$line = trim( $line );
if ( $line == '' || $line[0] == '#' ) {
if ( $line === '' || $line[0] === '#' ) {
continue;
}
@ -94,12 +92,8 @@ class ImageMap {
// The first line should have an image specification on it
// Extract it and render the HTML
$bits = explode( '|', $line, 2 );
if ( count( $bits ) == 1 ) {
$image = $bits[0];
$options = '';
} else {
list( $image, $options ) = $bits;
}
$image = $bits[0];
$options = $bits[1] ?? '';
$imageTitle = Title::newFromText( $image );
if ( !$imageTitle || !$imageTitle->inNamespace( NS_FILE ) ) {
return self::error( 'imagemap_no_image' );
@ -108,7 +102,7 @@ class ImageMap {
return self::error( 'imagemap_bad_image' );
}
// Parse the options so we can use links and the like in the caption
$parsedOptions = $parser->recursiveTagParse( $options );
$parsedOptions = $options === '' ? '' : $parser->recursiveTagParse( $options );
$imageHTML = $parser->makeImage( $imageTitle, $parsedOptions );
$parser->replaceLinkHolders( $imageHTML );
$imageHTML = $parser->getStripState()->unstripBoth( $imageHTML );
@ -148,9 +142,9 @@ class ImageMap {
// Handle desc spec
$cmd = strtok( $line, " \t" );
if ( $cmd == 'desc' ) {
if ( $cmd === 'desc' ) {
$typesText = wfMessage( 'imagemap_desc_types' )->inContentLanguage()->text();
if ( $descTypesCanonical != $typesText ) {
if ( $descTypesCanonical !== $typesText ) {
// i18n desc types exists
$typesText = $descTypesCanonical . ', ' . $typesText;
}
@ -246,29 +240,28 @@ class ImageMap {
if ( $wgNoFollowLinks ) {
$attribs['rel'] = 'nofollow';
}
} elseif ( $title->getFragment() != '' && $title->getPrefixedDBkey() == '' ) {
} elseif ( $title->getFragment() !== '' && $title->getPrefixedDBkey() === '' ) {
// XXX: kluge to handle [[#Fragment]] links, should really fix getLocalURL()
// in Title.php to return an empty string in this case
$attribs['href'] = $title->getFragmentForURL();
} else {
$attribs['href'] = $title->getLocalURL() . $title->getFragmentForURL();
}
if ( $shape != 'default' ) {
if ( $shape !== 'default' ) {
$attribs['shape'] = $shape;
}
if ( $coords ) {
$attribs['coords'] = implode( ',', $coords );
}
if ( $alt != '' ) {
if ( $shape != 'default' ) {
if ( $alt !== '' ) {
if ( $shape !== 'default' ) {
$attribs['alt'] = $alt;
}
$attribs['title'] = $alt;
}
if ( $shape == 'default' ) {
if ( $shape === 'default' ) {
$defaultLinkAttribs = $attribs;
} else {
// @phan-suppress-next-line SecurityCheck-DoubleEscaped
$mapHTML .= Xml::element( 'area', $attribs ) . "\n";
}
if ( $externLink ) {
@ -282,7 +275,7 @@ class ImageMap {
return self::error( 'imagemap_no_image' );
}
if ( $mapHTML == '' ) {
if ( $mapHTML === '' ) {
// no areas defined, default only. It's not a real imagemap, so we do not need some tags
$realmap = false;
}
@ -317,7 +310,7 @@ class ImageMap {
// Add the map HTML to the div
// We used to add it before the div, but that made tidy unhappy
if ( $mapHTML != '' ) {
if ( $mapHTML !== '' ) {
$mapDoc = new DOMDocument();
$mapDoc->loadXML( $mapHTML );
$mapNode = $domDoc->importNode( $mapDoc->documentElement, true );
@ -330,14 +323,14 @@ class ImageMap {
// Determine whether a "magnify" link is present
$xpath = new DOMXPath( $domDoc );
$magnify = $xpath->query( '//div[@class="magnify"]' );
if ( !$magnify->length && $descType != self::NONE ) {
if ( !$magnify->length && $descType !== self::NONE ) {
// Add image description link
if ( $descType == self::TOP_LEFT || $descType == self::BOTTOM_LEFT ) {
if ( $descType === self::TOP_LEFT || $descType === self::BOTTOM_LEFT ) {
$marginLeft = 0;
} else {
$marginLeft = $thumbWidth - 20;
}
if ( $descType == self::TOP_LEFT || $descType == self::TOP_RIGHT ) {
if ( $descType === self::TOP_LEFT || $descType === self::TOP_RIGHT ) {
$marginTop = -$thumbHeight;
// 1px hack for IE, to stop it poking out the top
$marginTop += 1;
@ -378,9 +371,9 @@ class ImageMap {
// Register links
foreach ( $links as $title ) {
if ( $title->isExternal() || $title->getNamespace() == NS_SPECIAL ) {
if ( $title->isExternal() || $title->getNamespace() === NS_SPECIAL ) {
// Don't register special or interwiki links...
} elseif ( $title->getNamespace() == NS_MEDIA ) {
} elseif ( $title->getNamespace() === NS_MEDIA ) {
// Regular Media: links are recorded as image usages
$parser->getOutput()->addImage( $title->getDBkey() );
} else {

View File

@ -50,6 +50,7 @@
"parallel-lint . --exclude vendor --exclude node_modules",
"phpcs -p -s",
"minus-x check ."
]
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -1,10 +1,10 @@
{
"require-dev": {
"jakub-onderka/php-parallel-lint": "1.0.0",
"mediawiki/mediawiki-codesniffer": "30.0.0",
"jakub-onderka/php-console-highlighter": "0.4.0",
"mediawiki/minus-x": "1.0.0",
"mediawiki/mediawiki-phan-config": "0.9.1"
"mediawiki/mediawiki-codesniffer": "31.0.0",
"mediawiki/mediawiki-phan-config": "0.10.2",
"mediawiki/minus-x": "1.1.0",
"php-parallel-lint/php-console-highlighter": "0.5.0",
"php-parallel-lint/php-parallel-lint": "1.2.0"
},
"scripts": {
"fix": [
@ -15,9 +15,7 @@
"parallel-lint . --exclude vendor --exclude node_modules",
"phpcs -p -s",
"minus-x check ."
]
},
"extra": {
"phan-taint-check-plugin": "2.0.1"
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -58,7 +58,10 @@
},
"AutoloadClasses": {
"SpecialNuke": "includes/SpecialNuke.php",
"NukeHooks": "includes/NukeHooks.php"
"NukeHooks": "includes/NukeHooks.php",
"NukeDeletePageHook": "includes/hook/NukeDeletePageHook.php",
"NukeGetNewPagesHook": "includes/hook/NukeGetNewPagesHook.php",
"NukeHookRunner": "includes/hook/NukeHookRunner.php"
},
"manifest_version": 1
"manifest_version": 2
}

View File

@ -3,9 +3,11 @@
"authors": [
"Bagas Chrisara",
"Bennylin",
"Diki Ananta",
"IvanLanin",
"Iwan Novirion",
"Rex"
"Rex",
"Sumbukompor"
]
},
"nuke": "Penghapusan massal",
@ -26,7 +28,7 @@
"nuke-deleted": "Halaman '''$1''' sudah dihapus.",
"nuke-not-deleted": "Halaman [[:$1]] '''tidak bisa''' dihapus.",
"nuke-delete-more": "[[Special:Nuke|Hapus lagi]]",
"nuke-pattern": "Pola untuk nama halaman:",
"nuke-pattern": "Pola SQL LIKE (mis. %) untuk nama halaman:",
"nuke-nopages-global": "Tidak ditemukan halaman baru yang cocok dengan pencarian Anda.",
"nuke-viewchanges": "lihat perubahan",
"nuke-namespace": "Batasan dari ruang nama:",

View File

@ -2,23 +2,26 @@
"@metadata": {
"authors": [
"Bennylin",
"Diki Ananta",
"Meursault2004",
"NoiX180"
"N219",
"NoiX180",
"Sumbukompor"
]
},
"nuke": "Busak gedhèn-gedhèn",
"action-nuke": "busak gedhèn-gedhèn",
"nuke-desc": "Awèh pangurus kabisan [[Special:Nuke|mbusak kaca gedhèn-gedhèn]]",
"nuke-desc": "Awèh panata kuwasa kanggo [[Special:Nuke|mbusak kaca gedhèn-gedhèn]]",
"nuke-nopages": "Ora ana kaca anyar garapané [[Special:Contributions/$1|$1]] ing owah-owahan.",
"nuke-list": "Kaca-kaca ing ngisor iki mentas digawé [[Special:Contributions/$1|$1]]; awèh tanggepan lan pencèt tombol saperlu mbusak.",
"nuke-list-multiple": "Kaca-kaca ing ngisor iki mentas kagawé;\nawèh tanggepan lan pencèn tombol saperlu mbusak.",
"nuke-defaultreason": "Busak gedhèn-gedhèn kaca garapané [[Special:Contributions/$1|{{GENDER:$1|$1}}]]",
"nuke-multiplepeople": "Busakan gedhèn-gedhèn kaca sing mentas kagawé",
"nuke-tools": "Piranti iki ngidinaké pambusak gedhèn-gedhèn kaca sing tembé digawé sawijining panganggo utawa digawé sawijining alamat IP.\nLebokaké jeneng panganggo utawa alamat IP saperlu ngéntukaké pratélan kaca sing arep kabusak gawéané panganggo utawa alamat IP mau, utawa kosongi waé kanggo ngéntukaké pratélan kaca gawéané kabèh panganggo.",
"nuke-tools": "Piranti iki ngidinaké pambusak gedhèn-gedhèn kaca sing tembé digawé sawijining naraguna utawa digawé sawijining alamat IP.\nLebokaké jeneng naraguna utawa alamat IP saperlu ngéntukaké pratélan kaca sing arep kabusak gawéané naraguna utawa alamat IP mau, utawa kosongi waé kanggo ngéntukaké pratélan kaca gawéané kabèh naraguna.",
"nuke-submit-user": "Pratélan kaca",
"nuke-submit-delete": "Busak sing kapilih",
"right-nuke": "Busak kaca gedhèn-gedhèn",
"nuke-userorip": "Jeneng panganggo, alamat IP utawa kosong:",
"nuke-userorip": "Jeneng naraguna, alamat IP utawa kosong:",
"nuke-maxpages": "Cacahé kaca maksimal:",
"nuke-editby": "Garapané [[Special:Contributions/$1|{{GENDER:$1|$1}}]]",
"nuke-deleted": "Kaca '''$1''' wis dibusak.",
@ -29,6 +32,6 @@
"nuke-viewchanges": "deleng owah-owahan",
"nuke-namespace": "Watesan ing mandhala aran:",
"nuke-linkoncontribs": "busak gedhèn-gedhèn",
"nuke-linkoncontribs-text": "Busak gedhèn-gedhèn kaca sing digawé {{GENDER:$1|panganggo iki}}",
"nuke-linkoncontribs-text": "Busak gedhèn-gedhèn kaca sing digawé {{GENDER:$1|naraguna iki}}",
"nuke-confirm": "Panjenengan arep mbusak {{PLURAL:$1|kaca siji|kaca $1}}. Apa panjenengan yakin arep mbusak?"
}

View File

@ -5,7 +5,7 @@
"Fierodelveneto"
]
},
"nuke": "Scancelazion de massa",
"nuke": "Descançełasion de masa",
"nuke-desc": "Consente ai aministradori la [[Special:Nuke|scancelazion in massa]] de le pagine",
"nuke-nopages": "No xe stà catà pagine nove creà da [[Special:Contributions/$1|$1]] tra le modifiche recenti.",
"nuke-list": "Le seguenti pagine le xe stà creà de recente da [[Special:Contributions/$1|$1]]; inserissi un comento e conferma la scancelazion.",

View File

@ -4,8 +4,12 @@ use MediaWiki\MediaWikiServices;
class SpecialNuke extends SpecialPage {
/** @var NukeHookRunner */
private $hookRunner;
public function __construct() {
parent::__construct( 'Nuke', 'nuke' );
$this->hookRunner = new NukeHookRunner( $this->getHookContainer() );
}
public function doesWrites() {
@ -309,7 +313,7 @@ class SpecialNuke extends SpecialPage {
// Allows other extensions to provide pages to be nuked that don't use
// the recentchanges table the way mediawiki-core does
Hooks::run( 'NukeGetNewPages', [ $username, $pattern, $namespace, $limit, &$pages ] );
$this->hookRunner->onNukeGetNewPages( $username, $pattern, $namespace, $limit, $pages );
// Re-enforcing the limit *after* the hook because other extensions
// may add and/or remove pages. We need to make sure we don't end up
@ -338,7 +342,7 @@ class SpecialNuke extends SpecialPage {
$title = Title::newFromText( $page );
$deletionResult = false;
if ( !Hooks::run( 'NukeDeletePage', [ $title, $reason, &$deletionResult ] ) ) {
if ( !$this->hookRunner->onNukeDeletePage( $title, $reason, $deletionResult ) ) {
if ( $deletionResult ) {
$res[] = $this->msg( 'nuke-deleted', $title->getPrefixedText() )->parse();
} else {

View File

@ -0,0 +1,15 @@
<?php
interface NukeDeletePageHook {
/**
* Allows other extensions to handle the deletion of titles
* Return true to let Nuke handle the deletion or false if it was already handled in the hook.
*
* @param Title $title title to delete
* @param string $reason reason for deletion
* @param bool &$deletionResult Whether the deletion was successful or not
* @return bool|void
*/
public function onNukeDeletePage( Title $title, string $reason, bool &$deletionResult );
}

View File

@ -0,0 +1,23 @@
<?php
interface NukeGetNewPagesHook {
/**
* After searching for pages to delete. Can be used to add and remove pages.
*
* @param string $username username filter applied
* @param ?string $pattern pattern filter applied
* @param ?int $namespace namespace filter applied
* @param int $limit limit filter applied
* @param array &$pages page titles already retrieved
* @return bool|void
*/
public function onNukeGetNewPages(
string $username,
?string $pattern,
?int $namespace,
int $limit,
array &$pages
);
}

View File

@ -0,0 +1,64 @@
<?php
use MediaWiki\HookContainer\HookContainer;
/**
* Handle running Nuke's hooks
* @author DannyS712
*/
class NukeHookRunner implements NukeDeletePageHook, NukeGetNewPagesHook {
/** @var HookContainer */
private $hookContainer;
/**
* @param HookContainer $hookContainer
*/
public function __construct( HookContainer $hookContainer ) {
$this->hookContainer = $hookContainer;
}
/**
* Hook runner for the `NukeDeletePage` hook
*
* Allows other extensions to handle the deletion of titles
* Return true to let Nuke handle the deletion or false if it was already handled in the hook.
*
* @param Title $title title to delete
* @param string $reason reason for deletion
* @param bool &$deletionResult Whether the deletion was successful or not
* @return bool|void
*/
public function onNukeDeletePage( Title $title, string $reason, bool &$deletionResult ) {
return $this->hookContainer->run(
'NukeDeletePage',
[ $title, $reason, &$deletionResult ]
);
}
/**
* Hook runner for the `NukeGetNewPages` hook
*
* After searching for pages to delete. Can be used to add and remove pages.
*
* @param string $username username filter applied
* @param ?string $pattern pattern filter applied
* @param ?int $namespace namespace filter applied
* @param int $limit limit filter applied
* @param array &$pages page titles already retrieved
* @return bool|void
*/
public function onNukeGetNewPages(
string $username,
?string $pattern,
?int $namespace,
int $limit,
array &$pages
) {
return $this->hookContainer->run(
'NukeGetNewPages',
[ $username, $pattern, $namespace, $limit, &$pages ]
);
}
}

View File

@ -15,6 +15,7 @@
"parallel-lint . --exclude vendor --exclude node_modules",
"phpcs -p -s",
"minus-x check ."
]
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -68,10 +68,10 @@ class SearchResultProvideThumbnailHookHandler {
* Returns thumbnails for given list
*
* @param array $titlesByPageId a key value array where key is pageId and value is Title
* @param int $size size of thumbnal height and width in points
* @param int $size size of thumbnail height and width in points
* @return array of SearchResultThumbnail
*/
private function getTumbnails( array $titlesByPageId, int $size ): array {
private function getThumbnails( array $titlesByPageId, int $size ): array {
$pagesByPageId = array_filter( $titlesByPageId, function ( $title ) {
return !$title->inNamespace( NS_FILE );
} );
@ -119,7 +119,7 @@ class SearchResultProvideThumbnailHookHandler {
return Title::makeTitle( $identity->getNamespace(), $identity->getDBkey() );
}, $pageIdentities );
$data = $this->getTumbnails( $pageIdTitles, self::THUMBNAIL_SIZE );
$data = $this->getThumbnails( $pageIdTitles, self::THUMBNAIL_SIZE );
foreach ( $data as $pageId => $thumbnail ) {
$results[ $pageId ] = $thumbnail;
}

View File

@ -15,6 +15,7 @@
"parallel-lint . --exclude node_modules --exclude vendor",
"phpcs -p -s",
"minus-x check ."
]
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -6,6 +6,7 @@
]
},
"pfunc_expr_unrecognised_word": "Palâsana pâpa: Apy leipa châfâ \"$1\".",
"pfunc_expr_unexpected_operator": "Pâna palâhâhpa: Hnabeiseih leipa $1 operator",
"pfunc_expr_missing_operand": "Palâsana pâpa: $1 châta operand leipa",
"pfunc_expr_unrecognised_punctuation": "Palâsapa adoleina:A py leipa chârohna ngiana\"$1\"."
}

View File

@ -1,10 +1,10 @@
{
"require-dev": {
"jakub-onderka/php-parallel-lint": "1.0.0",
"jakub-onderka/php-console-highlighter": "0.4.0",
"mediawiki/mediawiki-codesniffer": "30.0.0",
"mediawiki/minus-x": "1.0.0",
"mediawiki/mediawiki-phan-config": "0.9.1"
"mediawiki/mediawiki-codesniffer": "31.0.0",
"mediawiki/mediawiki-phan-config": "0.10.2",
"mediawiki/minus-x": "1.1.0",
"php-parallel-lint/php-console-highlighter": "0.5.0",
"php-parallel-lint/php-parallel-lint": "1.2.0"
},
"scripts": {
"fix": [
@ -15,9 +15,7 @@
"parallel-lint . --exclude node_modules --exclude vendor",
"phpcs -p -s",
"minus-x check ."
]
},
"extra": {
"phan-taint-check-plugin": "2.0.1"
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -12,14 +12,30 @@
"MediaWiki": ">= 1.34.0"
},
"config": {
"PdfOutputExtension": "jpg",
"PdfHandlerDpi": 150,
"PdfCreateThumbnailsInJobQueue": false,
"PdfPostProcessor": "/usr/bin/convert",
"PdfHandlerJpegQuality": 95,
"PdftoText": "/usr/bin/pdftotext",
"PdfProcessor": "/usr/bin/gs",
"PdfInfo": "/usr/bin/pdfinfo"
"PdfOutputExtension": {
"value": "jpg"
},
"PdfHandlerDpi": {
"value": 150
},
"PdfCreateThumbnailsInJobQueue": {
"value": false
},
"PdfPostProcessor": {
"value": "/usr/bin/convert"
},
"PdfHandlerJpegQuality": {
"value": 95
},
"PdftoText": {
"value": "/usr/bin/pdftotext"
},
"PdfProcessor": {
"value": "/usr/bin/gs"
},
"PdfInfo": {
"value": "/usr/bin/pdfinfo"
}
},
"MessagesDirs": {
"PdfHandler": [
@ -45,5 +61,5 @@
"PdfHandler": "includes/PdfHandler.php",
"CreatePdfThumbnailsJob": "includes/CreatePdfThumbnailsJob.php"
},
"manifest_version": 1
"manifest_version": 2
}

View File

@ -6,8 +6,8 @@ class CreatePdfThumbnailsJob extends Job {
/**
* Flags for thumbnail jobs
*/
const BIG_THUMB = 1;
const SMALL_THUMB = 2;
private const BIG_THUMB = 1;
private const SMALL_THUMB = 2;
/**
* Construct a thumbnail job

View File

@ -3,11 +3,11 @@
"php": ">=5.5.9"
},
"require-dev": {
"jakub-onderka/php-parallel-lint": "1.0.0",
"jakub-onderka/php-console-highlighter": "0.4.0",
"mediawiki/mediawiki-codesniffer": "30.0.0",
"mediawiki/minus-x": "1.0.0",
"mediawiki/mediawiki-phan-config": "0.9.1"
"mediawiki/mediawiki-codesniffer": "31.0.0",
"mediawiki/mediawiki-phan-config": "0.10.2",
"mediawiki/minus-x": "1.1.0",
"php-parallel-lint/php-console-highlighter": "0.5.0",
"php-parallel-lint/php-parallel-lint": "1.2.0"
},
"scripts": {
"fix": [
@ -18,9 +18,7 @@
"parallel-lint . --exclude node_modules --exclude vendor",
"phpcs -p -s",
"minus-x check ."
]
},
"extra": {
"phan-taint-check-plugin": "2.0.1"
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -9,6 +9,9 @@
"url": "https://www.mediawiki.org/wiki/Extension:Poem",
"descriptionmsg": "poem-desc",
"type": "parserhook",
"requires": {
"MediaWiki": ">= 1.29.0"
},
"MessagesDirs": {
"Poem": [
"i18n"
@ -22,5 +25,5 @@
"AutoloadClasses": {
"Poem": "includes/Poem.php"
},
"manifest_version": 1
"manifest_version": 2
}

View File

@ -7,5 +7,5 @@
"Raimond Spekking"
]
},
"poem-desc": "Fügt das Tag <code>&lt;poem&gt;</code> zur Formatierung von Gedichten hinzu"
"poem-desc": "Ergänzt das Tag <code>&lt;poem&gt;</code> zur Formatierung von Gedichten"
}

View File

@ -32,7 +32,22 @@ class Poem {
$tag = $parser->insertStripItem( "<br />" );
// replace colons with indented spans
$text = preg_replace_callback( '/^(:+)(.+)$/m', [ self::class, 'indentVerse' ], $in );
$text = preg_replace_callback(
'/^(:++)(.+)$/m',
function ( array $matches ) {
$indentation = strlen( $matches[1] ) . 'em';
return Html::rawElement(
'span',
[
'class' => 'mw-poem-indented',
'style' => 'display: inline-block; ' .
"margin-inline-start: $indentation;",
],
$matches[2]
);
},
$in
);
// replace newlines with <br /> tags unless they are at the beginning or end
// of the poem, or would directly follow exactly 4 dashes. See Parser::internalParse() for
@ -44,7 +59,13 @@ class Poem {
);
// replace spaces at the beginning of a line with non-breaking spaces
$text = preg_replace_callback( '/^( +)/m', [ self::class, 'replaceSpaces' ], $text );
$text = preg_replace_callback(
'/^ +/m',
function ( array $matches ) {
return str_repeat( '&#160;', strlen( $matches[0] ) );
},
$text
);
$text = $parser->recursiveTagParse( $text, $frame );
@ -63,30 +84,4 @@ class Poem {
return Html::rawElement( 'div', $attribs, $newline . trim( $text ) . $newline );
}
/**
* Callback for preg_replace_callback() that replaces spaces with non-breaking spaces
* @param string[] $m Matches from the regular expression
* - $m[1] consists of 1 or more spaces
* @return string
*/
protected static function replaceSpaces( array $m ) {
return str_replace( ' ', '&#160;', $m[1] );
}
/**
* Callback for preg_replace_callback() that wraps content in an indented span
* @param string[] $m Matches from the regular expression
* - $m[1] consists of 1 or more colons
* - $m[2] consists of the text after the colons
* @return string
*/
protected static function indentVerse( array $m ) {
$attribs = [
'class' => 'mw-poem-indented',
'style' => 'display: inline-block; margin-left: ' . strlen( $m[1] ) . 'em;'
];
// @todo Should this really be raw?
return Html::rawElement( 'span', $attribs, $m[2] );
}
}

View File

@ -237,14 +237,26 @@ Multi-line poems with indentation use spans and breaks correctly (T235709)
!! html/php
<div class="poem">
<p><i>CONGREGATI</i><br />
<span class="mw-poem-indented" style="display: inline-block; margin-left: 1em;"><b>EX TOTO ORBE</b></span><br />
<span class="mw-poem-indented" style="display: inline-block; margin-left: 2em;"><i><b>MATHEMATICI</b></i></span>
<span class="mw-poem-indented" style="display: inline-block; margin-inline-start: 1em;"><b>EX TOTO ORBE</b></span><br />
<span class="mw-poem-indented" style="display: inline-block; margin-inline-start: 2em;"><i><b>MATHEMATICI</b></i></span>
</p>
</div>
!! html/parsoid
<div class="poem" typeof="mw:Extension/poem" about="#mwt3" data-mw="{&quot;name&quot;:&quot;poem&quot;,&quot;attrs&quot;:{},&quot;body&quot;:{&quot;extsrc&quot;:&quot;\n''CONGREGATI''\n:'''EX TOTO ORBE'''\n::'''''MATHEMATICI'''''\n&quot;}}"><p data-parsoid="{}"><i data-parsoid="{}">CONGREGATI</i><br data-parsoid='{"stx":"html","selfClose":true}'/>
<span class="mw-poem-indented" style="display: inline-block; margin-left: 1em;" data-parsoid='{"stx":"html"}'><b data-parsoid="{}">EX TOTO ORBE</b></span><br data-parsoid='{"stx":"html","selfClose":true}'/>
<span class="mw-poem-indented" style="display: inline-block; margin-left: 2em;" data-parsoid='{"stx":"html"}'><i data-parsoid="{}"><b data-parsoid="{}">MATHEMATICI</b></i></span></p></div>
<span class="mw-poem-indented" style="display: inline-block; margin-inline-start: 1em;" data-parsoid='{"stx":"html"}'><b data-parsoid="{}">EX TOTO ORBE</b></span><br data-parsoid='{"stx":"html","selfClose":true}'/>
<span class="mw-poem-indented" style="display: inline-block; margin-inline-start: 2em;" data-parsoid='{"stx":"html"}'><i data-parsoid="{}"><b data-parsoid="{}">MATHEMATICI</b></i></span></p></div>
!! end
!! test
Indention syntax with no content
!! wikitext
<poem>
::
</poem>
!! html/php
<div class="poem">
<dl><dd><dl><dd></dd></dl></dd></dl>
</div>
!! end
!! test

View File

@ -15,6 +15,7 @@
"parallel-lint . --exclude vendor --exclude node_modules",
"phpcs -p -s",
"minus-x check ."
]
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -0,0 +1,89 @@
<?php
/**
* Maintenance script to clean up after incomplete user renames
* Sometimes user edits are left lying around under the old name,
* check for that and assign them to the new username
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @ingroup Maintenance
* @author Martin Urbanec <martin.urbanec@wikimedia.cz>
*/
$IP = getenv( 'MW_INSTALL_PATH' );
if ( $IP === false ) {
$IP = __DIR__ . '/../../..';
}
require_once "$IP/maintenance/Maintenance.php";
class RenameUser extends Maintenance {
public function __construct() {
parent::__construct();
$this->requireExtension( 'Renameuser' );
$this->addDescription( 'Rename an user' );
$this->addOption( 'oldname', 'Current username of the to-be-renamed user', true, true );
$this->addOption( 'newname', 'New username of the to-be-renamed user', true, true );
$this->addOption( 'performer', 'Performer of the rename action', false, true );
$this->addOption( 'reason', 'Reason of the rename', false, true );
}
/**
* @inheritDoc
*/
public function execute() {
$user = User::newFromName( $this->getOption( 'oldname' ) );
if ( $user->getId() === 0 ) {
$this->fatalError( 'The user does not exist' );
}
if ( User::newFromName( $this->getOption( 'newname' ) )->getId() > 0 ) {
$this->fatalError( 'New username must be free' );
}
if ( $this->getOption( 'performer' ) === null ) {
$performer = User::newSystemUser( 'Maintenance script', [ 'steal' => true ] );
} else {
$performer = User::newFromName( $this->getOption( 'performer' ) );
}
if ( !( $performer instanceof User ) || $performer->getId() === 0 ) {
$this->fatalError( 'Performer does not exist.' );
}
'@phan-var User $performer';
$renameJob = new RenameuserSQL(
$user->getName(),
$this->getOption( 'newname' ),
$user->getId(),
$performer,
[
'reason' => $this->getOption( 'reason' )
]
);
if ( !$renameJob->rename() ) {
$this->fatalError( 'Renaming failed.' );
} else {
$oldname = $this->getOption( 'oldname' );
$newname = $this->getOption( 'newname' );
$this->output( "$oldname was successfully renamed to $newname.\n" );
}
}
}
$maintClass = RenameUser::class;
require_once RUN_MAINTENANCE_IF_MAIN;

View File

@ -51,7 +51,7 @@ class ReplaceTextSearch {
'rev_id = page_latest',
'rev_id = slot_revision_id',
'slot_content_id = content_id',
'CAST(SUBSTRING(content_address, 4) AS SIGNED) = old_id'
$dbr->buildIntegerCast( 'SUBSTR(content_address, 4)' ) . ' = old_id'
];
self::categoryCondition( $category, $tables, $conds );

View File

@ -15,6 +15,7 @@
"fix": [
"minus-x fix .",
"phpcbf"
]
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -1,10 +1,10 @@
{
"require-dev": {
"jakub-onderka/php-parallel-lint": "1.0.0",
"jakub-onderka/php-console-highlighter": "0.4.0",
"mediawiki/mediawiki-codesniffer": "30.0.0",
"mediawiki/minus-x": "1.0.0",
"mediawiki/mediawiki-phan-config": "0.9.1"
"mediawiki/mediawiki-codesniffer": "31.0.0",
"mediawiki/mediawiki-phan-config": "0.10.2",
"mediawiki/minus-x": "1.1.0",
"php-parallel-lint/php-console-highlighter": "0.5.0",
"php-parallel-lint/php-parallel-lint": "1.2.0"
},
"scripts": {
"fix": [
@ -15,9 +15,7 @@
"parallel-lint . --exclude node_modules --exclude vendor",
"phpcs -p -s",
"minus-x check ."
]
},
"extra": {
"phan-taint-check-plugin": "2.0.1"
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -10,7 +10,7 @@
"type": "antispam",
"license-name": "GPL-2.0-or-later",
"requires": {
"MediaWiki": ">= 1.34.0"
"MediaWiki": ">= 1.35.0"
},
"GroupPermissions": {
"user": {
@ -56,12 +56,19 @@
"ResourceModules": {
"ext.spamBlacklist.visualEditor": {
"scripts": "ve-spamblacklist/ve.init.mw.SpamBlacklistSaveErrorHandler.js",
"targets": [ "desktop", "mobile" ]
"targets": [
"desktop",
"mobile"
]
}
},
"attributes": {
"VisualEditor": {
"PluginModules": [
"ext.spamBlacklist.visualEditor"
]
}
},
"VisualEditorPluginModules": [
"ext.spamBlacklist.visualEditor"
],
"ResourceFileModulePaths": {
"localBasePath": "modules",
"remoteExtPath": "SpamBlacklist/modules"
@ -73,7 +80,7 @@
"EditFilter": [
"SpamBlacklistHooks::validate"
],
"PageContentSaveComplete": [
"PageSaveComplete": [
"SpamBlacklistHooks::pageSaveContent"
],
"UserCanSendEmail": [
@ -88,12 +95,18 @@
},
"config": {
"BlacklistSettings": {
"spam": {
"files": [ "https://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1" ]
"value": {
"spam": {
"files": [
"https://meta.wikimedia.org/w/index.php?title=Spam_blacklist&action=raw&sb_ver=1"
]
}
},
"_merge_strategy": "array_plus_2d"
"merge_strategy": "array_plus_2d"
},
"LogSpamBlacklistHits": false
"LogSpamBlacklistHits": {
"value": false
}
},
"AuthManagerAutoConfig": {
"preauth": {
@ -102,5 +115,5 @@
}
}
},
"manifest_version": 1
"manifest_version": 2
}

View File

@ -2,11 +2,12 @@
"@metadata": {
"authors": [
"Debenben",
"Kghbln",
"Metalhead64"
]
},
"apihelp-spamblacklist-description": "Überprüft eine oder mehrere URLs gegen die Spam-Blacklist.",
"apihelp-spamblacklist-example-1": "Überprüft zwei URLs gegen die Blacklist",
"apihelp-spamblacklist-param-url": "Gegen die Blacklist zu überprüfende URLs.",
"apihelp-spamblacklist-summary": "Überprüft eine oder mehrere URLs gegen die Spam-Blacklist."
"apihelp-spamblacklist-description": "Überprüft eine oder mehrere URLs gegen die Spam-Negativliste.",
"apihelp-spamblacklist-example-1": "Überprüft zwei URLs gegen die Negativliste",
"apihelp-spamblacklist-param-url": "Gegen die Negativliste zu überprüfende URLs.",
"apihelp-spamblacklist-summary": "Überprüft eine oder mehrere URLs gegen die Spam-Negativliste."
}

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"WikiBayer"
]
},
"right-spamblacklistlog": "Spamblacklist Logbuach oschaun"
}

View File

@ -3,18 +3,19 @@
"authors": [
"EugeneZelenko",
"Jim-by",
"Red Winged Duck"
"Red Winged Duck",
"Renessaince"
]
},
"spam-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Вонкавыя спасылкі, якія будуць адпавядаць гэтаму сьпісу, будуць блякавацца пры спробе даданьня на старонку.\n# Гэты сьпіс будзе дзейнічаць толькі ў гэтай вікі; існуе таксама і глябальны чорны сьпіс.\n# Дакумэнтацыю гэтай функцыі глядзіце на https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# Сынтаксіс наступны:\n# * Усё, што пачынаецца з «#» і да канца радку, зьяўляецца камэнтаром\n# * Усе непустыя радкі зьяўляюцца часткамі рэгулярнага выразу, які будзе выкарыстоўвацца толькі ў дачыненьні да назваў сэрвэраў у вонкавых спасылках\n\n #</pre> <!-- leave this line exactly as it is -->",
"spam-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Вонкавыя спасылкі, якія будуць адпавядаць гэтаму сьпісу, будуць блякавацца пры спробе даданьня на старонку.\n# Гэты сьпіс будзе дзейнічаць толькі ў гэтай вікі; існуе таксама і глябальны чорны сьпіс.\n# Дакумэнтацыю гэтай функцыі глядзіце на https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# Сынтаксіс наступны:\n# * Усё, што пачынаецца з «#» і да канца радку, зьяўляецца камэнтаром\n# * Усе непустыя радкі зьяўляюцца часткамі рэгулярнага выразу, які будзе выкарыстоўвацца толькі ў дачыненьні да назваў сэрвэраў у вонкавых спасылках\n\n #</pre> <!-- leave this line exactly as it is -->",
"spam-whitelist": " #<!-- пакіньце гэты радок такім, які ён ёсьць --> <pre>\n# Вонкавыя спасылкі, якія будуць адпавядаць гэтаму сьпісу, *ня* будуць блякавацца, нават калі яны \n# будуць адпавядаць чорнаму сьпісу\n#\n# Сынтаксіс наступны:\n# * Усё, што пачынаецца з «#» і да канца радка, зьяўляецца камэнтарам\n# * Усе непустыя радкі зьяўляюцца часткамі рэгулярнага выразу, які будзе выкарыстоўвацца толькі\n# ў дачыненьні да назваў сэрвэраў у вонкавых спасылках\n\n #</pre> <!-- пакіньце гэты радок такім, які ён ёсьць -->",
"email-blacklist": " # Электронныя лісты, якія будуць адпавядаць гэтаму сьпісу, будуць блякавацца пры \n # спробе адпраўкі.\n # Гэты сьпіс будзе дзейнічаць толькі ў гэтай вікі; існуе таксама і глябальны чорны сьпіс.\n # Дакумэнтацыю гэтай функцыі глядзіце на https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n #<!-- пакіньце гэты радок такім, які ён ёсьць --> <pre>\n#\n# Сынтаксіс наступны:\n# * Усё, што пачынаецца з «#» і да канца радку, зьяўляецца камэнтарам\n# * Усе непустыя радкі зьяўляюцца часткамі рэгулярнага выразу, які будзе выкарыстоўвацца толькі\n# ў дачыненьні да назваў сэрвэраў у электронных лістах\n\n #</pre> <!-- пакіньце гэты радок такім, які ён ёсьць -->",
"email-blacklist": " #<!-- пакіньце гэты радок такім, які ён ёсьць --> <pre>\n# Электронныя лісты, якія будуць адпавядаць гэтаму сьпісу, будуць блякавацца пры \n# спробе адпраўкі.\n# Гэты сьпіс будзе дзейнічаць толькі ў гэтай вікі; існуе таксама і глябальны чорны сьпіс.\n# Дакумэнтацыю гэтай функцыі глядзіце на https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# Сынтаксіс наступны:\n# * Усё, што пачынаецца з «#» і да канца радку, зьяўляецца камэнтарам\n# * Усе непустыя радкі зьяўляюцца часткамі рэгулярнага выразу, які будзе выкарыстоўвацца толькі\n# ў дачыненьні да назваў сэрвэраў у электронных лістах\n\n #</pre> <!-- пакіньце гэты радок такім, які ён ёсьць -->",
"email-whitelist": " #<!-- пакіньце гэты радок такім, які ён ёсьць --> <pre>\n # Электронныя лісты, якія будуць адпавядаць гэтаму сьпісу, ня будуць блякавацца, нават \n # калі яны будуць у чорным сьпісе. \n #\n #</pre> <!-- пакіньце гэты радок такім, які ён ёсьць -->\n# Сынтаксіс наступны:\n# * Усё, што пачынаецца з «#» і да канца радку, зьяўляецца камэнтарам\n# * Усе непустыя радкі зьяўляюцца часткамі рэгулярнага выразу, які будзе выкарыстоўвацца толькі\n# ў дачыненьні да назваў сэрвэраў у электронных лістах",
"spam-blacklisted-email": "Адрасы электроннай пошты з чорнага сьпісу",
"spam-blacklisted-email": "Забароненыя адрасы электроннай пошты",
"spam-blacklisted-email-text": "З Вашага адрасу электроннай пошты ў цяперашні момант забаронена дасылаць электронныя лісты іншым удзельнікам.",
"spam-blacklisted-email-signup": "Пададзены Вамі адрас электроннай пошты ў цяперашні момант знаходзіцца ў чорным сьпісе.",
"spam-invalid-lines": "{{PLURAL:$1|1=Наступны радок чорнага сьпісу ўтрымлівае няслушны рэгулярны выраз|Наступныя радкі чорнага сьпісу ўтрымліваюць няслушныя рэгулярныя выразы}} і {{PLURAL:$1|1=павінен быць|павінныя быць}} выпраўлены перад захаваньнем старонкі:",
"spam-blacklist-desc": "Антыспамавы інструмэнт, які базуецца на рэгулярных выразах, дазваляе дадаваць у чорны сьпіс URL-адрасы на старонках і адрасы электроннай пошты для зарэгістраваных удзельнікаў",
"spam-blacklist-desc": "Антыспамавы інструмэнт, які базуецца на рэгулярных выразах, дазваляе забараняць URL-адрасы на старонках і адрасы электроннай пошты для зарэгістраваных удзельнікаў",
"log-name-spamblacklist": "Журнал спам-сьпісу",
"log-description-spamblacklist": "Гэтыя падзеі адсочваюць супадзеньні з чорным сьпісам спамэраў.",
"logentry-spamblacklist-hit": "$1 {{GENDER:$2|выклікаў|выклікала}} спрацоўваньне чорнага сьпісу спамэраў на старонцы $3 пры спробе дадаць $4.",

View File

@ -7,11 +7,11 @@
"StanProg"
]
},
"spam-blacklisted-email": "Адреси на ел. поща в черния списък",
"spam-blacklisted-email-text": "Вашият адрес на ел. поща е в черния списък за изпращане на ел. писма до други потребители.",
"spam-blacklisted-email-signup": "Указаният адрес на ел. поща е в черния списък.",
"spam-blacklisted-email": "Забранени адреси на ел. поща",
"spam-blacklisted-email-text": "Вашият адрес на ел. поща има забрана за изпращане на ел. писма до други потребители.",
"spam-blacklisted-email-signup": "Указаният адрес на ел. поща е забранен за употреба.",
"spam-invalid-lines": "{{PLURAL:$1|Следният запис|Следните записи}} от черния списък на спама {{PLURAL:$1|е невалиден регулярен израз|са невалидни регулярни изрази}} и трябва да {{PLURAL:$1|бъде коригиран|бъдат коригирани}} преди съхраняване на страницата:",
"spam-blacklist-desc": "Инструмент за защита от спам, използващ регулярни изрази и позволяващ добавяне в черен списък на страници и имейл адреси, достъпен за регистрирани потребители",
"spam-blacklist-desc": "Инструмент за защита от спам, използващ регулярни изрази и позволяващ забрана на страници и имейл адреси, достъпен за регистрирани потребители",
"log-name-spamblacklist": "Дневник на черния списък против спам",
"log-description-spamblacklist": "Тези събития следят съвпаденията с черния списък против спам.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} предизвика съвпадение с черния списък против спам в $3, опитвайки се да добави $4.",

View File

@ -11,7 +11,7 @@
},
"spam-blacklist": " #<!-- এই লাইন যেমন আছে ঠিক তেমনই রেখে দিন --> <pre>\n# যখন একটি পৃষ্ঠায় যোগ করা তখন এই তালিকার সাথে মেলা বাহ্যিক URL গুলি বাধাদান করা হবে।\n# এই তালিকা শুধুমাত্র এই উইকিতে প্রভাব ফেলবে; এছাড়াও বিশ্বব্যাপী কালোতালিকাও দেখুন।\n# নথির জন্য দেখুন https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# সিনট্যাক্স নিচের মত:\n# * \"#\" ক্যারেক্টার থেকে শুরু করে লাইনের শেষ পর্যন্ত সবকিছু একটি মন্তব্য\n# * প্রতিটি অশূন্য লাইন একটি রেজেক্স খণ্ডাংশ যেটি শুধুমাত্র URL গুলির ভিতরে হোস্ট মিলিয়ে দেখবে\n\n #</pre> <!-- এই লাইন যেমন আছে ঠিক তেমনই রেখে দিন -->",
"spam-whitelist": " #<!-- এই লাইন যেমন আছে ঠিক তেমনই রেখে দিন --> <pre>\n# External URLs matching this list will *not* be blocked even if they would\n# have been blocked by blacklist entries.\n#\n# Syntax is as follows:\n# * Everything from a \"#\" character to the end of the line is a comment\n# * Every non-blank line is a regex fragment which will only match hosts inside URLs\n\n #</pre> <!-- এই লাইন যেমন আছে ঠিক তেমনই রেখে দিন -->",
"spam-blacklisted-email": "কালোতালিকাভুক্ত ইমেইল ঠিকানা",
"spam-blacklisted-email": "নিষিদ্ধ ইমেইল ঠিকানা",
"spam-blacklisted-email-text": "অন্যদের ইমেইল পাঠানো থেকে বিরত রাখতে আপনাকে কালোতালিকাভুক্ত করা হয়েছে।",
"spam-blacklisted-email-signup": "আপনার লেখা ইমেইল ঠিকানাটি কালোতালিকাভুক্ত।",
"spam-invalid-lines": "নিচের স্প্যাম কালোতালিকার {{PLURAL:$1|লাইন|লাইনগুলি}} অবৈধ রেগুলার {{PLURAL:$1|এক্সপ্রেশন|এক্সপ্রেশন}} ধারণ করছে এবং পাতাটি সংরক্ষণের আগে এগুলি ঠিক করা {{PLURAL:$1|প্রয়োজন|প্রয়োজন}}:",

View File

@ -20,9 +20,9 @@
"spam-blacklisted-email-signup": "Die angegebene E-Mail-Adresse ist derzeit für das Senden von E-Mail-Nachrichten an andere Benutzer blockiert.",
"spam-invalid-lines": "Die {{PLURAL:$1|folgende Zeile|folgenden Zeilen}} in der Blockierliste {{PLURAL:$1|ist ein ungültiger regulärer Ausdruck|sind ungültige reguläre Ausdrücke}}. Sie {{PLURAL:$1|muss|müssen}} vor dem Speichern der Seite korrigiert werden:",
"spam-blacklist-desc": "Ergänzt ein auf reguläre Ausdrücke gestütztes Anti-Spam-Werkzeug zum Sperren von URLs und E-Mail-Adressen für das Einfügen durch registrierte Benutzer",
"log-name-spamblacklist": "Spam-Blacklist-Logbuch",
"log-description-spamblacklist": "Es folgt ein Logbuch von Spam-Blacklist-Treffern.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} verursachte einen Spam-Blacklist-Treffer auf „$3“ durch das versuchte Hinzufügen von $4.",
"right-spamblacklistlog": "Spam-Blacklist-Logbuch ansehen",
"log-name-spamblacklist": "Spam-Negativlisten-Logbuch",
"log-description-spamblacklist": "Das Logbuch von Treffern in der Spam-Negativliste.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} verursachte einen Treffer in der Spam-Negativliste auf „$3“ durch das versuchte Hinzufügen von $4.",
"right-spamblacklistlog": "Logbuch der Spam-Negativliste ansehen",
"action-spamblacklistlog": "dieses Logbuch einzusehen"
}

View File

@ -6,12 +6,12 @@
"spam-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# External URLs matching this list will *not* be blocked even if they would\n# have been blocked by blacklist entries.\n#\n# Syntax is as follows:\n# * Everything from a \"#\" character to the end of the line is a comment\n# * Every non-blank line is a regex fragment which will only match hosts inside URLs\n\n #</pre> <!-- leave this line exactly as it is -->",
"email-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# Email addresses matching this list will be blocked from registering or sending emails\n# This list affects only this wiki; refer also to the global blacklist.\n# For documentation see https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# Syntax is as follows:\n# * Everything from a \"#\" character to the end of the line is a comment\n# * Every non-blank line is a regex fragment which will only match hosts inside email addresses\n\n #</pre> <!-- leave this line exactly as it is -->",
"email-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Email addresses matching this list will *not* be blocked even if they would\n# have been blocked by blacklist entries.\n#\n# Syntax is as follows:\n# * Everything from a \"#\" character to the end of the line is a comment\n# * Every non-blank line is a regex fragment which will only match hosts inside email addresses\n\n #</pre> <!-- leave this line exactly as it is -->",
"spam-blacklisted-email": "Blacklisted email address",
"spam-blacklisted-email-text": "Your email address is currently blacklisted from sending emails to other users.",
"spam-blacklisted-email-signup": "The given email address is currently blacklisted from use.",
"spam-blacklisted-email": "Forbidden email address",
"spam-blacklisted-email-text": "Your email address is currently forbidden from sending emails to other users.",
"spam-blacklisted-email-signup": "The given email address is currently forbidden from use.",
"spam-blacklisted-link": "{{int:spamprotectiontext}}\n{{int:spamprotectionmatch|$1}}",
"spam-invalid-lines": "The following spam blacklist {{PLURAL:$1|line is an|lines are}} invalid regular {{PLURAL:$1|expression|expressions}} and {{PLURAL:$1|needs|need}} to be corrected before saving the page:",
"spam-blacklist-desc": "Regex-based anti-spam tool allowing to blacklist URLs in pages and email addresses for registered users",
"spam-blacklist-desc": "Regex-based anti-spam tool allowing to forbid URLs in pages and email addresses for registered users",
"log-name-spamblacklist": "Spam blacklist log",
"log-description-spamblacklist": "These events track spam blacklist hits.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} caused a spam blacklist hit on $3 by attempting to add $4.",

View File

@ -14,13 +14,13 @@
"Vivaelcelta"
]
},
"spam-blacklist": " #<!-- Deje esta línea exactamente como está --> <pre>\n# Los enlaces externos que coincidan con esta lista se bloquearán al añadirse a una página.\n# Esta lista afecta sólo a esta wiki. Consulta además la lista negra global. \n# Para documentación consulta: https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# La sintaxis es:\n# * Todo lo que aparezca desde un carácter \"#\" hasta el fin de la línea, es un comentario\n# * Toda línea que no esté en blanco, es un fragmento de expresión regular que solo coincidirá con equipos dentro de URL\n\n #</pre> <!-- Deje esta línea exactamente como está -->",
"spam-blacklist": " #<!-- Deje esta línea exactamente como está --> <pre>\n# Los enlaces externos que coincidan con esta lista se bloquearán al añadirse a una página.\n# Esta lista afecta sólo a esta wiki. Consulta además la lista negra global. \n# Para documentación consulta: https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# La sintaxis es:\n# * Todo lo que aparezca desde un carácter \"#\" hasta el fin de la línea, es un comentario\n# * Toda línea que no esté en blanco, es un fragmento de expresión regular que solo coincidirá con equipos dentro de URL\n\n #</pre> <!-- Deje esta línea exactamente como está -->",
"spam-whitelist": " #<!-- Deje esta línea exactamente como está --> <pre>\n# Las URL externas que coincidan con esta lista *no* se bloquearán incluso si coincidiesen\n# con una entrada en la lista negra.\n#\n# La sintaxis es:\n# * Todo lo que aparezca desde un carácter \"#\" hasta el fin de la línea, es un comentario\n# * Toda línea que no esté en blanco, es un fragmento de expresión regular que solo coincidirá con equipos dentro de URL\n\n #</pre> <!-- Deje esta línea exactamente como está -->",
"email-blacklist": " # Las direcciones de correo electrónico que coincidan con las de esta lista no podrán registrar cuentas ni enviar correos electrónicos\n # Esta lista sólo afecta a este proyecto aunque existe una lista global para todos los proyectos.\n # Documentación: https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n #<!-- leave this line exactly as it is --> <pre>\n#\n# Sintaxis como sigue:\n# * Todo lo que sigue a un \"#\" se interpreta como un comentario\n# * Toda línea no en blanco es un fragmento de expresión regular (regex) que sólo coincidirá con los \"host\" de la dirección de correo electrónico.\n\n #</pre> <!-- leave this line exactly as it is -->",
"email-blacklist": " #<!-- no toques esta línea, déjala como está --> <pre>\n# Las direcciones de correo electrónico que coincidan con las de esta lista no podrán registrar cuentas ni enviar correos electrónicos\n# Esta lista sólo afecta a este proyecto aunque existe una lista global para todos los proyectos.\n# Documentación: https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# Sintaxis como sigue:\n# * Todo lo que sigue a un \"#\" se interpreta como un comentario\n# * Toda línea no en blanco es un fragmento de expresión regular (regex) que sólo coincidirá con los \"host\" de la dirección de correo electrónico.\n\n #</pre> <!-- no toques esta línea, déjala como está -->",
"email-whitelist": " #<!-- Deje esta línea exactamente como está --> <pre>\n# Las direcciones de correo electrónico que aparecen en esta lista*no* serán bloqueadas incluso si hubieran\n# debido ser bloqueadas por aparecer en la lista negra.\n#\n #</pre> <!-- Deje esta línea exactamente como está-->\n# La sintaxis es la siguiente:\n# * Todo texto a la derecha del carácter \"#\" hasta el final de la línea es un comentario\n# * Cada línea que no esté en blanco es un fragmento de código que será cotejada por los servidores (hosts) con las direcciones de correo electrónico",
"spam-blacklisted-email": "Dirección de correo electrónico de la lista negra",
"spam-blacklisted-email-text": "Su dirección de correo electrónico está actualmente en la lista negra y no puede enviar correos electrónicos a otros usuarios.",
"spam-blacklisted-email-signup": "La dirección de correo electrónico dada está actualmente en la lista negra de uso.",
"spam-blacklisted-email": "Dirección de correo electrónico prohibida",
"spam-blacklisted-email-text": "Su dirección de correo electrónico está actualmente bloqueada y no puede enviar correos electrónicos a otros usuarios.",
"spam-blacklisted-email-signup": "La dirección de correo electrónico proporcionada está actualmente prohibida y no puede usarse.",
"spam-invalid-lines": "{{PLURAL:$1|La siguiente línea|Las siguientes líneas}} de la lista negra de spam {{PLURAL:$1|es una expresión regular inválida|son expresiones regulares inválidas}} y es necesario {{PLURAL:$1|corregirla|corregirlas}} antes de guardar la página:",
"spam-blacklist-desc": "Herramienta anti-spam basada en expresiones regulares que permite filtrar URLs en páginas y direcciones de correo electrónico para usuarios registrados",
"log-name-spamblacklist": "Registro de la lista negra de spam",

View File

@ -8,11 +8,11 @@
"spam-whitelist": " #<!-- Jäta see rida muutmata kujule. --> <pre>\n# Sellele nimekirjale vastavaid internetiaadresse *ei* blokeerita isegi mitte siis\n# kui musta nimekirja sissekande järgi võiks nad olla blokeeritud.\n#\n# Süntaks on järgmine:\n# * Kõik alates märgist \"#\" kuni rea lõpuni on kommentaar\n# * Iga rida, mis ei ole tühi, on regulaaravaldise osa, milleks sobib internetiaadressi osadest ainult hostinimi\n\n #</pre> <!-- Jäta see rida muutmata kujule. -->",
"email-blacklist": " # Sellele nimekirjale vastavatel e-posti aadressidel blokeeritakse registreerumine ja e-kirjade saatmine.\n # See nimekiri puudutab ainult seda vikit; uuri ka globaalse musta nimekirja kohta.\n # Dokumentatsioon on asukohas https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist.\n #<!-- Jäta see rida muutmata kujule. --> <pre>\n#\n# Süntaks on järgmine:\n# * Kõik alates märgist \"#\" kuni rea lõpuni on kommentaar.\n# * Iga rida, mis ei ole tühi, on regulaaravaldise osa, mis vastab ainult e-posti aadressides sisalduvatele hostinimedele.\n\n #</pre> <!-- Jäta see rida muutmata kujule. -->",
"email-whitelist": " #<!-- Jäta see rida muutmata kujule. --> <pre>\n# Sellele nimekirjale vastavaid e-posti aadresse *ei* blokeerita isegi mitte siis,\n# kui musta nimekirja sissekande järgi võiks nad olla blokeeritud.\n#\n #</pre> <!-- Jäta see rida muutmata kujule. -->\n# Süntaks on järgmine:\n# * Kõik alates märgist \"#\" kuni rea lõpuni on kommentaar.\n# * Iga rida, mis ei ole tühi, on regulaaravaldise osa, mis vastab ainult e-posti aadressides sisalduvatele hostinimedele.",
"spam-blacklisted-email": "Musta nimekirja kantud e-posti aadress",
"spam-blacklisted-email-text": "Musta nimekirja sissekande tõttu on sinu e-posti aadressilt teistele kasutajatele e-kirjade saatmine praegu keelatud.",
"spam-blacklisted-email-signup": "Selle e-posti aadressi kasutamine on praegu musta nimekirja sissekandega keelatud.",
"spam-blacklisted-email": "Keelatud e-posti aadress",
"spam-blacklisted-email-text": "Sinu e-posti aadressilt on praegu keelatud teistele kasutajatele e-kirju saata.",
"spam-blacklisted-email-signup": "Selle e-posti aadressi kasutamine on praegu keelatud.",
"spam-invalid-lines": "{{PLURAL:$1|Järgmine rida|Järgmised read}} rämpspostituste mustas nimekirjas on {{PLURAL:$1|vigane regulaaravaldis|vigased regulaaravaldised}} ja {{PLURAL:$1|see|need}} tuleb enne lehekülje salvestamist parandada:",
"spam-blacklist-desc": "Regulaaravaldisel põhinev tööriist, mis võimaldab lisada musta nimekirja lehekülgedel toodud internetiaadresse ning registreeritud kasutajate e-posti aadresse.",
"spam-blacklist-desc": "Regulaaravaldisel põhinev rämpspostituste vastane tööriist, mis võimaldab keelata internetiaadresse lehekülgedel ning registreeritud kasutajate e-posti aadresse.",
"log-name-spamblacklist": "Rämpsu musta nimekirja logi",
"log-description-spamblacklist": "Siin on loetletud rämpspostituse musta nimekirja tabamused.",
"logentry-spamblacklist-hit": "$1 püüdis lisada leheküljele $3 rämpspostituse mustas nimekirjas olevat linki $4.",

View File

@ -2,6 +2,7 @@
"@metadata": {
"authors": [
"Gomoko",
"Pols12",
"Sherbrooke",
"Thibaut120094",
"Urhixidur",
@ -13,14 +14,14 @@
"spam-whitelist": " #<!-- Laissez cette ligne telle quelle --><pre>\n# Les liens hypertextes externes correspondant à cette liste ne seront *pas* bloqués\n# même sils auraient été bloqués par les entrées de la liste noire.\n#\n# La syntaxe est la suivante :\n# * tout texte qui suit un « # » est considéré comme un commentaire ;\n# * toute ligne non vide est un fragment dexpression rationnelle qui nanalysera que les hôtes dans les liens hypertextes.\n\n #</pre><!-- Laissez cette ligne telle quelle -->",
"email-blacklist": " #<!-- Laissez cette ligne telle quelle --><pre>\n# Les adresses de courriel correspondant à cette liste seront bloquées lors lenregistrement ou de lenvoi dun courriel.\n# Cette liste naffecte que ce wiki ; référez-vous aussi à la liste noire globale.\n# La documentation se trouve à ladresse suivante : https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# La syntaxe est la suivante :\n# * tout texte qui suit un « # » est considéré comme un commentaire ;\n# * toute ligne non vide est un fragment dexpression rationnelle qui ne cherchera à faire correspondre que la partie hôte des adresses de courriel.\n\n #</pre><!-- Laissez cette ligne telle quelle -->",
"email-whitelist": " #<!-- laissez cette ligne telle quelle --><pre>\n# Les adresses de courriels correspondant à cette liste ne seront *pas* bloquées même si elles auraient\n# dû lêtre par les entrées de la liste noire.\n#\n# La syntaxe est comme suit :\n# * Tout texte à partir du caractère « # » jusquà la fin de la ligne est un commentaire ;\n# * Chaque ligne non vide est un fragment dexpression rationnelle qui ne cherchera à faire correspondre que la partie hôte des adresses de courriel.\n\n #</pre><!-- laissez cette ligne telle quelle -->",
"spam-blacklisted-email": "Adresses courriel en liste noire",
"spam-blacklisted-email-text": "Votre adresse de courriel est actuellement inscrite en liste noire, ce qui bloque lenvoi de courriel aux autres utilisateurs.",
"spam-blacklisted-email-signup": "Ladresse de courriel fournie est actuellement inscrite en liste noire, ce qui bloque son utilisation.",
"spam-blacklisted-email": "Adresses courriel interdire",
"spam-blacklisted-email-text": "Votre adresse courriel est actuellement interdite pour envoyer des courriels aux autres utilisateurs.",
"spam-blacklisted-email-signup": "Ladresse courriel fournie est actuellement interdite à l'utilisation.",
"spam-invalid-lines": "{{PLURAL:$1|La ligne suivante|Les lignes suivantes}} de la liste noire de pourriels {{PLURAL:$1|est une expression rationnelle non valide|sont des expressions rationnelles non valides}} et doi{{PLURAL:$1||ven}}t être corrigée{{PLURAL:$1||s}} avant denregistrer la page :",
"spam-blacklist-desc": "Outil anti-pollution basé sur des expressions rationnelles permettant de mettre en liste noire des URL dans les pages et des adresses de courriel pour les utilisateurs enregistrés",
"log-name-spamblacklist": "Journal de liste noire de pourriels",
"spam-blacklist-desc": "Outil anti-pourriel basé sur les expressions rationnelles permettant dinterdire les URL dans les pages et les adresses courriel pour les utilisateurs enregistrés",
"log-name-spamblacklist": "Journal de la liste noire antipourriels",
"log-description-spamblacklist": "Ces événements tracent les correspondances avec la liste noire de pourriels.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} a provoqué une correspondance avec la liste noire de pourriels sur $3 en essayant dajouter $4.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} a essayé dajouter $4 sur $3 mais cela a été bloqué par la liste noire antipourriels.",
"right-spamblacklistlog": "Afficher le journal de la liste noire de pourriels",
"action-spamblacklistlog": "afficher le journal de la liste noir de pourriels"
}

View File

@ -12,11 +12,11 @@
"spam-whitelist": " #<!-- נא להשאיר שורה זו בדיוק כפי שהיא --> <pre>\n# כתובות URL חיצוניות המופיעות ברשימה זו *לא* ייחסמו אפילו אם יש להן ערך ברשימת הכתובות האסורות.\n#\n# התחביר הוא כדלקמן:\n# * כל דבר מתו \"#\" לסוף השורה הוא הערה\n# * כל שורה לא ריקה היא קטע מביטוי רגולרי שיתאים לשמות המתחם של כתובות URL\n\n #</pre> <!-- נא להשאיר שורה זו בדיוק כפי שהיא -->",
"email-blacklist": " #<!-- leave this line exactly as it is --> <pre>\n# עבור כתובות הדואר האלקטרוני המתאימות לרשימה זו תיחסם האפשרות להירשם ולשלוח דואר אלקטרוני\n# רשימה זו משפיעה רק על ויקי זה; שימו לב גם לרשימה הגלובלית.\n# לתיעוד ראו https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# התחביר הוא כדלקמן:\n# * הכול החל מהתו \"#\" עד סוף השורה הוא הערה\n# * כל שורה לא ריקה היא ביטוי רגולרי חלקי שתתאים רק לשרתים בתוך הדואר האלקטרוני\n\n #</pre> <!-- leave this line exactly as it is -->",
"email-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# כתובות הדואר האלקטרוני המתאימות לרשימה זו *לא* תיחסמנה אף אם הן מתאימות לרשימה השחורה.\n#\n #</pre> <!-- leave this line exactly as it is -->\n# התחביר הוא כדלקמן:\n# * הכול החל מהתו \"#\" עד סוף השורה הוא הערה\n# * כל שורה לא ריקה היא ביטוי רגולרי חלקי שתתאים רק לשרתים בתוך הדואר האלקטרוני",
"spam-blacklisted-email": "כתובות דוא\"ל ברשימה השחורה",
"spam-blacklisted-email-text": "כתובת הדוא\"ל שלך נמצאת כרגע ברשימה השחורה של כתובות שלא ניתן לשלוח מהן הודעות למשמתמשים אחרים.",
"spam-blacklisted-email-signup": "כתובת הדוא\"ל הזאת נמצאת כרגע ברשימה השחורה של כתובות אסורות לשימוש.",
"spam-blacklisted-email": "כתובת דוא\"ל אסורה",
"spam-blacklisted-email-text": "כתובת הדוא\"ל שלך נמצאת כרגע ברשימה כתובות שאסור לשלוח מהן הודעות למשמתמשים אחרים.",
"spam-blacklisted-email-signup": "כתובת הדוא\"ל שניתנה נמצאת כרגע ברשימת כתובות אסורות לשימוש.",
"spam-invalid-lines": "{{PLURAL:$1|השורה הבאה|השורות הבאות}} ברשימת כתובות ה־URL האסורות\n\t{{PLURAL:$1|היא ביטוי רגולרי בלתי תקין ויש לתקנה|הן ביטויים רגולריים בלתי תקינים ויש לתקנן}} לפני שמירת הדף:",
"spam-blacklist-desc": "כלי נגד זבל מבוסס ביטויים רגולריים ליצירת רשימה שחורה של URL־ים בדפים וכתובות דוא\"ל למשתמשים רשומים",
"spam-blacklist-desc": "כלי נגד זבל מבוסס ביטויים רגולריים שמאפשר איסור URL־ים בדפים וכתובות דוא\"ל למשתמשים רשומים",
"log-name-spamblacklist": "יומן רשימה שחורה של ספאם",
"log-description-spamblacklist": "האירועים האלה עוקבים אחרי הפעלות של רשימה שחורה של ספאם.",
"logentry-spamblacklist-hit": "$1 {{GENDER:$2|גרם|גרמה}} לפעולת רשימה שחורה בדף $3 תוך כדי ניסיון להוסיף את הכתובת $4.",

View File

@ -10,6 +10,9 @@
},
"spam-blacklist": " # Vanjske URLovi koji budu pronađeni pomoću ovog popisa nije moguće snimiti na stranicu wikija.\n # Ovaj popis utječe samo na ovaj wiki; provjerite globalnu \"crnu listu\".\n # Za dokumentaciju pogledajte https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n #<!-- leave this line exactly as it is --> <pre>\n#\n# Rabi se sljedeća sintaksa:\n# * Sve poslije \"#\" znaka do kraja linije je komentar\n# * svaki redak koji nije prazan dio je regularnog izraza (''regex fragment'') koji odgovara imenu poslužitelja u URL-u\n\n #</pre> <!-- leave this line exactly as it is -->",
"spam-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Vanjski URLovi koji budu pronađeni pomoću ovog popisa nisu blokirani\n# čak iako se nalaze na \"crnom popisu\".\n#\n# Rabi se sljedeća sintaksa:\n# * sve poslije \"#\" znaka do kraja linije je komentar\n# * svaki neprazni redak je dio regularnog izraza (''regex fragment'') koji odgovara imenu poslužitelja u URL-u\n\n #</pre> <!-- leave this line exactly as it is -->",
"spam-blacklisted-email": "Zabranjena adresa e-pošte",
"spam-blacklisted-email-text": "Vaša adresa e-pošte trenutačno je zabranjena za slanje e-poruka drugim suradnicima.",
"spam-blacklisted-email-signup": "Dana adresa e-pošte trenutačno je zabranjena za upotrebljavanje.",
"spam-invalid-lines": "{{PLURAL:$1|Sljedeći redak|Sljedeći redovi|Sljedeći redovi}} \"crnog popisa\" spama {{PLURAL:$1|je|su}} nevaljani {{PLURAL:$1|regularan izraz|regularni izrazi|regularni izrazi}} i {{PLURAL:$1|mora|moraju|moraju}} biti ispravljeni prije snimanja ove stranice:",
"spam-blacklist-desc": "Anti-spam alat zasnovan na reg. izrazima: [[MediaWiki:Spam-blacklist]] i [[MediaWiki:Spam-whitelist]]",
"log-name-spamblacklist": "Evidencija crne liste neželjenoga sadržaja"

View File

@ -0,0 +1,8 @@
{
"@metadata": {
"authors": [
"Joao Xavier"
]
},
"spam-blacklisted-email": "E-posto adreso nepermisata"
}

View File

@ -12,8 +12,8 @@
"email-blacklist": " #<!-- non modificare in alcun modo questa riga --> <pre>\n# Gli indirizzi email che corrispondono alla lista seguente saranno bloccati, non sarà possibile salvare o inviare email.\n# La lista è valida solo per questo sito; fare riferimento anche alla blacklist globale.\n# Per la documentazione si veda https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# La sintassi è la seguente:\n# * Tutto ciò che segue un carattere \"#\" è un commento, fino al termine della riga\n# * Tutte le righe non vuote sono frammenti di espressioni regolari che si applicano al solo nome dell'host degli indirizzi email\n #</pre> <!-- non modificare in alcun modo questa riga -->",
"email-whitelist": " #<!-- non modificare in alcun modo questa riga --> <pre>\n# Gli indirizzi email che corrispondono alla lista seguente *non* verranno\n# bloccati, anche nel caso corrispondano a delle voci della blacklist\n#\n# La sintassi è la seguente:\n# * Tutto ciò che segue un carattere \"#\" è un commento, fino al termine della riga\n# * Tutte le righe non vuote sono frammenti di espressioni regolari che si applicano al solo nome dell'host degli indirizzi email\n #</pre> <!-- non modificare in alcun modo questa riga -->",
"spam-blacklisted-email": "Indirizzo di posta elettronica bloccato",
"spam-blacklisted-email-text": "Il tuo indirizzo di posta elettronica è attualmente nella lista nera per l'invio di email verso altri utenti.",
"spam-blacklisted-email-signup": "L'indirizzo di posta elettronica indicato è attualmente nella lista nera.",
"spam-blacklisted-email-text": "Il tuo indirizzo di posta elettronica è attualmente bloccato per l'invio di email verso altri utenti.",
"spam-blacklisted-email-signup": "L'indirizzo di posta elettronica indicato è attualmente bloccato.",
"spam-invalid-lines": "{{PLURAL:$1|La seguente riga|Le seguenti righe}} della blacklist dello spam {{PLURAL:$1|non è un'espressione regolare valida|non sono espressioni regolari valide}}; si prega di correggere {{PLURAL:$1|l'errore|gli errori}} prima di salvare la pagina.",
"spam-blacklist-desc": "Strumento antispam basato sulle espressioni regolari per bloccare URL e indirizzi email di utenti registrati",
"log-name-spamblacklist": "Spam blacklist",

View File

@ -1,14 +1,16 @@
{
"@metadata": {
"authors": [
"Diki Ananta",
"Meursault2004",
"NoiX180"
"NoiX180",
"Sumbukompor"
]
},
"spam-blacklist": " # URL eksternal sing cocog karo daftar iki bakal diblokir yèn ditambahaké ing sawijining kaca.\n # Daftar iki namung nduwé pangaruh ing wiki iki; ngrujuka uga daftar ireng global.\n # Kanggo dokumentasi, delengen https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n #<!-- lirwakna baris iki apa anané --> <pre>\n#\n# Sintaksisé kaya mengkéné:\n# * Kabèh sing diawali mawa karakter \"#\" nganti tekaning akir baris iku komentar\n# * Kabèh baris sing ora kosong iku fragmèn regex sing namung bakal dicocogaké karo jeneng host sajroning URL-URL\n\n #</pre> <!-- lirwakna baris iki apa anané -->",
"spam-whitelist": " #<!-- lirwakna baris iki apa anané --> <pre>\n # URL èksternal sing cocog karo daftar iki *ora* bakal diblokir senadyan\n# bakal diblokir déning èntri ing daftar ireng\n#\n# Sintaksisé kaya mengkéné:\n# * Kabèh sing diawali mawa karakter \"#\" nganti tekaning akir baris iku komentar\n# * Kabèh baris sing ora kosong iku fragmèn regex sing namung bakal dicocogaké karo jeneng host sajroning URL-URL\n\n #</pre> <!-- lirwakna baris iki apa anané -->",
"spam-blacklisted-email": "Alamat layang-èl sing mlebu pratélan ireng",
"spam-blacklisted-email-text": "Alamat layang èlèktronik panjenengan saiki didaptarirengaké saka ngirim layang èlèktronik nèng panganggo liya.",
"spam-blacklisted-email-text": "Alamat layang èlèktronik panjenengan saiki didaptarirengaké saka ngirim layang èlèktronik nèng naraguna liya.",
"spam-blacklisted-email-signup": "Alamat layang èlèktronik sing diawèhaké saiki ora dililakaké.",
"spam-invalid-lines": "{{PLURAL:$1|Baris|Baris-baris}} daftar ireng spam ing ngisor iki yaiku {{PLURAL:$1|èksprèsi|èksprèsi}} regulèr sing ora absah lan {{PLURAL:$1|perlu|perlu}} dikorèksi sadurungé disimpen:",
"spam-blacklist-desc": "Piranti anti-spam adhedhasar regex: [[MediaWiki:Spam-blacklist]] lan [[MediaWiki:Spam-whitelist]]"

View File

@ -6,6 +6,7 @@
"Hym411",
"Klutzy",
"Kwj2772",
"MemphisA5",
"Nuevo Paso",
"Ykhwong",
"아라"
@ -15,11 +16,11 @@
"spam-whitelist": " # <!-- 이 줄은 그대로 두십시오 --> <pre>\n# 이 목록에 포함되는 외부 URL은 블랙리스트에 의해 차단되어\n# 있더라도 문서 편집이 제한되지 않습니다.\n#\n# 문법은 다음과 같습니다:\n# * \"#\" 문자에서 줄의 끝까지는 주석입니다\n# * 모든 줄은 URL의 호스트와 일치하는 정규 표현식의 일부분입니다\n #</pre> <!-- 이 줄은 그대로 두십시오 -->",
"email-blacklist": " #<!-- 이 줄은 그대로 두십시오 --> <pre>\n# 이 리스트와 일치하는 이메일 주소는 등록과 이메일 발송이 금지됩니다.\n# 이 리스트는 이 위키에만 적용됩니다; 전역 블랙리스트도 함께 참조하십시오.\n# 설명서에 대해서는 https://www.mediawiki.org/wiki/Extension:SpamBlacklist를 참조하십시오\n#\n# 문법은 다음과 같습니다:\n# * \"#\" 문자에서 줄의 끝까지는 주석입니다\n# * 빈 줄이 아닌 모든 줄은 이메일 주소의 호스트만 검사하는 정규 표현식입니다\n\n #</pre> <!-- 이 줄은 그대로 두십시오 -->",
"email-whitelist": " #<!-- 이 줄은 그대로 두십시오 --> <pre>\n# 이 리스트와 일치하는 이메일 주소는 블랙리스트에 올라가 있을지라도\n# 사용이 차단되지 않습니다.\n#\n# 문법은 다음과 같습니다:\n# * \"#\" 문자에서 줄의 끝까지는 주석입니다\n# * 빈 줄이 아닌 모든 줄은 이메일 주소의 호스트만 검사하는 정규 표현식입니다.\n\n #</pre> <!-- 이 줄은 그대로 두십시오 -->",
"spam-blacklisted-email": "이메일 주소가 블랙리스트됨",
"spam-blacklisted-email-text": "이메일 주소는 다른 사용자가 이메일을 보내지 못하도록 블랙리스트에 올라와 있습니다.",
"spam-blacklisted-email-signup": "입력한 이메일 주소는 사용할 수 없도록 블랙리스트되어 있습니다.",
"spam-blacklisted-email": "금지된 이메일 주소",
"spam-blacklisted-email-text": "이메일 주소는 다른 사용자가 이메일을 보내지 못하도록 금지되어 있습니다.",
"spam-blacklisted-email-signup": "입력한 이메일 주소는 사용할 수 없도록 금지되어 있습니다.",
"spam-invalid-lines": "스팸 블랙리스트의 다음 {{PLURAL:$1|줄}}에 잘못된 정규 {{PLURAL:$1|표현식}}이 사용되어 문서를 저장하기 전에 바르게 고쳐져{{PLURAL:$1|야 합니다}}:",
"spam-blacklist-desc": "정규 표현식을 사용해 문서에 있는 URL과 등록된 사용자의 이메일 주소를 블랙리스트 처리하여 스팸을 막는 도구",
"spam-blacklist-desc": "정규 표현식을 사용해 문서에 있는 URL과 등록된 사용자의 이메일 주소를 금지 처리하여 스팸을 막는 도구",
"log-name-spamblacklist": "스팸 블랙리스트 기록",
"log-description-spamblacklist": "이 사건은 스팸 블랙리스트의 일치를 추적합니다.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} 사용자가 $3 문서에 $4을(를) 추가하려 하자 스팸 블랙리스트의 일치가 일어났습니다.",

View File

@ -4,7 +4,7 @@
"Robby"
]
},
"spam-blacklisted-email": "Gespaart Mail-Adressen",
"spam-blacklisted-email": "Gespaarten Mail-Adress",
"spam-blacklisted-email-text": "Är Mailadress ass elo gespaart fir anere Benotzer Mailen ze schécken.",
"spam-blacklisted-email-signup": "D'Mailadress déi Dir uginn hutt ass elo gespaart fir anere Benotzer Mailen ze schécken.",
"spam-blacklist-desc": "Op regulären Ausdréck (Regex) opgebauten Tool deen et erlaabt URLe vu Säiten op eng schwaarz Lëscht ze setzen an e-Mail-Adresssen vu registréierte Benotzer"

View File

@ -2,18 +2,19 @@
"@metadata": {
"authors": [
"Albertas",
"Homo"
"Homo",
"Tomasdd"
]
},
"spam-blacklist": " #<!-- palikite šią eilutę tiksliai tokią, kokia ji yra --> <pre>\n# Išorinės URL nuorodos patenkančios į šį sąrašą bus blokuojamos, įterpus jas į puslapį.\n# Šis sąrašas paveiks tik šį vikį; taip pat galite remtis globaliu juoduoju nuorodų sąrašu.\n# Dokumentacijai žiūrėkite https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# Sintaksė tokia:\n# * Viskas nuo \"#\" simbolio iki eilutės galo yra komentaras\n# * Kiekviena ne tuščia eilutė yra reguliariosios išraiškos fragmentas, kuris atitinka tik URL nuorodose esančius serverių pavadinimus\n\n #</pre> <!-- palikite šią eilutę tiksliai tokią, kokia ji yra -->",
"spam-whitelist": " #<!-- palikite šią eilutę tiksliai tokią, kokia ji yra --> <pre>\n# Išorinės URL nuorodos, patenkančios į šį sąrašą, *nebus* užklokuojamos, net jeigu būtų užblokuotos juodojo sąrašo įrašais.\n#\n# Sintaksė tokia:\n# * Viskas po \"#\" simbolio iki eilutės pabaigos yra komentaras\n# * Kiekvienas netuščia eilutė yra reguliariosios išraiškos fragmentas, kuris atitinka URL nuorodose esančius serverių vardus\n\n #</pre> <!-- palikite šią eilutę tiksliai tokią, kokia ji yra -->",
"email-blacklist": " #<!-- palikite šią eilutę tiksliai tokią, kokia ji yra --> <pre>\n# El. pašto adresai patenkantys į šį sąrašą bus užblokuoti, kad su jais nebūtų galima susikurti paskyros ir siųsti el. laiškų.\n# Šis sąrašas paveiks tik šį vikį; taip pat galite remtis ir globaliu juoduoju sąrašu.\n# Dokumentaciją galite rasti čia https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# Sintaksė tokia:\n# * Viskas nuo \"#\" simbolio iki eilutės pabaigos yra komentaras\n# * Kiekviena netuščia eilutė yra reguliariosios išraiškos fragmentas, kuris žymį el. pašto serverio pavadinimą\n\n #</pre> <!-- palikite šią eilutę tiksliai tokią, kokia ji yra -->",
"email-whitelist": " #<!-- palikite šią eilutę tiksliai tokią, kokia ji yra --> <pre>\n# El. pašto adresai, patenkantys į šį sąrašą, *nebus* blokuojami, net jeigu būtų blokuojami juodojo sąrašo įrašais.\n#\n# Sintaksė tokia:\n# * Viskas nuo \"#\" simbolio iki eilutės pabaigos yra komentaras\n# * Kiekviena netuščia eilutė yra reguliariosios išraiškos fragmentas, kuris žymi tik el. pašto serverio vardą\n\n #</pre> <!-- palikite šią eilutę tiksliai tokią, kokia ji yra -->",
"spam-blacklisted-email": "El. pašto adresai, įtraukti į juodąjį sąrašą",
"spam-blacklisted-email-text": "Jūsų el. pašto adresas dabar yra įtrauktas į juodąjį sąrašą, kad negalėtumėte siųsti el. laiškų kitiems naudotojams.",
"spam-blacklisted-email-signup": "Nurodytasis el. pašto adresas dabar yra įtrauktas į juodąjį sąrašą, kad juo nebūtų galima naudotis.",
"spam-blacklisted-email": "Draudžiamas el. pašto adresas",
"spam-blacklisted-email-text": "Jūsų el. pašto adresas dabar yra įtrauktas į draudžiamųjų sąrašą, kad negalėtumėte siųsti el. laiškų kitiems naudotojams.",
"spam-blacklisted-email-signup": "Nurodytasis el. pašto adresas dabar yra draudžiamas naudoti.",
"spam-invalid-lines": "{{PLURAL:$1|Ši brukalo juodojo sąrašo eilutė yra|Šios brukalo juodojo sąrašo eilutės yra}} {{PLURAL:$1|netinkama reguliarioji išraiška|netinkamos reguliariosios išraiškos}} ir {{PLURAL:$1|ją reikia|jas reikia}} pataisyti prieš išsaugant puslapį:",
"spam-blacklist-desc": "Reguliariomis išraiškomis grįstas anti brukalinis įrankis, leidžiantis puslapiuose esančias URL nuorodas ir prisiregistravusių naudotojų el. pašto adresus įtraukti į juodąjį sąrašą",
"spam-blacklist-desc": "Reguliariomis išraiškomis grįstas anti brukalinis įrankis, leidžiantis puslapiuose esančias URL nuorodas ir prisiregistravusių naudotojų el. pašto adresus uždrausti",
"log-name-spamblacklist": "Brukalo juodojo sąrašo žurnalas",
"log-description-spamblacklist": "Čia pateikiami bandymai pridėti nuorodas, nukreipiančias į juodajame sąraše esančias svetaines.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} bandymas $3 puslapyje pridėti $4 buvo aptiktas brukalo filtro.",

View File

@ -4,15 +4,16 @@
"Anakmalaysia",
"Aviator",
"Jeluang Terluang",
"Pizza1016"
"Pizza1016",
"Tofeiku"
]
},
"spam-blacklist": "# URL luar yang sepadan dengan mana-mana entri dalam senarai ini akan disekat daripada ditambah ke dalam sesebuah laman.\n# Senarai ini melibatkan wiki ini sahaja; sila rujuk juga senarai hitam sejagat. \n# Sila baca pendokumenan di https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#<!-- jangan ubah baris ini --> <pre>\n#\n# Sintaks adalah seperti berikut:\n# * Semuanya mulai aksara \"#\" hingga akhir baris merupakan komen\n# * Setiap baris yang tidak kosong meruakan pecahan ungkapan nalar yang hanya akan berpadan dengan hos-hos dalam alamat e-mel\n\n #</pre> <!-- jangan ubah baris ini -->",
"spam-whitelist": " #<!-- jangan ubah baris ini --> <pre>\n# URL luar yang sepadan dengan mana-mana entri dalam senarai ini tidak akan\n# disekat walaupun terdapat juga dalam senarai hitam.\n#\n# Sintaks:\n# * Aksara \"#\" sampai akhir baris diabaikan\n# * Ungkapan nalar dibaca daripada setiap baris dan dipadankan dengan nama hos sahaja\n\n #</pre> <!-- jangan ubah baris ini -->",
"email-blacklist": " # Alamat-alamat e-mel yang berpadanan dengan senarai ini akan disekat daripada mendaftar atau menghantar e-mel\n # Senarai ini melibatkan wiki ini sahaja; sila rujuk juga senarai hitam sejagat.\n # Untuk pendokumenan, rujuk https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n #<!-- jangan ubah baris ini --> <pre>\n#\n# Sintaks adalah seperti berikut:\n# * Semuanya mulai aksara \"#\" hingga akhir baris merupakan komen\n# * Setiap baris yang tidak kosong merupakan pecahan ungkapan nalar yang hanya akan berpadan dengan hos-hos dalam alamat e-mel\n\n #</pre> <!-- jangan ubah baris ini -->",
"email-whitelist": " #<!-- jangan ubah baris ini --> <pre>\n# Alamat-alamat e-mel yang berpadanan dengan senarai ini *tidak* akan disekat sungguhpun boleh\n# disekat oleh entri senarai hitam.\n#\n# Sintaks adalah seperti berikut:\n# * Segalanya mulai aksara \"#\" hingga akhir baris ialah komen\n# * Setiap baris yang tidak kosong meruakan pecahan ungkapan nalar yang hanya akan berpadan dengan hos-hos dalam alamat e-mel\n\n #</pre> <!-- leave this line exactly as it is -->",
"spam-blacklisted-email": "E-mel yang Disenaraihitamkan",
"spam-blacklisted-email-text": "Alamat e-mel anda kini disenaraihitamkan daripada menghantar e-mel kepada pengguna lain.",
"spam-blacklisted-email": "E-mel yang dilarang",
"spam-blacklisted-email-text": "Alamat e-mel anda kini dilarang daripada menghantar e-mel kepada pengguna lain.",
"spam-blacklisted-email-signup": "Alamat e-mel yang diberikan ini kini disenaraihitamkan.",
"spam-invalid-lines": "{{PLURAL:$1|Baris|Baris-baris}} berikut menggunakan ungkapan nalar yang tidak sah. Sila baiki senarai hitam ini sebelum menyimpannya:",
"spam-blacklist-desc": "Alat anti-spam berdasarkan ungkapan nalar: [[MediaWiki:Spam-blacklist]] dan [[MediaWiki:Spam-whitelist]]"

View File

@ -5,6 +5,7 @@
"Chrumps",
"Derbeth",
"Peter Bowman",
"Rail",
"Railfail536",
"Sp5uhe",
"WTM",
@ -16,10 +17,10 @@
"email-blacklist": " # Adresy e-mail pasujące do tej listy będą blokowane przed rejestracją i wysyłaniem maili\n # Ta lista dotyczy tylko tej wiki; przejrzyj również globalną czarną listę.\n # Dokumentacja znajduje się na https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n #<!-- leave this line exactly as it is --> <pre>\n#\n# Składnia opisana jest poniżej:\n# * Wszystko znajdujące się za znakiem \"#\" do końca linii jest komentarzem\n# * Każda niepusta linia jest fragmentem wyrażenia regularnego, które będzie dopasowywane do hosta z adresu e-mail\n\n #</pre> <!-- leave this line exactly as it is -->",
"email-whitelist": " #<!-- leave this line exactly as it is --> <pre>\n# Adresy e-mail pasujące do tej listy *nie* będą blokowane, nawet jeśli zostaną\n# zablokowane przez wpisy z czarnej listy.\n#\n #</pre> <!-- leave this line exactly as it is -->\n# Składnia jest następująca:\n# * Wszystko począwszy od znaku \"#\" do końca linii jest komentarzem\n# * Każda niepusta linia jest fragmentem wyrażenia regularnego dopasowywanego tylko do nazw hpstów z adresów e-mail",
"spam-blacklisted-email": "Niedozwolone adresy e-mail",
"spam-blacklisted-email-text": "Twój adres e-mail jest obecnie umieszczony na czarnej liście i nie można z niego wysyłać wiadomości e-mail do innych użytkowników.",
"spam-blacklisted-email-signup": "Podany adres e-mail jest obecnie na czarnej liście blokującej przed użyciem.",
"spam-blacklisted-email-text": "Z Twojego adresu e-mail obecnie nie można wysyłać wiadomości e-mail do innych użytkowników.",
"spam-blacklisted-email-signup": "Użycie podanego adresu e-mail jest obecnie niedozwolone.",
"spam-invalid-lines": "{{PLURAL:$1|Następująca linia jest niepoprawnym wyrażeniem regularnym i musi być poprawiona przed zapisaniem strony:|Następujące linie są niepoprawnymi wyrażeniami regularnymi i muszą być poprawione przed zapisaniem strony:}}",
"spam-blacklist-desc": "Narzędzie antyspamowe oparte o wyrażenia regularne pozwalające dodawać na czarną listę adresy URL na stronach i adresy e-mail użytkowników",
"spam-blacklist-desc": "Narzędzie antyspamowe oparte o wyrażenia regularne pozwalające odrzucać adresy URL na stronach i adresy e-mail użytkowników",
"log-name-spamblacklist": "Rejestr filtru antyspamowego",
"log-description-spamblacklist": "Te zdarzenia służą do śledzenia trafień czarnej listy spamu.",
"logentry-spamblacklist-hit": "$1 {{GENDER:$2|uruchomił|uruchomiła}} filtr antyspamowy na stronie $3, próbując dodać $4.",

View File

@ -2,6 +2,7 @@
"@metadata": {
"authors": [
"Cainamarques",
"Eduardo Addad de Oliveira",
"Eduardo.mps",
"Felipe L. Ewald",
"He7d3r",
@ -10,15 +11,15 @@
555
]
},
"spam-blacklist": "#<!-- mantenha esta linha exatamente assim --> <pre>\n# URLs externas que coincidam com esta lista serão bloqueadas quando forem\n# adicionadas a uma página.\n# Esta lista refere-se apenas a este wiki. Consulte também a lista-negra global.\n# Veja a documentação em https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# A sintaxe é a seguinte:\n# * Tudo o que estiver após um \"#\" até o final de uma linha será tido como um comentário\n# * Todas as linhas que não estiverem em branco são um fragmento de expressão \n# regular (regex) que abrangem apenas a URL especificada\n\n #</pre> <!-- mantenha esta linha exatamente assim -->",
"spam-blacklist": "#<!-- mantenha esta linha exatamente assim --> <pre>\n# URLs externas que coincidam com esta lista serão bloqueadas quando forem\n# adicionadas a uma página.\n# Esta lista refere-se apenas a este wiki. Consulte também a lista-negra global.\n# Veja a documentação em https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# A sintaxe é a seguinte:\n# * Tudo o que estiver após um \"#\" até o final de uma linha será tido como um comentário\n# * Todas as linhas que não estiverem em branco são um fragmento de expressão \n# regular (regex) que abrangem apenas a URL especificada\n\n #</pre> <!-- mantenha esta linha exatamente assim -->",
"spam-whitelist": "#<!-- mantenha esta linha exatamente assim --> <pre>\n # URLs externas que coincidam com esta lista *não* serão\n # bloqueadas mesmo se tiverem sido bloqueadas por entradas\n # presentes nas listas negras.\n #\n # A sintaxe é a seguinte:\n # * Tudo o que estiver após um \"#\" até o final de uma linha\n # será tido como um comentário\n # * Todas as linhas que não estiverem em branco são um\n # fragmento de expressão regular (regex) que abrangem apenas\n # a URL especificada\n\n #</pre> <!-- mantenha esta linha exatamente assim -->",
"email-blacklist": "#<!-- mantenha esta linha exatamente assim --> <pre>\n # Endereços de e-mail que coincidam com esta lista serão\n # impedidos de se registrar, bem como de enviar mensagens\n # Esta lista refere-se apenas a este wiki. Consulte também a lista negra global.\n # Veja a documentação em https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n #<!-- mantenha esta linha exatamente assim --> <pre>\n #\n # A sintaxe é a seguinte:\n # * Tudo o que estiver após um \"#\" até o final de uma \n # linha será tido como um comentário\n # * Todas as linhas que não estiverem em branco são um\n # fragmento de expressão regular (regex) que abrangem apenas\n # o domínio do endereço de e-mail\n\n #</pre> <!-- mantenha esta linha exatamente assim -->",
"email-blacklist": "#<!-- mantenha esta linha exatamente assim --> <pre>\n # Endereços de e-mail que coincidam com esta lista serão\n # impedidos de se registrar, bem como de enviar mensagens\n # Esta lista refere-se apenas a este wiki. Consulte também a lista negra global.\n # Veja a documentação em https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n #<!-- mantenha esta linha exatamente assim --> <pre>\n #\n # A sintaxe é a seguinte:\n # * Tudo o que estiver após um \"#\" até o final de uma \n # linha será tido como um comentário\n # * Todas as linhas que não estiverem em branco são um\n # fragmento de expressão regular (regex) que abrangem apenas\n # o domínio do endereço de e-mail\n\n #</pre> <!-- mantenha esta linha exatamente assim -->",
"email-whitelist": "#<!-- mantenha esta linha exatamente assim --> <pre>\n # Endereços de e-mail que coincidam com esta lista *não*\n # serão bloqueados mesmo que tenham sofrido bloqueio\n # por instruções presentes nas listas negras.\n #\n # A sintaxe é a seguinte:\n # * Tudo o que estiver após um \"#\" até o final de uma linha\n # será tido como um comentário\n # * Todas as linhas que não estiverem em branco são um\n # fragmento de expressão regular (regex) que abrangem apenas\n # os domínios dos endereços de e-mail\n\n #</pre> <!-- mantenha esta linha exatamente assim -->",
"spam-blacklisted-email": "Endereço eletrônico na lista negra",
"spam-blacklisted-email-text": "O seu endereço de correio eletrônico está proibido de enviar mensagens para outros usuários.",
"spam-blacklisted-email-signup": "O endereço fornecido encontra-se na lista negra.",
"spam-blacklisted-email": "Endereço de email proibido",
"spam-blacklisted-email-text": "No momento, seu endereço de e-mail está proibido de enviar e-mails para outros usuários.",
"spam-blacklisted-email-signup": "O endereço de e-mail fornecido está atualmente proibido de usar.",
"spam-invalid-lines": "{{PLURAL:$1|A linha|As linhas}} a seguir {{PLURAL:$1|é uma expressão regular|são expressões regulares}} (regex) {{PLURAL:$1|inválida e precisa|inválidas e precisam}} ser {{PLURAL:$1|corrigida|corrigidas}} antes de salvar a página:",
"spam-blacklist-desc": "Ferramenta anti-spam baseada em expressões regulares que permite adicionar URLs numa lista negra, barrando-os em páginas e também em emails enviados a usuários registrados",
"spam-blacklist-desc": "Ferramenta anti-spam baseada em Regex, que permite proibir URLs em páginas e endereços de e-mail para usuários registrados",
"log-name-spamblacklist": "Registro da lista negra de spam",
"log-description-spamblacklist": "Esses eventos rastreiam hits na lista negra de spam.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} causou uma correspondência na lista negra de spam em $3, tentando adicionar $4.",

View File

@ -14,15 +14,15 @@
"spam-whitelist": "See also: [[MediaWiki:spam-blacklist]] and [[MediaWiki:captcha-addurl-whitelist]]. You can translate the text, including 'Leave this line exactly as it is'. Some lines of this messages have one (1) leading space.",
"email-blacklist": "See also: [[MediaWiki:email-whitelist]] and [[MediaWiki:Spam-blacklist]]. You can translate the text, including 'Leave this line exactly as it is'. Some lines of this messages have one (1) leading space.",
"email-whitelist": "See also: [[MediaWiki:email-blacklist]] and [[MediaWiki:Spam-whitelist]]. You can translate the text, including 'Leave this line exactly as it is'. Some lines of this messages have one (1) leading space.",
"spam-blacklisted-email": "Title of errorpage when trying to send an email with a blacklisted e-mail address",
"spam-blacklisted-email-text": "Text of errorpage when trying to send an e-mail with a blacklisted e-mail address",
"spam-blacklisted-email": "Title of errorpage when trying to send an email with a forbidden e-mail address",
"spam-blacklisted-email-text": "Text of errorpage when trying to send an e-mail with a forbidden e-mail address",
"spam-blacklisted-email-signup": "Error when trying to create an account with an invalid e-mail address",
"spam-blacklisted-link": "{{Notranslate}}\nError shown when trying to add a blacklisted link to a page. The two messages are reused from MediaWiki core. This message exists because some interfaces in MediaWiki expect us to return just one error message.",
"spam-blacklisted-link": "{{Notranslate}}\nError shown when trying to add a forbidden link to a page. The two messages are reused from MediaWiki core. This message exists because some interfaces in MediaWiki expect us to return just one error message.",
"spam-invalid-lines": "Used as an error message.\n\nThis message is followed by a list of bad lines.\n\nParameters:\n* $1 - the number of bad lines",
"spam-blacklist-desc": "{{desc|name=Spam Blacklist|url=https://www.mediawiki.org/wiki/Extension:SpamBlacklist}}",
"log-name-spamblacklist": "Name of log that appears on [[Special:Log]].",
"log-description-spamblacklist": "Description of spam blacklist log",
"logentry-spamblacklist-hit": "Log entry that is created when a user adds a link that is blacklisted on the spam blacklist.\n\n{{logentry}}\nAdditional parameters:\n* $4 - the URL the user tried to add",
"logentry-spamblacklist-hit": "Log entry that is created when a user adds a link that is forbidden by the spam blacklist.\n\n{{logentry}}\nAdditional parameters:\n* $4 - the URL the user tried to add",
"right-spamblacklistlog": "{{doc-right|spamblacklistlog}}",
"action-spamblacklistlog": "{{doc-action|spamblacklistlog}}"
}

View File

@ -3,25 +3,27 @@
"authors": [
"Ahonc",
"Amire80",
"Diman Russkov",
"Express2000",
"HalanTul",
"INS Pirat",
"Kaganer",
"NBS",
"Okras",
"Pacha Tchernof",
"Vlad5250",
"Александр Сигачёв"
]
},
"spam-blacklist": " #<!-- не изменяйте эту строку --> <pre>\n# Внешние ссылки, соответствующие этому списку, будут запрещены для внесения на страницы.\n# Этот список действует только для данной вики, существует также общий чёрный список.\n# Подробнее на странице https://www.mediawiki.org/wiki/Extension:SpamBlacklist#\n# Синтаксис:\n# * Всё, начиная с символа \"#\" и до конца строки, считается комментарием\n# * Каждая непустая строка - фрагмент регулярного выражения, применяемого только к узлу в URL\n\n #</pre> <!-- не изменяйте эту строку -->",
"spam-blacklist": " #<!-- не изменяйте эту строку --> <pre>\n# Внешние ссылки, соответствующие этому списку, будут запрещены для внесения на страницы.\n# Этот список действует только для данной вики, существует также общий чёрный список.\n# Подробнее на странице https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist#\n# Синтаксис:\n# * Всё, начиная с символа \"#\" и до конца строки, считается комментарием\n# * Каждая непустая строка - фрагмент регулярного выражения, применяемого только к узлу в URL\n\n #</pre> <!-- не изменяйте эту строку -->",
"spam-whitelist": " #<!-- не изменяйте эту строку --> <pre>\n# Внешние ссылки, соответствующие этому списку, *не* будут блокироваться, даже если они попали в чёрный список.\n#\n# Синтаксис:\n# * Всё, начиная с символа \"#\" и до конца строки, считается комментарием.\n# * Каждая непустая строка — это фрагмент регулярного выражения, применяемого только к узлу в URL.\n\n #</pre> <!-- не изменяйте эту строку -->",
"email-blacklist": " #<!-- не изменяйте эту строку --> <pre>\n# Адреса электронной почты, соответствующие этому списку, будут заблокированы от регистрации или посылки эл. почты.\n# Этот список действует только для данной вики, существует также общий чёрный список.\n# Подробнее на странице https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# Синтаксис:\n# * Всё, начиная с символа \"#\" и до конца строки, считается комментарием\n# * Каждая непустая строка - фрагмент регулярного выражения, применяемого только к узлам внутри адресов эл. почты\n\n #</pre> <!-- не изменяйте эту строку -->",
"email-blacklist": " #<!-- не изменяйте эту строку --> <pre>\n# Адреса электронной почты, соответствующие этому списку, будут заблокированы от регистрации или посылки эл. почты.\n# Этот список действует только для данной вики, существует также общий чёрный список.\n# Подробнее на странице https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# Синтаксис:\n# * Всё, начиная с символа \"#\" и до конца строки, считается комментарием\n# * Каждая непустая строка - фрагмент регулярного выражения, применяемого только к узлам внутри адресов эл. почты\n\n #</pre> <!-- не изменяйте эту строку -->",
"email-whitelist": " #<!-- не изменяйте эту строку --> <pre>\n# Адреса электронной почты, соответствующие этому списку, НЕ БУДУТ заблокированы,\n# даже если они внесены в черный список.\n#\n# Синтаксис:\n# * Всё, начиная с символа \"#\" и до конца строки, считается комментарием.\n# * Каждая непустая строка — фрагмент регулярного выражения, применяемого только к узлам внутри адресов эл. почты.\n #</pre> <!-- не изменяйте эту строку -->",
"spam-blacklisted-email": "Адреса электронной почты, занесённые в чёрный список",
"spam-blacklisted-email-text": "Ваш адрес электронной почты в настоящее время находится в чёрном списке, поэтому вы не можете отправлять сообщения другим пользователям.",
"spam-blacklisted-email-signup": "Указанный адрес электронной почты в настоящее время занесён в чёрный список и не может быть использован.",
"spam-blacklisted-email": "Запрещённые адреса электронных почт",
"spam-blacklisted-email-text": "Отправление электронных писем с вашего адреса электронной почты другим пользователям в настоящее время запрещено.",
"spam-blacklisted-email-signup": "Данный адрес электронной почты в настоящее время запрещён для использования.",
"spam-invalid-lines": "{{PLURAL:$1|1=Следующая строка чёрного списка ссылок содержит ошибочное регулярное выражение и должна быть исправлена|Следующие строки чёрного списка ссылок содержат ошибочные регулярные выражения и должны быть исправлены}} перед сохранением:",
"spam-blacklist-desc": "Основанный на регулярных выражениях анти-спам инструмент позволяет добавлять в чёрный список URL на страницах и адреса электронной почты для зарегистрированных пользователей",
"spam-blacklist-desc": "Анти-спам инструмент, основанный на регулярных выражениях и запрещающий URL-адреса на страницах и адреса электронных почт для зарегистрированных пользователей",
"log-name-spamblacklist": "Журнал спам-листа",
"log-description-spamblacklist": "Это журнал, отслеживающий срабатывание спам-листа.",
"logentry-spamblacklist-hit": "$1 вызвал срабатывание спам-листа на странице $3 из-за попытки добавить $4.",

View File

@ -10,11 +10,11 @@
"spam-whitelist": " #<!-- pustite to vrstico takšno, kot je --> <pre>\n# Zunanji URL-ji, ki se ujemajo s tem seznamom, *ne* bodo blokirani,\n# četudi bi bili blokirani z vnosi črnega seznama.\n#\n# Skladnja je sledeča:\n# * Vse od znaka »#« do konca vrstice je pripomba\n# * Vsaka neprazna vrstica je delec regularnega izraza, ki se bo ujemal samo z gostitelji v URL-jih\n\n #</pre> <!-- pustite to vrstico takšno, kot je -->",
"email-blacklist": " #<!-- to vrstico pustite natančno takšno, kakršna je --> <pre>\n# Registracija in pošiljanje z e-poštnih naslovov, ki se ujemajo s spodnjim seznamom, bosta preprečena\n# Seznam vpliva samo na ta wiki; glejte tudi globalni črni seznam.\n# Za dokumentacijo glejte https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n\n#\n# Opis skladnje:\n# * Vse od znaka \"#\" do konca vrstice je komentar\n# * Vsaka neprazna vrstica je regularni izraz, ki se lahko ujema le z imeni gostiteljev v e-poštnih naslovih\n\n #</pre> <!-- to vrstico pustite natančno takšno, kakršna je -->",
"email-whitelist": "#<!-- to vrstico pustite natančno takšno, kakršna je --> <pre>\n# E-poštni naslovi, ki se ujemajo s tem seznamom, *ne* bodo blokirani, tudi če bi\n# bili blokirani z vnosi na črnem seznamu.\n#\n #</pre> <!-- to vrstico pustite natančno takšno, kakršna je -->\n# Opis skladnje:\n# * Vse od znaka \"#\" do konca vrstice je komentar\n# * Vsaka neprazna vrstica je regularni izraz, ki se lahko ujema le z imenom gostitelja v e-poštnem naslovu",
"spam-blacklisted-email": "E-poštni naslov na črnem seznamu",
"spam-blacklisted-email-text": "Vaš e-poštni naslov je trenutno na črnem seznamu, zato ne morete pošiljati pošte drugim uporabnikom.",
"spam-blacklisted-email-signup": "E-poštni naslov je trenutno na črnem seznamu.",
"spam-blacklisted-email": "Prepovedan e-poštni naslov",
"spam-blacklisted-email-text": "Vašemu e-poštnemu naslovu je trenutno prepovedano pošiljanje pošte drugim uporabnikom.",
"spam-blacklisted-email-signup": "Uporaba navedenega e-poštnega naslova je trenutno prepovedana.",
"spam-invalid-lines": "{{PLURAL:$1|Naslednja vrstica|Naslednji vrstici|Naslednje vrstice}} črnega seznama smetja {{PLURAL:$1|je neveljavni regularni izraz in ga|sta neveljavna regularna izraza in ju|so neveljavni regularni izrazi in jih}} je pred shranjevanjem strani potrebno popraviti:",
"spam-blacklist-desc": "Orodje proti smetju, temelječe na regularnih izrazih, ki omogoča navedbo spletnih naslovov na straneh in v e-poštnih naslovih za registrirane uporabnike na črnem seznamu",
"spam-blacklist-desc": "Orodje proti smetju, temelječe na regularnih izrazih, ki omogoča prepoved spletnih naslovov na straneh in v e-poštnih naslovih za registrirane uporabnike",
"log-name-spamblacklist": "Dnevnik črnega seznama smetja",
"log-description-spamblacklist": "Ti dogodki sledijo zadetke črnega seznama smetja.",
"logentry-spamblacklist-hit": "$1 je povzročil zadetek na črnem seznamu smetja na strani $3 ob dodajanju povezave $4",

View File

@ -4,10 +4,11 @@
"BadDog",
"Milicevic01",
"Millosh",
"Srdjan m"
"Srdjan m",
"Zoranzoki21"
]
},
"spam-blacklist": " #<!-- ову линију не дирајте--> <pre>\n# URL-и наведени овде неће моћи да се додају на странице.\n# Овај списак важи само за овај вики, за остале употребе погледајте глобални црни списак.\n# Документација је на https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# Синтакса је следећа:\n# * Све од знака „#“ до краја линије је коментар\n# * Свака линија која није празна је део регуларног израза (regex fragment) која одговара имену хоста у URL-у\n\n #</pre> <!-- ову линију не дирајте -->",
"spam-blacklist": " #<!-- ову линију не дирајте--> <pre>\n# URL-и наведени овде неће моћи да се додају на странице.\n# Овај списак важи само за овај вики, за остале употребе погледајте глобални црни списак.\n# Документација је на https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# Синтакса је следећа:\n# * Све од знака „#“ до краја линије је коментар\n# * Свака линија која није празна је део регуларног израза (regex fragment) која одговара имену хоста у URL-у\n\n #</pre> <!-- ову линију не дирајте -->",
"spam-whitelist": " #<!-- ову линију не дирајте--> <pre>\n# URL-и наведени овде *неће* бити блокирани чак и ако\n# се налазе на црном списку.\n#\n# Синтакса је следећа:\n# * Све од знака „#“ до краја линије је коментар\n# * Свака линија која није празна је део регуларног израза (regex fragment) која одговара имену хоста у URL-у\n\n #</pre> <!-- ову линију не дирајте -->",
"spam-blacklist-desc": "Антиспам оруђе засновано на регуларним изразима које онемогућава унос URL адреса односно имејл адреса које се налазе у црном списку",
"log-name-spamblacklist": "Дневник црне листе непожељног садржаја",

View File

@ -12,11 +12,11 @@
"spam-whitelist": " #<!-- bu satırı olduğu gibi bırakın --> <pre>\n# Bu listeyle eşlenen dış bağlantılar *engellenmeyecektir*,\n# karaliste girdileriyle engellenmiş olsalar bile.\n#\n# Sözdizimi aşağıdaki gibidir:\n# * \"#\" karakterinden satır sonuna kadar her şey bir yorumdur\n# * Her boş olmayan satır, sadece URLlerin içindeki sunucularla eşleşen regex parçasıdır\n\n #</pre> <!--bu satırı olduğu gibi bırakın -->",
"email-blacklist": " #<!-- bu çizgiyi aynen olduğu gibi bırakın --> <pre>\n# Bu listeyle eşleşen e-posta adreslerinin e-postaları kaydetmesi veya göndermesi engellenir\n# Bu liste sadece bu wikiyi etkiler; ayrıca küresel kara listeye bakın.\n# Belgeler için bakınız https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# Sözdizimi aşağıdaki gibidir:\n# * Bir \"#\" karakterinden satırın sonuna kadar her şey yorumdur\n# * Boş olmayan her satır yalnızca e-posta adresleri içindeki ana bilgisayarlarla eşleşecek olan regex bir parçadır\n\n #</pre> <!-- bu çizgiyi aynen olduğu gibi bırakın -->",
"email-whitelist": " #<!-- bu çizgiyi aynen olduğu gibi bırakın --> <pre>\n# Bu listeyle eşleşen e-posta adresleri *olmasa bile* engellenmeyecek\n# kara liste girişleri tarafından engellendi.\n#\n# Sözdizimi aşağıdaki gibidir:\n# * Bir \"#\" karakterinden satırın sonuna kadar her şey yorumdur\n# * Boş olmayan her satır yalnızca e-posta adresleri içindeki ana bilgisayarlarla eşleşecek olan regex bir parçadır\n\n #</pre> <!-- bu çizgiyi aynen olduğu gibi bırakın -->",
"spam-blacklisted-email": "Kara listeye e-posta adresi",
"spam-blacklisted-email-text": "E-posta adresinizi şu anda diğer kullanıcılara e-posta gönderme ve gelen kara listeye alındı.",
"spam-blacklisted-email-signup": "Verilen e-posta adresi şu anda gelen kara listeye alındı.",
"spam-blacklisted-email": "Yasak e-posta adresi",
"spam-blacklisted-email-text": "E-posta adresinizin şu anda diğer kullanıcılara e-posta göndermesi yasaklanmıştır.",
"spam-blacklisted-email-signup": "Belirtilen e-posta adresinin şu anda kullanılması yasaktır.",
"spam-invalid-lines": "Şu spam karaliste {{PLURAL:$1|satırı|satırları}} geçersiz düzenli {{PLURAL:$1|tanımdır|tanımlardır}} ve sayfayı kaydetmeden düzeltilmesi gerekmektedir:",
"spam-blacklist-desc": "Düzenli ifade tabanlı anti-spam kayıtlı kullanıcılar için sayfaları ve e-posta adresleri kara listeye URL için izin aracı",
"spam-blacklist-desc": "Kayıtlı kullanıcılar için sayfalardaki URL'lerin ve e-posta adreslerinin yasaklanmasına izin veren normal ifade tabanlı anti-spam aracı",
"log-name-spamblacklist": "Reklam kara listesi günlüğü",
"log-description-spamblacklist": "Bu olaylar, spam kara liste, hit parça.",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}}, $4 eklemeye çalışarak $3 bir spam kara listesine neden oldu.",

View File

@ -15,11 +15,11 @@
"spam-whitelist": " #<!-- не змінюйте цей рядок --> <pre>\n# Зовнішні посилання, що відповідають цьому списку, *не* будуть блокуватися, навіть якщо вони потрапили до чорного списку.\n#\n# Синтаксис:\n# * Усе, починаючи з символу \"#\" і до кінця рядка, вважається коментарем\n# * Кожен непорожній рядок є фрагментом регулярного виразу, який застосовується тільки до вузла в URL\n\n #</pre> <!-- не змінюйте цей рядок -->",
"email-blacklist": "#<!-- не змінюйте цей рядок --> <pre>\n# Адреси електронної пошти, що відповідають цьому списку, будуть заблоковані від реєстрації або надсилання ел. пошти.\n# Цей список діє тільки для даної вікі, існує також загальний чорний список.\n# Докладніше на сторінці https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# Синтаксис:\n# * Все, починаючи з символу \"#\" і до кінця рядка, вважається коментарем\n# * Кожен непорожній рядок є фрагментом регулярного виразу, вживаного тільки до вузлів усередині адреси ел. пошти\n\n#</pre> <!-- не змінюйте цей рядок -->",
"email-whitelist": "#<!-- не змінюйте цей рядок --> <pre>\n# Адреси електронної пошти, що відповідають цьому списку, НЕ БУДУТЬ заблоковані\n# навіть якщо вони занесені до чорного списку.\n#\n#</pre> <!-- не змінюйте цей рядок --> \n# Синтаксис:\n# * Все, починаючи з символу \"#\" і до кінця рядка, вважається коментарем\n# * Кожен непорожній рядок є фрагментом регулярного виразу, вживаного тільки до вузлів усередині адреси ел. пошти",
"spam-blacklisted-email": "Адреса електронної пошти з чорного списку",
"spam-blacklisted-email-text": "Ваша адреса електронної пошти в даний час знаходиться в чорному списку, тому ви не можете надсилати повідомлення іншим користувачам.",
"spam-blacklisted-email-signup": "Вказана Вами адреса електронної пошти наразі занесена до чорного списку і не може бути використаною.",
"spam-blacklisted-email": "Заборонена адреса електронної пошти",
"spam-blacklisted-email-text": "Вашій адресі електронної пошти зараз заборонено надсилати листи іншим користувачам.",
"spam-blacklisted-email-signup": "Вказана вами адреса електронної пошти наразі заборонена до використання.",
"spam-invalid-lines": "{{PLURAL:$1|1=Наступний рядок із чорного списку посилань містить помилковий регулярний вираз і його треба виправити|Наступні рядки із чорного списку посилань містять помилкові регулярні вирази і їх треба виправити}} перед збереженням:",
"spam-blacklist-desc": "Засновану на регулярних виразах антиспам інструмент, який дозволяє кидати у чорний список URL сторінки і адреси електронної пошти для зареєстрованих користувачів",
"spam-blacklist-desc": "Заснований на регулярних виразах антиспам-інструмент, який дозволяє забороняти URL на сторінках і адреси електронної пошти для зареєстрованих користувачів",
"log-name-spamblacklist": "Журнал чорного списку спамерів",
"log-description-spamblacklist": "Ці події відстежують потрапляння у чорний список спамерів.",
"logentry-spamblacklist-hit": "$1 спричинив потрапляння у чорний список спамерів на $3, намагаючись додати $4.",

View File

@ -10,18 +10,19 @@
"Supaiku",
"WhitePhosphorus",
"Yfdyh000",
"乌拉跨氪"
"乌拉跨氪",
"列维劳德"
]
},
"spam-blacklist": " #<!-- 请完整地保留此行 --> <pre>\n# 当加入的外部URL匹配该表时则会被禁止。\n# 该表只会影响本wiki项目请同时参阅全域黑名单。\n# 文档参见https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# 语法如下:\n# * 由“#”开头的每行均为注释\n# * 非空白行为正则表达式片段其只与内含该片段的URL匹配\n\n #</pre> <!-- 请完整地保留此行 -->",
"spam-whitelist": " #<!-- 请完整地保留此行 --> <pre>\n# 与该表匹配的URL即使已被黑名单的规则禁止也*不会*被封禁。\n#\n# 语法如下:\n# * 由“#”开头的每行均为注释\n# * 非空白行为正则表达式片段其只与内含该片段的URL匹配\n\n #</pre> <!-- 请完整地保留此行 -->",
"email-blacklist": " #<!-- 请完整地保留此行 --> <pre>\n# 与该表匹配的电子邮件地址将被禁止注册及发送邮件\n# 该表只会影响本wiki项目请同时参阅全域黑名单。\n# 注解请见 https://www.mediawiki.org/wiki/Extension:SpamBlacklist\n#\n# 语法如下:\n# * 由“#”开头的每行均为注释\n# * 非空白行为正则表达式片段,其只与内含该片段的电子邮件地址匹配\n\n #</pre> <!-- 请完整地保留此行 -->",
"email-whitelist": " #<!-- 请完整地保留此行 --> <pre>\n# 与该表匹配的电子邮件地址,即使已被黑名单的规则禁止也*不会*被封禁。\n#\n# 格式如下:\n# * 由“#”开头的每行均为注释\n# * 非空白行为正则表达式片段,其只与内含该片段的电子邮件地址匹配\n\n #</pre> <!-- 请完整地保留此行 -->",
"spam-blacklisted-email": "黑名单中的电子邮件地址",
"spam-blacklisted-email-text": "您的电子邮件地址目前已被列入黑名单以禁止您给其他用户发送邮件。",
"spam-blacklisted-email-signup": "所给电邮地址已被列入黑名单以禁止使用。",
"spam-blacklisted-email": "禁止的电子邮件地址",
"spam-blacklisted-email-text": "您的电子邮件地址目前已被禁止您给其他用户发送邮件。",
"spam-blacklisted-email-signup": "所给电邮地址已被禁止使用。",
"spam-invalid-lines": "下列垃圾链接黑名单存在{{PLURAL:$1|一行|多行}}无效的正则表示式,请在保存前修正:",
"spam-blacklist-desc": "基于正则表达式的反垃圾工具允许将页面URL及注册用电子邮件地址列入黑名单",
"spam-blacklist-desc": "基于正则表达式的反垃圾工具允许将页面URL及注册用电子邮件地址禁止",
"log-name-spamblacklist": "垃圾链接黑名单日志",
"log-description-spamblacklist": "这个列表跟踪垃圾链接黑名单的触发。",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}}在$3上试图加入$4触发了垃圾链接黑名单。",

View File

@ -17,11 +17,11 @@
"spam-whitelist": " #<!-- 請勿更動此行 --> <pre>\n# 任何外部 URL 於此清單中將 *不* 會被封鎖\n# 即使已經被加入封鎖清單當中。\n#\n# 語法格式如下:\n# * 任何以 \"#\" 字元開頭的行皆為註解\n# * 任何非空白的行會被作為正規表示法用來比對 URL 中的主機名稱\n #</pre> <!-- 請勿更動此行 -->",
"email-blacklist": " #<!-- 請勿更動此行 --> <pre>\n# 任何註冊或送出的 Email 位址於此清單之中將會被封鎖。\n# 此清單有效範圍僅在本 Wiki詳情請參考全域封鎖清單。\n# 相關文件請參考 https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:SpamBlacklist\n#\n# 語法格式如下:\n# * 任何以 \"#\" 字元開頭的行皆為註解\n# * 任何非空白的行會被作為正規表示法用來比對 Email 位址中的主機名稱\n #</pre> <!-- 請勿更動此行 -->",
"email-whitelist": " #<!-- 請勿更動此行 --> <pre>\n# 任何 Email 位址於此清單中將 *不* 會被封鎖\n# 即使已經被加入封鎖清單當中。\n#\n# 語法格式如下:\n# * 任何以 \"#\" 字元開頭的行皆為註解\n# * 任何非空白的行會被作為正規表示法用來比對 Email 位址中的主機名稱\n #</pre> <!-- 請勿更動此行 -->",
"spam-blacklisted-email": "已列入黑名單的電子郵件地址",
"spam-blacklisted-email-text": "您的電子郵件地址目前已被列入黑名單,以防止您傳送郵件給其他使用者。",
"spam-blacklisted-email-signup": "提供的電子郵件地址目前已被列入黑名單,無法使用。",
"spam-blacklisted-email": "已禁止的電子郵件地址",
"spam-blacklisted-email-text": "您的電子郵件地址目前已被禁止,以防止您傳送郵件給其他使用者。",
"spam-blacklisted-email-signup": "提供的電子郵件地址目前已被禁止,無法使用。",
"spam-invalid-lines": "下列垃圾連結黑名單中有{{PLURAL:$1|一行|多行}}使用了無效的正規表示法,須修正後才可儲存此頁面:",
"spam-blacklist-desc": "以正規表示法為基礎的防濫用工具,可將頁面中的URL及已註冊使用者的Email地址列入黑名單。",
"spam-blacklist-desc": "以正規表示法為基礎的防濫用工具,可禁止頁面中的URL以及已註冊使用者的電子郵件位址。",
"log-name-spamblacklist": "垃圾連結黑名單日誌",
"log-description-spamblacklist": "此頁記錄了觸發垃圾連結黑名單的事件。",
"logentry-spamblacklist-hit": "{{GENDER:$2|$1}} 於 $3 嘗試加入的 $4 符合垃圾連結黑名單中的項目。",

View File

@ -366,7 +366,8 @@ abstract class BaseBlacklist {
if ( !is_string( $httpText ) || ( !$warning && !mt_rand( 0, $this->warningChance ) ) ) {
wfDebugLog( 'SpamBlacklist', "Loading $listType blacklist from $fileName\n" );
$httpText = Http::get( $fileName );
$httpText = MediaWikiServices::getInstance()->getHttpRequestFactory()
->get( $fileName, [], __METHOD__ );
if ( $httpText === false ) {
wfDebugLog( 'SpamBlacklist', "Error loading $listType blacklist from $fileName\n" );
}

View File

@ -4,8 +4,8 @@ use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\Database;
class SpamBlacklist extends BaseBlacklist {
const STASH_TTL = 180;
const STASH_AGE_DYING = 150;
private const STASH_TTL = 180;
private const STASH_AGE_DYING = 150;
/**
* Returns the code for the blacklist implementation

View File

@ -1,5 +1,9 @@
<?php
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Storage\EditResult;
use MediaWiki\User\UserIdentity;
/**
* Hooks for the spam blacklist extension
*/
@ -139,35 +143,25 @@ class SpamBlacklistHooks {
}
/**
* Hook function for PageContentSaveComplete
* Hook function for PageSaveComplete
* Clear local spam blacklist caches on page save.
*
* @param WikiPage $wikiPage
* @param User $user
* @param Content $content
* @param UserIdentity $userIdentity
* @param string $summary
* @param bool $isMinor
* @param bool $isWatch
* @param string $section
* @param int $flags
* @param Revision|null $revision
* @param Status $status
* @param int $baseRevId
* @param RevisionRecord $revisionRecord
* @param EditResult $editResult
*
* @return bool
*/
public static function pageSaveContent(
WikiPage $wikiPage,
User $user,
Content $content,
$summary,
$isMinor,
$isWatch,
$section,
$flags,
$revision,
Status $status,
$baseRevId
UserIdentity $userIdentity,
string $summary,
int $flags,
RevisionRecord $revisionRecord,
EditResult $editResult
) {
if ( !BaseBlacklist::isLocalSource( $wikiPage->getTitle() ) ) {
return true;

View File

@ -43,7 +43,7 @@ class Cleanup extends Maintenance {
$dryRun = $this->hasOption( 'dry-run' );
$dbr = wfGetDB( DB_REPLICA );
$maxID = (int)$dbr->selectField( 'page', 'MAX(page_id)' );
$maxID = (int)$dbr->selectField( 'page', 'MAX(page_id)', [], __METHOD__ );
$reportingInterval = 100;
$this->output( "Regexes are " . implode( ', ', array_map( 'count', $regexes ) ) . " bytes\n" );

View File

@ -1,27 +1,29 @@
mw.libs.ve.targetLoader.addPlugin( function () {
mw.loader.using( 'ext.visualEditor.targetLoader' ).then( function () {
mw.libs.ve.targetLoader.addPlugin( function () {
ve.init.mw.SpamBlacklistSaveErrorHandler = function () {};
ve.init.mw.SpamBlacklistSaveErrorHandler = function () {};
OO.inheritClass( ve.init.mw.SpamBlacklistSaveErrorHandler, ve.init.mw.SaveErrorHandler );
OO.inheritClass( ve.init.mw.SpamBlacklistSaveErrorHandler, ve.init.mw.SaveErrorHandler );
ve.init.mw.SpamBlacklistSaveErrorHandler.static.name = 'spamBlacklist';
ve.init.mw.SpamBlacklistSaveErrorHandler.static.name = 'spamBlacklist';
ve.init.mw.SpamBlacklistSaveErrorHandler.static.matchFunction = function ( data ) {
return data.errors && data.errors.some( function ( err ) {
return err.code === 'spamblacklist';
} );
};
ve.init.mw.SpamBlacklistSaveErrorHandler.static.matchFunction = function ( data ) {
return data.errors && data.errors.some( function ( err ) {
return err.code === 'spamblacklist';
} );
};
ve.init.mw.SpamBlacklistSaveErrorHandler.static.process = function ( data, target ) {
// Handle spam blacklist error from Extension:SpamBlacklist
target.showSaveError(
target.extractErrorMessages( data ),
false // prevents reapply
);
// Emit event for tracking. TODO: This is a bad design
target.emit( 'saveErrorSpamBlacklist' );
};
ve.init.mw.SpamBlacklistSaveErrorHandler.static.process = function ( data, target ) {
// Handle spam blacklist error from Extension:SpamBlacklist
target.showSaveError(
target.extractErrorMessages( data ),
false // prevents reapply
);
// Emit event for tracking. TODO: This is a bad design
target.emit( 'saveErrorSpamBlacklist' );
};
ve.init.mw.saveErrorHandlerFactory.register( ve.init.mw.SpamBlacklistSaveErrorHandler );
ve.init.mw.saveErrorHandlerFactory.register( ve.init.mw.SpamBlacklistSaveErrorHandler );
} );
} );

View File

@ -15,6 +15,7 @@
"parallel-lint . --exclude vendor --exclude node_modules",
"phpcs -p -s",
"minus-x check ."
]
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -1,10 +1,10 @@
{
"require-dev": {
"jakub-onderka/php-parallel-lint": "1.0.0",
"jakub-onderka/php-console-highlighter": "0.4.0",
"mediawiki/mediawiki-codesniffer": "30.0.0",
"mediawiki/minus-x": "1.0.0",
"mediawiki/mediawiki-phan-config": "0.9.1"
"mediawiki/mediawiki-codesniffer": "31.0.0",
"mediawiki/mediawiki-phan-config": "0.10.2",
"mediawiki/minus-x": "1.1.0",
"php-parallel-lint/php-console-highlighter": "0.5.0",
"php-parallel-lint/php-parallel-lint": "1.2.0"
},
"scripts": {
"fix": [
@ -15,9 +15,7 @@
"parallel-lint . --exclude node_modules --exclude vendor",
"phpcs -p -s",
"minus-x check ."
]
},
"extra": {
"phan-taint-check-plugin": "2.0.1"
],
"phan": "phan -d . --long-progress-bar"
}
}

View File

@ -67,16 +67,26 @@
"dependencies": [
"mediawiki.api"
],
"targets": [ "desktop", "mobile" ]
"targets": [
"desktop",
"mobile"
]
},
"ext.titleblacklist.visualEditor": {
"scripts": "ve-titleblacklist/ve.init.mw.TitleBlacklistSaveErrorHandler.js",
"targets": [ "desktop", "mobile" ]
"targets": [
"desktop",
"mobile"
]
}
},
"attributes": {
"VisualEditor": {
"PluginModules": [
"ext.titleblacklist.visualEditor"
]
}
},
"VisualEditorPluginModules": [
"ext.titleblacklist.visualEditor"
],
"ResourceFileModulePaths": {
"localBasePath": "modules",
"remoteExtPath": "TitleBlacklist/modules"
@ -94,7 +104,7 @@
"EditFilter": [
"TitleBlacklistHooks::onValidateBlacklist"
],
"PageContentSaveComplete": [
"PageSaveComplete": [
"TitleBlacklistHooks::onClearBlacklist"
],
"ScribuntoExternalLibraries": [
@ -102,15 +112,25 @@
]
},
"config": {
"TitleBlacklistSources": [],
"TitleBlacklistUsernameSources": "*",
"TitleBlacklistLogHits": false,
"TitleBlacklistCaching": {
"warningchance": 100,
"expiry": 900,
"warningexpiry": 600
"TitleBlacklistSources": {
"value": []
},
"TitleBlacklistBlockAutoAccountCreation": true
"TitleBlacklistUsernameSources": {
"value": "*"
},
"TitleBlacklistLogHits": {
"value": false
},
"TitleBlacklistCaching": {
"value": {
"warningchance": 100,
"expiry": 900,
"warningexpiry": 600
}
},
"TitleBlacklistBlockAutoAccountCreation": {
"value": true
}
},
"AuthManagerAutoConfig": {
"preauth": {
@ -119,5 +139,5 @@
}
}
},
"manifest_version": 1
"manifest_version": 2
}

View File

@ -2,14 +2,15 @@
"@metadata": {
"authors": [
"Debenben",
"Kghbln",
"Metalhead64"
]
},
"apihelp-titleblacklist-description": "Überprüft einen Seiten-, Datei- oder Benutzernamen gegen die Titel-Blacklist.",
"apihelp-titleblacklist-summary": "Überprüft einen Seiten-, Datei- oder Benutzernamen gegen die Titel-Blacklist.",
"apihelp-titleblacklist-param-title": "Die Zeichenfolge, die gegen die Blacklist geprüft werden soll.",
"apihelp-titleblacklist-description": "Überprüft einen Seiten-, Datei- oder Benutzernamen gegen die Titel-Negativliste.",
"apihelp-titleblacklist-summary": "Überprüft einen Seiten-, Datei- oder Benutzernamen gegen die Titel-Negativliste.",
"apihelp-titleblacklist-param-title": "Die Zeichenfolge, die gegen die Negativliste geprüft werden soll.",
"apihelp-titleblacklist-param-action": "Die zu überprüfende Aktion.",
"apihelp-titleblacklist-param-nooverride": "Nicht versuchen, die Titel-Blacklist zu überschreiben.",
"apihelp-titleblacklist-example-1": "Überprüft, ob [[Foo]] blackgelistet ist",
"apihelp-titleblacklist-example-2": "Überprüft, ob [[Bar]] für das Bearbeiten blackgelistet ist"
"apihelp-titleblacklist-param-nooverride": "Nicht versuchen, die Titel-Negativliste zu überschreiben.",
"apihelp-titleblacklist-example-1": "Überprüft, ob [[Foo]] auf der Negativliste steht",
"apihelp-titleblacklist-example-2": "Überprüft, ob [[Bar]] für das Bearbeiten gesperrt ist"
}

View File

@ -2,11 +2,14 @@
"@metadata": {
"authors": [
"2nd-player",
"Kkairri",
"Otokoume",
"Yusuke1109"
]
},
"apihelp-titleblacklist-description": "TitleBllacklist に対してページ名、ファイル名、利用者名を検証します。",
"apihelp-titleblacklist-summary": "TitleBllacklist に対してページ名、ファイル名、利用者名を検証します。",
"apihelp-titleblacklist-param-title": "TitleBllacklist に対して検証する文字列",
"apihelp-titleblacklist-param-action": "確認対象の操作",
"apihelp-titleblacklist-param-nooverride": "titleblacklistを上書きしようとしないでください。",
"apihelp-titleblacklist-example-1": "[[Foo]]がブラックリストに載っているかどうかを確認する",

View File

@ -8,6 +8,8 @@
"Mormegil"
]
},
"action-tboverride": "ignorovat černou listinu názvu nebo uživatelských jmen",
"action-tboverride-account": "ignorovat černou listinu uživatelských jmen",
"action-titleblacklistlog": "prohlížet knihu černé listiny názvů",
"log-name-titleblacklist": "Kniha černé listiny názvů",
"log-description-titleblacklist": "Tyto události sledují zásahy černé listiny názvů.",
@ -20,7 +22,7 @@
"titleblacklist-forbidden-upload": "Soubor s jménem „$2“ je zakázáno vytvářet. Název odpovídá následujícímu záznamu na černé listině: <code>$1</code>",
"titleblacklist-forbidden-new-account": "Není dovoleno zaregistrovat uživatelské jméno „$2“.\nOdpovídá následující položce černé listiny: <code>$1</code>",
"titleblacklist-invalid": "Na černé listině názvů {{PLURAL:$1|je následující řádka neplatný regulární výraz|jsou následující řádky neplatné regulární výrazy|jsou následující řádky regulární výrazy}} a je nutné {{PLURAL:$1|ji|je|je}} před uložením stránky opravit :",
"titleblacklist-override": "Ignorovat černou listinu",
"titleblacklist-override": "V případě shody ignorovat černou listinu názvů",
"titleblacklist-warning": "<strong>Upozornění: Tuto stránku mohou editovat jen správci a další uživatelé s oprávněním <code>tboverride</code>, protože odpovídá následujícímu záznamu černé listiny názvů:</strong><br /><code>$1</code>",
"right-tboverride": "Překonání zakázaných názvů stránek nebo uživatelských jmen",
"right-tboverride-account": "Překonání černé listiny uživatelských jmen",

View File

@ -2,11 +2,12 @@
"@metadata": {
"authors": [
"Filzstift",
"Geitost"
"Geitost",
"Kghbln"
]
},
"titleblacklist": "# Dies ist eine Schwarze Liste für Seiten- und Benutzernamen. Wenn auf einen solchen Namen einer der folgenden regulären Ausdrücke zutrifft, kann er nicht erstellt werden.\n# Verwende «#» für Kommentare.\n# Standardgemäss wird nicht zwischen Gross- und Kleinschreibung unterschieden.",
"titleblacklist": "# Dies ist eine Negativliste für Seiten- und Benutzernamen. Wenn auf einen solchen Namen einer der folgenden regulären Ausdrücke zutrifft, kann er nicht erstellt werden.\n# Verwende «#» für Kommentare.\n# Standardgemäss wird nicht zwischen Gross- und Kleinschreibung unterschieden.",
"titlewhitelist": "# Dies ist die Ausnahmeliste von der Schwarzen Liste unerwünschter Seiten- und Benutzernamen. Benutze «#» für Kommentare.\n# Standardmässig wird nicht zwischen Gross- und Kleinschreibung unterschieden.",
"right-tboverride": "Die schwarze Liste unerwünschter Seiten- oder Benutzernamen ausser Kraft setzen",
"right-tboverride-account": "Die schwarze Liste unerwünschter Benutzernamen ausser Kraft setzen."
"right-tboverride": "Die Negativliste unerwünschter Seiten- oder Benutzernamen ausser Kraft setzen",
"right-tboverride-account": "Die Negativliste unerwünschter Benutzernamen ausser Kraft setzen."
}

View File

@ -5,7 +5,7 @@
"Kghbln"
]
},
"titleblacklist": "# Dies ist eine Schwarze Liste für Seiten- und Benutzernamen. Sofern auf einen solchen Namen einer der folgenden regulären Ausdrücke zutrifft, kann er nicht erstellt werden.\n# Verwenden Sie „#“ für Kommentare.\n# Standardmäßig wird nicht zwischen Groß- und Kleinschreibung unterschieden.",
"titleblacklist": "# Dies ist eine Negativliste für Seiten- und Benutzernamen. Sofern auf einen solchen Namen einer der folgenden regulären Ausdrücke zutrifft, kann er nicht erstellt werden.\n# Verwenden Sie „#“ für Kommentare.\n# Standardmäßig wird nicht zwischen Groß- und Kleinschreibung unterschieden.",
"titlewhitelist": "# Dies ist die Ausnahmeliste von der Schwarzen Liste unerwünschter Seiten- und Benutzernamen. Benutzen Sie „#“ für Kommentare.\n# Standardmäßig wird nicht zwischen Groß- und Kleinschreibung unterschieden.",
"titleblacklist-invalid": "Die {{PLURAL:$1|folgende Zeile|folgenden Zeilen}} in der Sperrliste {{PLURAL:$1|ist|sind}} ungültig; bitte korrigieren Sie diese vor dem Speichern:"
}

View File

@ -15,24 +15,24 @@
"Wnme"
]
},
"action-tboverride": "die schwarze Liste unerwünschter Seiten- oder Benutzernamen außer Kraft zu setzen",
"action-tboverride-account": "die schwarze Liste unerwünschter Benutzernamen außer Kraft zu setzen",
"action-titleblacklistlog": "das Titel-Blacklist-Logbuch anzusehen",
"log-name-titleblacklist": "Titel-Blacklist-Logbuch",
"log-description-titleblacklist": "Dies ist ein Logbuch der Titel-Blacklist-Treffer.",
"logentry-titleblacklist-hit-username": "$1 {{GENDER:$2|verursachte}} einen Titel-Blacklist-Treffer beim Versuch, das Benutzerkonto $3 mit dem übereinstimmenden Eintrag „$4“ zu erstellen.",
"action-tboverride": "die Negativliste unerwünschter Seiten- oder Benutzernamen außer Kraft zu setzen",
"action-tboverride-account": "die Negativliste unerwünschter Benutzernamen außer Kraft zu setzen",
"action-titleblacklistlog": "das Titel-Negativliste-Logbuch anzusehen",
"log-name-titleblacklist": "Titel-Negativlisten-Logbuch",
"log-description-titleblacklist": "Dies ist ein Logbuch der Titel-Negativliste-Treffer.",
"logentry-titleblacklist-hit-username": "$1 {{GENDER:$2|verursachte}} einen Treffer in der Titel-Negativliste beim Versuch, das Benutzerkonto $3 mit dem übereinstimmenden Eintrag „$4“ zu erstellen.",
"titleblacklist-desc": "Ermöglicht es Administratoren die Erstellung unerwünschter Seiten- und Benutzernamen zu unterbinden: [[MediaWiki:Titleblacklist]] und [[MediaWiki:Titlewhitelist]]",
"titleblacklist": "# Dies ist eine Schwarze Liste für Seiten- und Benutzernamen. Sofern auf einen solchen Namen einer der folgenden regulären Ausdrücke zutrifft, kann er nicht erstellt werden.\n# Verwende „#“ für Kommentare.\n# Standardmäßig wird nicht zwischen Groß- und Kleinschreibung unterschieden.",
"titleblacklist": "# Dies ist eine Negativliste für Seiten- und Benutzernamen. Sofern auf einen solchen Namen einer der folgenden regulären Ausdrücke zutrifft, kann er nicht erstellt werden.\n# Verwende „#“ für Kommentare.\n# Standardmäßig wird nicht zwischen Groß- und Kleinschreibung unterschieden.",
"titlewhitelist": "# Dies ist die Ausnahmeliste von der Schwarzen Liste unerwünschter Seiten- und Benutzernamen. Benutze „#“ für Kommentare.\n# Standardmäßig wird nicht zwischen Groß- und Kleinschreibung unterschieden.",
"titleblacklist-forbidden-edit": "'''Eine Seite mit dem Titel „$2“ kann nicht erstellt werden.'''<br />Der Titel kollidiert mit diesem Sperrbegriff: '''''$1'''''",
"titleblacklist-forbidden-move": "'''Die Seite „$2“ kann nicht nach „$3“ verschoben werden.'''<br />Der Titel kollidiert mit diesem Sperrbegriff: '''''$1'''''",
"titleblacklist-forbidden-upload": "'''Eine Datei mit dem Namen „$2“ kann nicht hochgeladen werden.'''<br />Der Titel kollidiert mit diesem Sperrbegriff: '''''$1'''''",
"titleblacklist-forbidden-new-account": "Die Registrierung des Benutzernamens „$2“ ist nicht erwünscht.\nFolgender Eintrag aus der Liste unerwünschter Benutzernamen führte zur Ablehnung: <code>$1</code>",
"titleblacklist-invalid": "Die {{PLURAL:$1|folgende Zeile|folgenden Zeilen}} in der Sperrliste {{PLURAL:$1|ist|sind}} ungültig; bitte korrigiere diese vor dem Speichern:",
"titleblacklist-override": "Die Titel-Blacklist bei Treffern umgehen",
"titleblacklist-override-help": "Benutzer mit ausreichenden Rechten können dies setzen, um die Titel-Blacklist-Prüfungen zu ignorieren.",
"titleblacklist-warning": "<strong>Warnung: Diese Seite kann nur von Administratoren und anderen Benutzern mit dem <code>tboverride</code>-Recht bearbeitet werden, da sie mit dem folgenden Titel-Blacklist-Eintrag übereinstimmt:</strong><br /><code>$1</code>",
"right-tboverride": "Die schwarze Liste unerwünschter Seiten- oder Benutzernamen außer Kraft setzen",
"right-tboverride-account": "Die schwarze Liste unerwünschter Benutzernamen außer Kraft setzen",
"right-titleblacklistlog": "Das Titel-Blacklist-Logbuch ansehen"
"titleblacklist-override": "Die Titel-Negativliste bei Treffern umgehen",
"titleblacklist-override-help": "Benutzer mit ausreichenden Rechten können dies setzen, um die Titel-Negativliste-Prüfungen zu ignorieren.",
"titleblacklist-warning": "<strong>Warnung: Diese Seite kann nur von Administratoren und anderen Benutzern mit dem <code>tboverride</code>-Recht bearbeitet werden, da sie mit dem folgenden Eintrag in der Titel-Negativliste übereinstimmt:</strong><br /><code>$1</code>",
"right-tboverride": "Die Negativliste unerwünschter Seiten- oder Benutzernamen außer Kraft setzen",
"right-tboverride-account": "Die Negativliste unerwünschter Benutzernamen außer Kraft setzen",
"right-titleblacklistlog": "Das Titel-Negativliste-Logbuch ansehen"
}

View File

@ -14,6 +14,7 @@
"Tiberius1701"
]
},
"action-tboverride": "ignorar la lista negra de títulos o de nombres de usuario",
"action-tboverride-account": "ignorar la lista negra de nombres de usuario",
"action-titleblacklistlog": "ver el registro de la lista negra de títulos",
"log-name-titleblacklist": "Registro de la lista negra de títulos",

View File

@ -1,20 +1,23 @@
{
"@metadata": {
"authors": [
"Diki Ananta",
"Meursault2004",
"N219",
"NoiX180",
"Pras"
"Pras",
"Sumbukompor"
]
},
"titleblacklist-desc": "Marengaké pangurus menggak wong nggawé kaca lan akun miturut [[MediaWiki:Titleblacklist|daftar-ireng]] lan [[MediaWiki:Titlewhitelist|daftar-putih]]",
"titleblacklist": "# Iki dhaptar-ireng irah-irahan. Irah-irahan lan panganggo sing cocog karo sawijining regex ing kéné ora bisa digawé.\n# Anggonen \"#\" kanggo komentar.\n# Dhaptar iki sacara baku ora mbédakaké aksara gedhé-cilik.",
"titleblacklist-desc": "Ngoléhaké panata menggak wong nggawé kaca lan akun miturut [[MediaWiki:Titleblacklist|daftar-ireng]] lan [[MediaWiki:Titlewhitelist|daftar-putih]]",
"titleblacklist": "# Iki dhaptar-ireng irah-irahan. Irah-irahan lan naraguna sing cocog karo sawijining regex ing kéné ora bisa digawé.\n# Anggonen \"#\" kanggo komentar.\n# Dhaptar iki sacara baku ora mbédakaké aksara gedhé-cilik.",
"titlewhitelist": "# Dhaptar iki arupa dhaptar-putih irah-irahan. Anggonen \"#\" kanggo komentar.\n# Dhaptar iki sacara baku ora mbédakaké aksara gedhé-cilik.",
"titleblacklist-forbidden-edit": "Sesirah \"$2\" dilarang digawé.\nSesirah iki cocog karo isi pratélan ireng iki: <code>$1</code>",
"titleblacklist-forbidden-move": "\"$2\" ora bisa dipindhahaké menyang \"$3\", amerga irah-irahan iki \"$3\" dilarang ora olèh digawé.\nIrah-irahan iki soalé cocog karo èntri daftar ireng iki: <code>$1</code>",
"titleblacklist-forbidden-upload": "Jeneng berkas \"$2\" wis dilarang kanggo digawé. \nIrah-irahan iku cocog karo èntri daftar ireng iki: <code>$1</code>",
"titleblacklist-forbidden-new-account": "Jeneng panganggo \"$2\" wis dipenggak.\nIki cocog karo jeneng ing dhaptar-ireng: <code>$1</code>",
"titleblacklist-forbidden-new-account": "Jeneng naraguna \"$2\" wis dipenggak.\nIki cocog karo jeneng ing dhaptar-ireng: <code>$1</code>",
"titleblacklist-invalid": "{{PLURAL:$1|Baris|Baris-baris}} ing daftar ireng irah-irahan (judhul) {{PLURAL:$1|ing ngisor|ing ngisor}} iki ora absah; mangga dikorèksi {{PLURAL:$1|item|item-item}} iku sadurungé disimpen:",
"titleblacklist-override": "Lirwakaké pratélan ireng",
"right-tboverride": "''Override'' daftar ireng judhul",
"right-tboverride-account": "Lirwakaké pratélan ireng bab jeneng panganggo"
"right-tboverride-account": "Lirwakaké pratélan ireng bab jeneng naraguna"
}

View File

@ -26,7 +26,8 @@ class TitleBlacklist {
/** @var TitleBlacklist|null */
protected static $instance = null;
const VERSION = 3; // Blacklist format
/** Blacklist format */
public const VERSION = 3;
/**
* Get an instance of this class
@ -304,9 +305,14 @@ class TitleBlacklist {
if ( !is_string( $result )
|| ( !$warn && !mt_rand( 0, $wgTitleBlacklistCaching['warningchance'] ) )
) {
$result = Http::get( $url );
$result = MediaWikiServices::getInstance()->getHttpRequestFactory()
->get( $url, [], __METHOD__ );
$cache->set( $warnkey, 1, $wgTitleBlacklistCaching['warningexpiry'] );
$cache->set( $key, $result, $wgTitleBlacklistCaching['expiry'] );
if ( !$result ) {
wfDebugLog( 'TitleBlacklist-cache', "Error loading title blacklist from $url\n" );
$result = '';
}
}
return $result;

View File

@ -6,6 +6,10 @@
* @license GPL-2.0-or-later
*/
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Storage\EditResult;
use MediaWiki\User\UserIdentity;
/**
* Hooks for the TitleBlacklist class
*
@ -207,18 +211,22 @@ class TitleBlacklistHooks {
}
/**
* PageContentSaveComplete hook
* PageSaveComplete hook
*
* @param WikiPage $wikiPage
* @param User $user
* @param Content $content
* @param UserIdentity $userIdentity
* @param string $summary
* @param bool $isminor
* @param bool $iswatch
* @param string $section
* @param int $flags
* @param RevisionRecord $revisionRecord
* @param EditResult $editResult
*/
public static function onClearBlacklist(
WikiPage $wikiPage, $user, $content, $summary, $isminor, $iswatch, $section
WikiPage $wikiPage,
UserIdentity $userIdentity,
string $summary,
int $flags,
RevisionRecord $revisionRecord,
EditResult $editResult
) {
$title = $wikiPage->getTitle();
if ( $title->getNamespace() === NS_MEDIAWIKI && $title->getDBkey() == 'Titleblacklist' ) {

View File

@ -1,23 +1,25 @@
mw.libs.ve.targetLoader.addPlugin( function () {
mw.loader.using( 'ext.visualEditor.targetLoader' ).then( function () {
mw.libs.ve.targetLoader.addPlugin( function () {
ve.init.mw.TitleBlacklistSaveErrorHandler = function () {};
ve.init.mw.TitleBlacklistSaveErrorHandler = function () {};
OO.inheritClass( ve.init.mw.TitleBlacklistSaveErrorHandler, ve.init.mw.SaveErrorHandler );
OO.inheritClass( ve.init.mw.TitleBlacklistSaveErrorHandler, ve.init.mw.SaveErrorHandler );
ve.init.mw.TitleBlacklistSaveErrorHandler.static.name = 'titleBlacklist';
ve.init.mw.TitleBlacklistSaveErrorHandler.static.name = 'titleBlacklist';
ve.init.mw.TitleBlacklistSaveErrorHandler.static.matchFunction = function ( data ) {
return data.errors && data.errors.some( function ( err ) {
return err.code === 'titleblacklist-forbidden';
} );
};
ve.init.mw.TitleBlacklistSaveErrorHandler.static.matchFunction = function ( data ) {
return data.errors && data.errors.some( function ( err ) {
return err.code === 'titleblacklist-forbidden';
} );
};
ve.init.mw.TitleBlacklistSaveErrorHandler.static.process = function ( data, target ) {
// Handle warnings/errors from Extension:TitleBlacklist
target.showSaveError( target.extractErrorMessages( data ), false );
// Emit event for tracking. TODO: This is a bad design
target.emit( 'saveErrorTitleBlacklist' );
};
ve.init.mw.TitleBlacklistSaveErrorHandler.static.process = function ( data, target ) {
// Handle warnings/errors from Extension:TitleBlacklist
target.showSaveError( target.extractErrorMessages( data ), false );
// Emit event for tracking. TODO: This is a bad design
target.emit( 'saveErrorTitleBlacklist' );
};
ve.init.mw.saveErrorHandlerFactory.register( ve.init.mw.TitleBlacklistSaveErrorHandler );
ve.init.mw.saveErrorHandlerFactory.register( ve.init.mw.TitleBlacklistSaveErrorHandler );
} );
} );

View File

@ -24,7 +24,7 @@ class ApiQueryTitleBlacklistTest extends ApiTestCase {
$this->setMwGlobals( 'wgTitleBlacklistSources', [
[
'type' => 'file',
'src' => __DIR__ . '/testSource',
'src' => __DIR__ . '/testSource.txt',
],
] );
}

View File

@ -24,7 +24,7 @@
"license-name": "MIT",
"type": "editor",
"requires": {
"MediaWiki": ">= 1.35.0"
"MediaWiki": ">= 1.35.2"
},
"callback": "VisualEditorHooks::onRegistration",
"config": {

View File

@ -145,7 +145,7 @@
var $textarea = $( '#wpTextbox1' ),
$editingSessionIdInput = $( '#editingStatsId' ),
origText = $textarea.val(),
submitting, onUnloadFallback, dialogsConfig, readyTime;
submitting, onUnloadFallback, readyTime;
if ( $editingSessionIdInput.length ) {
editingSessionId = $editingSessionIdInput.val();
@ -217,6 +217,12 @@
$( '#toolbar' ).remove();
// Add toolbar module
// TODO: Implement .wikiEditor( 'remove' )
mw.addWikiEditor( $textarea );
} );
mw.addWikiEditor = function ( $textarea ) {
var dialogsConfig;
$textarea.wikiEditor(
'addModule', require( './jquery.wikiEditor.toolbar.config.js' )
);
@ -226,5 +232,6 @@
dialogsConfig.replaceIcons( $textarea );
// Add dialogs module
$textarea.wikiEditor( 'addModule', dialogsConfig.getDefaultConfig() );
} );
};
}() );

View File

@ -4141,6 +4141,17 @@ $wgResourceLoaderDebug = false;
*/
$wgIncludeLegacyJavaScript = false;
/**
* Whether to load the jquery.migrate library.
*
* This provides jQuery 1.12 features that were removed in jQuery 3.0.
* See also <https://jquery.com/upgrade-guide/3.0/> and
* <https://phabricator.wikimedia.org/T280944>.
*
* @since 1.35.3
*/
$wgIncludejQueryMigrate = true;
/**
* Whether or not to assign configuration variables to the global window object.
*

View File

@ -37,7 +37,7 @@ use Wikimedia\Rdbms\IDatabase;
*
* @since 1.35
*/
define( 'MW_VERSION', '1.35.2' );
define( 'MW_VERSION', '1.35.3' );
# Obsolete aliases

View File

@ -1634,12 +1634,6 @@ function wfHttpError( $code, $label, $desc ) {
* @param bool $resetGzipEncoding
*/
function wfResetOutputBuffers( $resetGzipEncoding = true ) {
if ( $resetGzipEncoding ) {
// Suppress Content-Encoding and Content-Length
// headers from OutputHandler::handle.
global $wgDisableOutputCompression;
$wgDisableOutputCompression = true;
}
while ( $status = ob_get_status() ) {
if ( isset( $status['flags'] ) ) {
$flags = PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_REMOVABLE;

View File

@ -260,7 +260,7 @@ class HookContainer implements SalvageableService {
$firstArg = $normalizedHandler[0];
// Extract function name, handler object, and any arguments for handler object
// Extract function name, handler callback, and any arguments for the callback
if ( $firstArg instanceof Closure ) {
$functionName = "hook-$hook-closure";
$callback = array_shift( $normalizedHandler );
@ -276,17 +276,25 @@ class HookContainer implements SalvageableService {
if ( $colonPos !== false ) {
// Some extensions use [ $object, 'Class::func' ] which
// worked with call_user_func_array() but doesn't work now
// that we use a plain varadic call
// that we use a plain variadic call
$functionName = substr( $functionName, $colonPos + 2 );
}
}
$callback = [ $object, $functionName ];
} elseif ( is_string( $firstArg ) ) {
$functionName = $callback = array_shift( $normalizedHandler );
if ( is_callable( $normalizedHandler, true, $functionName )
&& class_exists( $firstArg ) // $firstArg can be a function in global scope
) {
$callback = $normalizedHandler;
$normalizedHandler = []; // Can't pass arguments here
} else {
$functionName = $callback = array_shift( $normalizedHandler );
}
} else {
throw new UnexpectedValueException( 'Unknown datatype in hooks for ' . $hook );
}
return [
'callback' => $callback,
'args' => $normalizedHandler,

Some files were not shown because too many files have changed in this diff Show More