mediawiki-extensions-Discus.../extension.json

612 lines
20 KiB
JSON
Raw Normal View History

{
"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.42.0",
"extensions": {
"VisualEditor": "*",
"Linter": "*"
}
},
"MessagesDirs": {
"DiscussionTools": [
"i18n",
"i18n/api"
]
},
"ExtensionMessagesFiles": {
"DiscussionToolsAlias": "DiscussionTools.alias.php",
"DiscussionToolsMagic": "DiscussionTools.magic.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.debug.styles": {
"styles": "dt.debug.less"
},
"ext.discussionTools.init": {
"packageFiles": [
"dt.init.js",
"controller.js",
"highlighter.js",
"permalinks.js",
"topicsubscriptions.js",
"mobile.js",
"overflowMenu.js",
"LedeSectionDialog.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": {
"replyIndentation": "DiscussionToolsReplyIndentation",
"switchTime": "DiscussionToolsTimestampFormatSwitchTime",
"showFeedbackLinks": "DiscussionToolsShowFeedbackLinks",
"enablePermalinksFrontend": "DiscussionToolsEnablePermalinksFrontend"
}
},
"ReplyLinksController.js",
"CommentController.js",
"NewTopicController.js",
"modifier.js",
"utils.js",
"Parser.js",
"ThreadItemSet.js",
"ThreadItem.js",
"CommentItem.js",
"HeadingItem.js",
"CommentDetails.js",
"MemoryStorage.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",
"ext.discussionTools.minervaicons",
"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-ledesection-title",
"discussiontools-newtopic-placeholder-title",
"discussiontools-newtopic-missing-title",
"discussiontools-newtopicssubscription-button-subscribe-label",
"discussiontools-newtopicssubscription-button-subscribe-tooltip",
"discussiontools-newtopicssubscription-button-unsubscribe-label",
"discussiontools-newtopicssubscription-button-unsubscribe-tooltip",
"discussiontools-newtopicssubscription-notify-subscribed-body",
"discussiontools-newtopicssubscription-notify-subscribed-title",
"discussiontools-newtopicssubscription-notify-unsubscribed-body",
"discussiontools-newtopicssubscription-notify-unsubscribed-title",
"discussiontools-pagetitle-newtopic",
"discussiontools-pagetitle-reply",
"discussiontools-permalink-comment-copied",
"discussiontools-replylink",
"discussiontools-replywidget-loading",
"discussiontools-replywidget-watchthis",
"discussiontools-target-comment-missing",
"discussiontools-target-heading-missing",
"discussiontools-target-comments-missing",
"discussiontools-target-comment-found-moved",
"discussiontools-target-heading-found-moved",
"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",
"pagetitle",
"skin-view-edit"
],
"targets": [
"desktop",
"mobile"
]
},
"ext.discussionTools.minervaicons": {
"selectorWithoutVariant": ".minerva-icon--{name}",
"useDataURI": false,
"defaultColor": "#54595d",
"class": "MediaWiki\\ResourceLoader\\OOUIIconPackModule",
"icons": [
"bell",
"bellOutline"
]
},
"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.init.js",
"dt.ui.ReplyWidget.js",
"dt.ui.ReplyWidgetVisual.js",
"dt.ui.ReplyWidgetPlain.js",
"ModeTabSelectWidget.js",
"ModeTabOptionWidget.js",
"AbandonCommentDialog.js",
"AbandonTopicDialog.js",
{
"name": "contLangMessages.json",
"callback": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::getContentLanguageMessages",
"callbackParam": [
"tempuser-helppage"
]
},
{
"name": "licenseMessages.json",
"callback": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::getTermsOfUseMessagesParsed",
"versionCallback": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::getTermsOfUseMessagesVersion"
},
"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.ui.ReplyWidget.less",
"dt-ve/CommentTargetWidget.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-autocreate-warning",
"discussiontools-replywidget-cancel",
"discussiontools-replywidget-feedback",
"discussiontools-replywidget-keyboard-shortcut-submit",
"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-publish-accesskey",
"discussiontools-replywidget-reply",
"discussiontools-replywidget-return-to-newtopic",
"discussiontools-replywidget-return-to-reply",
"discussiontools-replywidget-signature-body",
"discussiontools-replywidget-signature-title",
"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": [
"ext.discussionTools.init",
"ext.visualEditor.articleTarget",
"ext.visualEditor.mwcore",
"ext.visualEditor.mwsignature",
"ext.visualEditor.mwwikitext",
"ext.visualEditor.switching",
"mediawiki.editfont.styles",
"mediawiki.jqueryMsg",
"mediawiki.user",
"mediawiki.widgets.AbandonEditDialog",
"mediawiki.widgets.visibleLengthLimit",
"oojs-ui-widgets",
"oojs-ui.styles.indicators"
],
"optionalDependencies": {
"ConfirmEdit": "ext.confirmEdit.CaptchaInputWidget"
},
"factory": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::addOptionalDependencies",
"targets": [
"desktop",
"mobile"
]
}
},
"ForeignResourcesDir": "modules/lib",
"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"
},
"qunit/utils.test.js",
"qunit/modifier.test.js",
"qunit/parser.test.js",
"qunit/ThreadItem.test.js"
],
"testData": [
"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"
],
"factory": "\\MediaWiki\\Extension\\DiscussionTools\\ResourceLoaderData::makeTestModule",
"dependencies": [
"ext.discussionTools.init"
]
},
"AutoloadNamespaces": {
"MediaWiki\\Extension\\DiscussionTools\\": "includes/",
"MediaWiki\\Extension\\DiscussionTools\\Maintenance\\": "maintenance/"
},
"TestAutoloadNamespaces": {
"MediaWiki\\Extension\\DiscussionTools\\Tests\\Unit\\": "tests/phpunit/unit/",
"MediaWiki\\Extension\\DiscussionTools\\Tests\\": "tests/phpunit/"
},
"APIModules": {
"discussiontoolscompare": {
"class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsCompare",
"services": [
"VisualEditor.ParsoidClientFactory",
"DiscussionTools.CommentParser",
"RevisionLookup"
]
},
"discussiontoolsedit": {
"class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsEdit",
"services": [
"VisualEditor.ParsoidClientFactory",
"DiscussionTools.CommentParser",
"DiscussionTools.SubscriptionStore",
"TempUserCreator",
"UserFactory",
"SkinFactory",
"ConfigFactory",
"RevisionLookup"
]
},
"discussiontoolsfindcomment": {
"class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsFindComment",
"services": [
"DiscussionTools.ThreadItemStore",
"TitleFormatter"
]
},
"discussiontoolsgetsubscriptions": {
"class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsGetSubscriptions",
"services": [
"DiscussionTools.SubscriptionStore",
"ConfigFactory"
]
},
"discussiontoolspageinfo": {
"class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsPageInfo",
"services": [
"VisualEditor.ParsoidClientFactory",
"DiscussionTools.CommentParser",
"RevisionLookup"
]
},
"discussiontoolspreview": {
"class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsPreview",
"services": [
"VisualEditor.ParsoidClientFactory",
"DiscussionTools.CommentParser",
"TempUserCreator",
"UserFactory",
"SkinFactory"
]
},
"discussiontoolssubscribe": {
"class": "MediaWiki\\Extension\\DiscussionTools\\ApiDiscussionToolsSubscribe",
"services": [
"DiscussionTools.SubscriptionStore",
"ConfigFactory"
]
}
},
"SpecialPages": {
"TopicSubscriptions": {
"class": "\\MediaWiki\\Extension\\DiscussionTools\\SpecialTopicSubscriptions",
"services": [
"LinkRenderer",
"LinkBatchFactory"
]
},
"FindComment": {
"class": "\\MediaWiki\\Extension\\DiscussionTools\\SpecialFindComment",
"services": [
"DiscussionTools.ThreadItemStore",
"DiscussionTools.ThreadItemFormatter"
]
},
"GoToComment": {
"class": "\\MediaWiki\\Extension\\DiscussionTools\\SpecialGoToComment",
"services": [
"DiscussionTools.ThreadItemStore"
]
},
"DiscussionToolsDebug": {
"class": "\\MediaWiki\\Extension\\DiscussionTools\\SpecialDiscussionToolsDebug",
"services": [
"LanguageFactory",
"ParserOutputAccess",
"DiscussionTools.CommentParser"
]
}
},
"TrackingCategories": [
"discussiontools-comments-before-first-heading-category"
],
"Hooks": {
"BeforeCreateEchoEvent": "echo",
"EchoGetBundleRules": "echo",
"EchoGetEventsForRevision": "echo",
"RevisionDataUpdates": "dataupdates",
"LoadExtensionSchemaUpdates": "installer",
"GetDoubleUnderscoreIDs": "parser",
"ParserAfterTidy": "parser",
Add ParserOutputPostCacheTransformHook handler for Parsoid HTML * This patch enables DT to work with Parsoid HTML without changing the functionality for legacy HTML. * The code comments document some of the decisions being made here. Some of these decisions are temporary and need better solutions but this patch will let us run visual diff tests and expose any other latent bugs. TODO ---- * We need to add new tests to verify CommentFormatter expectations for Parsoid HTML. I'll tackle this in a followup patch. Known issues: ------------- * Performance: Since the getText() transformed output in ParserOutput is not cached, if DiscussionTools is to switch over to Parsoid HTML, we have to add some form of caching of the transformed output because transformHtml can take a couple seconds in the p99 case which is too long to render uncached! * Longer-term: Since this hook is called when getText() is called, all calls to getText() will now invoke this handler (which will return but still has to do a bunch of checks to determine this won't apply). Presumably, transformHtml() is idempotent because when some other code (other extensions, for ex) calls getText(), we will run the transfromHtml() on previously transformed content. My understanding is that getText() is going the way of the dodo and that getText() callers will have to explicit call the output transform pipeline code (and presumably this issue of repeatedly calling the same transforms on previously transformed content will be addressed there). * Some CSS doesn't apply to Parsoid HTML because intervening <section> tags interfere with existing query selectors -- will be addressed separately. Bug: T341010 Change-Id: I9846193656cdc658f5237df0a133d9d4dcc20d00
2023-10-27 21:37:22 +00:00
"ParserOutputPostCacheTransform": "parser",
"BeforeDisplayNoArticleText": "page",
"BeforePageDisplay": "page",
"GetActionName": "page",
"OutputPageBeforeHTML": "page",
"OutputPageParserOutput": "page",
"SidebarBeforeOutput": "page",
"SkinTemplateNavigation::Universal": "page",
"ResourceLoaderGetConfigVars": "resourceloader",
"GetBetaFeaturePreferences": "betapreferences",
"GetPreferences": "preferences",
"LocalUserCreated": "preferences",
"DiscussionToolsAddOverflowMenuItems": "discussiontools",
"ChangeTagsListActive": "tags",
"ListDefinedTags": "tags",
"RecentChange_save": "tags"
},
"HookHandlers": {
"dataupdates": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\DataUpdatesHooks",
"services": [
"DiscussionTools.ThreadItemStore"
]
},
"installer": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\InstallerHooks"
},
"page": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\PageHooks",
"services": [
"DiscussionTools.SubscriptionStore",
"UserNameUtils",
"UserOptionsLookup"
]
},
"parser": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\ParserHooks",
"services": [
"ConfigFactory"
]
},
"preferences": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\PreferenceHooks",
"services": [
"ConfigFactory",
"LinkRenderer"
]
},
"betapreferences": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\BetaPreferenceHooks",
"services": [
"MainConfig",
"ConfigFactory"
]
},
"resourceloader": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\ResourceLoaderHooks",
"services": [
"ConfigFactory"
]
},
"discussiontools": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\DiscussionToolsHooks"
},
"tags": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\TagHooks"
},
"echo": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Hooks\\EchoHooks"
}
},
"Actions": {
"dtsubscribe": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Actions\\SubscribeAction",
"services": [
"DiscussionTools.SubscriptionStore"
]
},
"dtunsubscribe": {
"class": "MediaWiki\\Extension\\DiscussionTools\\Actions\\UnsubscribeAction",
"services": [
"DiscussionTools.SubscriptionStore"
]
}
},
"LateJSConfigVarNames": [
"wgDiscussionToolsPageThreads"
],
"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": {
"DiscussionToolsBeta": {
"value": false,
"description": "Make DiscussionTools a BetaFeature."
},
"DiscussionToolsABTest": {
"value": false,
"description": "A/B test DiscussionTools features for logged in users. false, any valid feature string for an option below, or an array thereof"
},
"DiscussionTools_visualenhancements": {
"value": "default",
"description": "Override availability of DiscussionTools visual enhancements. 'default', 'available', or 'unavailable'."
},
"DiscussionTools_visualenhancements_pageframe": {
"value": "default",
"description": "Override availability of DiscussionTools visual enhancements's page frame sub-feature. 'default', 'available', or 'unavailable'."
},
"DiscussionTools_visualenhancements_reply": {
"value": "default",
"description": "Override availability of DiscussionTools visual enhancements's reply buttons sub-feature. 'default', 'available', or 'unavailable'."
},
"DiscussionTools_visualenhancements_reply_icon_languages": {
"value": {
"ar": true,
"zh": true,
"yue": true,
"ja": true,
"nod": true
},
"description": "A dictionary of language codes which will receive an icon in their enhanced reply-button treatment, due to translation being very short (T323537). Language fallbacks will be checked unless a language is explicitly set to `false` (T352289). Normalized language codes are lower case.",
"merge_strategy": "provide_default"
},
"DiscussionTools_visualenhancements_newsectionlink_enable": {
"value": true,
"description": "Enable visual enhancements on non-talk, non-article namespaces if they have __NEWSECTIONLINK__ magic word. Temporary config for phased rollout (T331635)"
},
"DiscussionToolsEnablePermalinksBackend": {
"value": true,
"description": "Enable the permalinks backend. Do not enable this unless the database tables exist."
},
"DiscussionToolsEnablePermalinksFrontend": {
"value": true,
"description": "Enable permalinks frontend features: 1. Convert signature timestamps to comment links. 2. Show notification when the target comment is found on another page."
},
"DiscussionToolsAutoTopicSubEditor": {
"value": "any",
"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 `<dl><dd>` tags to output `:` in wikitext) or 'bullet' (use `<ul><li>` tags to output `*` in wikitext)."
},
"DiscussionToolsShowFeedbackLinks": {
"value": false,
"description": "Show 'Share feedback...' links in the footer of reply tool and new topic tool."
},
"DiscussionToolsTimestampFormatSwitchTime": {
"value": "2022-07-12",
"description": "Date on which the internal timestamp format has changed (T304595), in ISO 8601 format."
},
"DiscussionToolsConflictingGadgetName": {
"value": "convenientDiscussions",
"description": "Internal name of the Convenient Discussions gadget, which conflicts with the reply tool. Reply tool will be unavailable when the user has this gadget enabled."
}
},
"ConfigRegistry": {
"discussiontools": "GlobalVarConfig::newInstance"
},
"type": "other"
}