{ "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.39.0", "extensions": { "VisualEditor": ">= 0.1.2", "Linter": "*" } }, "MessagesDirs": { "DiscussionTools": [ "i18n", "i18n/api" ] }, "ExtensionMessagesFiles": { "DiscussionToolsAlias": "DiscussionTools.alias.php" }, "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", "highlighter.js", "topicsubscriptions.js", { "name": "controller/contLangMessages.json", "callback": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::getContentLanguageMessages", "callbackParam": [ "discussiontools-defaultsummary-reply", "newsectionsummary", "discussiontools-replywidget-feedback-link", "discussiontools-replywidget-feedback-link-newtopic", "discussiontools-replywidget-mention-prefix", "discussiontools-replywidget-mention-suffix" ] }, { "name": "config.json", "config": { "enable": "DiscussionToolsEnable", "replyIndentation": "DiscussionToolsReplyIndentation", "switchTime": "DiscussionToolsTimestampFormatSwitchTime" } }, "ReplyLinksController.js", "CommentController.js", "NewTopicController.js", "logger.js", "modifier.js", "utils.js", "Parser.js", "ThreadItemSet.js", "ThreadItem.js", "CommentItem.js", "HeadingItem.js", "CommentDetails.js", "createMemoryStorage.js", "lib/moment-timezone/moment-timezone-with-data-1970-2030.js", { "name": "parser/data.json", "callback": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::getLocalData" } ], "styles": [ "dt.ui.NewTopicController.less" ], "dependencies": [ "ext.discussionTools.init.styles", "web2017-polyfills", "moment", "rangefix", "oojs-ui-windows", "mediawiki.api", "mediawiki.Title", "mediawiki.util", "mediawiki.storage", "mediawiki.String", "mediawiki.user", "ext.visualEditor.core.utils.parsing" ], "messages": [ "discussiontools-postedit-confirmation-published", "discussiontools-postedit-confirmation-topicadded", "discussiontools-autotopicsubpopup-title", "discussiontools-autotopicsubpopup-body", "discussiontools-autotopicsubpopup-dismiss", "discussiontools-autotopicsubpopup-preferences", "discussiontools-error-comment-conflict", "discussiontools-error-comment-disappeared", "discussiontools-error-comment-disappeared-reload", "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-legacy-hint", "discussiontools-newtopic-placeholder-title", "discussiontools-newtopic-missing-title", "discussiontools-replylink", "discussiontools-replywidget-loading", "discussiontools-replywidget-watchthis", "discussiontools-target-comment-missing", "discussiontools-target-comments-missing", "discussiontools-topicsubscription-button-subscribe", "discussiontools-topicsubscription-button-subscribe-label", "discussiontools-topicsubscription-button-subscribe-tooltip", "discussiontools-topicsubscription-button-unsubscribe", "discussiontools-topicsubscription-button-unsubscribe-label", "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", "minerva-talk-full-page", "skin-view-edit" ], "targets": [ "desktop", "mobile" ] }, "ext.discussionTools.debug": { "packageFiles": [ "dt.debug.js", "debughighlighter.js" ], "styles": "debughighlighter.less", "dependencies": [ "ext.discussionTools.init" ], "targets": [ "desktop", "mobile" ] }, "ext.discussionTools.ReplyWidget": { "packageFiles": [ "dt.ui.ReplyWidget.js", "ModeTabSelectWidget.js", "ModeTabOptionWidget.js", "AbandonCommentDialog.js", "AbandonTopicDialog.js", { "name": "licenseMessages.json", "callback": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::getTermsOfUseMessagesParsed", "versionCallback": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::getTermsOfUseMessagesVersion" } ], "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-newcomments-button", "discussiontools-replywidget-newtopic", "discussiontools-replywidget-placeholder-newtopic", "discussiontools-replywidget-placeholder-reply", "discussiontools-replywidget-preferences", "discussiontools-replywidget-preview", "discussiontools-replywidget-reply", "discussiontools-replywidget-summary", "discussiontools-replywidget-transcluded", "ooui-popup-widget-close-button-aria-label", "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\\ResourceLoaderData::addOptionalDependencies", "targets": [ "desktop", "mobile" ] }, "ext.discussionTools.ReplyWidgetPlain": { "packageFiles": [ "dt.ui.ReplyWidgetPlain.js" ], "dependencies": [ "ext.discussionTools.ReplyWidget", "mediawiki.editfont.styles", "mediawiki.user", "mediawiki.jqueryMsg", "ext.visualEditor.switching" ], "targets": [ "desktop", "mobile" ] }, "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.articleTarget" ], "targets": [ "desktop", "mobile" ] } }, "QUnitTestModule": { "localBasePath": "tests", "remoteExtPath": "DiscussionTools/tests", "packageFiles": [ "qunit/index.js", "qunit/testUtils.js", { "name": "data-en.json", "callback": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::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", "data/commonswiki-config.json", "data/commonswiki-data.json", "cases/authors.json", "cases/comments.json", "cases/modified.json", "cases/reply.json", "cases/unwrap.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/ckb-big-oldparser/ckb-big-oldparser.json", "cases/ckb-big-parsoid/ckb-big-parsoid.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/it-unsigned-oldparser/it-unsigned-oldparser.json", "cases/it-unsigned-parsoid/it-unsigned-parsoid.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/single-comment-heading/single-comment-heading.json", "cases/single-comment-no-heading/single-comment-no-heading.json", "cases/lrm-signature/lrm-signature.json", "cases/selflink-signature/selflink-signature.json", "cases/reflist-oldparser/reflist-oldparser.json", "cases/reflist-parsoid/reflist-parsoid.json", "cases/fallback-encoding-link/fallback-encoding-link.json", "cases/fake-headings/fake-headings.json", "cases/signatures-funny/signatures-funny.json", "cases/timestamp-format-switch/timestamp-format-switch.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-modified-bullet.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/en-big-parsoid/en-big-parsoid-modified-bullet.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/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/single-comment-heading/single-comment-heading.html", "cases/single-comment-heading/single-comment-heading-modified.html", "cases/single-comment-no-heading/single-comment-no-heading.html", "cases/single-comment-no-heading/single-comment-no-heading-modified.html", "cases/lrm-signature/lrm-signature.html", "cases/selflink-signature/selflink-signature.html", "cases/reflist-oldparser/reflist-oldparser.html", "cases/reflist-parsoid/reflist-parsoid.html", "cases/fallback-encoding-link/fallback-encoding-link.html", "cases/fake-headings/fake-headings.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/wrappers2-oldparser/wrappers2-oldparser.html", "cases/wrappers2-oldparser/wrappers2-oldparser-modified.html", "cases/wrappers2-parsoid/wrappers2-parsoid.html", "cases/wrappers2-parsoid/wrappers2-parsoid-modified.html", "cases/transclusions4/transclusions4.html", "cases/transclusions4/transclusions4-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", "cases/span-about-group/span-about-group.html", "cases/span-about-group/span-about-group-modified.html", "cases/timestamp-format-switch/timestamp-format-switch.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": { "discussiontoolscompare": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsCompare" }, "discussiontoolsedit": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsEdit", "services": [ "DiscussionTools.CommentParser" ] }, "discussiontoolsgetsubscriptions": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsGetSubscriptions", "services": [ "DiscussionTools.SubscriptionStore", "ConfigFactory" ] }, "discussiontoolspageinfo": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsPageInfo" }, "discussiontoolspreview": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsPreview", "services": [ "DiscussionTools.CommentParser", "SkinFactory" ] }, "discussiontoolssubscribe": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsSubscribe", "services": [ "DiscussionTools.SubscriptionStore", "ConfigFactory" ] } }, "SpecialPages": { "TopicSubscriptions": { "class": "\\MediaWiki\\Extension\\DiscussionTools\\SpecialTopicSubscriptions", "services": [ "LinkRenderer", "LinkBatchFactory" ] } }, "Hooks": { "BeforeCreateEchoEvent": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\EchoHooks::onBeforeCreateEchoEvent", "EchoGetBundleRules": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\EchoHooks::onEchoGetBundleRules", "EchoGetEventsForRevision": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\EchoHooks::onEchoGetEventsForRevision", "MinervaNeueTalkPageOverlay": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\MobileHooks::onMinervaNeueTalkPageOverlay", "LoadExtensionSchemaUpdates": "installer", "ParserAfterTidy": "parser", "ArticleViewHeader": "page", "BeforeDisplayNoArticleText": "page", "BeforePageDisplay": "page", "GetActionName": "page", "OutputPageBeforeHTML": "page", "TitleGetEditNotices": "page", "ResourceLoaderGetConfigVars": "resourceloader", "GetBetaFeaturePreferences": "\\MediaWiki\\Extension\\DiscussionTools\\Hooks\\PreferenceHooks::onGetBetaFeaturePreferences", "GetPreferences": "preferences", "LocalUserCreated": "preferences", "ChangeTagsListActive": "tags", "ListDefinedTags": "tags", "RecentChange_save": "tags" }, "HookHandlers": { "installer": { "class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\InstallerHooks" }, "page": { "class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\PageHooks", "services": [ "ConfigFactory", "DiscussionTools.SubscriptionStore", "UserNameUtils", "UserOptionsLookup" ] }, "parser": { "class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\ParserHooks", "services": [ "ConfigFactory" ] }, "preferences": { "class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\PreferenceHooks", "services": [ "ConfigFactory", "LinkRenderer" ] }, "resourceloader": { "class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\ResourceLoaderHooks", "services": [ "ConfigFactory" ] }, "tags": { "class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\TagHooks" } }, "Actions": { "dtunsubscribe": { "class": "MediaWiki\\Extension\\DiscussionTools\\Actions\\UnsubscribeAction", "services": [ "DiscussionTools.SubscriptionStore" ] } }, "ServiceWiringFiles": [ "includes/ServiceWiring.php" ], "DefaultUserOptions": { "discussiontools-betaenable": 0, "discussiontools-editmode": "", "discussiontools-newtopictool": 1, "discussiontools-newtopictool-createpage": 1, "discussiontools-replytool": 1, "discussiontools-sourcemodetoolbar": 1, "discussiontools-topicsubscription": 1, "discussiontools-autotopicsub": 1, "discussiontools-visualenhancements": 1 }, "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', or 'newtopictool'" }, "DiscussionToolsEnableMobile": { "value": true, "description": "Enable DiscussionTools on mobile talk pages. Currently this automatically enables 'replytool', 'newtopictool' & 'sourcemodetoolbar' on those pages and disables topic subscriptions on those pages." }, "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'." }, "DiscussionTools_autotopicsub": { "value": "default", "description": "Override availability of DiscussionTools automatic topic subscription feature. 'default', 'available', or 'unavailable'." }, "DiscussionTools_visualenhancements": { "value": "default", "description": "Override availability of DiscussionTools visual enhancements. 'default', 'available', or 'unavailable'." }, "DiscussionTools_visualenhancements_namespaces": { "value": [ 1, 3 ], "description": "Namespaces on which visual enhancements are available. Array of namespaces IDs (numbers), or `true` to enable on all namespaces/pages which have DiscussionTools." }, "DiscussionToolsAutoTopicSubEditor": { "value": "discussiontoolsapi", "description": "Editor which triggers automatic topic subscriptions. Either 'discussiontoolsapi' for edits made using DiscussionTools' API (e.g. reply and new topic tools), or 'any' for any editor." }, "DiscussionToolsTalkPageParserCacheExpiry": { "value": 0, "description": "Override $wgParserCacheExpireTime for discussion pages, regardless of DiscussionTools enablement." }, "DiscussionToolsReplyIndentation": { "value": "invisible", "description": "Reply indentation syntax to use: 'invisible' (use `