{ "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", "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": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionTools" }, "discussiontoolsedit": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsEdit" }, "discussiontoolssubscribe": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsSubscribe", "services": [ "DiscussionTools.SubscriptionStore", "ConfigFactory" ] }, "discussiontoolsgetsubscriptions": { "class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsGetSubscriptions", "services": [ "DiscussionTools.SubscriptionStore", "ConfigFactory" ] } }, "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", "BeforeDisplayNoArticleText": "page", "BeforePageDisplay": "page", "GetActionName": "page", "OutputPageBeforeHTML": "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" ] }, "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-editmode": "", "discussiontools-newtopictool": 1, "discussiontools-replytool": 1, "discussiontools-sourcemodetoolbar": 1, "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" }