en>Mr. Stradivarius |
en>Alfakim |
Line 1: |
Line 1: |
| -- This module implements {{pp-meta}} and its daughter templates such as | | <div style="border: 1px dashed #2F6FAB; margin: 1em 0px 1em 0px; padding: 0.8em 1em 0.8em 1em; background: #F9F9F9; line-height: 2.1ex; font-family: Courier New, Courier, Arial Sans Unicode, Arial; color: #000; overflow: auto; white-space: {{{space|auto}}}">{{{1|}}}</div><noinclude> |
| -- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}.
| |
|
| |
|
| -- Initialise necessary modules. | | ---- |
| require('Module:No globals')
| |
| local class = require('Module:Middleclass').class
| |
| local mArguments = require('Module:Arguments')
| |
| local mFileLink = require('Module:File link')
| |
| local mProtectionLevel = require('Module:Effective protection level')
| |
| local yesno = require('Module:Yesno')
| |
|
| |
|
| -------------------------------------------------------------------------------- | | This template is an alternative to <code><nowiki><pre></pre></nowiki></code> tags. The difference is that it allows line-breaks and dissallows the text to overflow the page. |
| -- ProtectionStatus class
| |
| --------------------------------------------------------------------------------
| |
|
| |
|
| local ProtectionStatus = class('ProtectionStatus')
| | Due to limitations, if the parameter contains any HTML or other Wikimarkup, it will be rendered as such. Thus if a parameter might contain any Wikitext, enclose it manually in <code><nowiki><nowiki></nowiki></nowiki></code> tags. |
|
| |
|
| function ProtectionStatus:initialize(args, titleObj)
| | See the [[Template talk:Pre|Talk page]] for examples of use and further information. |
| -- Set action
| |
| do
| |
| local actions = {
| |
| create = true,
| |
| edit = true,
| |
| move = true,
| |
| autoreview = true
| |
| }
| |
| if args.action and actions[args.action] then
| |
| self._action = args.action
| |
| else
| |
| self._action = 'edit'
| |
| end
| |
| end
| |
|
| |
|
| -- Set level
| | [[Category:Wikipedia special effects templates|Pre]]</noinclude> |
| do
| |
| local level = mProtectionLevel._main(self._action, titleObj)
| |
| if level == 'accountcreator' then
| |
| -- Lump titleblacklisted pages in with template-protected pages,
| |
| -- since templateeditors can do both.
| |
| level = 'templateeditor'
| |
| end
| |
| self._level = level or '*'
| |
| end
| |
| | |
| -- Set reason
| |
| self._reason = args.reason
| |
| | |
| -- Set expiry
| |
| self._expiry = args.expiry or 'indef'
| |
| end
| |
| | |
| function ProtectionStatus:getAction()
| |
| return self._action
| |
| end
| |
| | |
| function ProtectionStatus:getLevel()
| |
| return self._level
| |
| end
| |
| | |
| function ProtectionStatus:getReason()
| |
| return self._reason
| |
| end
| |
| | |
| function ProtectionStatus:getExpiry()
| |
| return self._expiry
| |
| end
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- Config class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local Config = class('Config')
| |
| | |
| function Config:initialize()
| |
| self._cfg = mw.loadData('Module:Protection banner/config')
| |
| end
| |
| | |
| function Config:getBannerConfig(protectionStatusObj)
| |
| local cfg = self._cfg
| |
| local action = protectionStatusObj:getAction()
| |
| local reason = protectionStatusObj:getReason()
| |
| if cfg.banners[action][reason] then
| |
| return cfg.banners[action][reason]
| |
| else
| |
| return cfg.defaultBanners[action]
| |
| end
| |
| end
| |
| | |
| function Config:getConfigTable(key)
| |
| local blacklist = {
| |
| banners = true,
| |
| defaultBanners = true
| |
| }
| |
| if not blacklist[key] then
| |
| return self._cfg[key]
| |
| else
| |
| return nil
| |
| end
| |
| end
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- Image class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local Image = class('Image')
| |
| | |
| function Image:setFilename(filename, configObj, protectionStatusObj, namespace)
| |
| if filename then
| |
| self._filename = filename
| |
| else
| |
| local images = configObj:getConfigTable('images')
| |
| local action = protectionStatusObj:getAction()
| |
| local level = protectionStatusObj:getLevel()
| |
| local reason = protectionStatusObj:getReason()
| |
| local image
| |
| if reason == 'office' or reason == 'reset' then
| |
| image = images.office
| |
| elseif namespace == 10 or namespace == 828 then
| |
| -- We are in the template or module namespaces.
| |
| if level == 'templateeditor' then
| |
| image = images.template
| |
| elseif level == 'sysop' then
| |
| image = images.indef
| |
| end
| |
| elseif action == 'create' then
| |
| image = images.create
| |
| elseif action == 'move'
| |
| and (
| |
| level == 'templateeditor'
| |
| or level == 'sysop'
| |
| )
| |
| then
| |
| image = images.move
| |
| elseif action == 'edit' then
| |
| if level == 'sysop' then
| |
| image = images.full
| |
| elseif level == 'autoconfirmed' then
| |
| image = images.semi
| |
| end
| |
| elseif action == 'autoreview' then
| |
| if level == 'autoconfirmed' then
| |
| image = images.pc1
| |
| elseif level == 'reviewer' then
| |
| image = images.pc2
| |
| end
| |
| else
| |
| image = 'Transparent.gif'
| |
| end
| |
| self._filename = image
| |
| end
| |
| end
| |
| | |
| function Image:export()
| |
| return mFileLink.new(self._filename)
| |
| :width(self._size)
| |
| :alt(self._alt)
| |
| :caption(self._caption)
| |
| :render()
| |
| end
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- Blurb class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local Blurb = class('Blurb')
| |
| | |
| function Blurb:initialize(bannerConfig)
| |
| self._config = bannerConfig
| |
| end
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- BannerTemplate class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local BannerTemplate = class('BannerTemplate')
| |
| | |
| function BannerTemplate:initialize()
| |
| end
| |
| | |
| function BannerTemplate:render()
| |
| end
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- Banner class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local Banner = BannerTemplate:subclass('Banner')
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- Padlock class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local Padlock = BannerTemplate:subclass('Padlock')
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- Category class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local Category = class('Category')
| |
| | |
| function Category:initialize()
| |
| end
| |
| | |
| function Category:export()
| |
| if self._categoryName then
| |
| return string.format(
| |
| '[[%s:%s]]',
| |
| mw.site.namespaces[14].name,
| |
| self._categoryName
| |
| )
| |
| else
| |
| return ''
| |
| end
| |
| end
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- ProtectionCategory class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local ProtectionCategory = Category:subclass('ProtectionCategory')
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- ErrorCategory class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local ErrorCategory = Category:subclass('ErrorCategory')
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- ExpiryCategory class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local ExpiryCategory = Category:subclass('ExpiryCategory')
| |
| | |
| --------------------------------------------------------------------------------
| |
| -- ProtectionBanner class
| |
| --------------------------------------------------------------------------------
| |
| | |
| local ProtectionBanner = {}
| |
| | |
| function ProtectionBanner.exportToWiki(frame, title)
| |
| local args = mArguments.getArgs(frame)
| |
| return ProtectionBanner.exportToLua(args, title)
| |
| end
| |
| | |
| function ProtectionBanner.exportToLua(args, title)
| |
| title = title or mw.title.getCurrentTitle()
| |
| local pstatus = ProtectionStatus.new(args, title)
| |
| local cfg = Config:new()
| |
| | |
| -- Get the banner template object
| |
| local banner
| |
| do
| |
| local bannerClass
| |
| if yesno(args.small) then
| |
| bannerClass = Padlock
| |
| else
| |
| bannerClass = Banner
| |
| end
| |
| banner = bannerClass:new()
| |
| end
| |
| end
| |
| | |
| function ProtectionBanner._exportClasses()
| |
| return {
| |
| ProtectionStatus = ProtectionStatus,
| |
| Config = Config,
| |
| Image = Image,
| |
| Blurb = Blurb,
| |
| BannerTemplate = BannerTemplate,
| |
| Banner = Banner,
| |
| Padlock = Padlock,
| |
| Category = Category,
| |
| ProtectionCategory = ProtectionCategory,
| |
| ErrorCategory = ErrorCategory,
| |
| ExpiryCategory = ExpiryCategory
| |
| }
| |
| end
| |
| | |
| return ProtectionBanner
| |