mediawiki-extensions-Discus.../extension.json
C. Scott Ananian 5203d30ea6 Use DOMCompat::newDocument() to create a new Document
For compatibility with Parsoid's document abstraction (Parsoid may
switch to an alternate DOM library in the future), don't explicitly
create a new document object using `new DOMDocument`; instead use
the Parsoid wrapper `DOMCompat::newDocument()`.  This ensures that
the Document object created will be compatible with Parsoid.

There are a number of other subtle dependencies on the PHP `dom`
extension in DiscussionTools, like explicit `instanceof` tests; those
will be tweaked in a follow-up patch
(I3c4f41c3819770f85d68157c9f690d650b7266a3) since they do not affect
correctness so long as Parsoid is aliasing Document to a subclass of
the built-in DOMDocument.  Similarly, the Phan warnings we suppress
do not cause runtime errors (because of the fixes included in
c5265341afd9efde6b54ba56dc009aab88eff83c) but phan will be happier
once the follow-up patch lands and aligns all the DOM types.

Bug: T287611
Depends-On: If0671255779571a91d3472a9d90d0f2d69dd1f7d
Change-Id: Ib98bd5b76de7a0d32a29840d1ce04379c72ef486
2021-07-30 18:15:11 -04:00

483 lines
17 KiB
JSON

{
"name": "DiscussionTools",
"license-name": "MIT",
"version": "0.0.0",
"url": "https://www.mediawiki.org/wiki/Extension:DiscussionTools",
"namemsg": "discussiontools",
"descriptionmsg": "discussiontools-desc",
"manifest_version": 2,
"requires": {
"MediaWiki": ">= 1.37.0",
"extensions": {
"VisualEditor": ">= 0.1.2",
"Linter": "*"
}
},
"MessagesDirs": {
"DiscussionTools": [
"i18n",
"i18n/api"
]
},
"callback": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\RegistrationHooks::onRegistration",
"ResourceFileModulePaths": {
"localBasePath": "modules",
"remoteExtPath": "DiscussionTools/modules"
},
"ResourceModules": {
"ext.discussionTools.init.styles": {
"styles": "dt.init.less",
"targets": [
"desktop",
"mobile"
]
},
"ext.discussionTools.init": {
"packageFiles": [
"dt.init.js",
"controller.js",
{
"name": "controller/contLangMessages.json",
"callback": "\\MediaWiki\\Extension\\DiscussionTools\\Data::getContentLanguageMessages",
"callbackParam": [
"discussiontools-defaultsummary-reply",
"newsectionsummary",
"discussiontools-replywidget-feedback-link",
"discussiontools-replywidget-feedback-link-newtopic",
"discussiontools-replywidget-mention-prefix",
"discussiontools-signature-prefix"
]
},
{
"name": "config.json",
"config": {
"enable": "DiscussionToolsEnable"
}
},
"ReplyLinksController.js",
"CommentController.js",
"NewTopicController.js",
"logger.js",
"modifier.js",
"utils.js",
"Parser.js",
"ThreadItem.js",
"CommentItem.js",
"HeadingItem.js",
"CommentDetails.js",
"lib/moment-timezone/moment-timezone-with-data-1970-2030.js",
{
"name": "parser/data.json",
"callback": "\\MediaWiki\\Extension\\DiscussionTools\\Data::getLocalData"
}
],
"styles": [
"dt.ui.NewTopicController.less"
],
"dependencies": [
"ext.discussionTools.init.styles",
"moment",
"rangefix",
"oojs-ui-windows",
"mediawiki.action.view.postEdit",
"mediawiki.api",
"mediawiki.Title",
"mediawiki.Uri",
"mediawiki.util",
"mediawiki.storage",
"mediawiki.String",
"mediawiki.cookie",
"ext.visualEditor.core.utils.parsing"
],
"messages": [
"discussiontools-postedit-confirmation-published",
"discussiontools-postedit-confirmation-topicadded",
"discussiontools-error-comment-conflict",
"discussiontools-error-comment-disappeared",
"discussiontools-error-comment-not-saved",
"discussiontools-error-comment-is-transcluded",
"discussiontools-error-comment-is-transcluded-title",
"discussiontools-error-lint",
"discussiontools-error-noswitchtove",
"discussiontools-error-noswitchtove-extension",
"discussiontools-error-noswitchtove-table",
"discussiontools-error-noswitchtove-template",
"discussiontools-error-noswitchtove-title",
"discussiontools-newtopic-placeholder-title",
"discussiontools-newtopic-missing-title",
"discussiontools-replylink",
"discussiontools-replywidget-loading",
"discussiontools-topicsubscription-button-subscribe",
"discussiontools-topicsubscription-button-subscribe-tooltip",
"discussiontools-topicsubscription-button-unsubscribe",
"discussiontools-topicsubscription-button-unsubscribe-tooltip",
"discussiontools-topicsubscription-notify-subscribed-body",
"discussiontools-topicsubscription-notify-subscribed-title",
"discussiontools-topicsubscription-notify-unsubscribed-body",
"discussiontools-topicsubscription-notify-unsubscribed-title"
]
},
"ext.discussionTools.debug": {
"packageFiles": [
"dt.debug.js",
"highlighter.js"
],
"styles": "highlighter.less",
"dependencies": [
"ext.discussionTools.init"
]
},
"ext.discussionTools.ReplyWidget": {
"packageFiles": [
"dt.ui.ReplyWidget.js",
"ModeTabSelectWidget.js",
"ModeTabOptionWidget.js",
"AbandonCommentDialog.js",
"AbandonTopicDialog.js"
],
"styles": [
"dt.ui.ReplyWidget.less"
],
"messages": [
"discussiontools-replywidget-abandon",
"discussiontools-replywidget-abandon-discard",
"discussiontools-replywidget-abandon-keep",
"discussiontools-replywidget-abandontopic",
"discussiontools-replywidget-abandontopic-discard",
"discussiontools-replywidget-abandontopic-keep",
"discussiontools-replywidget-advanced",
"discussiontools-replywidget-anon-warning",
"discussiontools-replywidget-cancel",
"discussiontools-replywidget-feedback",
"discussiontools-replywidget-mention-tool-header",
"discussiontools-replywidget-mention-tool-title",
"discussiontools-replywidget-mode-source",
"discussiontools-replywidget-mode-visual",
"discussiontools-replywidget-newtopic",
"discussiontools-replywidget-placeholder-newtopic",
"discussiontools-replywidget-placeholder-reply",
"discussiontools-replywidget-preview",
"discussiontools-replywidget-reply",
"discussiontools-replywidget-summary",
"discussiontools-replywidget-terms-click",
"discussiontools-replywidget-transcluded",
"visualeditor-key-ctrl",
"visualeditor-key-enter",
"visualeditor-key-escape",
"visualeditor-mweditmode-tooltip"
],
"dependencies": [
"oojs-ui-widgets",
"oojs-ui.styles.indicators",
"ext.discussionTools.init",
"mediawiki.widgets.AbandonEditDialog",
"mediawiki.widgets.visibleLengthLimit"
],
"optionalDependencies": {
"ConfirmEdit": "ext.confirmEdit.CaptchaInputWidget"
},
"factory": "\\MediaWiki\\Extension\\DiscussionTools\\Data::addOptionalDependencies"
},
"ext.discussionTools.ReplyWidgetPlain": {
"packageFiles": [
"dt.ui.ReplyWidgetPlain.js"
],
"dependencies": [
"ext.discussionTools.ReplyWidget",
"mediawiki.editfont.styles",
"mediawiki.user",
"mediawiki.jqueryMsg"
]
},
"ext.discussionTools.ReplyWidgetVisual": {
"packageFiles": [
"dt.ui.ReplyWidgetVisual.js",
"dt-ve/CommentTarget.js",
"dt-ve/CommentTargetWidget.js",
"dt-ve/dt.dm.MWSignatureNode.js",
"dt-ve/dt.ce.MWSignatureNode.js",
"dt-ve/dt.ui.MWSignatureContextItem.js",
"dt-ve/dt.ui.registries.js",
"dt-ve/dt.ui.UsernameCompletionAction.js",
"dt-ve/dt.ui.UsernameCompletionTool.js",
"dt-ve/dt.dm.PingNode.js",
"dt-ve/dt.ce.PingNode.js"
],
"styles": [
"dt-ve/CommentTargetWidget.less"
],
"messages": [
"discussiontools-replywidget-signature-title",
"discussiontools-replywidget-signature-body"
],
"dependencies": [
"ext.discussionTools.ReplyWidget",
"ext.visualEditor.mwcore",
"ext.visualEditor.mwsignature",
"ext.visualEditor.mwwikitext",
"ext.visualEditor.core.desktop",
"ext.visualEditor.desktopTarget",
"ext.visualEditor.mwextensions.desktop"
]
}
},
"QUnitTestModule": {
"localBasePath": "tests",
"remoteExtPath": "DiscussionTools/tests",
"packageFiles": [
"qunit/index.js",
"qunit/testUtils.js",
{
"name": "data-en.json",
"callback": "\\MediaWiki\\Extension\\DiscussionTools\\Data::getLocalData",
"callbackParam": "en"
},
"data/arwiki-config.json",
"data/arwiki-data.json",
"data/ckbwiki-config.json",
"data/ckbwiki-data.json",
"data/enwiki-config.json",
"data/enwiki-data.json",
"data/frwiki-config.json",
"data/frwiki-data.json",
"data/huwiki-config.json",
"data/huwiki-data.json",
"data/itwiki-config.json",
"data/itwiki-data.json",
"data/nlwiki-config.json",
"data/nlwiki-data.json",
"data/plwiki-config.json",
"data/plwiki-data.json",
"data/srwiki-config.json",
"data/srwiki-data.json",
"cases/authors.json",
"cases/comments.json",
"cases/transcluded.json",
"cases/modified.json",
"cases/reply.json",
"cases/unwrap.json",
"cases/isWikitextSigned.json",
"cases/isHtmlSigned.json",
"cases/appendSignature.json",
"cases/linearWalk.json",
"cases/sanitize-wikitext-linebreaks.json",
"cases/timestamp-regex.json",
"cases/timestamp-parser.json",
"cases/timestamp-parser-dst.json",
"cases/linearWalk/simple.json",
"cases/en-big-oldparser/en-big-oldparser.json",
"cases/en-big-parsoid/en-big-parsoid.json",
"cases/en-big-parsoid/en-big-parsoid-transcludedFrom.json",
"cases/ckb-big-oldparser/ckb-big-oldparser.json",
"cases/ckb-big-parsoid/ckb-big-parsoid.json",
"cases/en-bigafd-parsoid/en-bigafd-parsoid-transcludedFrom.json",
"cases/transclusions/transclusions-transcludedFrom.json",
"cases/pl-big-oldparser/pl-big-oldparser.json",
"cases/pl-big-parsoid/pl-big-parsoid.json",
"cases/ar-no-paragraph-oldparser/ar-no-paragraph-oldparser.json",
"cases/ar-no-paragraph-parsoid/ar-no-paragraph-parsoid.json",
"cases/ar-nbsp-timezone-oldparser/ar-nbsp-timezone-oldparser.json",
"cases/ar-nbsp-timezone-parsoid/ar-nbsp-timezone-parsoid.json",
"cases/fr-unsigned-oldparser/fr-unsigned-oldparser.json",
"cases/fr-unsigned-parsoid/fr-unsigned-parsoid.json",
"cases/fr-unsigned-parsoid/fr-unsigned-parsoid-transcludedFrom.json",
"cases/it-unsigned-oldparser/it-unsigned-oldparser.json",
"cases/it-unsigned-parsoid/it-unsigned-parsoid.json",
"cases/it-unsigned-parsoid/it-unsigned-parsoid-transcludedFrom.json",
"cases/sr-ec/sr-ec.json",
"cases/sr-el/sr-el.json",
"cases/dt-tags-oldparser/dt-tags-oldparser.json",
"cases/dt-tags-parsoid/dt-tags-parsoid.json",
"cases/no-heading/no-heading.json",
"cases/lrm-signature/lrm-signature.json",
"cases/fallback-encoding-link/fallback-encoding-link.json",
"cases/parsoid-sections/parsoid-sections-transcludedFrom.json",
"cases/signatures-funny/signatures-funny.json",
"qunit/utils.test.js",
"qunit/modifier.test.js",
"qunit/parser.test.js",
"qunit/ThreadItem.test.js"
],
"templates": [
"cases/linearWalk/simple.html",
"cases/en-big-oldparser/en-big-oldparser.html",
"cases/en-big-oldparser/en-big-oldparser-modified.html",
"cases/en-big-oldparser/en-big-oldparser-reply.html",
"cases/en-big-parsoid/en-big-parsoid.html",
"cases/en-big-parsoid/en-big-parsoid-modified.html",
"cases/ckb-big-oldparser/ckb-big-oldparser.html",
"cases/ckb-big-parsoid/ckb-big-parsoid.html",
"cases/en-bigafd-parsoid/en-bigafd-parsoid.html",
"cases/transclusions/transclusions.html",
"cases/pl-big-oldparser/pl-big-oldparser.html",
"cases/pl-big-oldparser/pl-big-oldparser-modified.html",
"cases/pl-big-oldparser/pl-big-oldparser-reply.html",
"cases/pl-big-parsoid/pl-big-parsoid.html",
"cases/pl-big-parsoid/pl-big-parsoid-modified.html",
"cases/ar-no-paragraph-oldparser/ar-no-paragraph-oldparser.html",
"cases/ar-no-paragraph-oldparser/ar-no-paragraph-oldparser-modified.html",
"cases/ar-no-paragraph-oldparser/ar-no-paragraph-oldparser-reply.html",
"cases/ar-no-paragraph-parsoid/ar-no-paragraph-parsoid.html",
"cases/ar-no-paragraph-parsoid/ar-no-paragraph-parsoid-modified.html",
"cases/ar-nbsp-timezone-oldparser/ar-nbsp-timezone-oldparser.html",
"cases/ar-nbsp-timezone-parsoid/ar-nbsp-timezone-parsoid.html",
"cases/fr-unsigned-oldparser/fr-unsigned-oldparser.html",
"cases/fr-unsigned-oldparser/fr-unsigned-oldparser-reply.html",
"cases/fr-unsigned-parsoid/fr-unsigned-parsoid.html",
"cases/it-unsigned-oldparser/it-unsigned-oldparser.html",
"cases/it-unsigned-parsoid/it-unsigned-parsoid.html",
"cases/sr-ec/sr-ec.html",
"cases/sr-el/sr-el.html",
"cases/dt-tags-oldparser/dt-tags-oldparser.html",
"cases/dt-tags-oldparser/dt-tags-oldparser-modified.html",
"cases/dt-tags-parsoid/dt-tags-parsoid.html",
"cases/dt-tags-parsoid/dt-tags-parsoid-modified.html",
"cases/no-heading/no-heading.html",
"cases/lrm-signature/lrm-signature.html",
"cases/fallback-encoding-link/fallback-encoding-link.html",
"cases/parsoid-sections/parsoid-sections.html",
"cases/split-list/split-list.html",
"cases/split-list/split-list-modified.html",
"cases/split-list2/split-list2.html",
"cases/split-list2/split-list2-modified.html",
"cases/mixed-indentation/mixed-indentation.html",
"cases/mixed-indentation/mixed-indentation-modified.html",
"cases/unclosed-font/unclosed-font.html",
"cases/unclosed-font/unclosed-font-modified.html",
"cases/wrappers/wrappers.html",
"cases/wrappers/wrappers-modified.html",
"cases/signatures-funny/signatures-funny.html",
"cases/signatures-funny/signatures-funny-modified.html",
"cases/signatures-funny/signatures-funny-reply.html",
"cases/signatures-comments/signatures-comments.html",
"cases/signatures-comments/signatures-comments-modified.html"
],
"dependencies": [
"ext.discussionTools.init"
]
},
"AutoloadNamespaces": {
"MediaWiki\\Extension\\DiscussionTools\\": "includes/"
},
"TestAutoloadNamespaces": {
"MediaWiki\\Extension\\DiscussionTools\\Tests\\Unit\\": "tests/phpunit/unit/",
"MediaWiki\\Extension\\DiscussionTools\\Tests\\": "tests/phpunit/"
},
"APIModules": {
"discussiontools": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionTools",
"discussiontoolsedit": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsEdit",
"discussiontoolssubscribe": {
"class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsSubscribe",
"services": [ "DiscussionTools.SubscriptionStore" ]
}
},
"Hooks": {
"BeforeCreateEchoEvent": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\EchoHooks::onBeforeCreateEchoEvent",
"EchoGetBundleRules": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\EchoHooks::onEchoGetBundleRules",
"EchoGetEventsForRevision": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\EchoHooks::onEchoGetEventsForRevision",
"LoadExtensionSchemaUpdates": "installer",
"ArticleParserOptions": "parser",
"ParserAfterParse": "parser",
"ParserAfterTidy": "parser",
"ParserOptionsRegister": "parser",
"BeforePageDisplay": "page",
"GetActionName": "page",
"OutputPageBeforeHTML": "page",
"ResourceLoaderGetConfigVars": "resourceloader",
"GetBetaFeaturePreferences": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\PreferenceHooks::onGetBetaFeaturePreferences",
"GetPreferences": "preferences",
"ChangeTagsListActive": "tags",
"ListDefinedTags": "tags",
"RecentChange_save": "tags"
},
"HookHandlers": {
"installer": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\InstallerHooks"
},
"page": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\PageHooks",
"services": [ "DiscussionTools.SubscriptionStore" ]
},
"parser": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\ParserHooks"
},
"preferences": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\PreferenceHooks"
},
"resourceloader": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\ResourceLoaderHooks"
},
"tags": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\TagHooks"
}
},
"Actions": {
"dtunsubscribe": "MediaWiki\\Extension\\DiscussionTools\\Actions\\UnsubscribeAction"
},
"ServiceWiringFiles": [
"includes/ServiceWiring.php"
],
"DefaultUserOptions": {
"discussiontools-editmode": "",
"discussiontools-newtopictool": 1,
"discussiontools-replytool": 1,
"discussiontools-sourcemodetoolbar": 0,
"discussiontools-topicsubscription": 1,
"discussiontools-abtest": ""
},
"config": {
"DiscussionToolsEnable": {
"value": true,
"description": "Enable DiscussionTools on talk pages."
},
"DiscussionToolsBeta": {
"value": false,
"description": "Make DiscussionTools a BetaFeature."
},
"DiscussionToolsABTest": {
"value": false,
"description": "A/B test DiscussionTools features for logged in users. false, 'replytool', 'newtopictool', or 'all'"
},
"DiscussionTools_replytool": {
"value": "default",
"description": "Override availability of DiscussionTools reply tool. 'default', 'available', or 'unavailable'."
},
"DiscussionTools_newtopictool": {
"value": "default",
"description": "Override availability of DiscussionTools new topic tool. 'default', 'available', or 'unavailable'."
},
"DiscussionTools_sourcemodetoolbar": {
"value": "default",
"description": "Enable the toolbar in source mode for the reply tool and new topic tool. 'default', 'available', or 'unavailable'."
},
"DiscussionTools_topicsubscription": {
"value": "default",
"description": "Override availability of DiscussionTools topic subscription feature. 'default', 'available', or 'unavailable'."
},
"DiscussionToolsUseParserCache": {
"value": true,
"description": "Allow DiscussionTools to use the parser cache."
},
"DiscussionToolsEnableTopicSubscriptionBackend": {
"value": true,
"description": "Enable the topic subscription backend. This controls whether the feature can be tried out using the query parameter, and whether the Echo events will be created. Do not enable this unless the database tables exist. Do enable it before making the 'topicsubscription' feature available."
},
"DiscussionToolsTalkPageParserCacheExpiry": {
"value": 0,
"description": "Override $wgParserCacheExpireTime for discussion pages, regardless of DiscussionTools enablement."
},
"DTSchemaEditAttemptStepSamplingRate": {
"value": false,
"description": "Rate at which to sample sessions for instrumentation; overrides WikimediaEvents rate if set"
},
"DTSchemaEditAttemptStepOversample": {
"value": false,
"description": "Oversample EditAttemptStep logging; distinct from rate tuning, as it'll flag the events as being oversampled"
}
},
"ConfigRegistry": {
"discussiontools": "GlobalVarConfig::newInstance"
},
"type": "other"
}