Module:Editnotice load
Appearance
![]() | This module is rated as alpha. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome. |
An enhanced editnotice loader.
Features:
- Category editnotices
- Editnotices based on page ID
- Group notices by prefixes
Relevant pages:
- Template:Editnotice/notice
- MediaWiki:Noarticletext-nopermission
- MediaWiki:Protectedpagetext
- MediaWiki:Cascadeprotected
- Template:Editnotices/Group/Template:Editnotices
- MediaWiki:Titleblacklist-custom-editnotice
Usage
{{#invoke:Editnotice load|function_name}}
local p = {}
local getArgs
local function getNoticeContent(frame, title, args)
local success, result = pcall(frame.expandTemplate, frame, { title = title, args = args })
if success then
result = mw.text.trim(result)
if result ~= '' and result ~= '-' then
return result
end
end
end
local function makeLink(builder, target, text, exists, restricted)
if not exists then
builder = builder:tag('span')
:addClass('editnotice-redlink')
if restricted then
builder:addClass('sysop-show accountcreator-show templateeditor-show')
builder:css('display', 'none')
end
end
builder:wikitext(string.format('[[%s|%s]]', target, text))
end
local function displayEditnotice(builder, class, content)
if content then
return builder:tag('div')
:addClass(class)
:css('clear', 'both')
:css('width', '100%')
:wikitext(content)
end
end
function p.core(frame)
if not args then
getArgs = require('Module:Arguments').getArgs
end
local args = getArgs(frame, {wrappers = 'Template:Editnotice load'})
local builder = mw.html.create()
local linkContainer = builder:tag('div')
:addClass('editnotice-link')
:css('clear', 'both')
:css('float', 'right')
:css('margin', '0px 0.8em')
:css('padding', 0)
:css('line-height', '1em')
:tag('small')
local noticeArgs = {['notice action'] = args['notice action']}
local groupNoticeName = args['group allowed'] and args.groupnotice
local groupNoticeContent
if groupNoticeName then
groupNoticeContent = getNoticeContent(frame, groupNoticeName, noticeArgs)
makeLink(linkContainer, groupNoticeName, 'Group notice', groupNoticeContent, true)
end
local pageNoticeName = args.pagenotice
local pageNoticeContent = getNoticeContent(frame, pageNoticeName, noticeArgs)
makeLink(linkContainer, pageNoticeName, 'Page notice', pageNoticeContent, not args.ownuserpage)
displayEditnotice(builder, 'editnotice-group', groupNoticeContent)
local pageNoticeDiv = displayEditnotice(builder, 'editnotice-page', pageNoticeContent)
if pageNoticeDiv and args.userpage then
pageNoticeDiv:attr('id', 'editnotice-ns-' .. mw.title.getCurrentTitle().namespace)
end
return builder
end
return p