{ "name": "TemplateStyles", "version": "1.0", "author": [ "Brad Jorsch", "Marc A. Pelletier" ], "url": "https://www.mediawiki.org/wiki/Extension:TemplateStyles", "namemsg": "templatestyles", "descriptionmsg": "templatestyles-desc", "license-name": "GPL-2.0-or-later", "type": "parserhook", "manifest_version": 2, "load_composer_autoloader": true, "requires": { "MediaWiki": ">= 1.43" }, "MessagesDirs": { "TemplateStyles": [ "i18n" ] }, "AutoloadNamespaces": { "MediaWiki\\Extension\\TemplateStyles\\": "includes/" }, "ContentHandlers": { "sanitized-css": "MediaWiki\\Extension\\TemplateStyles\\TemplateStylesContentHandler" }, "TrackingCategories": [ "templatestyles-stylesheet-error-category", "templatestyles-page-error-category" ], "attributes": { "SyntaxHighlight": { "Models": { "sanitized-css": "css" } }, "TemplateStyles": { "Namespaces": [] }, "TemplateSandbox": { "EditContentModels": [ "sanitized-css" ] } }, "callback": "MediaWiki\\Extension\\TemplateStyles\\Hooks::onRegistration", "Hooks": { "ParserFirstCallInit": "main", "ParserClearState": "main", "ContentHandlerDefaultModelFor": "main", "CodeEditorGetPageLanguage": "codeeditor" }, "HookHandlers": { "main": { "class": "MediaWiki\\Extension\\TemplateStyles\\Hooks" }, "codeeditor": { "class": "MediaWiki\\Extension\\TemplateStyles\\CodeEditorHooks" } }, "config": { "TemplateStylesDisable": { "description": "When set to true, no styles are output. This flag is for development and will be removed.", "value": false }, "TemplateStylesAllowedUrls": { "description": "PCRE regexes to match allowed URLs for various types of external references. Known types are:\n; audio: Sound files\n; image: Images\n; svg: SVGs for the Filter and Masking modules\n; font: External fonts\n; namespace: @namespace declarations\n; css: @import declarations\nIf you want to allow an entire domain, be sure to include a trailing '/', e.g. \"<^https://allowed\\.example\\.org/>\" rather than \"<^https://allowed\\.example\\.org>\", so people can't bypass your filter by creating a subdomain like \"https://allowed.example.org.evil.com\".", "value": { "audio": [ "<^https://upload\\.wikimedia\\.org/wikipedia/commons/>" ], "image": [ "<^https://upload\\.wikimedia\\.org/wikipedia/commons/>" ], "svg": [ "<^https://upload\\.wikimedia\\.org/wikipedia/commons/[^?#]*\\.svg(?:[?#]|$)>" ], "font": [], "namespace": [ "<.>" ], "css": [] } }, "TemplateStylesNamespaces": { "description": "Namespaces to default the content model to CSS on .css subpages.", "value": { "10": true }, "merge_strategy": "array_plus" }, "TemplateStylesDisallowedProperties": { "description": "Disallowed style properties that would otherwise be allowed. See also the TemplateStylesPropertySanitizer hook, which allows for finer-grained control.", "value": [] }, "TemplateStylesDisallowedAtRules": { "description": "Disallowed at-rules that would otherwise be allowed. Include the '@' in the name. See also the TemplateStylesStylesheetSanitizer hook, which allows for finer-grained control.", "value": [] }, "TemplateStylesUseCodeEditor": { "description": "Use CodeEditor when editing TemplateStyles CSS pages.", "value": true }, "TemplateStylesAutoParseContent": { "description": "Set this false if you want to manage an entry for 'sanitized-css' in $wgTextModelsToParse manually. If true, an entry will be added to $wgTextModelsToParse automatically if CONTENT_MODEL_CSS is in the array.", "value": true }, "TemplateStylesMaxStylesheetSize": { "description": "The maximum size of a stylesheet, in bytes. Set null if you don't want to impose a limit.", "value": 102400 }, "TemplateStylesDefaultNamespace": { "description": "The default namespace for the src attribute of the tag. The value 10 corresponds to NS_TEMPLATE.", "value": 10 } }, "ConfigRegistry": { "templatestyles": "GlobalVarConfig::newInstance" } }