summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CommentStreams/.gitignore1
-rw-r--r--CommentStreams/.phpcs.xml5
-rw-r--r--CommentStreams/CODE_OF_CONDUCT.md2
-rw-r--r--CommentStreams/Gruntfile.js13
-rw-r--r--CommentStreams/composer.json12
-rw-r--r--CommentStreams/extension.json64
-rw-r--r--CommentStreams/i18n/ar.json7
-rw-r--r--CommentStreams/i18n/bg.json18
-rw-r--r--CommentStreams/i18n/ce.json4
-rw-r--r--CommentStreams/i18n/cs.json6
-rw-r--r--CommentStreams/i18n/da.json25
-rw-r--r--CommentStreams/i18n/de.json39
-rw-r--r--CommentStreams/i18n/diq.json17
-rw-r--r--CommentStreams/i18n/eo.json11
-rw-r--r--CommentStreams/i18n/es.json1
-rw-r--r--CommentStreams/i18n/fi.json9
-rw-r--r--CommentStreams/i18n/fr.json6
-rw-r--r--CommentStreams/i18n/fy.json8
-rw-r--r--CommentStreams/i18n/gl.json4
-rw-r--r--CommentStreams/i18n/hak.json9
-rw-r--r--CommentStreams/i18n/he.json10
-rw-r--r--CommentStreams/i18n/hi.json4
-rw-r--r--CommentStreams/i18n/hu.json5
-rw-r--r--CommentStreams/i18n/hy.json2
-rw-r--r--CommentStreams/i18n/hyw.json10
-rw-r--r--CommentStreams/i18n/ia.json4
-rw-r--r--CommentStreams/i18n/io.json11
-rw-r--r--CommentStreams/i18n/ja.json6
-rw-r--r--CommentStreams/i18n/jv.json6
-rw-r--r--CommentStreams/i18n/kiu.json11
-rw-r--r--CommentStreams/i18n/kjp.json10
-rw-r--r--CommentStreams/i18n/ko.json4
-rw-r--r--CommentStreams/i18n/mk.json7
-rw-r--r--CommentStreams/i18n/my.json36
-rw-r--r--CommentStreams/i18n/nah.json9
-rw-r--r--CommentStreams/i18n/nb.json66
-rw-r--r--CommentStreams/i18n/nds-nl.json9
-rw-r--r--CommentStreams/i18n/ne.json36
-rw-r--r--CommentStreams/i18n/nl.json10
-rw-r--r--CommentStreams/i18n/ps.json1
-rw-r--r--CommentStreams/i18n/pt-br.json5
-rw-r--r--CommentStreams/i18n/pt.json7
-rw-r--r--CommentStreams/i18n/ro.json13
-rw-r--r--CommentStreams/i18n/ru.json6
-rw-r--r--CommentStreams/i18n/sd.json11
-rw-r--r--CommentStreams/i18n/se.json8
-rw-r--r--CommentStreams/i18n/smn.json8
-rw-r--r--CommentStreams/i18n/sms.json8
-rw-r--r--CommentStreams/i18n/sr-ec.json8
-rw-r--r--CommentStreams/i18n/su.json9
-rw-r--r--CommentStreams/i18n/sv.json7
-rw-r--r--CommentStreams/i18n/ti.json9
-rw-r--r--CommentStreams/i18n/tly.json9
-rw-r--r--CommentStreams/i18n/tr.json154
-rw-r--r--CommentStreams/i18n/ug-arab.json4
-rw-r--r--CommentStreams/i18n/uk.json15
-rw-r--r--CommentStreams/i18n/vec.json8
-rw-r--r--CommentStreams/i18n/za.json9
-rw-r--r--CommentStreams/i18n/zh-hans.json3
-rw-r--r--CommentStreams/i18n/zh-hant.json7
-rw-r--r--CommentStreams/includes/ApiCSBase.php11
-rw-r--r--CommentStreams/includes/ApiCSDeleteComment.php35
-rw-r--r--CommentStreams/includes/ApiCSEditComment.php34
-rw-r--r--CommentStreams/includes/ApiCSPostComment.php36
-rw-r--r--CommentStreams/includes/ApiCSQueryComment.php2
-rw-r--r--CommentStreams/includes/ApiCSUnwatch.php4
-rw-r--r--CommentStreams/includes/ApiCSVote.php8
-rw-r--r--CommentStreams/includes/ApiCSWatch.php4
-rw-r--r--CommentStreams/includes/Comment.php180
-rw-r--r--CommentStreams/includes/CommentStreams.php18
-rw-r--r--CommentStreams/includes/CommentStreamsAllComments.alias.php2
-rw-r--r--CommentStreams/includes/CommentStreamsAllComments.php23
-rw-r--r--CommentStreams/includes/CommentStreamsHooks.php81
-rw-r--r--CommentStreams/includes/CommentStreamsUtils.php6
-rw-r--r--CommentStreams/includes/EchoCSPresentationModel.php6
-rw-r--r--CommentStreams/package-lock.json1864
-rw-r--r--CommentStreams/package.json4
-rw-r--r--CommentStreams/resources/CommentStreams.css2
-rw-r--r--CommentStreams/resources/CommentStreams.js28
-rw-r--r--CommentStreams/resources/CommentStreamsQuerier.js10
80 files changed, 2913 insertions, 271 deletions
diff --git a/CommentStreams/.gitignore b/CommentStreams/.gitignore
index 994b50f7..8ec4b929 100644
--- a/CommentStreams/.gitignore
+++ b/CommentStreams/.gitignore
@@ -1,4 +1,3 @@
node_modules/
vendor/
composer.lock
-package-lock.json
diff --git a/CommentStreams/.phpcs.xml b/CommentStreams/.phpcs.xml
index 3839d784..1b870b71 100644
--- a/CommentStreams/.phpcs.xml
+++ b/CommentStreams/.phpcs.xml
@@ -1,6 +1,9 @@
<?xml version="1.0"?>
<ruleset>
- <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki" />
+ <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+ <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPrivate" />
+ <exclude name="PSR12.Properties.ConstantVisibility.NotFound" />
+ </rule>
<file>.</file>
<arg name="extensions" value="php,php5,inc" />
<arg name="encoding" value="UTF-8" />
diff --git a/CommentStreams/CODE_OF_CONDUCT.md b/CommentStreams/CODE_OF_CONDUCT.md
index d8e5d087..498acf76 100644
--- a/CommentStreams/CODE_OF_CONDUCT.md
+++ b/CommentStreams/CODE_OF_CONDUCT.md
@@ -1 +1 @@
-The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Code_of_Conduct).
+The development of this software is covered by a [Code of Conduct](https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct).
diff --git a/CommentStreams/Gruntfile.js b/CommentStreams/Gruntfile.js
index a45071e1..9a4c9a39 100644
--- a/CommentStreams/Gruntfile.js
+++ b/CommentStreams/Gruntfile.js
@@ -1,12 +1,19 @@
/*jshint node:true */
module.exports = function ( grunt ) {
+ var conf = grunt.file.readJSON( 'extension.json' );
+
grunt.loadNpmTasks( 'grunt-jsonlint' );
grunt.loadNpmTasks( 'grunt-banana-checker' );
grunt.initConfig( {
- banana: {
- all: 'i18n/'
- },
+ banana: Object.assign(
+ conf.MessagesDirs,
+ {
+ options: {
+ requireLowerCase: 'initial'
+ }
+ }
+ ),
jsonlint: {
all: [
'**/*.json',
diff --git a/CommentStreams/composer.json b/CommentStreams/composer.json
index 104cbaef..ace3ac5e 100644
--- a/CommentStreams/composer.json
+++ b/CommentStreams/composer.json
@@ -2,10 +2,10 @@
"name": "mediawiki/comment-streams",
"type": "mediawiki-extension",
"require-dev": {
- "jakub-onderka/php-parallel-lint": "1.0.0",
- "jakub-onderka/php-console-highlighter": "0.3.2",
- "mediawiki/mediawiki-codesniffer": "20.0.0",
- "mediawiki/minus-x": "0.3.1"
+ "mediawiki/mediawiki-codesniffer": "31.0.0",
+ "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": {
"test": [
@@ -14,8 +14,8 @@
"minus-x check ."
],
"fix": [
- "phpcbf",
- "minus-x fix ."
+ "minus-x fix .",
+ "phpcbf"
]
}
}
diff --git a/CommentStreams/extension.json b/CommentStreams/extension.json
index 75048583..aae4b282 100644
--- a/CommentStreams/extension.json
+++ b/CommentStreams/extension.json
@@ -1,6 +1,6 @@
{
"name": "CommentStreams",
- "version": "4.5",
+ "version": "4.7",
"author": [
"[https://www.mediawiki.org/wiki/User:Jji Jason Ji]",
"[https://www.mediawiki.org/wiki/User:Cindy.cicalese Cindy Cicalese]"
@@ -9,8 +9,12 @@
"descriptionmsg": "commentstreams-desc",
"manifest_version": 1,
"type": "parserhook",
+ "license-name": "MIT",
+ "requires": {
+ "MediaWiki": ">= 1.31.0"
+ },
"SpecialPages": {
- "CommentStreamsAllComments": "CommentStreamsAllComments"
+ "CommentStreamsAllComments": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsAllComments"
},
"MessagesDirs": {
"CommentStreams": [
@@ -112,45 +116,33 @@
"localBasePath": "resources",
"remoteExtPath": "CommentStreams/resources"
},
- "AutoloadClasses": {
- "CommentStreamsHooks": "includes/CommentStreamsHooks.php",
- "CommentStreamsUtils": "includes/CommentStreamsUtils.php",
- "CommentStreams": "includes/CommentStreams.php",
- "Comment": "includes/Comment.php",
- "ApiCSBase": "includes/ApiCSBase.php",
- "ApiCSPostComment": "includes/ApiCSPostComment.php",
- "ApiCSQueryComment": "includes/ApiCSQueryComment.php",
- "ApiCSEditComment": "includes/ApiCSEditComment.php",
- "ApiCSDeleteComment": "includes/ApiCSDeleteComment.php",
- "ApiCSVote": "includes/ApiCSVote.php",
- "ApiCSWatch": "includes/ApiCSWatch.php",
- "ApiCSUnwatch": "includes/ApiCSUnwatch.php",
- "EchoCSPresentationModel": "includes/EchoCSPresentationModel.php",
- "CommentStreamsAllComments": "includes/CommentStreamsAllComments.php"
+ "AutoloadNamespaces": {
+ "MediaWiki\\Extension\\CommentStreams\\": "includes/"
},
"APIModules": {
- "csPostComment": "ApiCSPostComment",
- "csQueryComment": "ApiCSQueryComment",
- "csEditComment": "ApiCSEditComment",
- "csDeleteComment": "ApiCSDeleteComment",
- "csVote": "ApiCSVote",
- "csWatch": "ApiCSWatch",
- "csUnwatch": "ApiCSUnwatch"
+ "csPostComment": "MediaWiki\\Extension\\CommentStreams\\ApiCSPostComment",
+ "csQueryComment": "MediaWiki\\Extension\\CommentStreams\\ApiCSQueryComment",
+ "csEditComment": "MediaWiki\\Extension\\CommentStreams\\ApiCSEditComment",
+ "csDeleteComment": "MediaWiki\\Extension\\CommentStreams\\ApiCSDeleteComment",
+ "csVote": "MediaWiki\\Extension\\CommentStreams\\ApiCSVote",
+ "csWatch": "MediaWiki\\Extension\\CommentStreams\\ApiCSWatch",
+ "csUnwatch": "MediaWiki\\Extension\\CommentStreams\\ApiCSUnwatch"
},
"Hooks": {
- "LoadExtensionSchemaUpdates": "CommentStreamsHooks::addCommentTableToDatabase",
- "CanonicalNamespaces": "CommentStreamsHooks::addCommentStreamsNamespaces",
- "MediaWikiPerformAction": "CommentStreamsHooks::onMediaWikiPerformAction",
- "MovePageIsValidMove": "CommentStreamsHooks::onMovePageIsValidMove",
- "userCan": "CommentStreamsHooks::userCan",
- "ParserFirstCallInit": "CommentStreamsHooks::onParserSetup",
- "BeforePageDisplay": "CommentStreamsHooks::addCommentsAndInitializeJS",
- "ShowSearchHitTitle": "CommentStreamsHooks::showSearchHitTitle",
- "smwInitProperties": "CommentStreamsHooks::initProperties",
- "SMWStore::updateDataBefore": "CommentStreamsHooks::updateData",
- "BeforeCreateEchoEvent": "CommentStreamsHooks::onBeforeCreateEchoEvent"
+ "LoadExtensionSchemaUpdates": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::addCommentTableToDatabase",
+ "CanonicalNamespaces": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::addCommentStreamsNamespaces",
+ "MediaWikiPerformAction": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::onMediaWikiPerformAction",
+ "MovePageIsValidMove": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::onMovePageIsValidMove",
+ "userCan": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::userCan",
+ "ParserFirstCallInit": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::onParserSetup",
+ "BeforePageDisplay": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::addCommentsAndInitializeJS",
+ "ShowSearchHitTitle": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::showSearchHitTitle",
+ "smwInitProperties": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::initProperties",
+ "SMWStore::updateDataBefore": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::updateData",
+ "BeforeCreateEchoEvent": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::onBeforeCreateEchoEvent",
+ "SMW::Settings::BeforeInitializationComplete": "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::onSMWInitialization"
},
- "callback" : "CommentStreamsHooks::onRegistration",
+ "callback" : "MediaWiki\\Extension\\CommentStreams\\CommentStreamsHooks::onRegistration",
"config": {
"CommentStreamsNamespaceIndex": 844,
"CommentStreamsAllowedNamespaces" : null,
diff --git a/CommentStreams/i18n/ar.json b/CommentStreams/i18n/ar.json
index 64585be3..bda729dd 100644
--- a/CommentStreams/i18n/ar.json
+++ b/CommentStreams/i18n/ar.json
@@ -1,8 +1,8 @@
{
"@metadata": {
"authors": [
- "محمد أحمد عبد الفتاح",
- "ديفيد"
+ "ديفيد",
+ "محمد أحمد عبد الفتاح"
]
},
"commentstreams-desc": "يسمح بالتعليق على صفحات الويكي",
@@ -154,5 +154,6 @@
"commentstreams-allcomments-label-lasteditor": "آخر محرر",
"commentstreams-allcomments-label-lastedited": "آخر تعديل",
"commentstreams-allcomments-button-next": "التالي",
- "commentstreams-allcomments-button-previous": "السابق"
+ "commentstreams-allcomments-button-previous": "السابق",
+ "commentstreams-ve-conversion-error": "خطأ في التحويل بين نص الويكي وHTML للمحرر المرئي"
}
diff --git a/CommentStreams/i18n/bg.json b/CommentStreams/i18n/bg.json
new file mode 100644
index 00000000..535d249b
--- /dev/null
+++ b/CommentStreams/i18n/bg.json
@@ -0,0 +1,18 @@
+{
+ "@metadata": {
+ "authors": [
+ "StanProg",
+ "Ted Masters",
+ "Vlad5250"
+ ]
+ },
+ "commentstreams-desc": "Позволява коментиране в уики страници",
+ "commentstreams-error-prohibitedaction": "Действието $1 не е разрешено на страници за коментари.",
+ "commentstreams-error-comment-on-deleted-page": "Страницата, към която е бил свързан коментарът, е изтрита.",
+ "commentstreams-author-anonymous": "анонимен",
+ "apihelp-csQueryComment-description": "Връщане на заглавието, потребителя, времето и датата и уики текста на коментара. Трябва да се посочи идентификация на страницата или заглавие.",
+ "apihelp-csQueryComment-summary": "Връщане на заглавието, потребителя, времето и датата, и уики текста на коментара. Трябва да се посочи идентификационен номер на страницата или заглавие.",
+ "commentstreams-buttontooltip-delete": "изтриване",
+ "commentstreams-buttontooltip-cancel": "Отказ",
+ "commentstreams-dialog-buttontext-cancel": "Отказ"
+}
diff --git a/CommentStreams/i18n/ce.json b/CommentStreams/i18n/ce.json
index cb1440d6..a63087f8 100644
--- a/CommentStreams/i18n/ce.json
+++ b/CommentStreams/i18n/ce.json
@@ -5,5 +5,7 @@
]
},
"commentstreams-buttontext-add": "ТӀетоха коммент",
- "commentstreams-buttontext-reply": "Жоп ло"
+ "commentstreams-buttontext-reply": "Жоп ло",
+ "commentstreams-buttontooltip-cancel": "юхаяккхар",
+ "commentstreams-allcomments-button-previous": "Хьалхара"
}
diff --git a/CommentStreams/i18n/cs.json b/CommentStreams/i18n/cs.json
index e9938729..d54180a6 100644
--- a/CommentStreams/i18n/cs.json
+++ b/CommentStreams/i18n/cs.json
@@ -1,10 +1,12 @@
{
"@metadata": {
"authors": [
+ "Dvorapa",
"Ilimanaq29",
- "Dvorapa"
+ "Patriccck"
]
},
"commentstreams-buttontext-add": "Přidat komentář",
- "commentstreams-buttontext-reply": "Odpovědět"
+ "commentstreams-buttontext-reply": "Odpovědět",
+ "commentstreams-ve-conversion-error": "Chyba při převodu mezi Wikitextem a HTML pro Vizuální editor"
}
diff --git a/CommentStreams/i18n/da.json b/CommentStreams/i18n/da.json
new file mode 100644
index 00000000..eb939354
--- /dev/null
+++ b/CommentStreams/i18n/da.json
@@ -0,0 +1,25 @@
+{
+ "@metadata": {
+ "authors": [
+ "Saederup92"
+ ]
+ },
+ "commentstreams-author-anonymous": "anonym",
+ "commentstreams-buttontext-add": "Tilføj kommentar",
+ "commentstreams-buttontext-reply": "Svar",
+ "commentstreams-buttontooltip-add": "tilføj kommentar",
+ "commentstreams-buttontooltip-reply": "svar",
+ "commentstreams-buttontooltip-edit": "rediger",
+ "commentstreams-buttontooltip-delete": "slet",
+ "commentstreams-dialog-buttontext-yes": "Ja",
+ "commentstreams-dialog-buttontext-no": "Nej",
+ "commentstreams-title-field-placeholder": "Indtast titel...",
+ "commentstreamsallcomments": "Alle kommentarer",
+ "commentstreams-allcomments-label-commenttitle": "Kommentartitel",
+ "commentstreams-allcomments-label-wikitext": "Kommentar",
+ "commentstreams-allcomments-label-author": "Forfatter",
+ "commentstreams-allcomments-label-created": "Oprettet",
+ "commentstreams-allcomments-label-lastedited": "Sidst redigeret",
+ "commentstreams-allcomments-button-next": "Næste",
+ "commentstreams-allcomments-button-previous": "Forrige"
+}
diff --git a/CommentStreams/i18n/de.json b/CommentStreams/i18n/de.json
index 76f9c32d..8a506d84 100644
--- a/CommentStreams/i18n/de.json
+++ b/CommentStreams/i18n/de.json
@@ -9,10 +9,46 @@
"commentstreams-error-prohibitedaction": "Die Aktion $1 ist auf Kommentarseiten nicht erlaubt.",
"commentstreams-error-comment-on-deleted-page": "Die Seite, die mit diesem Kommentar verbunden ist, wurde gelöscht.",
"commentstreams-author-anonymous": "Anonym",
+ "apihelp-csQueryComment-param-pageid": "Kennung der Seite, die den abzurufenden Kommentar enthält.",
+ "apihelp-csQueryComment-param-title": "Titel der Seite, die den abzurufenden Kommentar enthält.",
+ "apihelp-csQueryComment-pageid-example": "Ruft den Kommentar mit der Seitenkennung 3 in Wikitext ab",
+ "apihelp-csQueryComment-title-example": "Ruft den Kommentar mit dem Seitentitel CommentStreams:3 in Wikitext ab",
+ "apihelp-csDeleteComment-description": "Löscht einen Kommentar. Entweder muss pageid oder title angegeben werden.",
+ "apihelp-csDeleteComment-summary": "Löscht einen Kommentar. Es muss entweder pageid oder title angegeben werden.",
+ "apihelp-csDeleteComment-param-pageid": "Kennung der Seite, die den zu löschenden Kommentar enthält.",
+ "apihelp-csDeleteComment-param-title": "Titel der Seite, die den zu löschenden Kommentar enthält.",
+ "apihelp-csDeleteComment-pageid-example": "Löscht den Kommentar mit der Seitenkennung 3",
+ "apihelp-csDeleteComment-title-example": "Löscht den Kommentar mit dem Seitentitel CommentStreams:3",
"apihelp-csPostComment-description": "Speichert einen neuen Kommentar.",
"apihelp-csPostComment-summary": "Speichert einen neuen Kommentar.",
"apihelp-csPostComment-param-commenttitle": "optionaler Titel für den Kommentar.",
+ "apihelp-csPostComment-param-wikitext": "Wikitext für den Kommentar.",
+ "apihelp-csPostComment-param-associatedid": "Seite, mit der dieser Kommentar verknüpft ist.",
+ "apihelp-csPostComment-param-parentid": "Seitenkennung des übergeordneten Kommentars, falls dies eine Antwort ist.",
+ "apihelp-csEditComment-description": "Bearbeitet einen vorhandenen Kommentar. Entweder pageid oder title muss angegeben werden.",
+ "apihelp-csEditComment-summary": "Bearbeitet einen vorhandenen Kommentar. Entweder muss pageid oder title angegeben werden.",
+ "apihelp-csEditComment-param-pageid": "Kennung der Seite, die den zu bearbeitenden Kommentar enthält.",
+ "apihelp-csEditComment-param-title": "Titel der Seite, die den zu bearbeitenden Kommentar enthält.",
+ "apihelp-csEditComment-param-commenttitle": "Optionaler Titel für den Kommentar.",
"apihelp-csEditComment-param-wikitext": "Wikitext für den Kommentar.",
+ "apihelp-csVote-description": "Stimmt über einen Kommentar ab (Gefällt mir, Gefällt mir nicht oder neutral).",
+ "apihelp-csVote-summary": "Stimmt über einen Kommentar ab (Gefällt mir, Gefällt mir nicht oder neutral).",
+ "apihelp-csVote-param-title": "Titel der Seite, die den Kommentar enthält, über den abgestimmt werden soll.",
+ "apihelp-csVote-param-vote": "Stimmt ab (1, -1 oder 0).",
+ "apihelp-csVote-pageid-example": "Stimmt über den Kommentar mit der Seitenkennung 3 ab",
+ "apihelp-csVote-title-example": "Stimmt über den Kommentar mit dem Seitentitel CommentStreams:3 ab",
+ "apihelp-csWatch-description": "Beobachtet einen Kommentar, um benachrichtigt zu werden, wenn er Antworten erhält.",
+ "apihelp-csWatch-summary": "Beobachtet einen Kommentar, um benachrichtigt zu werden, wenn er Antworten erhält.",
+ "apihelp-csWatch-param-pageid": "Kennung der Seite, die den zu beobachtenden Kommentar enthält.",
+ "apihelp-csWatch-param-title": "Titel der Seite, die den zu beobachtenden Kommentar enthält.",
+ "apihelp-csWatch-pageid-example": "Beobachtet den Kommentar mit der Seitenkennung 3",
+ "apihelp-csWatch-title-example": "Beobachtet den Kommentar mit dem Seitentitel CommentStreams:3",
+ "apihelp-csUnwatch-description": "Beobachtet einen Kommentar nicht mehr, um nicht mehr benachrichtigt zu werden, wenn er Antworten erhält.",
+ "apihelp-csUnwatch-summary": "Beobachtet einen Kommentar nicht mehr, um nicht länger benachrichtigt zu werden, wenn er Antworten erhält.",
+ "apihelp-csUnwatch-param-pageid": "Kennung der Seite, die den nicht mehr zu beobachtenden Kommentar enthält.",
+ "apihelp-csUnwatch-param-title": "Titel der Seite, die den nicht mehr zu beobachtenden Kommentar enthält.",
+ "apihelp-csUnwatch-pageid-example": "Beobachtet den Kommentar mit der Seitenkennung 3 nicht mehr",
+ "apihelp-csUnwatch-title-example": "Beobachtet den Kommentar mit dem Seitentitel CommentStreams:3 nicht mehr",
"commentstreams-api-error-notloggedin": "Du musst angemeldet sein.",
"commentstreams-api-error-commentnotfound": "Der angeforderte Kommentar wurde nicht gefunden.",
"commentstreams-api-error-notacomment": "Die angegebene Seitenkennung bezieht sich nicht auf einen gültigen Kommentar.",
@@ -115,5 +151,6 @@
"commentstreams-allcomments-label-lasteditor": "Letzter Bearbeiter",
"commentstreams-allcomments-label-lastedited": "Zuletzt bearbeitet",
"commentstreams-allcomments-button-next": "Nächster",
- "commentstreams-allcomments-button-previous": "Vorheriger"
+ "commentstreams-allcomments-button-previous": "Vorheriger",
+ "commentstreams-ve-conversion-error": "Fehler beim Konvertieren zwischen Wikitext und HTML für den visuellen Editor"
}
diff --git a/CommentStreams/i18n/diq.json b/CommentStreams/i18n/diq.json
new file mode 100644
index 00000000..c0e44a4a
--- /dev/null
+++ b/CommentStreams/i18n/diq.json
@@ -0,0 +1,17 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mirzali",
+ "Orbot707"
+ ]
+ },
+ "commentstreams-buttontooltip-edit": "bıvurne",
+ "commentstreams-buttontooltip-delete": "bestere",
+ "commentstreams-buttontooltip-collapse": "teng ke",
+ "commentstreams-buttontooltip-expand": "hera kerê",
+ "commentstreams-buttontooltip-cancel": "bıtexelne",
+ "commentstreams-dialog-buttontext-cancel": "Bıtexelne",
+ "commentstreams-dialog-buttontext-yes": "Eya",
+ "commentstreams-dialog-buttontext-no": "Nê",
+ "commentstreams-allcomments-button-previous": "Verên"
+}
diff --git a/CommentStreams/i18n/eo.json b/CommentStreams/i18n/eo.json
new file mode 100644
index 00000000..6c6907ba
--- /dev/null
+++ b/CommentStreams/i18n/eo.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Robin van der Vliet",
+ "YvesNevelsteen"
+ ]
+ },
+ "commentstreams-buttontooltip-cancel": "nuligi",
+ "commentstreams-dialog-buttontext-cancel": "Nuligi",
+ "commentstreams-allcomments-button-next": "Sekva"
+}
diff --git a/CommentStreams/i18n/es.json b/CommentStreams/i18n/es.json
index fa7a2076..cdf44c78 100644
--- a/CommentStreams/i18n/es.json
+++ b/CommentStreams/i18n/es.json
@@ -19,6 +19,7 @@
"commentstreams-api-error-post": "Error al añadir el comentario.",
"commentstreams-api-error-edit-notloggedin": "Debes acceder a tu cuenta para editar.",
"commentstreams-api-error-edit": "Error al editar el comentario.",
+ "commentstreams-api-error-delete": "Error al eliminar el comentario.",
"commentstreams-api-error-vote-notloggedin": "Debes acceder a tu cuenta para votar.",
"commentstreams-api-error-vote-novoteonreply": "No se permite emitir votos para las respuestas.",
"commentstreams-api-error-vote": "Error al emitir el voto para el comentario.",
diff --git a/CommentStreams/i18n/fi.json b/CommentStreams/i18n/fi.json
index d1e7126b..b6e63bb2 100644
--- a/CommentStreams/i18n/fi.json
+++ b/CommentStreams/i18n/fi.json
@@ -1,10 +1,15 @@
{
"@metadata": {
"authors": [
- "Nike"
+ "Nike",
+ "Silvonen",
+ "Yupik"
]
},
"commentstreams-buttontooltip-add": "lisää kommentti",
+ "commentstreams-buttontooltip-permalink": "ikilinkki",
"logentry-commentstreams-comment-create": "$1 {{GENDER:$2|loi}} kommentin $3",
- "commentstreams-allcomments-label-lastedited": "Viimeksi muokattu"
+ "commentstreams-allcomments-label-lastedited": "Viimeksi muokattu",
+ "commentstreams-allcomments-button-next": "Seuraava",
+ "commentstreams-allcomments-button-previous": "Edellinen"
}
diff --git a/CommentStreams/i18n/fr.json b/CommentStreams/i18n/fr.json
index ff39bdff..040383ca 100644
--- a/CommentStreams/i18n/fr.json
+++ b/CommentStreams/i18n/fr.json
@@ -2,6 +2,7 @@
"@metadata": {
"authors": [
"Gomoko",
+ "Thibaut120094",
"Wladek92"
]
},
@@ -97,7 +98,7 @@
"commentstreams-buttontooltip-unwatch": "ne plus surveiller",
"commentstreams-buttontooltip-submit": "soumettre",
"commentstreams-buttontooltip-cancel": "annuler",
- "commentstreams-dialog-delete-message": "Êtes-vous sûr de vouloir supprimer ce commentaire ?",
+ "commentstreams-dialog-delete-message": "Êtes-vous sûr de vouloir supprimer ce commentaire ?",
"commentstreams-dialog-anonymous-message": "Vous n’êtes pas connecté. Si vous poursuivez l’enregistrement de ce commentaire, votre adresse IP sera enregistrée, et vous ne pourrez plus modifier ou supprimer ce commentaire.",
"commentstreams-dialog-buttontext-ok": "OK",
"commentstreams-dialog-buttontext-cancel": "Annuler",
@@ -154,5 +155,6 @@
"commentstreams-allcomments-label-lasteditor": "Dernier contributeur",
"commentstreams-allcomments-label-lastedited": "Dernière modification",
"commentstreams-allcomments-button-next": "Suivant",
- "commentstreams-allcomments-button-previous": "Précédent"
+ "commentstreams-allcomments-button-previous": "Précédent",
+ "commentstreams-ve-conversion-error": "Erreur de conversion entre wikitexte et HTML pour VisualEditor"
}
diff --git a/CommentStreams/i18n/fy.json b/CommentStreams/i18n/fy.json
new file mode 100644
index 00000000..a06e46fd
--- /dev/null
+++ b/CommentStreams/i18n/fy.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "PiefPafPier"
+ ]
+ },
+ "echo-category-title-commentstreams-notification-category": "Nij kommentaar en antwurd"
+}
diff --git a/CommentStreams/i18n/gl.json b/CommentStreams/i18n/gl.json
index b2d1ea85..19fd3d54 100644
--- a/CommentStreams/i18n/gl.json
+++ b/CommentStreams/i18n/gl.json
@@ -1,8 +1,8 @@
{
"@metadata": {
"authors": [
- "Elisardojm",
- "Athena in Wonderland"
+ "Athena in Wonderland",
+ "Elisardojm"
]
},
"commentstreams-desc": "Permite deixar comentarios nas páxinas da wiki",
diff --git a/CommentStreams/i18n/hak.json b/CommentStreams/i18n/hak.json
new file mode 100644
index 00000000..17a2b428
--- /dev/null
+++ b/CommentStreams/i18n/hak.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "唐吉訶德的侍從"
+ ]
+ },
+ "commentstreams-buttontooltip-collapse": "chap-thia̍p",
+ "commentstreams-buttontooltip-expand": "chán-khôi"
+}
diff --git a/CommentStreams/i18n/he.json b/CommentStreams/i18n/he.json
index 8e4c2263..d1e8a779 100644
--- a/CommentStreams/i18n/he.json
+++ b/CommentStreams/i18n/he.json
@@ -1,12 +1,13 @@
{
"@metadata": {
"authors": [
+ "Amire80",
"Guycn2"
]
},
"commentstreams-desc": "מתן אפשרות להגיב על דפי ויקי",
"commentstreams-error-prohibitedaction": "הפעולה $1 אינה מותרת בדפי תגובות.",
- "commentstreams-error-comment-on-deleted-page": "הדף שאליו התגובה הזו משויכת נמחק.",
+ "commentstreams-error-comment-on-deleted-page": "הדף שהתגובה הזאת משויכת אליו נמחק.",
"commentstreams-author-anonymous": "אנונימי",
"apihelp-csQueryComment-description": "החזרת הכותרת, המשתמש, מועד היצירה וטקסט הוויקי של תגובה. יש לציין את מזהה הדף או את כותרתו.",
"apihelp-csQueryComment-summary": "החזרת הכותרת, המשתמש, מועד היצירה וטקסט הוויקי של תגובה. יש לציין את מזהה הדף או את כותרתו.",
@@ -97,12 +98,12 @@
"commentstreams-buttontooltip-submit": "שליחה",
"commentstreams-buttontooltip-cancel": "ביטול",
"commentstreams-dialog-delete-message": "האם ברצונך למחוק תגובה זו?",
- "commentstreams-dialog-anonymous-message": "לא נכנסת לחשבון. שמירת התגובה תגרום לתיעוד כתובת ה־IP שלך, ולא יהיה באפשרותך לערוך או למחוק את התגובה הזו.",
+ "commentstreams-dialog-anonymous-message": "לא נכנסת לחשבון. שמירת התגובה תגרום לתיעוד כתובת ה־IP שלך, ולא יהיה באפשרותך לערוך או למחוק את התגובה הזאת.",
"commentstreams-dialog-buttontext-ok": "אישור",
"commentstreams-dialog-buttontext-cancel": "ביטול",
"commentstreams-dialog-buttontext-yes": "כן",
"commentstreams-dialog-buttontext-no": "לא",
- "commentstreams-urldialog-instructions": "יש להעתיק ולהדביק את כתובת ה־URL שלהלן כדי לשתף קישור קבוע לתגובה זו. ניתן להקיש על Esc כדי לסגור את תיבת הדו־שיח הזו.",
+ "commentstreams-urldialog-instructions": "יש להעתיק ולהדביק את כתובת ה־URL שלהלן כדי לשתף קישור קבוע לתגובה הזאת. ניתן להקיש על Esc כדי לסגור את תיבת הדו־שיח הזאת.",
"commentstreams-datetext-postedon": "פורסמה בתאריך",
"commentstreams-datetext-lasteditedon": "נערכה לאחרונה בתאריך",
"commentstreams-datetext-moderated": "נוהלה",
@@ -153,5 +154,6 @@
"commentstreams-allcomments-label-lasteditor": "העורך האחרון",
"commentstreams-allcomments-label-lastedited": "תאריך העריכה האחרונה",
"commentstreams-allcomments-button-next": "הבא",
- "commentstreams-allcomments-button-previous": "הקודם"
+ "commentstreams-allcomments-button-previous": "הקודם",
+ "commentstreams-ve-conversion-error": "שגיאה בהמרת קוד ויקי ל־HTML בעורך החזותי"
}
diff --git a/CommentStreams/i18n/hi.json b/CommentStreams/i18n/hi.json
index 7ab85135..fafb97c3 100644
--- a/CommentStreams/i18n/hi.json
+++ b/CommentStreams/i18n/hi.json
@@ -1,8 +1,8 @@
{
"@metadata": {
"authors": [
- "Rishi.Singh",
- "Bhatakati aatma"
+ "Bhatakati aatma",
+ "Rishi.Singh"
]
},
"apihelp-csWatch-summary": "उत्तर प्राप्त होने पर अधिसूचित होने के लिए एक टिप्पणी देखें",
diff --git a/CommentStreams/i18n/hu.json b/CommentStreams/i18n/hu.json
index 8e21c9ca..9a3d1f47 100644
--- a/CommentStreams/i18n/hu.json
+++ b/CommentStreams/i18n/hu.json
@@ -1,8 +1,9 @@
{
"@metadata": {
"authors": [
- "Csega"
+ "Csega",
+ "R-Joe"
]
},
- "commentstreams-buttontext-reply": "VÁLASZ"
+ "commentstreams-buttontext-reply": "Válasz"
}
diff --git a/CommentStreams/i18n/hy.json b/CommentStreams/i18n/hy.json
index c3d09018..a92147e0 100644
--- a/CommentStreams/i18n/hy.json
+++ b/CommentStreams/i18n/hy.json
@@ -4,9 +4,11 @@
"Kareyac"
]
},
+ "commentstreams-author-anonymous": "անանուն",
"commentstreams-buttontooltip-edit": "խմբագրել",
"commentstreams-buttontooltip-delete": "ջնջել",
"commentstreams-buttontooltip-permalink": "մշտական հղում",
+ "commentstreams-buttontooltip-collapse": "ծալել",
"commentstreams-buttontooltip-expand": "բացել",
"commentstreams-buttontooltip-watch": "հսկել",
"commentstreams-buttontooltip-cancel": "չեղարկել",
diff --git a/CommentStreams/i18n/hyw.json b/CommentStreams/i18n/hyw.json
new file mode 100644
index 00000000..9b23dade
--- /dev/null
+++ b/CommentStreams/i18n/hyw.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Kareyac"
+ ]
+ },
+ "commentstreams-buttontooltip-permalink": "մշտական յղում",
+ "commentstreams-dialog-buttontext-ok": "Լաւ",
+ "commentstreams-dialog-buttontext-yes": "Այո"
+}
diff --git a/CommentStreams/i18n/ia.json b/CommentStreams/i18n/ia.json
index 1e8cff69..4516d104 100644
--- a/CommentStreams/i18n/ia.json
+++ b/CommentStreams/i18n/ia.json
@@ -4,6 +4,6 @@
"McDutchie"
]
},
- "commentstreams-buttontext-add": "ADDER UN COMMENTO",
- "commentstreams-buttontext-reply": "RESPONDER"
+ "commentstreams-buttontext-add": "Adder commento",
+ "commentstreams-buttontext-reply": "Responder"
}
diff --git a/CommentStreams/i18n/io.json b/CommentStreams/i18n/io.json
new file mode 100644
index 00000000..d0aaaca1
--- /dev/null
+++ b/CommentStreams/i18n/io.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joao Xavier"
+ ]
+ },
+ "commentstreams-buttontooltip-edit": "redaktar",
+ "commentstreams-buttontooltip-delete": "efacar",
+ "commentstreams-buttontooltip-cancel": "anular",
+ "commentstreams-dialog-buttontext-cancel": "Nuligar"
+}
diff --git a/CommentStreams/i18n/ja.json b/CommentStreams/i18n/ja.json
index 2d0ce033..cd8e7e60 100644
--- a/CommentStreams/i18n/ja.json
+++ b/CommentStreams/i18n/ja.json
@@ -1,8 +1,9 @@
{
"@metadata": {
"authors": [
+ "Hinaloe",
"Otokoume",
- "Hinaloe"
+ "Shirayuki"
]
},
"commentstreams-desc": "ウィキページへのコメントを可能にする",
@@ -47,7 +48,8 @@
"notification-body-commentstreams-comment-on-watched-page": "コメントはこちらから確認できます:\n\n\n$5",
"notification-body-commentstreams-reply-on-watched-page": "返信はこちらから確認できます:\n\n\n$5",
"notification-body-commentstreams-reply-to-watched-comment": "返信はこちらから確認できます:\n\n\n$5",
- "right-cs-comment": "自身のコメントの投稿、編集、削除",
+ "right-cs-comment": "自身のコメントを投稿、編集、削除",
+ "action-cs-comment": "コメントの投稿、編集、削除",
"right-cs-moderator-edit": "利用者によるコメントの編集",
"action-cs-moderator-edit": "利用者によるコメントの編集",
"right-cs-moderator-delete": "利用者によるコメントの削除",
diff --git a/CommentStreams/i18n/jv.json b/CommentStreams/i18n/jv.json
index 5381e499..b6c02a6f 100644
--- a/CommentStreams/i18n/jv.json
+++ b/CommentStreams/i18n/jv.json
@@ -1,7 +1,9 @@
{
"@metadata": {
"authors": [
- "NoiX180"
+ "Diki Ananta",
+ "NoiX180",
+ "Sumbukompor"
]
},
"commentstreams-error-prohibitedaction": "Tumindak $1 ora diidinaké tumrap ing kaca tanggapan.",
@@ -17,7 +19,7 @@
"commentstreams-title-field-placeholder": "Isi sesirah...",
"echo-category-title-commentstreams-notification-category": "Ora ana tanggapan lan wangsulané",
"action-cs-comment": "kirim, besut, utawa busak tanggapan",
- "action-cs-moderator-edit": "besut tanggapané panganggo liyané",
+ "action-cs-moderator-edit": "besut tanggapané naraguna liyané",
"logentry-commentstreams-comment-create": "$1 {{GENDER:$2|awèh}} tanggapan $3",
"commentstreams-allcomments-nocommentsfound": "Ora ana tanggapan.",
"commentstreams-allcomments-label-page": "Kaca Tanggapan",
diff --git a/CommentStreams/i18n/kiu.json b/CommentStreams/i18n/kiu.json
new file mode 100644
index 00000000..f65a16b3
--- /dev/null
+++ b/CommentStreams/i18n/kiu.json
@@ -0,0 +1,11 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mirzali"
+ ]
+ },
+ "commentstreams-buttontooltip-cancel": "bıtexelne",
+ "commentstreams-dialog-buttontext-cancel": "Bıtexelne",
+ "commentstreams-dialog-buttontext-yes": "Heya",
+ "commentstreams-dialog-buttontext-no": "Nê"
+}
diff --git a/CommentStreams/i18n/kjp.json b/CommentStreams/i18n/kjp.json
new file mode 100644
index 00000000..1e07b2c1
--- /dev/null
+++ b/CommentStreams/i18n/kjp.json
@@ -0,0 +1,10 @@
+{
+ "@metadata": {
+ "authors": [
+ "Rul1902"
+ ]
+ },
+ "commentstreams-buttontooltip-delete": "ထုဂ်ဆိင့်",
+ "commentstreams-buttontooltip-collapse": "မာအိင်း",
+ "commentstreams-buttontooltip-expand": "မာလာဲ"
+}
diff --git a/CommentStreams/i18n/ko.json b/CommentStreams/i18n/ko.json
index 50ac4d46..60638140 100644
--- a/CommentStreams/i18n/ko.json
+++ b/CommentStreams/i18n/ko.json
@@ -66,6 +66,7 @@
"commentstreams-buttontooltip-submit": "제출",
"commentstreams-buttontooltip-cancel": "취소",
"commentstreams-dialog-delete-message": "이 댓글을 삭제하겠습니까?",
+ "commentstreams-dialog-anonymous-message": "로그인되어 있지 않습니다. 이 댓글의 저장을 계속하면 IP 주소가 기록되며 이 댓글을 편집하거나 삭제할 수 없게 됩니다.",
"commentstreams-dialog-buttontext-ok": "확인",
"commentstreams-dialog-buttontext-cancel": "취소",
"commentstreams-dialog-buttontext-yes": "예",
@@ -114,5 +115,6 @@
"commentstreams-allcomments-label-lasteditor": "마지막 편집자",
"commentstreams-allcomments-label-lastedited": "최근 편집",
"commentstreams-allcomments-button-next": "다음",
- "commentstreams-allcomments-button-previous": "이전"
+ "commentstreams-allcomments-button-previous": "이전",
+ "commentstreams-ve-conversion-error": "시각편집기에서 위키텍스트와 HTML 간 변환에 오류가 있습니다"
}
diff --git a/CommentStreams/i18n/mk.json b/CommentStreams/i18n/mk.json
index 2cd7a16c..a5e48c5c 100644
--- a/CommentStreams/i18n/mk.json
+++ b/CommentStreams/i18n/mk.json
@@ -13,6 +13,13 @@
"apihelp-csQueryComment-param-pageid": "назнака на страницата каде се наоѓа коментарот што се бара",
"apihelp-csQueryComment-param-title": "наслов на страницата каде се наоѓа коментарот што се бара",
"apihelp-csQueryComment-pageid-example": "побарај коментар со назнака на страницата 3 во викитекстот",
+ "apihelp-csQueryComment-title-example": "побарај коментар со наслов на страница CommentStreams:3 во викитекстот",
+ "apihelp-csDeleteComment-description": "Избришете коментар. Треба да се укаже назнака или наслов на страницата.",
+ "apihelp-csDeleteComment-summary": "Избришете коментар. Треба да се укаже назнака или наслов на страницата.",
+ "apihelp-csDeleteComment-param-pageid": "назнака на страницата каде се наоѓа коментарот што за бришење",
+ "apihelp-csDeleteComment-param-title": "наслов на страницата каде се наоѓа коментарот што за бришење",
+ "apihelp-csDeleteComment-pageid-example": "избриши коментар со назнака на страницата 3",
+ "apihelp-csDeleteComment-title-example": "избриши коментар до наслов на страница CommentStreams:3",
"apihelp-csPostComment-description": "Ставете нов коментар.",
"apihelp-csPostComment-summary": "Ставете нов коментар.",
"apihelp-csPostComment-param-commenttitle": "незадолжителен наслов на коментарот.",
diff --git a/CommentStreams/i18n/my.json b/CommentStreams/i18n/my.json
new file mode 100644
index 00000000..3fdbc5b2
--- /dev/null
+++ b/CommentStreams/i18n/my.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": [
+ "Dr Lotus Black"
+ ]
+ },
+ "commentstreams-author-anonymous": "အမည်မသိ",
+ "commentstreams-buttontext-add": "မှတ်ချက် ပေါင်းထည့်ရန်",
+ "commentstreams-buttontext-reply": "အကြောင်းပြန်ရန်",
+ "commentstreams-buttontooltip-add": "မှတ်ချက် ပေါင်းထည့်ရန်",
+ "commentstreams-buttontooltip-reply": "အကြောင်းပြန်ရန်",
+ "commentstreams-buttontooltip-edit": "တည်းဖြတ်",
+ "commentstreams-buttontooltip-delete": "ဖျက်ပါ",
+ "commentstreams-buttontooltip-permalink": "ပုံသေလိပ်စာ",
+ "commentstreams-buttontooltip-watch": "စောင့်ကြည့်ရန်",
+ "commentstreams-buttontooltip-unwatch": "စောင့်မကြည့်ပါနှင့်",
+ "commentstreams-buttontooltip-submit": "ထည့်သွင်းရန်",
+ "commentstreams-buttontooltip-cancel": "မလုပ်တော့",
+ "commentstreams-dialog-delete-message": "ဤမှတ်ချက်အား ဖျက်ရန် သေချာပါသလား",
+ "commentstreams-dialog-buttontext-ok": "အိုကေ",
+ "commentstreams-dialog-buttontext-cancel": "မလုပ်တော့ပါ",
+ "commentstreams-dialog-buttontext-yes": "လုပ်မည်",
+ "commentstreams-dialog-buttontext-no": "မလုပ်ပါ",
+ "commentstreamsallcomments": "မှတ်ချက်များ အားလုံး",
+ "commentstreams-allcomments-nocommentsfound": "မှတ်ချက်များ မတွေ့ပါ",
+ "commentstreams-allcomments-label-page": "မှတ်ချက် စာမျက်နှာ",
+ "commentstreams-allcomments-label-associatedpage": "ဆက်နွယ်သော စာမျက်နှာ",
+ "commentstreams-allcomments-label-commenttitle": "မှတ်ချက် ခေါင်းစဉ်",
+ "commentstreams-allcomments-label-wikitext": "မှတ်ချက်",
+ "commentstreams-allcomments-label-author": "စာရေးသူ",
+ "commentstreams-allcomments-label-created": "ဖန်တီးခဲ့သည်",
+ "commentstreams-allcomments-label-lasteditor": "နောက်ဆုံး တည်းဖြတ်သူ",
+ "commentstreams-allcomments-label-lastedited": "နောက်ဆုံး တည်းဖြတ်ခဲ့",
+ "commentstreams-allcomments-button-next": "ရှေ့",
+ "commentstreams-allcomments-button-previous": "ယခင်"
+}
diff --git a/CommentStreams/i18n/nah.json b/CommentStreams/i18n/nah.json
new file mode 100644
index 00000000..ad36d681
--- /dev/null
+++ b/CommentStreams/i18n/nah.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Akapochtli"
+ ]
+ },
+ "commentstreams-buttontooltip-cancel": "moxitiniz",
+ "commentstreams-dialog-buttontext-cancel": "Moxitiniz"
+}
diff --git a/CommentStreams/i18n/nb.json b/CommentStreams/i18n/nb.json
index 35012417..3974279b 100644
--- a/CommentStreams/i18n/nb.json
+++ b/CommentStreams/i18n/nb.json
@@ -1,40 +1,73 @@
{
"@metadata": {
"authors": [
- "Jon Harald Søby",
"Citadell",
+ "Jon Harald Søby",
"Orf3us"
]
},
"commentstreams-desc": "Muliggjør kommentarer på wikisider",
"commentstreams-error-prohibitedaction": "Handlingen $1 er ikke tillatt på kommentarsider.",
+ "commentstreams-error-comment-on-deleted-page": "Siden kommentaren assosieres med har blitt slettet.",
"commentstreams-author-anonymous": "anonym",
+ "apihelp-csQueryComment-description": "Returner tittelen, brukeren, opprettelsestidspunktet og wikiteksten til en kommentar. Enten pageid eller title må angis.",
"apihelp-csQueryComment-summary": "Returnerer tittelen, brukeren, opprettelsestidsstempelet og wikiteksten til en kommentar. Enten pageid eller title må oppgis.",
+ "apihelp-csQueryComment-param-pageid": "Side-ID-en til siden som inneholder kommentaren det skal spørres mot",
+ "apihelp-csQueryComment-param-title": "Tittelen til siden som inneholder kommentaren det skal spørres mot",
"apihelp-csQueryComment-pageid-example": "spørringskommentar med side-ID 3 i wikitekst",
+ "apihelp-csQueryComment-title-example": "Spør mot kommentar med sidetittelen CommentStreams:3 i wikitekst",
+ "apihelp-csDeleteComment-description": "Slett en kommentar. Enten pageid eller title må angis.",
"apihelp-csDeleteComment-summary": "Slett en kommentar. Enten pageid eller title må oppgis.",
+ "apihelp-csDeleteComment-param-pageid": "Side-ID-en til siden som inneholder kommentaren som skal slettes",
+ "apihelp-csDeleteComment-param-title": "Tittelen til siden som inneholder kommentaren som skal slettes",
"apihelp-csDeleteComment-pageid-example": "slett kommentar med side-ID 3",
+ "apihelp-csDeleteComment-title-example": "Slett kommentar med sidetittel CommentStreams:3",
"apihelp-csPostComment-description": "Post en ny kommentar.",
+ "apihelp-csPostComment-summary": "Post en ny kommentar.",
"apihelp-csPostComment-param-commenttitle": "valgfri tittel på kommentar.",
+ "apihelp-csPostComment-param-wikitext": "Wikitekst for kommentaren.",
+ "apihelp-csPostComment-param-associatedid": "Side kommentaren assosieres med.",
+ "apihelp-csPostComment-param-parentid": "Side-ID-en til den overordnede kommentaren hvis det finnes et svar.",
"apihelp-csEditComment-description": "Redigere en eksisterende kommentar. Enten pageid eller title må oppgis.",
"apihelp-csEditComment-summary": "Rediger en eksisterende kommentar. Enten pageid eller title må oppgis.",
+ "apihelp-csEditComment-param-pageid": "Side-ID-en til siden som inneholder kommentaren som skal redigeres",
+ "apihelp-csEditComment-param-title": "Tittelen til siden som inneholder kommentaren som skal redigeres",
+ "apihelp-csEditComment-param-commenttitle": "Valgfri tittel på kommentar.",
"apihelp-csEditComment-param-wikitext": "wikitekst for kommentar.",
"apihelp-csVote-description": "Stem (opp, ned eller nøytralt) på en kommentar.",
"apihelp-csVote-summary": "Stem (opp, ned eller nøytralt) på en kommentar.",
+ "apihelp-csVote-param-pageid": "Side-ID-en til siden som inneholder kommentaren som skal stemmes på",
"apihelp-csVote-param-title": "tittelen på siden som inneholder kommentaren det skal stemmes på",
"apihelp-csVote-param-vote": "stem (1, -1 eller 0).",
"apihelp-csVote-pageid-example": "stem på kommentar med side-ID 3",
+ "apihelp-csVote-title-example": "Stem på kommentar med sidetittelen CommentStreams:3",
+ "apihelp-csWatch-description": "Overvåk en kommentar for å få varsel når den får svar",
"apihelp-csWatch-summary": "Overvåk en kommentar for å få varsel når det kommer svar",
+ "apihelp-csWatch-param-pageid": "Side-ID-en til siden som inneholder kommentaren som skal overvåkes",
"apihelp-csWatch-param-title": "tittelen på siden som inneholder kommentaren som skal overvåkes",
+ "apihelp-csWatch-pageid-example": "Overvåk kommentar med side-ID 3",
"apihelp-csWatch-title-example": "overvåk kommentaren med sidetittelen CommentStreams:3",
+ "apihelp-csUnwatch-description": "Fjern overvåking av en kommentar for ikke lenger å få varsel når den får svar",
"apihelp-csUnwatch-summary": "Fjern overvåkning av en kommentar for ikke lenger å motta varsler når den får svar",
+ "apihelp-csUnwatch-param-pageid": "Side-ID-en til siden som inneholder kommentaren som skal fjernes fra overvåkning",
+ "apihelp-csUnwatch-param-title": "Tittelen til siden som inneholder kommentaren som skal fjernes fra overvåkning",
"apihelp-csUnwatch-pageid-example": "fjern overvåking av kommentaren med side-ID 3",
+ "apihelp-csUnwatch-title-example": "Fjern overvåkning av en kommentar med sidetittel CommentStreams:3",
+ "commentstreams-api-error-notloggedin": "Du må være innlogget.",
"commentstreams-api-error-commentnotfound": "Den etterspurte kommentaren ble ikke funnet.",
+ "commentstreams-api-error-notacomment": "Den gitte side-ID-en refererer ikke til en gyldig kommentar.",
+ "commentstreams-api-error-missingcommenttitle": "En kommentartittel må angis for kommentarer som ikke er svar.",
"commentstreams-api-error-post-permissions": "Brukeren har ikke tillatelse til å poste en kommentar.",
"commentstreams-api-error-post-parentandtitle": "Du kan ikke angi både foreldre-ID-en og kommentartittelen.",
+ "commentstreams-api-error-post-parentpagedoesnotexist": "Kommentaren det svares på finnes ikke.",
+ "commentstreams-api-error-post-associatedpageidmismatch": "Siden det kommenteres på matcher ikke med siden den overordnede kommentaren gjelder.",
"commentstreams-api-error-post-associatedpagedoesnotexist": "Siden det kommenteres på finnes ikke.",
"commentstreams-api-error-post": "Feil under tilføyelse av kommentar.",
"commentstreams-api-error-edit-notloggedin": "Du må være logget inn for å redigere.",
"commentstreams-api-error-edit-permissions": "Brukeren har ikke tillatelse til å redigere kommentaren.",
+ "commentstreams-api-error-edit": "Feil under redigering av kommentar.",
+ "commentstreams-api-error-delete-notloggedin": "Du må være innlogget for å slette.",
+ "commentstreams-api-error-delete-permissions": "Brukeren har ikke tillatelse til å slette kommentaren.",
"commentstreams-api-error-delete-haschildren": "Kan ikke slette et emne som har svar. Oppdater siden for å se den oppdaterte kommentarstrømmen.",
"commentstreams-api-error-delete": "Feil under sletting av kommentar.",
"commentstreams-api-error-vote-notloggedin": "Du må være logget inn for å stemme.",
@@ -42,57 +75,86 @@
"commentstreams-api-error-vote": "Feil under stemming på kommentar.",
"commentstreams-api-error-watch-notloggedin": "Du må være logget inn for å overvåke en kommentar.",
"commentstreams-api-error-watch-nowatchreply": "Overvåking av svar er ikke tillatt.",
+ "commentstreams-api-error-watch": "Feil under overvåkning av kommentar.",
"commentstreams-api-error-unwatch-notloggedin": "Du må være logget inn for å fjerne overvåkning av en kommentar.",
+ "commentstreams-api-error-unwatch-nounwatchreply": "Å fjerne overvåkning av svar er ikke tillatt.",
+ "commentstreams-api-error-unwatch": "Feil under fjerning av kommentar fra overvåkning.",
+ "commentstreams-validation-error-nocommenttitle": "Du må skrive inn en kommentartittel.",
"commentstreams-validation-error-nocommenttext": "Du må skrive inn kommentartekst.",
"commentstreams-buttontext-add": "Legg til kommentar",
"commentstreams-buttontext-reply": "Svar",
"commentstreams-buttontooltip-add": "legg til en kommentar",
"commentstreams-buttontooltip-reply": "svar",
"commentstreams-buttontooltip-edit": "rediger",
+ "commentstreams-buttontooltip-moderator-edit": "moderatorredigering",
"commentstreams-buttontooltip-delete": "slett",
+ "commentstreams-buttontooltip-moderator-delete": "moderatorsletting",
"commentstreams-buttontooltip-permalink": "permanent lenke",
"commentstreams-buttontooltip-collapse": "slå sammen",
"commentstreams-buttontooltip-expand": "utvid",
"commentstreams-buttontooltip-upvote": "stem opp",
+ "commentstreams-buttontooltip-downvote": "stem ned",
+ "commentstreams-buttontooltip-watch": "overvåk",
"commentstreams-buttontooltip-unwatch": "fjern overvåkning",
"commentstreams-buttontooltip-submit": "send",
"commentstreams-buttontooltip-cancel": "avbryt",
"commentstreams-dialog-delete-message": "Er du sikker på at du vil slette denne kommentaren?",
+ "commentstreams-dialog-anonymous-message": "Du er ikke innlogget. Hvis du fortsetter og lagrer denne kommentaren vil IP-adressen din lagres, og du vil ikke kunne redigere eller slette kommentaren.",
+ "commentstreams-dialog-buttontext-ok": "OK",
"commentstreams-dialog-buttontext-cancel": "Avbryt",
"commentstreams-dialog-buttontext-yes": "Ja",
"commentstreams-dialog-buttontext-no": "Nei",
+ "commentstreams-urldialog-instructions": "Kopier og lim inn URL-en nedenfor for å dele en permanent lenke til denne kommentaren. Trykk Esc for å lukke dette dialogvinduet.",
"commentstreams-datetext-postedon": "Postet",
"commentstreams-datetext-lasteditedon": "Sist redigert",
"commentstreams-datetext-moderated": "moderert",
"commentstreams-title-field-placeholder": "Skriv inn tittel …",
+ "commentstreams-body-field-placeholder": "Skriv inn ny kommentartekst …",
"echo-category-title-commentstreams-notification-category": "Nye kommentarer og svar",
"notification-header-commentstreams-comment-on-watched-page": "$1 {{GENDER:$4|kommenterte}} «<i>$2</i>» på siden «<i>$3</i>», som {{GENDER:$6|du}} overvåker.",
+ "notification-header-commentstreams-reply-on-watched-page": "$1 {{GENDER:$4|svarte}} på kommentaren «<i>$2</i>» på siden «<i>$3</i>», som {{GENDER:$6|du}} overvåker.",
+ "notification-header-commentstreams-reply-to-watched-comment": "$1 {{GENDER:$4|svarte}} på kommentaren «<i>$2</i>», som {{GENDER:$6|du}} overvåker, på siden «<i>$3</i>».",
+ "notification-subject-commentstreams-comment-on-watched-page": "None har kommentert på en side du overvåker",
"notification-subject-commentstreams-reply-on-watched-page": "Noen har svart på en kommentar på en side du overvåker",
+ "notification-subject-commentstreams-reply-to-watched-comment": "Noen har svart på en kommentar du overvåker",
"notification-body-commentstreams-comment-on-watched-page": "Kommentaren er:\n\n\n$5",
"notification-body-commentstreams-reply-on-watched-page": "Svaret er:\n\n\n$5",
+ "notification-body-commentstreams-reply-to-watched-comment": "Svaret er:\n\n$5",
"notification-link-label-commentstreams-comment-on-watched-page": "Besøk kommentar",
+ "notification-link-label-commentstreams-reply-on-watched-page": "Besøk svar",
"notification-link-label-commentstreams-reply-to-watched-comment": "Besøk svar",
+ "group-csmoderator": "Moderatorer (CommentStreams)",
+ "group-csmoderator-member": "{{GENDER:$1|moderator (CommentStreams)}}",
+ "grouppage-csmoderator": "{{ns:project}}:Moderatorer (CommentStreams)",
"right-cs-comment": "Poste, redigere og slette sine egne kommentarer",
"action-cs-comment": "poste, redigere eller slette kommentarer",
"right-cs-moderator-edit": "Redigere kommentarer fra andre brukere",
"action-cs-moderator-edit": "redigere kommentarer fra andre brukere",
"right-cs-moderator-delete": "Slette kommentarer av alle brukere",
"action-cs-moderator-delete": "slette kommentarer av andre brukere",
+ "log-name-commentstreams": "CommentStreams-logg",
+ "log-description-commentstreams": "Disse hendelsene sporer når CommentStreams-hendelser skjer.",
"logentry-commentstreams-comment-create": "$1 {{GENDER:$2|opprettet}} kommentaren $3",
"logentry-commentstreams-reply-create": "$1 {{GENDER:$2|opprettet}} svaret $3",
+ "logentry-commentstreams-comment-edit": "$1 {{GENDER:$2|redigerte}} kommenatren $3",
"logentry-commentstreams-comment-moderator-edit": "$1 (moderator) {{GENDER:$2|redigerte}} kommentaren $3",
+ "logentry-commentstreams-reply-edit": "$1 {{GENDER:$2|redigerte}} svaret $3",
"logentry-commentstreams-reply-moderator-edit": "$1 (moderator) {{GENDER:$2|redigerte}} svaret $3",
"logentry-commentstreams-comment-delete": "$1 {{GENDER:$2|slettet}} kommentaren $3",
"logentry-commentstreams-comment-moderator-delete": "$1 (moderator) {{GENDER:$2|slettet}} kommentaren $3",
+ "logentry-commentstreams-reply-delete": "$1 {{GENDER:$2|slettet}} svaret $3",
"logentry-commentstreams-reply-moderator-delete": "$1 (moderator) {{GENDER:$2|slettet}} svaret $3",
"commentstreamsallcomments": "Alle kommentarer",
"commentstreams-allcomments-nocommentsfound": "Ingen kommentarer funnet.",
"commentstreams-allcomments-label-page": "Kommentarside",
+ "commentstreams-allcomments-label-associatedpage": "Tilhørende side",
"commentstreams-allcomments-label-commenttitle": "Kommentartittel",
"commentstreams-allcomments-label-wikitext": "Kommentar",
"commentstreams-allcomments-label-author": "Forfatter",
+ "commentstreams-allcomments-label-created": "Opprettet",
"commentstreams-allcomments-label-lasteditor": "Siste bidragsyter",
"commentstreams-allcomments-label-lastedited": "Sist redigert",
"commentstreams-allcomments-button-next": "Neste",
- "commentstreams-allcomments-button-previous": "Forrige"
+ "commentstreams-allcomments-button-previous": "Forrige",
+ "commentstreams-ve-conversion-error": "Feil under konvertering mellom wikitekst og HTML for VisualEditor"
}
diff --git a/CommentStreams/i18n/nds-nl.json b/CommentStreams/i18n/nds-nl.json
new file mode 100644
index 00000000..d1d1fabe
--- /dev/null
+++ b/CommentStreams/i18n/nds-nl.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Servien"
+ ]
+ },
+ "commentstreams-buttontooltip-permalink": "vaste verwysing",
+ "commentstreams-buttontooltip-expand": "uutklappen"
+}
diff --git a/CommentStreams/i18n/ne.json b/CommentStreams/i18n/ne.json
new file mode 100644
index 00000000..f7be94f1
--- /dev/null
+++ b/CommentStreams/i18n/ne.json
@@ -0,0 +1,36 @@
+{
+ "@metadata": {
+ "authors": [
+ "हिमाल सुबेदी"
+ ]
+ },
+ "commentstreams-author-anonymous": "अज्ञात",
+ "commentstreams-api-error-edit-notloggedin": "तपाई सम्पादन गर्न प्रवेश हुनुपर्दछ।",
+ "commentstreams-api-error-edit-permissions": "प्रयोगकर्तालाई टिप्पणी सम्पादन गर्न अनुमति छैन।",
+ "commentstreams-api-error-delete-notloggedin": "तपाई मेटाउन गर्न प्रवेश हुनुपर्दछ।",
+ "commentstreams-buttontext-add": "टिप्पणी थप्नुहाेस्",
+ "commentstreams-buttontext-reply": "जवाफ दिनुहोस्",
+ "commentstreams-buttontooltip-add": "टिप्पणी थप्नुहाेस्",
+ "commentstreams-buttontooltip-reply": "जवाफ दिनुहोस्",
+ "commentstreams-buttontooltip-edit": "सम्पादन",
+ "commentstreams-buttontooltip-delete": "मेटाउनु",
+ "commentstreams-buttontooltip-permalink": "स्थायी सूत्र",
+ "commentstreams-buttontooltip-collapse": "खुम्च्याउनुहाेस्",
+ "commentstreams-buttontooltip-expand": "फैलाउनुहोस्",
+ "commentstreams-buttontooltip-watch": "अवलोकन",
+ "commentstreams-buttontooltip-submit": "पेश गर्नुहोस्",
+ "commentstreams-buttontooltip-cancel": "रद्द गर्नुहोस्",
+ "commentstreams-dialog-buttontext-ok": "ठीक",
+ "commentstreams-dialog-buttontext-cancel": "रद्द गर्नुहोस्",
+ "commentstreams-dialog-buttontext-yes": "हो",
+ "commentstreams-dialog-buttontext-no": "होइन",
+ "commentstreams-datetext-postedon": "प्रेषित मिति",
+ "commentstreams-datetext-lasteditedon": "अन्तिम पटक सम्पादन",
+ "commentstreams-datetext-moderated": "सामान्य",
+ "commentstreams-allcomments-label-author": "लेखक",
+ "commentstreams-allcomments-label-created": "सृजना गरिएको",
+ "commentstreams-allcomments-label-lasteditor": "अन्तिम सम्पादक",
+ "commentstreams-allcomments-label-lastedited": "अन्तिम पटक सम्पादन",
+ "commentstreams-allcomments-button-next": "अर्को",
+ "commentstreams-allcomments-button-previous": "अघिल्लो"
+}
diff --git a/CommentStreams/i18n/nl.json b/CommentStreams/i18n/nl.json
index 45278354..2a5881e5 100644
--- a/CommentStreams/i18n/nl.json
+++ b/CommentStreams/i18n/nl.json
@@ -1,6 +1,7 @@
{
"@metadata": {
"authors": [
+ "Hzjethro",
"Mainframe98"
]
},
@@ -8,6 +9,11 @@
"commentstreams-api-error-notloggedin": "U moet ingelogd zijn.",
"commentstreams-api-error-edit-notloggedin": "U moet aangemeld zijn om te kunnen bewerken.",
"commentstreams-api-error-delete-notloggedin": "U moet aangemeld zijn om te kunnen verwijderen.",
+ "commentstreams-validation-error-nocommenttitle": "Geen titel ingevuld.",
+ "commentstreams-validation-error-nocommenttext": "Geen commentaar ingevuld.",
+ "commentstreams-buttontext-add": "Voeg commentaar toe",
+ "commentstreams-buttontext-reply": "Beantwoorden",
+ "commentstreams-buttontooltip-add": "voeg commentaar toe",
"commentstreams-buttontooltip-reply": "antwoorden",
"commentstreams-buttontooltip-edit": "bewerken",
"commentstreams-buttontooltip-delete": "verwijderen",
@@ -17,6 +23,8 @@
"commentstreams-buttontooltip-watch": "volgen",
"commentstreams-buttontooltip-submit": "verzenden",
"commentstreams-buttontooltip-cancel": "annuleren",
+ "commentstreams-dialog-delete-message": "Weet u zeker dat u dit commentaar wilt verwijderen?",
+ "commentstreams-dialog-anonymous-message": "U bent niet aangemeld. Als u doorgaat met het opslaan van dit commentaar, wordt uw IP-adres geregistreerd en kunt u dit commentaar niet bewerken of verwijderen.",
"commentstreams-dialog-buttontext-ok": "OK",
"commentstreams-dialog-buttontext-cancel": "Annuleren",
"commentstreams-dialog-buttontext-yes": "Ja",
@@ -24,9 +32,11 @@
"commentstreams-datetext-postedon": "Geplaatst op",
"commentstreams-datetext-lasteditedon": "Laatste bewerkt op",
"commentstreams-title-field-placeholder": "Voer titel in...",
+ "commentstreams-body-field-placeholder": "Vul tekst nieuw commentaar in...",
"notification-link-label-commentstreams-reply-on-watched-page": "Bekijk reactie",
"notification-link-label-commentstreams-reply-to-watched-comment": "Bekijk reactie",
"log-name-commentstreams": "CommentStreams logboek",
+ "commentstreamsallcomments": "Alle reacties",
"commentstreams-allcomments-label-associatedpage": "Gekoppelde pagina",
"commentstreams-allcomments-label-author": "Auteur",
"commentstreams-allcomments-label-created": "Aangemaakt",
diff --git a/CommentStreams/i18n/ps.json b/CommentStreams/i18n/ps.json
index 5337bbbd..0b02458b 100644
--- a/CommentStreams/i18n/ps.json
+++ b/CommentStreams/i18n/ps.json
@@ -1,6 +1,7 @@
{
"@metadata": {
"authors": [
+ "Amjad Khan",
"Baloch Khan"
]
},
diff --git a/CommentStreams/i18n/pt-br.json b/CommentStreams/i18n/pt-br.json
index 885c8dfe..98bad75f 100644
--- a/CommentStreams/i18n/pt-br.json
+++ b/CommentStreams/i18n/pt-br.json
@@ -124,7 +124,7 @@
"group-csmoderator": "Moderadores (CommentStreams)",
"group-csmoderator-member": "{{GENDER:$1|moderador|moderadora}} (CommentStreams)",
"grouppage-csmoderator": "{{ns:project}}:Moderadores (CommentStreams)",
- "right-cs-comment": "Publicar, editar e eliminar comentários do próprio utilizador",
+ "right-cs-comment": "Publicar, editar e eliminar comentários do próprio usuário",
"action-cs-comment": "publicar, editar ou eliminar comentários",
"right-cs-moderator-edit": "Editar comentários de qualquer usuário",
"action-cs-moderator-edit": "editar comentários de outros usuários",
@@ -153,5 +153,6 @@
"commentstreams-allcomments-label-lasteditor": "Último editor",
"commentstreams-allcomments-label-lastedited": "Última edição",
"commentstreams-allcomments-button-next": "Próximo",
- "commentstreams-allcomments-button-previous": "Anterior"
+ "commentstreams-allcomments-button-previous": "Anterior",
+ "commentstreams-ve-conversion-error": "Ocorreu uma falha de conversão entre texto wiki e HTML para o Editor Visual"
}
diff --git a/CommentStreams/i18n/pt.json b/CommentStreams/i18n/pt.json
index 9652106b..32344948 100644
--- a/CommentStreams/i18n/pt.json
+++ b/CommentStreams/i18n/pt.json
@@ -1,8 +1,8 @@
{
"@metadata": {
"authors": [
- "Hamilton Abreu",
- "Athena in Wonderland"
+ "Athena in Wonderland",
+ "Hamilton Abreu"
]
},
"commentstreams-desc": "Permite deixar comentários nas páginas da wiki",
@@ -154,5 +154,6 @@
"commentstreams-allcomments-label-lasteditor": "Último editor",
"commentstreams-allcomments-label-lastedited": "Última edição",
"commentstreams-allcomments-button-next": "Seguinte",
- "commentstreams-allcomments-button-previous": "Anterior"
+ "commentstreams-allcomments-button-previous": "Anterior",
+ "commentstreams-ve-conversion-error": "Ocorreu uma falha de conversão entre texto wiki e HTML para o Editor Visual"
}
diff --git a/CommentStreams/i18n/ro.json b/CommentStreams/i18n/ro.json
new file mode 100644
index 00000000..ed240020
--- /dev/null
+++ b/CommentStreams/i18n/ro.json
@@ -0,0 +1,13 @@
+{
+ "@metadata": {
+ "authors": [
+ "NGC 54"
+ ]
+ },
+ "commentstreams-author-anonymous": "anonim",
+ "commentstreams-dialog-buttontext-yes": "Da",
+ "commentstreams-dialog-buttontext-no": "Nu",
+ "commentstreamsallcomments": "Toate comentariile",
+ "commentstreams-allcomments-label-author": "Autor",
+ "commentstreams-allcomments-label-created": "Creat"
+}
diff --git a/CommentStreams/i18n/ru.json b/CommentStreams/i18n/ru.json
index 99aad599..8b139ccd 100644
--- a/CommentStreams/i18n/ru.json
+++ b/CommentStreams/i18n/ru.json
@@ -1,9 +1,13 @@
{
"@metadata": {
"authors": [
- "Kareyac"
+ "Kareyac",
+ "Vlad5250"
]
},
+ "commentstreams-desc": "Позволяет комментировать викистраницы",
+ "commentstreams-error-prohibitedaction": "Действие $1 не разрешено на страницах комментариев.",
+ "commentstreams-error-comment-on-deleted-page": "Страница, с которой связан этот комментарий, удалена.",
"commentstreams-author-anonymous": "аноним",
"commentstreams-buttontooltip-add": "добавить комментарий",
"commentstreams-buttontooltip-reply": "ответить",
diff --git a/CommentStreams/i18n/sd.json b/CommentStreams/i18n/sd.json
index 4cea6bc8..751aab5e 100644
--- a/CommentStreams/i18n/sd.json
+++ b/CommentStreams/i18n/sd.json
@@ -1,7 +1,9 @@
{
"@metadata": {
"authors": [
- "Indus Asia"
+ "Indus Asia",
+ "Mehtab ahmed",
+ "Tweety"
]
},
"apihelp-csPostComment-description": "نيئن راءِ درج ڪيو.",
@@ -14,15 +16,16 @@
"commentstreams-buttontooltip-cancel": "رد",
"commentstreams-dialog-buttontext-ok": "ٺيڪ (او ڪي) آهي",
"commentstreams-dialog-buttontext-yes": "ھا",
- "commentstreams-dialog-buttontext-no": "نه",
+ "commentstreams-dialog-buttontext-no": "نہ",
"commentstreams-datetext-postedon": "تي درجيڪاري ڪئي وئي (پوسٽيڊ آن)",
"commentstreams-datetext-lasteditedon": "تي آخري ڀيرو سنواريو ويو",
"commentstreams-title-field-placeholder": "عنوان ڏيو (اينٽر ٽائيٽل)",
- "commentstreams-allcomments-nocommentsfound": "ڪي به رايا نه مليا.",
+ "commentstreams-allcomments-nocommentsfound": "ڪي بہ رايا نہ لڌا.",
"commentstreams-allcomments-label-associatedpage": "لاڳاپيل صفحو",
"commentstreams-allcomments-label-author": "ليکڪ",
"commentstreams-allcomments-label-created": "سرجيل (Created)",
- "commentstreams-allcomments-label-lasteditor": "آخري ايڊيٽر",
+ "commentstreams-allcomments-label-lasteditor": "آخري سنواريندڙ",
"commentstreams-allcomments-label-lastedited": "آخري ڀيرو سنواريل",
+ "commentstreams-allcomments-button-next": "اڳيون",
"commentstreams-allcomments-button-previous": "اڳوڻو"
}
diff --git a/CommentStreams/i18n/se.json b/CommentStreams/i18n/se.json
new file mode 100644
index 00000000..5ddce6f7
--- /dev/null
+++ b/CommentStreams/i18n/se.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yupik"
+ ]
+ },
+ "commentstreams-allcomments-button-next": "Čuovvovaš"
+}
diff --git a/CommentStreams/i18n/smn.json b/CommentStreams/i18n/smn.json
new file mode 100644
index 00000000..56fe0d30
--- /dev/null
+++ b/CommentStreams/i18n/smn.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yupik"
+ ]
+ },
+ "commentstreams-allcomments-button-next": "Čuávuvâš"
+}
diff --git a/CommentStreams/i18n/sms.json b/CommentStreams/i18n/sms.json
new file mode 100644
index 00000000..ccf057da
--- /dev/null
+++ b/CommentStreams/i18n/sms.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Yupik"
+ ]
+ },
+ "commentstreams-buttontooltip-permalink": "põõšši liŋkk"
+}
diff --git a/CommentStreams/i18n/sr-ec.json b/CommentStreams/i18n/sr-ec.json
new file mode 100644
index 00000000..aa93c17f
--- /dev/null
+++ b/CommentStreams/i18n/sr-ec.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "BadDog"
+ ]
+ },
+ "action-cs-comment": "објављујете, уређујете или бришете коментаре"
+}
diff --git a/CommentStreams/i18n/su.json b/CommentStreams/i18n/su.json
new file mode 100644
index 00000000..c03f38cd
--- /dev/null
+++ b/CommentStreams/i18n/su.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Uchup19"
+ ]
+ },
+ "commentstreams-buttontooltip-cancel": "bolay",
+ "commentstreams-dialog-buttontext-cancel": "Bolay"
+}
diff --git a/CommentStreams/i18n/sv.json b/CommentStreams/i18n/sv.json
index ff985daf..f6ab8849 100644
--- a/CommentStreams/i18n/sv.json
+++ b/CommentStreams/i18n/sv.json
@@ -1,8 +1,8 @@
{
"@metadata": {
"authors": [
- "WikiPhoenix",
- "Bengtsson96"
+ "Bengtsson96",
+ "WikiPhoenix"
]
},
"commentstreams-desc": "Tillåter kommentarer på wikisidor",
@@ -154,5 +154,6 @@
"commentstreams-allcomments-label-lasteditor": "Senaste redigerare",
"commentstreams-allcomments-label-lastedited": "Senast redigerad",
"commentstreams-allcomments-button-next": "Nästa",
- "commentstreams-allcomments-button-previous": "Föregående"
+ "commentstreams-allcomments-button-previous": "Föregående",
+ "commentstreams-ve-conversion-error": "Fel uppstod under konvertering mellan wikitext och HTML för VisualEditor"
}
diff --git a/CommentStreams/i18n/ti.json b/CommentStreams/i18n/ti.json
new file mode 100644
index 00000000..d4e17134
--- /dev/null
+++ b/CommentStreams/i18n/ti.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Joanmp17"
+ ]
+ },
+ "commentstreams-buttontooltip-submit": "ኣረክብ",
+ "commentstreams-allcomments-label-created": "ተፈጢሩ"
+}
diff --git a/CommentStreams/i18n/tly.json b/CommentStreams/i18n/tly.json
new file mode 100644
index 00000000..5d8c4ff8
--- /dev/null
+++ b/CommentStreams/i18n/tly.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "Patriot Kur"
+ ]
+ },
+ "commentstreams-buttontooltip-cancel": "ləğv karde",
+ "commentstreams-dialog-buttontext-cancel": "Ləğv karde"
+}
diff --git a/CommentStreams/i18n/tr.json b/CommentStreams/i18n/tr.json
index 6c52f597..6061b9fb 100644
--- a/CommentStreams/i18n/tr.json
+++ b/CommentStreams/i18n/tr.json
@@ -1,8 +1,160 @@
{
"@metadata": {
"authors": [
+ "BaRaN6161 TURK",
+ "MuratTheTurkish",
"Sayginer"
]
},
- "commentstreams-error-comment-on-deleted-page": "Bu yorumla bağlantılı olan sayfa silinmiş."
+ "commentstreams-desc": "Viki sayfalarında yorum yapmaya izin verir",
+ "commentstreams-error-prohibitedaction": "Yorum sayfalarında $1 eylemine izin verilmiyor.",
+ "commentstreams-error-comment-on-deleted-page": "Bu yorumla bağlantılı olan sayfa silinmiş.",
+ "commentstreams-author-anonymous": "anonim",
+ "apihelp-csQueryComment-description": "Bir yorumun başlığını, kullanıcısını, oluşturma zaman damgasını ve vikimetin değerini döndürün. Sayfa kimliği veya başlık sağlanmalıdır.",
+ "apihelp-csQueryComment-summary": "Bir yorumun başlığını, kullanıcısını, oluşturma zaman damgasını ve vikimetin değerini döndürün. Sayfa kimliği veya başlık sağlanmalıdır.",
+ "apihelp-csQueryComment-param-pageid": "sorgulanacak yorumu tutan sayfanın sayfa kimliği",
+ "apihelp-csQueryComment-param-title": "sorgulanacak yorumu içeren sayfanın başlığı",
+ "apihelp-csQueryComment-pageid-example": "vikimetinde sayfa kimliği 3 ile sorgu yorumu",
+ "apihelp-csQueryComment-title-example": "yorum başlığıyla yorum sorgusu CommentStreams:3 vikimetinde",
+ "apihelp-csDeleteComment-description": "Bir yorumu silin. Sayfa kimliği veya başlık sağlanmalıdır.",
+ "apihelp-csDeleteComment-summary": "Bir yorumu silin. Sayfa kimliği veya başlık sağlanmalıdır.",
+ "apihelp-csDeleteComment-param-pageid": "silinecek yorumu içeren sayfanın sayfa kimliği",
+ "apihelp-csDeleteComment-param-title": "silinecek yorumu içeren sayfanın başlığı",
+ "apihelp-csDeleteComment-pageid-example": "sayfa kimliği 3 ile yorumu sil",
+ "apihelp-csDeleteComment-title-example": "sayfa başlığı CommentStreams:3 ile yorumu sil",
+ "apihelp-csPostComment-description": "Yeni bir yorum gönderin.",
+ "apihelp-csPostComment-summary": "Yeni bir yorum gönder.",
+ "apihelp-csPostComment-param-commenttitle": "yorum için isteğe bağlı başlık.",
+ "apihelp-csPostComment-param-wikitext": "yorum için vikimetin.",
+ "apihelp-csPostComment-param-associatedid": "bu yorumun ilişkilendirildiği sayfa.",
+ "apihelp-csPostComment-param-parentid": "bu bir yanıtsa üst yorumun sayfa kimliği.",
+ "apihelp-csEditComment-description": "Mevcut bir yorumu düzenleyin. Sayfa kimliği veya başlık sağlanmalıdır.",
+ "apihelp-csEditComment-summary": "Mevcut bir yorumu düzenleyin. Sayfa kimliği veya başlık sağlanmalıdır.",
+ "apihelp-csEditComment-param-pageid": "düzenlenecek yorumu içeren sayfanın sayfa kimliği",
+ "apihelp-csEditComment-param-title": "düzenlenecek yorumu içeren sayfanın başlığı",
+ "apihelp-csEditComment-param-commenttitle": "yorum için isteğe bağlı başlık.",
+ "apihelp-csEditComment-param-wikitext": "yorum için vikimetin.",
+ "apihelp-csVote-description": "Bir yoruma oy verin (yukarı, aşağı veya nötr).",
+ "apihelp-csVote-summary": "Bir yoruma oy verin (yukarı, aşağı veya nötr).",
+ "apihelp-csVote-param-pageid": "oylanacak yorumu içeren sayfanın sayfa kimliği",
+ "apihelp-csVote-param-title": "oylanacak yorumu içeren sayfanın başlığı",
+ "apihelp-csVote-param-vote": "oyla (1, -1, veya 0).",
+ "apihelp-csVote-pageid-example": "sayfa kimliği 3 ile yorumu oylayın",
+ "apihelp-csVote-title-example": "sayfa başlığı CommentStreams:3 ile yoruma oy verin",
+ "apihelp-csWatch-description": "Yanıt aldığında bildirim almak için bir yorumu izleyin",
+ "apihelp-csWatch-summary": "Yanıt aldığında bildirim almak için bir yorumu izleyin",
+ "apihelp-csWatch-param-pageid": "izlenecek yorumu içeren sayfanın sayfa kimliği",
+ "apihelp-csWatch-param-title": "izlenecek yorumu içeren sayfanın sayfa kimliği",
+ "apihelp-csWatch-pageid-example": "sayfa kimliği 3 ile yorumu izleyin",
+ "apihelp-csWatch-title-example": "sayfa başlığı CommentStreams:3 ile yorumu izleyin",
+ "apihelp-csUnwatch-description": "Yanıt aldığında artık bildirim gönderilmeyecek bir yorumu izlemeyin",
+ "apihelp-csUnwatch-summary": "Yanıt aldığında artık bildirim gönderilmeyecek bir yorumu izlemeyin",
+ "apihelp-csUnwatch-param-pageid": "izlenecek yorumu tutan sayfanın sayfa kimliği",
+ "apihelp-csUnwatch-param-title": "izlenecek yorumu içeren sayfanın başlığı",
+ "apihelp-csUnwatch-pageid-example": "sayfa kimliği 3 ile yorumu izlemeyin",
+ "apihelp-csUnwatch-title-example": "sayfa başlığı CommentStreams:3 ile yorumu izlemeyin",
+ "commentstreams-api-error-notloggedin": "Oturum açmalısınız.",
+ "commentstreams-api-error-commentnotfound": "İstenen yorum bulunamadı.",
+ "commentstreams-api-error-notacomment": "Verilen sayfa kimliği geçerli bir açıklamaya gönderme yapmıyor.",
+ "commentstreams-api-error-missingcommenttitle": "Yanıtlanmamış yorumlar için bir yorum başlığı sağlanmalıdır.",
+ "commentstreams-api-error-post-permissions": "Kullanıcının yorum gönderme izni yok.",
+ "commentstreams-api-error-post-parentandtitle": "Hem üst kimliği hem de yorum başlığını belirtebilirsiniz.",
+ "commentstreams-api-error-post-parentpagedoesnotexist": "Yanıtlanan yorum mevcut değil.",
+ "commentstreams-api-error-post-associatedpageidmismatch": "Yorum yapılan sayfa, üst yorumun yorum yaptığı sayfayla eşleşmiyor.",
+ "commentstreams-api-error-post-associatedpagedoesnotexist": "Yorum yapılan sayfa mevcut değil.",
+ "commentstreams-api-error-post": "Yorum eklenirken hata oluştu.",
+ "commentstreams-api-error-edit-notloggedin": "Düzenlemek için oturum açmalısınız.",
+ "commentstreams-api-error-edit-permissions": "Kullanıcının yorumu düzenleme izni yok.",
+ "commentstreams-api-error-edit": "Yorum düzenlenirken hata oluştu.",
+ "commentstreams-api-error-delete-notloggedin": "Silmek için oturum açmalısınız.",
+ "commentstreams-api-error-delete-permissions": "Kullanıcının yorumu silme izni yok.",
+ "commentstreams-api-error-delete-haschildren": "Yanıtları olan bir konu silinemez. Güncellenmiş yorum akışını görmek için lütfen sayfayı yenileyin.",
+ "commentstreams-api-error-delete": "Yorum silinirken hata oluştu.",
+ "commentstreams-api-error-vote-notloggedin": "Oy vermek için oturum açmalısınız.",
+ "commentstreams-api-error-vote-novoteonreply": "Yanıtlarda oylamaya izin verilmiyor.",
+ "commentstreams-api-error-vote": "Yorum oylanırken hata oluştu.",
+ "commentstreams-api-error-watch-notloggedin": "Bir yorum izlemek için oturum açmalısınız.",
+ "commentstreams-api-error-watch-nowatchreply": "Yanıtları izlemeye izin verilmiyor.",
+ "commentstreams-api-error-watch": "Yorum izlerken hata oluştu.",
+ "commentstreams-api-error-unwatch-notloggedin": "Bir yorumu izlemek için oturum açmalısınız.",
+ "commentstreams-api-error-unwatch-nounwatchreply": "Yanıtların izlememesine izin verilmiyor.",
+ "commentstreams-api-error-unwatch": "Yorum izlemesi kaldırırken hata oluştu.",
+ "commentstreams-validation-error-nocommenttitle": "Bir yorum başlığı girmelisiniz.",
+ "commentstreams-validation-error-nocommenttext": "Yorum metni girmelisiniz.",
+ "commentstreams-buttontext-add": "Yorum ekle",
+ "commentstreams-buttontext-reply": "Yanıtla",
+ "commentstreams-buttontooltip-add": "yorum ekle",
+ "commentstreams-buttontooltip-reply": "yanıtla",
+ "commentstreams-buttontooltip-edit": "düzenle",
+ "commentstreams-buttontooltip-moderator-edit": "moderatör düzenleme",
+ "commentstreams-buttontooltip-delete": "sil",
+ "commentstreams-buttontooltip-moderator-delete": "moderatör silinme",
+ "commentstreams-buttontooltip-permalink": "kalıcı bağlantı",
+ "commentstreams-buttontooltip-collapse": "daralt",
+ "commentstreams-buttontooltip-expand": "genişlet",
+ "commentstreams-buttontooltip-upvote": "yukarı oy",
+ "commentstreams-buttontooltip-downvote": "aşağı oy",
+ "commentstreams-buttontooltip-watch": "izle",
+ "commentstreams-buttontooltip-unwatch": "izlemeyi durdur",
+ "commentstreams-buttontooltip-submit": "gönder",
+ "commentstreams-buttontooltip-cancel": "iptal",
+ "commentstreams-dialog-delete-message": "Bu yorumu silmek istediğinizden emin misiniz?",
+ "commentstreams-dialog-anonymous-message": "Oturum açmadınız. Bu yorumu kaydetmeye devam ederseniz, IP adresiniz kaydedilir ve bu yorumu düzenleyemez veya silemezsiniz.",
+ "commentstreams-dialog-buttontext-ok": "Tamam",
+ "commentstreams-dialog-buttontext-cancel": "İptal",
+ "commentstreams-dialog-buttontext-yes": "Evet",
+ "commentstreams-dialog-buttontext-no": "Hayır",
+ "commentstreams-urldialog-instructions": "Bu yoruma bir kalıcı bağlantı paylaşmak için aşağıdaki URL'yi kopyalayıp yapıştırın. Bu iletişim kutusunu kapatmak için escape tuşuna basın.",
+ "commentstreams-datetext-postedon": "Gönderilme tarihi",
+ "commentstreams-datetext-lasteditedon": "Son düzenleme tarihi",
+ "commentstreams-datetext-moderated": "denetlendi",
+ "commentstreams-title-field-placeholder": "Başlık girin...",
+ "commentstreams-body-field-placeholder": "Yeni yorum metni girin...",
+ "echo-category-title-commentstreams-notification-category": "Yeni yorumlar ve cevaplar",
+ "notification-header-commentstreams-comment-on-watched-page": "$1, {{GENDER:$6|izlediğiniz}} \"<i>$2</i>\" yorumu \"<i>$3</i>\" sayfasında {{GENDER:$4|yorumladı}}.",
+ "notification-header-commentstreams-reply-on-watched-page": "$1, {{GENDER:$6|izlediğiniz}} \"<i>$2</i>\" yorumda \"<i>$3</i>\" sayfasında {{GENDER:$4|yanıtladı}}.",
+ "notification-header-commentstreams-reply-to-watched-comment": "$1, \"<i>$3</i>\" sayfasında {{GENDER:$6|izlediğiniz}} \"<i>$2</i>\" {{GENDER:$4|yorumunu yanıtladı}}.",
+ "notification-subject-commentstreams-comment-on-watched-page": "Birisi izlediğiniz bir sayfaya yorum yaptı",
+ "notification-subject-commentstreams-reply-on-watched-page": "Birisi izlediğiniz bir sayfadaki yorumu yanıtladı",
+ "notification-subject-commentstreams-reply-to-watched-comment": "Birisi izlediğiniz bir yoruma cevap verdi",
+ "notification-body-commentstreams-comment-on-watched-page": "Yorum:\n\n\n$5",
+ "notification-body-commentstreams-reply-on-watched-page": "Yanıt:\n\n\n$5",
+ "notification-body-commentstreams-reply-to-watched-comment": "Yanıt:\n\n\n$5",
+ "notification-link-label-commentstreams-comment-on-watched-page": "Yorumu ziyaret et",
+ "notification-link-label-commentstreams-reply-on-watched-page": "Yanıtı ziyaret et",
+ "notification-link-label-commentstreams-reply-to-watched-comment": "Yanıtı ziyaret et",
+ "group-csmoderator": "Moderatörler (CommentStreams)",
+ "group-csmoderator-member": "{{GENDER:$1|moderatör (CommentStreams)}}",
+ "grouppage-csmoderator": "{{ns:project}}:Moderatörler (CommentStreams)",
+ "right-cs-comment": "Kullanıcının kendi yorumlarını gönderin, düzenleyin ve silin",
+ "action-cs-comment": "yorum gönder, düzenle veya sil",
+ "right-cs-moderator-edit": "Herhangi bir kullanıcı tarafından yorumları düzenle",
+ "action-cs-moderator-edit": "diğer kullanıcıların yorumlarını düzenle",
+ "right-cs-moderator-delete": "Herhangi bir kullanıcının yorumlarını sil",
+ "action-cs-moderator-delete": "diğer kullanıcıların yorumlarını sil",
+ "log-name-commentstreams": "CommentStreams günlüğü",
+ "log-description-commentstreams": "Bu olaylar, CommentStreams olayları gerçekleştiğinde izlenir.",
+ "logentry-commentstreams-comment-create": "$1 yorum {{GENDER:$2|oluşturdu}} $3",
+ "logentry-commentstreams-reply-create": "$1 yanıt {{GENDER:$2|oluşturdu}} $3",
+ "logentry-commentstreams-comment-edit": "$1 yorum {{GENDER:$2|düzenledi}} $3",
+ "logentry-commentstreams-comment-moderator-edit": "$1 yorum {{GENDER:$2|(moderatör) düzenledi}} $3",
+ "logentry-commentstreams-reply-edit": "$1 yanıtı {{GENDER:$2|düzenledi}} $3",
+ "logentry-commentstreams-reply-moderator-edit": "$1 yanıtı {{GENDER:$2|(moderatör) düzenledi}} $3",
+ "logentry-commentstreams-comment-delete": "$1 yorum {{GENDER:$2|sildi}} $3",
+ "logentry-commentstreams-comment-moderator-delete": "$1 yorum {{GENDER:$2|(moderatör) sildi}} $3",
+ "logentry-commentstreams-reply-delete": "$1 yanıtı {{GENDER:$2|sildi}} $3",
+ "logentry-commentstreams-reply-moderator-delete": "$1 yanıtı {{GENDER:$2|(moderatör) sildi}} $3",
+ "commentstreamsallcomments": "Tüm Yorumlar",
+ "commentstreams-allcomments-nocommentsfound": "Yorum bulunamadı.",
+ "commentstreams-allcomments-label-page": "Yorum Sayfası",
+ "commentstreams-allcomments-label-associatedpage": "İlişkili Sayfa",
+ "commentstreams-allcomments-label-commenttitle": "Yorum Başlığı",
+ "commentstreams-allcomments-label-wikitext": "Yorum",
+ "commentstreams-allcomments-label-author": "Yazar",
+ "commentstreams-allcomments-label-created": "Oluşturuldu",
+ "commentstreams-allcomments-label-lasteditor": "Son Düzenleyen",
+ "commentstreams-allcomments-label-lastedited": "Son Düzenleme",
+ "commentstreams-allcomments-button-next": "Sonraki",
+ "commentstreams-allcomments-button-previous": "Önceki",
+ "commentstreams-ve-conversion-error": "Görsel Düzenleyici için vikimetin ve HTML arasında dönüştürme hatası"
}
diff --git a/CommentStreams/i18n/ug-arab.json b/CommentStreams/i18n/ug-arab.json
index 67b728ae..95f45453 100644
--- a/CommentStreams/i18n/ug-arab.json
+++ b/CommentStreams/i18n/ug-arab.json
@@ -1,8 +1,8 @@
{
"@metadata": {
"authors": [
- "چۈشكۈن",
- "Uzdil"
+ "Uzdil",
+ "چۈشكۈن"
]
},
"commentstreams-buttontext-add": "باھا قوشۇش",
diff --git a/CommentStreams/i18n/uk.json b/CommentStreams/i18n/uk.json
index 254e9f89..6411c4cd 100644
--- a/CommentStreams/i18n/uk.json
+++ b/CommentStreams/i18n/uk.json
@@ -1,8 +1,8 @@
{
"@metadata": {
"authors": [
- "SimondR",
- "Piramidion"
+ "Piramidion",
+ "SimondR"
]
},
"commentstreams-desc": "Дає можливість коментувати вікісторінки",
@@ -80,6 +80,8 @@
"commentstreams-api-error-unwatch": "Помилка при спробі припинити спостереження за коментарем.",
"commentstreams-validation-error-nocommenttitle": "Вам треба вказати назву коментаря.",
"commentstreams-validation-error-nocommenttext": "Вам треба вказати текст коментаря.",
+ "commentstreams-buttontext-add": "Додати коментар",
+ "commentstreams-buttontext-reply": "Відповісти",
"commentstreams-buttontooltip-add": "додати коментар",
"commentstreams-buttontooltip-reply": "відповісти",
"commentstreams-buttontooltip-edit": "редагувати",
@@ -123,11 +125,11 @@
"group-csmoderator": "Модератори (CommentStreams)",
"group-csmoderator-member": "{{GENDER:$1|модератор (CommentStreams)|модераторка (CommentStreams)}}",
"grouppage-csmoderator": "{{ns:project}}:Модератори (CommentStreams)",
- "right-cs-comment": "публікація, редагування та вилучення власних коментарів",
+ "right-cs-comment": "Публікація, редагування та вилучення власних коментарів",
"action-cs-comment": "публікацію, редагування чи вилучення коментарів",
- "right-cs-moderator-edit": "редагування коментарів будь-якого користувача",
+ "right-cs-moderator-edit": "Редагування коментарів будь-якого користувача",
"action-cs-moderator-edit": "редагування коментарів інших користувачів",
- "right-cs-moderator-delete": "вилучення коментарів будь-якого користувача",
+ "right-cs-moderator-delete": "Вилучення коментарів будь-якого користувача",
"action-cs-moderator-delete": "вилучення коментарів інших користувачів",
"log-name-commentstreams": "Журнал CommentStreams",
"log-description-commentstreams": "Ці події відстежуються, коли відбуваються події CommentStreams.",
@@ -152,5 +154,6 @@
"commentstreams-allcomments-label-lasteditor": "Останній редактор",
"commentstreams-allcomments-label-lastedited": "Востаннє відредаговано",
"commentstreams-allcomments-button-next": "Наступне",
- "commentstreams-allcomments-button-previous": "Попереднє"
+ "commentstreams-allcomments-button-previous": "Попереднє",
+ "commentstreams-ve-conversion-error": "Виникла помилка під час конвертування між вікірозміткою та HTML для Візуального редактора"
}
diff --git a/CommentStreams/i18n/vec.json b/CommentStreams/i18n/vec.json
new file mode 100644
index 00000000..4f6ca65e
--- /dev/null
+++ b/CommentStreams/i18n/vec.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Fierodelveneto"
+ ]
+ },
+ "commentstreams-buttontooltip-permalink": "łinganbo permanente"
+}
diff --git a/CommentStreams/i18n/za.json b/CommentStreams/i18n/za.json
new file mode 100644
index 00000000..31441a31
--- /dev/null
+++ b/CommentStreams/i18n/za.json
@@ -0,0 +1,9 @@
+{
+ "@metadata": {
+ "authors": [
+ "唐吉訶德的侍從"
+ ]
+ },
+ "commentstreams-buttontooltip-collapse": "rwt",
+ "commentstreams-buttontooltip-expand": "mbe"
+}
diff --git a/CommentStreams/i18n/zh-hans.json b/CommentStreams/i18n/zh-hans.json
index d81d3bc8..eedbca36 100644
--- a/CommentStreams/i18n/zh-hans.json
+++ b/CommentStreams/i18n/zh-hans.json
@@ -154,5 +154,6 @@
"commentstreams-allcomments-label-lasteditor": "最后编辑者",
"commentstreams-allcomments-label-lastedited": "上次编辑于",
"commentstreams-allcomments-button-next": "下一个",
- "commentstreams-allcomments-button-previous": "上一个"
+ "commentstreams-allcomments-button-previous": "上一个",
+ "commentstreams-ve-conversion-error": "在可视化编辑器中转换wiki文本和HTML时出错"
}
diff --git a/CommentStreams/i18n/zh-hant.json b/CommentStreams/i18n/zh-hant.json
index 3a5438fd..d8571753 100644
--- a/CommentStreams/i18n/zh-hant.json
+++ b/CommentStreams/i18n/zh-hant.json
@@ -1,8 +1,8 @@
{
"@metadata": {
"authors": [
- "Liuxinyu970226",
- "Kly"
+ "Kly",
+ "Liuxinyu970226"
]
},
"commentstreams-desc": "允許在 wiki 頁面上評論",
@@ -154,5 +154,6 @@
"commentstreams-allcomments-label-lasteditor": "上一個編輯者",
"commentstreams-allcomments-label-lastedited": "上一次編輯",
"commentstreams-allcomments-button-next": "下一個",
- "commentstreams-allcomments-button-previous": "上一個"
+ "commentstreams-allcomments-button-previous": "上一個",
+ "commentstreams-ve-conversion-error": "視覺化編輯器在 wiki 文字與 HTML 之間轉換時發生錯誤"
}
diff --git a/CommentStreams/includes/ApiCSBase.php b/CommentStreams/includes/ApiCSBase.php
index ac0a9991..51ec172e 100644
--- a/CommentStreams/includes/ApiCSBase.php
+++ b/CommentStreams/includes/ApiCSBase.php
@@ -21,6 +21,12 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use ApiBase;
+use ApiMessage;
+use ManualLogEntry;
+
abstract class ApiCSBase extends ApiBase {
private $edit;
@@ -44,11 +50,11 @@ abstract class ApiCSBase extends ApiBase {
$wikipage = $this->getTitleOrPageId( $params,
$this->edit ? 'frommasterdb' : 'fromdb' );
$this->comment = Comment::newFromWikiPage( $wikipage );
- if ( is_null( $this->comment ) ) {
+ if ( $this->comment === null ) {
$this->dieCustomUsageMessage( 'commentstreams-api-error-notacomment' );
}
$result = $this->executeBody();
- if ( !is_null( $result ) ) {
+ if ( $result !== null ) {
$this->getResult()->addValue( null, $this->getModuleName(), $result );
}
}
@@ -112,7 +118,6 @@ abstract class ApiCSBase extends ApiBase {
$logEntry->setTarget( $this->comment->getWikiPage()->getTitle() );
}
$logid = $logEntry->insert();
- $logEntry->publish($logid);
}
/**
diff --git a/CommentStreams/includes/ApiCSDeleteComment.php b/CommentStreams/includes/ApiCSDeleteComment.php
index 7609e2e9..345a314f 100644
--- a/CommentStreams/includes/ApiCSDeleteComment.php
+++ b/CommentStreams/includes/ApiCSDeleteComment.php
@@ -21,6 +21,8 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
class ApiCSDeleteComment extends ApiCSBase {
/**
@@ -37,7 +39,8 @@ class ApiCSDeleteComment extends ApiCSBase {
* @return result of API request
*/
protected function executeBody() {
- if ( $this->getUser()->isAnon() ) {
+ $user = $this->getUser();
+ if ( $user->isAnon() ) {
$this->dieCustomUsageMessage(
'commentstreams-api-error-delete-notloggedin' );
}
@@ -50,10 +53,21 @@ class ApiCSDeleteComment extends ApiCSBase {
$action = 'cs-moderator-delete';
}
- if ( !$this->comment->getWikiPage()->getTitle()->userCan( $action,
- $this->getUser() ) ) {
- $this->dieCustomUsageMessage(
- 'commentstreams-api-error-delete-permissions' );
+ $title = $this->comment->getWikiPage()->getTitle();
+ if ( class_exists( 'MediaWiki\Permissions\PermissionManager' ) ) {
+ // MW 1.33+
+ if ( !\MediaWiki\MediaWikiServices::getInstance()
+ ->getPermissionManager()
+ ->userCan( $action, $user, $title )
+ ) {
+ $this->dieCustomUsageMessage(
+ 'commentstreams-api-error-delete-permissions' );
+ }
+ } else {
+ if ( !$title->userCan( $action, $user ) ) {
+ $this->dieCustomUsageMessage(
+ 'commentstreams-api-error-delete-permissions' );
+ }
}
$childCount = $this->comment->getNumReplies();
@@ -65,15 +79,15 @@ class ApiCSDeleteComment extends ApiCSBase {
'commentstreams-api-error-delete-haschildren' );
}
} else {
- $result = $this->comment->delete();
+ $result = $this->comment->delete( $user );
if ( $action === 'cs-comment' ) {
- if ( is_null( $this->comment->getParentId() ) ) {
+ if ( $this->comment->getParentId() === null ) {
$this->logAction( 'comment-delete' );
} else {
$this->logAction( 'reply-delete' );
}
} else {
- if ( is_null( $this->comment->getParentId() ) ) {
+ if ( $this->comment->getParentId() === null ) {
$this->logAction( 'comment-moderator-delete' );
} else {
$this->logAction( 'reply-moderator-delete' );
@@ -93,6 +107,7 @@ class ApiCSDeleteComment extends ApiCSBase {
* recursively delete comment and replies
*
* @param Comment $comment the comment to recursively delete
+ * @return bool
*/
private function recursiveDelete( $comment ) {
$replies = Comment::getReplies( $comment->getId() );
@@ -102,9 +117,9 @@ class ApiCSDeleteComment extends ApiCSBase {
return $result;
}
}
- $result = $comment->delete();
+ $result = $comment->delete( $this->getUser() );
$title = $comment->getWikiPage()->getTitle();
- if ( is_null( $comment->getParentId() ) ) {
+ if ( $comment->getParentId() === null ) {
$this->logAction( 'comment-moderator-delete', $title );
} else {
$this->logAction( 'reply-moderator-delete', $title );
diff --git a/CommentStreams/includes/ApiCSEditComment.php b/CommentStreams/includes/ApiCSEditComment.php
index 485553c5..c40f035c 100644
--- a/CommentStreams/includes/ApiCSEditComment.php
+++ b/CommentStreams/includes/ApiCSEditComment.php
@@ -21,6 +21,10 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use ApiBase;
+
class ApiCSEditComment extends ApiCSBase {
/**
@@ -48,16 +52,28 @@ class ApiCSEditComment extends ApiCSBase {
} else {
$action = 'cs-moderator-edit';
}
- if ( !$this->comment->getWikiPage()->getTitle()->userCan( $action,
- $this->getUser() ) ) {
- $this->dieCustomUsageMessage(
- 'commentstreams-api-error-edit-permissions' );
+
+ $title = $this->comment->getWikiPage()->getTitle();
+ if ( class_exists( 'MediaWiki\Permissions\PermissionManager' ) ) {
+ // MW 1.33+
+ if ( !\MediaWiki\MediaWikiServices::getInstance()
+ ->getPermissionManager()
+ ->userCan( $action, $this->getUser(), $title )
+ ) {
+ $this->dieCustomUsageMessage(
+ 'commentstreams-api-error-edit-permissions' );
+ }
+ } else {
+ if ( !$title->userCan( $action, $this->getUser() ) ) {
+ $this->dieCustomUsageMessage(
+ 'commentstreams-api-error-edit-permissions' );
+ }
}
$comment_title = $this->getMain()->getVal( 'commenttitle' );
$wikitext = $this->getMain()->getVal( 'wikitext' );
- if ( is_null( $this->comment->getParentId() ) && is_null( $comment_title ) ) {
+ if ( $this->comment->getParentId() === null && $comment_title === null ) {
$this->dieCustomUsageMessage(
'commentstreams-api-error-missingcommenttitle' );
}
@@ -68,13 +84,13 @@ class ApiCSEditComment extends ApiCSBase {
}
if ( $action === 'cs-comment' ) {
- if ( is_null( $this->comment->getParentId() ) ) {
+ if ( $this->comment->getParentId() === null ) {
$this->logAction( 'comment-edit' );
} else {
$this->logAction( 'reply-edit' );
}
} else {
- if ( is_null( $this->comment->getParentId() ) ) {
+ if ( $this->comment->getParentId() === null ) {
$this->logAction( 'comment-moderator-edit' );
} else {
$this->logAction( 'reply-moderator-edit' );
@@ -83,7 +99,7 @@ class ApiCSEditComment extends ApiCSBase {
$json = $this->comment->getJSON();
- if ( is_null( $this->comment->getParentId() ) ) {
+ if ( $this->comment->getParentId() === null ) {
if ( $GLOBALS['wgCommentStreamsEnableVoting'] ) {
$json['vote'] = $this->comment->getVote( $this->getUser() );
}
@@ -94,7 +110,7 @@ class ApiCSEditComment extends ApiCSBase {
}
/**
- * @return array allowed paramters
+ * @return array allowed parameters
*/
public function getAllowedParams() {
return array_merge( parent::getAllowedParams(),
diff --git a/CommentStreams/includes/ApiCSPostComment.php b/CommentStreams/includes/ApiCSPostComment.php
index 925151f9..c37d6a3d 100644
--- a/CommentStreams/includes/ApiCSPostComment.php
+++ b/CommentStreams/includes/ApiCSPostComment.php
@@ -21,6 +21,15 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use ApiBase;
+use ApiMessage;
+use EchoEvent;
+use ExtensionRegistry;
+use ManualLogEntry;
+use WikiPage;
+
class ApiCSPostComment extends ApiBase {
/**
@@ -46,19 +55,19 @@ class ApiCSPostComment extends ApiBase {
$comment_title = $this->getMain()->getVal( 'commenttitle' );
$wikitext = $this->getMain()->getVal( 'wikitext' );
- if ( is_null( $parentid ) && is_null( $comment_title ) ) {
+ if ( $parentid === null && $comment_title === null ) {
$this->dieCustomUsageMessage(
'commentstreams-api-error-missingcommenttitle' );
}
- if ( !is_null( $parentid ) && !is_null( $comment_title ) ) {
+ if ( $parentid !== null && $comment_title !== null ) {
$this->dieCustomUsageMessage(
'commentstreams-api-error-post-parentandtitle' );
}
- if ( !is_null( $parentid ) ) {
+ if ( $parentid !== null ) {
$parent_page = WikiPage::newFromId( $parentid );
- if ( is_null( $parent_page ) || !$parent_page->getTitle()->exists() ) {
+ if ( $parent_page === null || !$parent_page->getTitle()->exists() ) {
$this->dieCustomUsageMessage(
'commentstreams-api-error-post-parentpagedoesnotexist' );
}
@@ -70,7 +79,7 @@ class ApiCSPostComment extends ApiBase {
}
$associated_page = WikiPage::newFromId( $associatedid );
- if ( is_null( $associated_page ) ||
+ if ( $associated_page === null ||
!$associated_page->getTitle()->exists() ) {
$this->dieCustomUsageMessage(
'commentstreams-api-error-post-associatedpagedoesnotexist' );
@@ -83,7 +92,7 @@ class ApiCSPostComment extends ApiBase {
}
$title = $comment->getWikiPage()->getTitle();
- if ( is_null( $comment->getParentId() ) ) {
+ if ( $comment->getParentId() === null ) {
$this->logAction( 'comment-create', $title );
} else {
$this->logAction( 'reply-create', $title );
@@ -91,7 +100,7 @@ class ApiCSPostComment extends ApiBase {
$json = $comment->getJSON();
if ( ExtensionRegistry::getInstance()->isLoaded( 'Echo' ) &&
- is_null( $comment->getParentId() )
+ $comment->getParentId() === null
) {
$json['watching'] = 1;
}
@@ -101,7 +110,7 @@ class ApiCSPostComment extends ApiBase {
}
/**
- * @return array allowed paramters
+ * @return array allowed parameters
*/
public function getAllowedParams() {
return [
@@ -144,15 +153,15 @@ class ApiCSPostComment extends ApiBase {
}
$parent_id = $comment->getParentId();
- if ( is_null( $parent_id ) ) {
+ if ( $parent_id === null ) {
$comment_title = $comment->getCommentTitle();
} else {
$parent_page = WikiPage::newFromId( $parent_id );
- if ( is_null( $parent_page ) ) {
+ if ( $parent_page === null ) {
return;
}
$parent_comment = Comment::newFromWikiPage( $parent_page );
- if ( is_null( $parent_comment ) ) {
+ if ( $parent_comment === null ) {
return;
} else {
$comment_title = $parent_comment->getCommentTitle();
@@ -163,7 +172,7 @@ class ApiCSPostComment extends ApiBase {
$associated_page->getTitle()->getPrefixedText();
if ( class_exists( 'PageProps' ) ) {
$associated_title = $associated_page->getTitle();
- $values = PageProps::getInstance()->getProperties( $associated_title,
+ $values = \PageProps::getInstance()->getProperties( $associated_title,
'displaytitle' );
if ( array_key_exists( $associated_title->getArticleID(), $values ) ) {
$associated_page_display_title =
@@ -181,7 +190,7 @@ class ApiCSPostComment extends ApiBase {
'comment_wikitext' => $comment->getWikitext()
];
- if ( !is_null( $parent_id ) ) {
+ if ( $parent_id !== null ) {
EchoEvent::create( [
'type' => 'commentstreams-reply-on-watched-page',
'title' => $associated_page->getTitle(),
@@ -215,7 +224,6 @@ class ApiCSPostComment extends ApiBase {
$logEntry->setPerformer( $this->getUser() );
$logEntry->setTarget( $title );
$logid = $logEntry->insert();
- $logEntry->publish($logid);
}
/**
diff --git a/CommentStreams/includes/ApiCSQueryComment.php b/CommentStreams/includes/ApiCSQueryComment.php
index d0d290fb..a27196ee 100644
--- a/CommentStreams/includes/ApiCSQueryComment.php
+++ b/CommentStreams/includes/ApiCSQueryComment.php
@@ -21,6 +21,8 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
class ApiCSQueryComment extends ApiCSBase {
/**
diff --git a/CommentStreams/includes/ApiCSUnwatch.php b/CommentStreams/includes/ApiCSUnwatch.php
index 85d746e3..27251f97 100644
--- a/CommentStreams/includes/ApiCSUnwatch.php
+++ b/CommentStreams/includes/ApiCSUnwatch.php
@@ -21,6 +21,8 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
class ApiCSUnwatch extends ApiCSBase {
/**
@@ -42,7 +44,7 @@ class ApiCSUnwatch extends ApiCSBase {
'commentstreams-api-error-unwatch-notloggedin' );
}
- if ( !is_null( $this->comment->getParentId() ) ) {
+ if ( $this->comment->getParentId() !== null ) {
$this->dieCustomUsageMessage(
'commentstreams-api-error-unwatch-nounwatchonreply' );
}
diff --git a/CommentStreams/includes/ApiCSVote.php b/CommentStreams/includes/ApiCSVote.php
index e93021f1..3e92c346 100644
--- a/CommentStreams/includes/ApiCSVote.php
+++ b/CommentStreams/includes/ApiCSVote.php
@@ -21,6 +21,10 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use ApiBase;
+
class ApiCSVote extends ApiCSBase {
/**
@@ -44,7 +48,7 @@ class ApiCSVote extends ApiCSBase {
$vote = $this->getMain()->getVal( 'vote' );
- if ( !is_null( $this->comment->getParentId() ) ) {
+ if ( $this->comment->getParentId() !== null ) {
$this->dieCustomUsageMessage(
'commentstreams-api-error-vote-novoteonreply' );
}
@@ -58,7 +62,7 @@ class ApiCSVote extends ApiCSBase {
}
/**
- * @return array allowed paramters
+ * @return array allowed parameters
*/
public function getAllowedParams() {
return array_merge( parent::getAllowedParams(),
diff --git a/CommentStreams/includes/ApiCSWatch.php b/CommentStreams/includes/ApiCSWatch.php
index a1a67072..8c4e9e8c 100644
--- a/CommentStreams/includes/ApiCSWatch.php
+++ b/CommentStreams/includes/ApiCSWatch.php
@@ -21,6 +21,8 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
class ApiCSWatch extends ApiCSBase {
/**
@@ -42,7 +44,7 @@ class ApiCSWatch extends ApiCSBase {
'commentstreams-api-error-watch-notloggedin' );
}
- if ( !is_null( $this->comment->getParentId() ) ) {
+ if ( $this->comment->getParentId() !== null ) {
$this->dieCustomUsageMessage(
'commentstreams-api-error-watch-nowatchonreply' );
}
diff --git a/CommentStreams/includes/Comment.php b/CommentStreams/includes/Comment.php
index 27a8300c..755c24c3 100644
--- a/CommentStreams/includes/Comment.php
+++ b/CommentStreams/includes/Comment.php
@@ -21,6 +21,21 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use Html;
+use MediaWiki\MediaWikiServices;
+use MWTimestamp;
+use Parser;
+use ParserOptions;
+use SMWDataItem;
+use SMWUpdateJob;
+use Title;
+use User;
+use wAvatar;
+use WikiPage;
+use WikitextContent;
+
class Comment {
// wiki page object for this comment wiki page
@@ -73,7 +88,7 @@ class Comment {
* error
*/
public static function newFromWikiPage( $wikipage ) {
- if ( !is_null( $wikipage ) &&
+ if ( $wikipage !== null &&
$wikipage->getTitle()->getNamespace() === NS_COMMENTSTREAMS ) {
$comment = new Comment( $wikipage );
if ( $wikipage->exists() ) {
@@ -100,10 +115,10 @@ class Comment {
*/
public static function newFromValues( $assoc_page_id, $parent_page_id,
$comment_title, $wikitext, $user ) {
- if ( is_null( $comment_title ) && is_null( $parent_page_id ) ) {
+ if ( $comment_title === null && $parent_page_id === null ) {
return null;
}
- if ( !is_null( $comment_title ) && !is_null( $parent_page_id ) ) {
+ if ( $comment_title !== null && $parent_page_id !== null ) {
return null;
}
$annotated_wikitext = self::addAnnotations( $wikitext, $comment_title,
@@ -114,9 +129,20 @@ class Comment {
$index = wfRandomString();
$title = Title::newFromText( (string)$index, NS_COMMENTSTREAMS );
if ( !$title->isDeletedQuick() && !$title->exists() ) {
- if ( !$title->userCan( 'cs-comment' ) ) {
- return null;
+ if ( class_exists( 'MediaWiki\Permissions\PermissionManager' ) ) {
+ // MW 1.33+
+ if ( !MediaWikiServices::getInstance()
+ ->getPermissionManager()
+ ->userCan( 'cs-comment', $user, $title )
+ ) {
+ return null;
+ }
+ } else {
+ if ( !$title->userCan( 'cs-comment' ) ) {
+ return null;
+ }
}
+
$wikipage = new WikiPage( $title );
$status = $wikipage->doEditContent( $content, '',
EDIT_NEW | EDIT_SUPPRESS_RC, false, $user, null );
@@ -152,15 +178,15 @@ class Comment {
}
$comment->loadFromValues( $assoc_page_id, $parent_page_id, $comment_title );
- if ( is_null( $parent_page_id ) ) {
+ if ( $parent_page_id === null ) {
$comment->watch( $user );
} else {
self::watchComment( $parent_page_id, $user );
}
if ( defined( 'SMW_VERSION' ) ) {
- $job = new SMWUpdateJob( $title );
- JobQueueGroup::singleton()->push( $job );
+ $job = new SMWUpdateJob( $title, [] );
+ \JobQueueGroup::singleton()->push( $job );
}
return $comment;
@@ -195,7 +221,7 @@ class Comment {
if ( $result ) {
$this->assoc_page_id = (int)$result->cst_assoc_page_id;
$this->parent_page_id = $result->cst_parent_page_id;
- if ( !is_null( $this->parent_page_id ) ) {
+ if ( $this->parent_page_id !== null ) {
$this->parent_page_id = (int)$this->parent_page_id;
}
$this->comment_title = $result->cst_comment_title;
@@ -215,7 +241,7 @@ class Comment {
$comment_title ) {
$this->assoc_page_id = (int)$assoc_page_id;
$this->parent_page_id = $parent_page_id;
- if ( !is_null( $this->parent_page_id ) ) {
+ if ( $this->parent_page_id !== null ) {
$this->parent_page_id = (int)$this->parent_page_id;
}
$this->comment_title = $comment_title;
@@ -271,9 +297,9 @@ class Comment {
* @return string wikitext of the comment
*/
public function getWikiText() {
- if ( is_null( $this->wikitext ) ) {
- $wikitext = ContentHandler::getContentText( $this->wikipage->getContent(
- Revision::RAW ) );
+ if ( $this->wikitext === null ) {
+ $wikitext = \ContentHandler::getContentText( $this->wikipage->getContent(
+ \Revision::RAW ) );
$wikitext = $this->removeAnnotations( $wikitext );
$this->wikitext = $wikitext;
}
@@ -284,10 +310,16 @@ class Comment {
* @return string parsed HTML of the comment
*/
public function getHTML() {
- if ( is_null( $this->html ) ) {
+ if ( $this->html === null ) {
$this->getWikiText();
- if ( !is_null( $this->wikitext ) ) {
- $parser = new Parser;
+ if ( $this->wikitext !== null ) {
+ if ( class_exists( \ParserFactory::class ) ) {
+ // @requires MediaWiki >= 1.32.0
+ $parser = MediaWikiServices::getInstance()->getParserFactory()->create();
+ } else {
+ $parser = new Parser();
+ }
+
$this->html = $parser->parse( $this->wikitext,
$this->wikipage->getTitle(), new ParserOptions )->getText();
}
@@ -299,7 +331,7 @@ class Comment {
* @return User the author of this comment
*/
public function getUser() {
- if ( is_null( $this->user ) ) {
+ if ( $this->user === null ) {
$user_id = $this->wikipage->getOldestRevision()->getUser();
$this->user = User::newFromId( $user_id );
}
@@ -342,7 +374,7 @@ class Comment {
* @return string the URL of the avatar of the author of this comment
*/
public function getAvatar() {
- if ( is_null( $this->avatar ) ) {
+ if ( $this->avatar === null ) {
if ( class_exists( 'wAvatar' ) ) {
// from Extension:SocialProfile
$avatar = new wAvatar( $this->getUser()->getId(), 'l' );
@@ -359,7 +391,7 @@ class Comment {
* @return MWTimestamp the earliest revision date for this
*/
public function getCreationTimestamp() {
- if ( is_null( $this->creation_timestamp ) ) {
+ if ( $this->creation_timestamp === null ) {
$this->creation_timestamp = MWTimestamp::getLocalInstance(
$this->wikipage->getTitle()->getEarliestRevTime() );
}
@@ -370,11 +402,7 @@ class Comment {
* @return MWTimestamp the earliest revision date for this
*/
public function getCreationDate() {
- if ( !is_null( $this->getCreationTimestamp() ) ) {
- $user = RequestContext::getMain()->getUser();
- if ($user && !$user->isAnon()) {
- $this->creation_timestamp->offsetForUser($user);
- }
+ if ( $this->getCreationTimestamp() !== null ) {
return $this->creation_timestamp->format( "M j \a\\t g:i a" );
}
return "";
@@ -384,13 +412,20 @@ class Comment {
* @return MWTimestamp the latest revision date for this
*/
public function getModificationTimestamp() {
- if ( is_null( $this->modification_timestamp ) ) {
+ if ( $this->modification_timestamp === null ) {
$title = $this->wikipage->getTitle();
if ( $title->getFirstRevision()->getId() === $title->getLatestRevID() ) {
return null;
}
- $timestamp = Revision::getTimestampFromId( $title,
- $title->getLatestRevID() );
+
+ $revStore = MediaWikiServices::getInstance()->getRevisionStore();
+ $latestRev = $title->getLatestRevId();
+ if ( version_compare( MW_VERSION, '1.34', '<' ) ) {
+ $timestamp = $revStore->getTimestampFromId( $title, $latestRev );
+ } else {
+ $timestamp = $revStore->getTimestampFromId( $latestRev );
+ }
+
$this->modification_timestamp = MWTimestamp::getLocalInstance(
$timestamp );
}
@@ -401,11 +436,7 @@ class Comment {
* @return MWTimestamp the earliest revision date for this
*/
public function getModificationDate() {
- if ( !is_null( $this->getModificationTimestamp() ) ) {
- $user = RequestContext::getMain()->getUser();
- if ($user && !$user->isAnon()) {
- $this->modification_timestamp->offsetForUser($user);
- }
+ if ( $this->getModificationTimestamp() !== null ) {
return $this->modification_timestamp->format( "M j \a\\t g:i a" );
}
return null;
@@ -415,7 +446,7 @@ class Comment {
* @return int number of replies
*/
public function getNumReplies() {
- if ( is_null( $this->num_replies ) ) {
+ if ( $this->num_replies === null ) {
$dbr = wfGetDB( DB_REPLICA );
$this->num_replies = $dbr->selectRowCount(
'cs_comment_data',
@@ -491,7 +522,7 @@ class Comment {
* @return int number of up votes
*/
public function getNumUpVotes() {
- if ( is_null( $this->num_up_votes ) ) {
+ if ( $this->num_up_votes === null ) {
$dbr = wfGetDB( DB_REPLICA );
$this->num_up_votes = $dbr->selectRowCount(
'cs_votes',
@@ -510,7 +541,7 @@ class Comment {
* @return int number of down votes
*/
public function getNumDownVotes() {
- if ( is_null( $this->num_down_votes ) ) {
+ if ( $this->num_down_votes === null ) {
$dbr = wfGetDB( DB_REPLICA );
$this->num_down_votes = $dbr->selectRowCount(
'cs_votes',
@@ -530,7 +561,7 @@ class Comment {
*
* @param string $vote 1 for up vote, -1 for down vote, 0 for no vote
* @param User $user the user voting on the comment
- * @return database status code
+ * @return bool database status code
*/
public function vote( $vote, $user ) {
if ( $vote !== "-1" && $vote !== "0" && $vote !== "1" ) {
@@ -599,7 +630,7 @@ class Comment {
* watch a comment (get page ID from this comment)
*
* @param User $user the user watching the comment
- * @return database true for OK, false for error
+ * @return bool database true for OK, false for error
*/
public function watch( $user ) {
return self::watchComment( $this->getID(), $user );
@@ -608,9 +639,9 @@ class Comment {
/**
* watch a comment (get page ID from parameter)
*
- * @param $pageid the page ID of the comment to watch
+ * @param int $pageid the page ID of the comment to watch
* @param User $user the user watching the comment
- * @return database true for OK, false for error
+ * @return bool database true for OK, false for error
*/
private static function watchComment( $pageid, $user ) {
if ( self::isWatchingComment( $pageid, $user ) ) {
@@ -632,7 +663,7 @@ class Comment {
* unwatch a comment
*
* @param User $user the user unwatching the comment
- * @return database true for OK, false for error
+ * @return bool database true for OK, false for error
*/
public function unwatch( $user ) {
if ( !$this->isWatching( $user ) ) {
@@ -654,7 +685,7 @@ class Comment {
* Check if a particular user is watching this comment
*
* @param User $user the user watching the comment
- * @return database true for OK, false for error
+ * @return bool database true for OK, false for error
*/
public function isWatching( $user ) {
return self::isWatchingComment( $this->getId(), $user );
@@ -663,9 +694,9 @@ class Comment {
/**
* Check if a particular user is watching a comment
*
- * @param $pageid the page ID of the comment to check
+ * @param int $pageid the page ID of the comment to check
* @param User $user the user watching the comment
- * @return database true for OK, false for error
+ * @return bool database true for OK, false for error
*/
private static function isWatchingComment( $pageid, $user ) {
$dbr = wfGetDB( DB_REPLICA );
@@ -724,10 +755,10 @@ class Comment {
* @return bool true if successful
*/
public function update( $comment_title, $wikitext, $user ) {
- if ( is_null( $comment_title ) && is_null( $this->getParentId() ) ) {
+ if ( $comment_title === null && $this->getParentId() === null ) {
return false;
}
- if ( !is_null( $comment_title ) && !is_null( $this->getParentId() ) ) {
+ if ( $comment_title !== null && $this->getParentId() !== null ) {
return false;
}
$annotated_wikitext =
@@ -765,17 +796,28 @@ class Comment {
/**
* delete comment from database
*
+ * @param User $deleter
* @return bool true if successful
*/
- public function delete() {
- $pageid = $this->getId();
+ public function delete( User $deleter ) {
+ if ( version_compare( MW_VERSION, '1.35', '<' ) ) {
+ $status = $this->getWikiPage()->doDeleteArticleReal(
+ 'comment deleted',
+ true
+ );
+ } else {
+ $status = $this->getWikiPage()->doDeleteArticleReal(
+ 'comment deleted',
+ $deleter,
+ true
+ );
+ }
- $status = $this->getWikiPage()->doDeleteArticleReal( 'comment deleted',
- true, 0 );
if ( !$status->isOK() && !$status->isGood() ) {
return false;
}
+ $pageid = $this->getId();
$dbw = wfGetDB( DB_MASTER );
$result = $dbw->delete(
'cs_comment_data',
@@ -797,7 +839,7 @@ class Comment {
*/
public static function addAnnotations( $wikitext, $comment_title,
$assoc_page_id ) {
- if ( !is_null( $comment_title ) ) {
+ if ( $comment_title !== null ) {
$wikitext .= <<<EOT
{{DISPLAYTITLE:
$comment_title
@@ -815,7 +857,7 @@ EOT;
*/
public function removeAnnotations( $wikitext ) {
$comment_title = $this->getCommentTitle();
- if ( !is_null( $comment_title ) ) {
+ if ( $comment_title !== null ) {
$strip = <<<EOT
{{DISPLAYTITLE:
$comment_title
@@ -849,7 +891,7 @@ EOT;
$page_id = $row->cst_page_id;
$wikipage = WikiPage::newFromId( $page_id );
$comment = self::newFromWikiPage( $wikipage );
- if ( !is_null( $comment ) ) {
+ if ( $comment !== null ) {
$comments[] = $comment;
}
}
@@ -879,7 +921,7 @@ EOT;
$page_id = $row->cst_page_id;
$wikipage = WikiPage::newFromId( $page_id );
$comment = self::newFromWikiPage( $wikipage );
- if ( !is_null( $comment ) ) {
+ if ( $comment !== null ) {
$comments[] = $comment;
}
}
@@ -905,23 +947,23 @@ EOT;
}
$userpage = $user->getUserPage();
$displayname = null;
- if ( !is_null( $GLOBALS['wgCommentStreamsUserRealNamePropertyName'] ) ) {
+ if ( $GLOBALS['wgCommentStreamsUserRealNamePropertyName'] !== null ) {
$displayname = self::getUserProperty( $user,
$GLOBALS['wgCommentStreamsUserRealNamePropertyName'] );
}
- if ( is_null( $displayname ) || strlen( $displayname ) == 0 ) {
+ if ( $displayname === null || strlen( $displayname ) == 0 ) {
if ( class_exists( 'PageProps' ) ) {
- $values = PageProps::getInstance()->getProperties( $userpage,
+ $values = \PageProps::getInstance()->getProperties( $userpage,
'displaytitle' );
if ( array_key_exists( $userpage->getArticleID(), $values ) ) {
$displayname = $values[$userpage->getArticleID()];
}
}
}
- if ( is_null( $displayname ) || strlen( $displayname ) == 0 ) {
+ if ( $displayname === null || strlen( $displayname ) == 0 ) {
$displayname = $user->getRealName();
}
- if ( is_null( $displayname ) || strlen( $displayname ) == 0 ) {
+ if ( $displayname === null || strlen( $displayname ) == 0 ) {
$displayname = $user->getName();
}
if ( $linked && $userpage->exists() ) {
@@ -938,13 +980,13 @@ EOT;
*/
public static function getAvatarFromUser( $user ) {
$avatar = null;
- if ( !is_null( $GLOBALS['wgCommentStreamsUserAvatarPropertyName'] ) ) {
+ if ( $GLOBALS['wgCommentStreamsUserAvatarPropertyName'] !== null ) {
$avatar = self::getUserProperty( $user,
$GLOBALS['wgCommentStreamsUserAvatarPropertyName'] );
- if ( !is_null( $avatar ) ) {
+ if ( $avatar !== null ) {
if ( gettype( $avatar ) === 'string' ) {
$avatar = Title::newFromText( $avatar );
- if ( is_null( $avatar ) ) {
+ if ( $avatar === null ) {
return null;
}
}
@@ -952,7 +994,13 @@ EOT;
return null;
}
if ( $avatar->isKnown() && $avatar->getNamespace() === NS_FILE ) {
- $file = wfFindFile( $avatar );
+ if ( method_exists( MediaWikiServices::class, 'getRepoGroup' ) ) {
+ // MediaWiki 1.34+
+ $file = MediaWikiServices::getInstance()->getRepoGroup()
+ ->findFile( $avatar );
+ } else {
+ $file = wfFindFile( $avatar );
+ }
if ( $file ) {
return $file->getFullUrl();
}
@@ -974,9 +1022,9 @@ EOT;
$userpage = $user->getUserPage();
if ( $userpage->exists() ) {
$store = \SMW\StoreFactory::getStore();
- $subject = SMWDIWikiPage::newFromTitle( $userpage );
+ $subject = \SMWDIWikiPage::newFromTitle( $userpage );
$data = $store->getSemanticData( $subject );
- $property = SMWDIProperty::newFromUserLabel( $propertyName );
+ $property = \SMWDIProperty::newFromUserLabel( $propertyName );
$values = $data->getPropertyValues( $property );
if ( count( $values ) > 0 ) {
// this property should only have one value so pick the first one
@@ -1002,9 +1050,9 @@ EOT;
public static function locateUsersWatchingComment( $event ) {
$id = $event->getExtraParam( 'parent_id' );
$wikipage = WikiPage::newFromId( $id );
- if ( !is_null( $wikipage ) ) {
+ if ( $wikipage !== null ) {
$comment = self::newFromWikiPage( $wikipage );
- if ( !is_null( $comment ) ) {
+ if ( $comment !== null ) {
return $comment->getWatchers();
}
}
diff --git a/CommentStreams/includes/CommentStreams.php b/CommentStreams/includes/CommentStreams.php
index fba47e54..d7426969 100644
--- a/CommentStreams/includes/CommentStreams.php
+++ b/CommentStreams/includes/CommentStreams.php
@@ -21,6 +21,11 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use ExtensionRegistry;
+use MWNamespace;
+
class CommentStreams {
// CommentStreams singleton instance
@@ -39,7 +44,7 @@ class CommentStreams {
* @return CommentStreams a singleton CommentStreams instance
*/
public static function singleton() {
- if ( is_null( self::$instance ) ) {
+ if ( self::$instance === null ) {
self::$instance = new CommentStreams();
}
return self::$instance;
@@ -86,7 +91,7 @@ class CommentStreams {
* checks to see if comments should be displayed on this page
*
* @param OutputPage $output the OutputPage object
- * @return boolean true if comments should be displayed on this page
+ * @return bool true if comments should be displayed on this page
*/
private function checkDisplayComments( $output ) {
// don't display comments on this page if they are explicitly disabled
@@ -95,14 +100,14 @@ class CommentStreams {
}
// don't display comments on any page action other than view action
- if ( Action::getActionName( $output->getContext() ) !== "view" ) {
+ if ( \Action::getActionName( $output->getContext() ) !== "view" ) {
return false;
}
// if $wgCommentStreamsAllowedNamespaces is not set, display comments
// in all content namespaces
$csAllowedNamespaces = $GLOBALS['wgCommentStreamsAllowedNamespaces'];
- if ( is_null( $csAllowedNamespaces ) ) {
+ if ( $csAllowedNamespaces === null ) {
$csAllowedNamespaces = $GLOBALS['wgContentNamespaces'];
} elseif ( !is_array( $csAllowedNamespaces ) ) {
$csAllowedNamespaces = [ $csAllowedNamespaces ];
@@ -246,14 +251,15 @@ class CommentStreams {
* return all discussions (top level comments) in an array of comments
*
* @param array $allComments an array of all comments on a page
- * @param boolean $newestOnTop true if array should be sorted from newest to
+ * @param bool $newestOnTop true if array should be sorted from newest to
+ * @param bool $enableVoting
* @return array an array of all discussions
* oldest
*/
private function getDiscussions( $allComments, $newestOnTop, $enableVoting ) {
$array = array_filter(
$allComments, function ( $comment ) {
- return is_null( $comment->getParentId() );
+ return $comment->getParentId() === null;
}
);
usort( $array, function ( $comment1, $comment2 ) use ( $newestOnTop, $enableVoting ) {
diff --git a/CommentStreams/includes/CommentStreamsAllComments.alias.php b/CommentStreams/includes/CommentStreamsAllComments.alias.php
index 7a213537..841defd1 100644
--- a/CommentStreams/includes/CommentStreamsAllComments.alias.php
+++ b/CommentStreams/includes/CommentStreamsAllComments.alias.php
@@ -34,7 +34,7 @@ $specialPageAliases['he'] = [
'CommentStreamsAllComments' => [ 'כל_התגובות' ]
];
-/** Serbian Cyrilic (српски (ћирлица)) */
+/** Serbian Cyrillic (српски (ћирлица)) */
$specialPageAliases['sr-ec'] = [
'CommentStreamsAllComments' => [ 'Сви_коментари' ]
];
diff --git a/CommentStreams/includes/CommentStreamsAllComments.php b/CommentStreams/includes/CommentStreamsAllComments.php
index 52eea7b1..c11810e7 100644
--- a/CommentStreams/includes/CommentStreamsAllComments.php
+++ b/CommentStreams/includes/CommentStreamsAllComments.php
@@ -22,6 +22,13 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use Html;
+use SpecialPage;
+use Title;
+use WikiPage;
+
class CommentStreamsAllComments extends SpecialPage {
public function __construct() {
@@ -75,11 +82,11 @@ class CommentStreamsAllComments extends SpecialPage {
if ( $index < $limit ) {
$wikipage = WikiPage::newFromId( $page->page_id );
$comment = Comment::newFromWikiPage( $wikipage );
- if ( !is_null( $comment ) ) {
+ if ( $comment !== null ) {
$pagename = $comment->getWikiPage()->getTitle()->getPrefixedText();
$associatedpageid = $comment->getAssociatedId();
$associatedpage = WikiPage::newFromId( $associatedpageid );
- if ( !is_null( $associatedpage ) ) {
+ if ( $associatedpage !== null ) {
$associatedpagename =
'[[' . $associatedpage->getTitle()->getPrefixedText() . ']]';
$author = $comment->getUser();
@@ -90,11 +97,11 @@ class CommentStreamsAllComments extends SpecialPage {
$author = $author->getName();
}
$modificationdate = $comment->getModificationDate();
- if ( is_null( $modificationdate ) ) {
+ if ( $modificationdate === null ) {
$lasteditor = '';
} else {
$lasteditor =
- User::newFromId( $wikipage->getRevision()->getUser() );
+ \User::newFromId( $wikipage->getRevision()->getUser() );
if ( $lasteditor->isAnon() ) {
$lasteditor = '<i>' .
wfMessage( 'commentstreams-author-anonymous' ) . '</i>';
@@ -111,7 +118,7 @@ class CommentStreamsAllComments extends SpecialPage {
$wikitext .= '| ' . $lasteditor . PHP_EOL;
$wikitext .= '| ' . $comment->getCreationDate() . PHP_EOL;
$wikitext .= '| ' . $modificationdate . PHP_EOL;
- $index ++;
+ $index++;
}
}
} else {
@@ -120,7 +127,11 @@ class CommentStreamsAllComments extends SpecialPage {
}
$wikitext .= '|}' . PHP_EOL;
- $this->getOutput()->addWikiText( $wikitext );
+ if ( method_exists( 'OutputPage', 'addWikiTextAsInterface' ) ) {
+ $this->getOutput()->addWikiTextAsInterface( $wikitext );
+ } else {
+ $this->getOutput()->addWikiText( $wikitext );
+ }
if ( $offset > 0 || $more ) {
$this->addTableNavigation( $offset, $more, $limit, 'offset' );
diff --git a/CommentStreams/includes/CommentStreamsHooks.php b/CommentStreams/includes/CommentStreamsHooks.php
index 6bfcf99a..38afb6d3 100644
--- a/CommentStreams/includes/CommentStreamsHooks.php
+++ b/CommentStreams/includes/CommentStreamsHooks.php
@@ -21,6 +21,24 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use Article;
+use DatabaseUpdater;
+use MediaWiki;
+use OutputPage;
+use Parser;
+use PPFrame;
+use SearchResult;
+use Skin;
+use SMW\DIWikiPage;
+use SpecialSearch;
+use Status;
+use Title;
+use User;
+use WebRequest;
+use WikiPage;
+
class CommentStreamsHooks {
/**
@@ -92,16 +110,16 @@ class CommentStreamsHooks {
}
$wikipage = new WikiPage( $title );
$comment = Comment::newFromWikiPage( $wikipage );
- if ( !is_null( $comment ) ) {
+ if ( $comment !== null ) {
$commentTitle = $comment->getCommentTitle();
- if ( !is_null( $commentTitle ) ) {
+ if ( $commentTitle !== null ) {
$output->setPageTitle( $commentTitle );
}
$associatedTitle = Title::newFromId( $comment->getAssociatedId() );
- if ( !is_null( $associatedTitle ) ) {
+ if ( $associatedTitle !== null ) {
$values = [];
if ( class_exists( 'PageProps' ) ) {
- $values = PageProps::getInstance()->getProperties( $associatedTitle,
+ $values = \PageProps::getInstance()->getProperties( $associatedTitle,
'displaytitle' );
}
if ( array_key_exists( $comment->getAssociatedId(), $values ) ) {
@@ -117,7 +135,11 @@ class CommentStreamsHooks {
wfMessage( 'commentstreams-error-comment-on-deleted-page' )->text();
$output->addHTML( '<p class="error">' . $message . '</p>' );
}
- $output->addWikitext( $comment->getHTML() );
+ if ( method_exists( 'OutputPage', 'addWikiTextAsInterface' ) ) {
+ $output->addWikiTextAsInterface( $comment->getHTML() );
+ } else {
+ $output->addWikiText( $comment->getHTML() );
+ }
}
return false;
}
@@ -213,11 +235,11 @@ class CommentStreamsHooks {
*/
public static function onParserSetup( Parser $parser ) {
$parser->setHook( 'comment-streams',
- 'CommentStreamsHooks::enableCommentStreams' );
+ 'MediaWiki\Extension\CommentStreams\CommentStreamsHooks::enableCommentStreams' );
$parser->setHook( 'no-comment-streams',
- 'CommentStreamsHooks::disableCommentStreams' );
+ 'MediaWiki\Extension\CommentStreams\CommentStreamsHooks::disableCommentStreams' );
$parser->setHook( 'comment-streams-initially-collapsed',
- 'CommentStreamsHooks::initiallyCollapseCommentStreams' );
+ 'MediaWiki\Extension\CommentStreams\CommentStreamsHooks::initiallyCollapseCommentStreams' );
return true;
}
@@ -233,7 +255,7 @@ class CommentStreamsHooks {
*/
public static function enableCommentStreams( $input, array $args,
Parser $parser, PPFrame $frame ) {
- $parser->disableCache();
+ $parser->getOutput()->updateCacheExpiry( 0 );
$cs = CommentStreams::singleton();
$cs->enableCommentsOnPage();
if ( isset( $args['location'] ) && $args['location'] === 'footer' ) {
@@ -256,7 +278,7 @@ class CommentStreamsHooks {
*/
public static function disableCommentStreams( $input, array $args,
Parser $parser, PPFrame $frame ) {
- $parser->disableCache();
+ $parser->getOutput()->updateCacheExpiry( 0 );
$cs = CommentStreams::singleton();
$cs->disableCommentsOnPage();
return "";
@@ -274,7 +296,7 @@ class CommentStreamsHooks {
*/
public static function initiallyCollapseCommentStreams( $input, array $args,
Parser $parser, PPFrame $frame ) {
- $parser->disableCache();
+ $parser->getOutput()->updateCacheExpiry( 0 );
$cs = CommentStreams::singleton();
$cs->initiallyCollapseCommentsOnPage();
return "";
@@ -312,9 +334,9 @@ class CommentStreamsHooks {
public static function showSearchHitTitle( Title &$title, &$text,
SearchResult $result, array $terms, SpecialSearch $page ) {
$comment = Comment::newFromWikiPage( WikiPage::factory( $title ) );
- if ( !is_null( $comment ) ) {
+ if ( $comment !== null ) {
$t = Title::newFromId( $comment->getAssociatedId() );
- if ( !is_null( $t ) ) {
+ if ( $t !== null ) {
$title = $t;
}
}
@@ -322,9 +344,21 @@ class CommentStreamsHooks {
}
/**
+ * Implements SMW::Settings::BeforeInitializationComplete callback.
+ * See https://github.com/SemanticMediaWiki/SemanticMediaWiki/blob/master/docs/technical/hooks/hook.settings.beforeinitializationcomplete.md
+ * Defines CommentStreams namespace constants.
+ *
+ * @param array &$configuration An array of the configuration options
+ */
+ public static function onSMWInitialization( array &$configuration ) {
+ $namespace = $GLOBALS['wgCommentStreamsNamespaceIndex'];
+ $configuration['smwgNamespacesWithSemanticLinks'][$namespace] = true;
+ }
+
+ /**
* Implements extension registration callback.
* See https://www.mediawiki.org/wiki/Manual:Extension_registration#Customizing_registration
- * Defines CommentStreams namespace constants.
+ * Sets configuration constants.
*
*/
public static function onRegistration() {
@@ -332,7 +366,6 @@ class CommentStreamsHooks {
define( 'NS_COMMENTSTREAMS_TALK',
$GLOBALS['wgCommentStreamsNamespaceIndex'] + 1 );
$GLOBALS['wgNamespacesToBeSearchedDefault'][NS_COMMENTSTREAMS] = true;
- $GLOBALS['smwgNamespacesWithSemanticLinks'][NS_COMMENTSTREAMS] = true;
$found = false;
foreach ( $GLOBALS['wgGroupPermissions'] as $groupperms ) {
if ( isset( $groupperms['cs-comment'] ) ) {
@@ -392,40 +425,40 @@ class CommentStreamsHooks {
*/
public static function updateData( $store, $semanticData ) {
$subject = $semanticData->getSubject();
- if ( !is_null( $subject ) && !is_null( $subject->getTitle() ) &&
+ if ( $subject !== null && $subject->getTitle() !== null &&
$subject->getTitle()->getNamespace() === NS_COMMENTSTREAMS ) {
$page_id = $subject->getTitle()->getArticleID( Title::GAID_FOR_UPDATE );
$wikipage = WikiPage::newFromId( $page_id );
$comment = Comment::newFromWikiPage( $wikipage );
- if ( is_null( $comment ) ) {
+ if ( $comment === null ) {
return true;
}
$assoc_page_id = $comment->getAssociatedId();
- if ( !is_null( $assoc_page_id ) ) {
+ if ( $assoc_page_id !== null ) {
$assoc_wikipage = WikiPage::newFromId( $assoc_page_id );
- if ( !is_null( $assoc_wikipage ) ) {
+ if ( $assoc_wikipage !== null ) {
$propertyDI = new SMW\DIProperty( '___CS_ASSOCPG' );
$dataItem =
- SMW\DIWikiPage::newFromTitle( $assoc_wikipage->getTitle() );
+ DIWikiPage::newFromTitle( $assoc_wikipage->getTitle() );
$semanticData->addPropertyObjectValue( $propertyDI, $dataItem );
}
}
$parent_page_id = $comment->getParentId();
- if ( !is_null( $parent_page_id ) ) {
+ if ( $parent_page_id !== null ) {
$parent_wikipage = WikiPage::newFromId( $parent_page_id );
- if ( !is_null( $parent_wikipage ) ) {
+ if ( $parent_wikipage !== null ) {
$propertyDI = new SMW\DIProperty( '___CS_REPLYTO' );
$dataItem =
- SMW\DIWikiPage::newFromTitle( $parent_wikipage->getTitle() );
+ DIWikiPage::newFromTitle( $parent_wikipage->getTitle() );
$semanticData->addPropertyObjectValue( $propertyDI, $dataItem );
}
}
$commentTitle = $comment->getCommentTitle();
- if ( !is_null( $commentTitle ) ) {
+ if ( $commentTitle !== null ) {
$propertyDI = new SMW\DIProperty( '___CS_TITLE' );
$dataItem = new SMWDIBlob( $comment->getCommentTitle() );
$semanticData->addPropertyObjectValue( $propertyDI, $dataItem );
diff --git a/CommentStreams/includes/CommentStreamsUtils.php b/CommentStreams/includes/CommentStreamsUtils.php
index 10d3446e..1e09303c 100644
--- a/CommentStreams/includes/CommentStreamsUtils.php
+++ b/CommentStreams/includes/CommentStreamsUtils.php
@@ -19,7 +19,11 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use Linker;
use MediaWiki\MediaWikiServices;
+use Title;
class CommentStreamsUtils {
@@ -33,7 +37,7 @@ class CommentStreamsUtils {
if ( method_exists( 'MediaWikiServices', 'getLinkRenderer' ) ) {
$linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
return $linkRenderer->makeLink( $title, $display );
- };
+ }
return Linker::link( $title, $display );
}
}
diff --git a/CommentStreams/includes/EchoCSPresentationModel.php b/CommentStreams/includes/EchoCSPresentationModel.php
index bc6786cf..3dba5cc9 100644
--- a/CommentStreams/includes/EchoCSPresentationModel.php
+++ b/CommentStreams/includes/EchoCSPresentationModel.php
@@ -21,6 +21,10 @@
* DEALINGS IN THE SOFTWARE.
*/
+namespace MediaWiki\Extension\CommentStreams;
+
+use EchoEventPresentationModel;
+
class EchoCSPresentationModel extends EchoEventPresentationModel {
/**
@@ -81,6 +85,6 @@ class EchoCSPresentationModel extends EchoEventPresentationModel {
* @inheritDoc
*/
public function canRender() {
- return !is_null( $this->event->getTitle() );
+ return $this->event->getTitle() !== null;
}
}
diff --git a/CommentStreams/package-lock.json b/CommentStreams/package-lock.json
new file mode 100644
index 00000000..a48acfe0
--- /dev/null
+++ b/CommentStreams/package-lock.json
@@ -0,0 +1,1864 @@
+{
+ "requires": true,
+ "lockfileVersion": 1,
+ "dependencies": {
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
+ "dev": true
+ },
+ "JSV": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz",
+ "integrity": "sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c=",
+ "dev": true
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ },
+ "dependencies": {
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ }
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
+ "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=",
+ "dev": true
+ },
+ "array-slice": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
+ "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "dev": true
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "eventemitter2": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
+ "dev": true
+ },
+ "exit": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "findup-sync": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
+ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
+ "dev": true,
+ "requires": {
+ "glob": "~5.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
+ "fined": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
+ "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "is-plain-object": "^2.0.3",
+ "object.defaults": "^1.1.0",
+ "object.pick": "^1.2.0",
+ "parse-filepath": "^1.0.1"
+ }
+ },
+ "flagged-respawn": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
+ "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
+ "dev": true
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
+ "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "getobject": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
+ "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ }
+ },
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ }
+ },
+ "grunt": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.3.0.tgz",
+ "integrity": "sha512-6ILlMXv11/4cxuhSMfSU+SfvbxrPuqZrAtLN64+tZpQ3DAKfSQPQHRbTjSbdtxfyQhGZPtN0bDZJ/LdCM5WXXA==",
+ "dev": true,
+ "requires": {
+ "dateformat": "~3.0.3",
+ "eventemitter2": "~0.4.13",
+ "exit": "~0.1.2",
+ "findup-sync": "~0.3.0",
+ "glob": "~7.1.6",
+ "grunt-cli": "~1.3.2",
+ "grunt-known-options": "~1.1.0",
+ "grunt-legacy-log": "~3.0.0",
+ "grunt-legacy-util": "~2.0.0",
+ "iconv-lite": "~0.4.13",
+ "js-yaml": "~3.14.0",
+ "minimatch": "~3.0.4",
+ "mkdirp": "~1.0.4",
+ "nopt": "~3.0.6",
+ "rimraf": "~3.0.2"
+ },
+ "dependencies": {
+ "grunt-cli": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz",
+ "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==",
+ "dev": true,
+ "requires": {
+ "grunt-known-options": "~1.1.0",
+ "interpret": "~1.1.0",
+ "liftoff": "~2.5.0",
+ "nopt": "~4.0.1",
+ "v8flags": "~3.1.1"
+ },
+ "dependencies": {
+ "nopt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+ "dev": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ }
+ }
+ }
+ }
+ },
+ "grunt-banana-checker": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/grunt-banana-checker/-/grunt-banana-checker-0.9.0.tgz",
+ "integrity": "sha512-SqPiB6OazWqR8USL0NymtuT5Br3mD9WBBsM1rHC/3wIi2SrZNM6/+j9CIeuEM5oCn+AtO2Y0+rzzFyOdC9afAg==",
+ "dev": true
+ },
+ "grunt-jsonlint": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-jsonlint/-/grunt-jsonlint-1.1.0.tgz",
+ "integrity": "sha1-ox7pckCu4/NDyiY8Rb1TIGMSfbI=",
+ "dev": true,
+ "requires": {
+ "jsonlint": "1.6.2",
+ "strip-json-comments": "^2.0.0"
+ }
+ },
+ "grunt-known-options": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz",
+ "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==",
+ "dev": true
+ },
+ "grunt-legacy-log": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz",
+ "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==",
+ "dev": true,
+ "requires": {
+ "colors": "~1.1.2",
+ "grunt-legacy-log-utils": "~2.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.19"
+ }
+ },
+ "grunt-legacy-log-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz",
+ "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==",
+ "dev": true,
+ "requires": {
+ "chalk": "~4.1.0",
+ "lodash": "~4.17.19"
+ }
+ },
+ "grunt-legacy-util": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.0.tgz",
+ "integrity": "sha512-ZEmYFB44bblwPE2oz3q3ygfF6hseQja9tx8I3UZIwbUik32FMWewA+d1qSFicMFB+8dNXDkh35HcDCWlpRsGlA==",
+ "dev": true,
+ "requires": {
+ "async": "~1.5.2",
+ "exit": "~0.1.1",
+ "getobject": "~0.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.20",
+ "underscore.string": "~3.3.5",
+ "which": "~1.3.0"
+ }
+ },
+ "has-color": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
+ "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "^1.0.0"
+ }
+ },
+ "hooker": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
+ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "interpret": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
+ "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=",
+ "dev": true
+ },
+ "is-absolute": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
+ "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
+ "dev": true,
+ "requires": {
+ "is-relative": "^1.0.0",
+ "is-windows": "^1.0.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-relative": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
+ "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
+ "dev": true,
+ "requires": {
+ "is-unc-path": "^1.0.0"
+ }
+ },
+ "is-unc-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
+ "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
+ "dev": true,
+ "requires": {
+ "unc-path-regex": "^0.1.2"
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsonlint": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.2.tgz",
+ "integrity": "sha1-VzcEUIX1XrRVxosf9OvAG9UOiDA=",
+ "dev": true,
+ "requires": {
+ "JSV": ">= 4.0.x",
+ "nomnom": ">= 1.5.x"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ },
+ "liftoff": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz",
+ "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
+ "dev": true,
+ "requires": {
+ "extend": "^3.0.0",
+ "findup-sync": "^2.0.0",
+ "fined": "^1.0.1",
+ "flagged-respawn": "^1.0.0",
+ "is-plain-object": "^2.0.4",
+ "object.map": "^1.0.0",
+ "rechoir": "^0.6.2",
+ "resolve": "^1.1.7"
+ },
+ "dependencies": {
+ "findup-sync": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
+ "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
+ "dev": true,
+ "requires": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^3.1.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ }
+ }
+ }
+ },
+ "lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
+ "dev": true
+ },
+ "make-iterator": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
+ "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "nomnom": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
+ "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=",
+ "dev": true,
+ "requires": {
+ "chalk": "~0.4.0",
+ "underscore": "~1.6.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
+ "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
+ "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "~1.0.0",
+ "has-color": "~0.1.0",
+ "strip-ansi": "~0.1.0"
+ }
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.defaults": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
+ "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
+ "dev": true,
+ "requires": {
+ "array-each": "^1.0.1",
+ "array-slice": "^1.0.0",
+ "for-own": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
+ "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
+ "dev": true,
+ "requires": {
+ "for-own": "^1.0.0",
+ "make-iterator": "^1.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
+ "dev": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "parse-filepath": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
+ "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
+ "dev": true,
+ "requires": {
+ "is-absolute": "^1.0.0",
+ "map-cache": "^0.2.0",
+ "path-root": "^0.1.1"
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "path-root": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
+ "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
+ "dev": true,
+ "requires": {
+ "path-root-regex": "^0.1.0"
+ }
+ },
+ "path-root-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
+ "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=",
+ "dev": true
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
+ "dev": true,
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ }
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
+ "dev": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
+ "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "unc-path-regex": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
+ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
+ "dev": true
+ },
+ "underscore": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
+ "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
+ "dev": true
+ },
+ "underscore.string": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
+ "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "^1.0.3",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ }
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "v8flags": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz",
+ "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+}
diff --git a/CommentStreams/package.json b/CommentStreams/package.json
index bcf5b133..ec570705 100644
--- a/CommentStreams/package.json
+++ b/CommentStreams/package.json
@@ -4,8 +4,8 @@
"test": "grunt test"
},
"devDependencies": {
- "grunt": "1.0.1",
- "grunt-banana-checker": "0.5.0",
+ "grunt": "1.3.0",
+ "grunt-banana-checker": "0.9.0",
"grunt-jsonlint": "1.1.0"
}
}
diff --git a/CommentStreams/resources/CommentStreams.css b/CommentStreams/resources/CommentStreams.css
index 574e6a82..0e1b648e 100644
--- a/CommentStreams/resources/CommentStreams.css
+++ b/CommentStreams/resources/CommentStreams.css
@@ -107,7 +107,7 @@
padding-left: 5px;
}
-button:hover {
+.cs-button:hover {
background-color: #8eddf5;
}
diff --git a/CommentStreams/resources/CommentStreams.js b/CommentStreams/resources/CommentStreams.js
index e16ed87e..45a2ce5a 100644
--- a/CommentStreams/resources/CommentStreams.js
+++ b/CommentStreams/resources/CommentStreams.js
@@ -333,7 +333,7 @@ var commentstreams_controller = ( function( mw, $ ) {
.addClass( 'cs-comment-header-right' );
if ( commentData.parentid === null && this.enableWatchlist &&
- !mw.user.isAnon() ) {
+ !this.isLoggedIn ) {
rightDiv.append( this.createWatchButton( commentData ) );
}
@@ -437,7 +437,7 @@ var commentstreams_controller = ( function( mw, $ ) {
'data-toggle': 'tooltip'
} );
var editimage = $( '<img>' );
- if ( mw.user.getName() !== username ) {
+ if ( mw.config.get( 'wgUserName' ) !== username ) {
editimage
.attr( {
title: mw.message( 'commentstreams-buttontooltip-moderator-edit' ),
@@ -471,7 +471,7 @@ var commentstreams_controller = ( function( mw, $ ) {
'data-toggle': 'tooltip'
} );
var deleteimage = $( '<img>' );
- if ( mw.user.getName() !== username ) {
+ if ( mw.config.get( 'wgUserName' ) !== username ) {
deleteimage
.attr( {
title: mw.message( 'commentstreams-buttontooltip-moderator-delete' ),
@@ -553,10 +553,7 @@ var commentstreams_controller = ( function( mw, $ ) {
var self = this;
var upButton;
- if ( mw.user.isAnon() ) {
- upButton = $( '<span>' )
- .addClass( 'cs-button' );
- } else {
+ if ( this.isLoggedIn ) {
upButton = $( '<button>' )
.addClass( 'cs-button' )
.addClass( 'cs-vote-button' )
@@ -564,6 +561,9 @@ var commentstreams_controller = ( function( mw, $ ) {
self.vote( $( this ), commentData.pageid, true,
commentData.created_timestamp );
} );
+ } else {
+ upButton = $( '<span>' )
+ .addClass( 'cs-button' );
}
var upimage = $( '<img>' )
.attr( 'title', mw.message( 'commentstreams-buttontooltip-upvote' ) )
@@ -581,10 +581,7 @@ var commentstreams_controller = ( function( mw, $ ) {
upButton.append( upcountspan );
var downButton;
- if ( mw.user.isAnon() ) {
- downButton = $( '<span>' )
- .addClass( 'cs-button' );
- } else {
+ if ( this.isLoggedIn ) {
downButton = $( '<button>' )
.addClass( 'cs-button' )
.addClass( 'cs-vote-button' )
@@ -592,6 +589,9 @@ var commentstreams_controller = ( function( mw, $ ) {
self.vote( $( this ), commentData.pageid, false,
commentData.created_timestamp );
} );
+ } else {
+ downButton = $( '<span>' )
+ .addClass( 'cs-button' );
}
var downimage = $( '<img>' )
.attr( 'title', mw.message( 'commentstreams-buttontooltip-downvote' ) )
@@ -1392,7 +1392,7 @@ var commentstreams_controller = ( function( mw, $ ) {
},
canEdit: function( comment ) {
var username = comment.username;
- if ( !mw.user.isAnon() && ( mw.user.getName() === username ||
+ if ( this.isLoggedIn && ( mw.config.get( 'wgUserName' ) === username ||
this.moderatorEdit ) ) {
return true;
}
@@ -1400,8 +1400,8 @@ var commentstreams_controller = ( function( mw, $ ) {
},
canDelete: function( comment ) {
var username = comment.username;
- if ( !mw.user.isAnon() &&
- ( mw.user.getName() === username || this.moderatorDelete ) &&
+ if ( this.isLoggedIn && ( mw.config.get( 'wgUserName' ) === username ||
+ this.moderatorDelete ) &&
( comment.numreplies === 0 || this.moderatorFastDelete ) ) {
return true;
}
diff --git a/CommentStreams/resources/CommentStreamsQuerier.js b/CommentStreams/resources/CommentStreamsQuerier.js
index b124656a..84d92403 100644
--- a/CommentStreams/resources/CommentStreamsQuerier.js
+++ b/CommentStreams/resources/CommentStreamsQuerier.js
@@ -42,7 +42,7 @@ var commentstreams_querier = ( function( mw ) {
api.post( {
action: 'csDeleteComment',
pageid: pageid,
- token: mw.user.tokens.get( 'editToken' )
+ token: mw.user.tokens.get( 'csrfToken' )
} )
.done( function( data ) {
reply( data );
@@ -59,7 +59,7 @@ var commentstreams_querier = ( function( mw ) {
action: 'csPostComment',
wikitext: wikitext,
associatedid: associatedid,
- token: mw.user.tokens.get( 'editToken' )
+ token: mw.user.tokens.get( 'csrfToken' )
};
if ( commenttitle !== null ) {
data.commenttitle = commenttitle;
@@ -85,7 +85,7 @@ var commentstreams_querier = ( function( mw ) {
pageid: pageid,
commenttitle: commenttitle,
wikitext: wikitext,
- token: mw.user.tokens.get( 'editToken' )
+ token: mw.user.tokens.get( 'csrfToken' )
} )
.done( function( data ) {
reply( data.csEditComment );
@@ -101,7 +101,7 @@ var commentstreams_querier = ( function( mw ) {
action: 'csVote',
pageid: pageid,
vote: vote,
- token: mw.user.tokens.get( 'editToken' )
+ token: mw.user.tokens.get( 'csrfToken' )
} )
.done( function( data ) {
reply( data.csVote );
@@ -116,7 +116,7 @@ var commentstreams_querier = ( function( mw ) {
api.post( {
action: action ? 'csWatch' : 'csUnwatch',
pageid: pageid,
- token: mw.user.tokens.get( 'editToken' )
+ token: mw.user.tokens.get( 'csrfToken' )
} )
.done( function( data ) {
if ( action ) {