| Line 12: |
Line 12: |
| | --]] | | --]] |
| | local WRAPPER_TEMPLATE, args = 'Template:Asbox' | | local WRAPPER_TEMPLATE, args = 'Template:Asbox' |
| | + | local templatestyles = 'Asbox/styles.css' |
| | local p, Buffer, stubCats = { | | local p, Buffer, stubCats = { |
| | --Prevents dupli-cats... get it? Maybe not? | | --Prevents dupli-cats... get it? Maybe not? |
| Line 77: |
Line 78: |
| | local function catStub(page, pageDoc) | | local function catStub(page, pageDoc) |
| | stubCats = {missing = {}, v = {}} | | stubCats = {missing = {}, v = {}} |
| | + | -- zwj and zwnj have semantical use in other other wikis, don't remove them |
| | + | local zwj = '\226\128\141' -- U+200D, E2 80 8D |
| | + | local zwnj = '\226\128\140' -- U+200C, E2 80 8C |
| | + | local disallowedUnicodeChars = '[^%w%p%s' .. zwj .. zwnj .. ']' -- for i18n we make this a separate string |
| | local code | | local code |
| | for k, _ in pairs(args) do | | for k, _ in pairs(args) do |
| Line 85: |
Line 90: |
| | for k, v in ipairs(stubCats) do | | for k, v in ipairs(stubCats) do |
| | --Get category names and, if called by p.templatepage, the optional sort key | | --Get category names and, if called by p.templatepage, the optional sort key |
| − | local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], '[^%w%p%s]', '')--remove all hidden unicode chars | + | local tsort, cat = args['tempsort' .. v], mw.ustring.gsub(args['category' .. v], disallowedUnicodeChars, '')--remove all hidden unicode chars |
| | --Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category. | | --Do not place template in main category if |tempsort = 'no'. However, DO place articles of that template in the main category. |
| | table.insert(stubCats.v, | | table.insert(stubCats.v, |
| Line 163: |
Line 168: |
| | done = p.demo ~= 'doc',--Outputs categories if not doc demo | | done = p.demo ~= 'doc',--Outputs categories if not doc demo |
| | 'Stub message templates', | | 'Stub message templates', |
| − | 'Exclude in print',
| |
| | args.icon and | | args.icon and |
| | 'Stub message templates using icon parameter' | | 'Stub message templates using icon parameter' |
| Line 214: |
Line 218: |
| | function p.main(frame, page) | | function p.main(frame, page) |
| | args, page = p:init(frame, page) | | args, page = p:init(frame, page) |
| − | local output = mw.html.create'table' | + | local output = mw.html.create'div' |
| − | :addClass'metadata plainlinks stub' | + | :attr{role = 'note'} |
| − | :css{background = 'transparent'} | + | :addClass'metadata plainlinks asbox stub' |
| − | :attr{role = 'presentation'}
| + | :tag'table' |
| − | :tag'tr'
| + | :attr{role = 'presentation'} |
| − | :addClass'noresize'
| + | :tag'tr' |
| − | :node((args.icon or args.image) and
| + | :addClass'noresize' |
| − | mw.html.create'td'
| + | :node((args.icon or args.image) and |
| − | :wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format(
| + | mw.html.create'td' |
| − | args.image or '',
| + | :wikitext(args.icon or ('[[File:%s|%spx|alt=%s]]'):format( |
| − | args.pix or '40x30',
| + | args.image or '', |
| − | args.imagealt or 'Stub icon'
| + | args.pix or '40x30', |
| − | ))
| + | args.imagealt or 'Stub icon' |
| − | )
| + | )) |
| − | :tag'td'
| + | ) |
| − | :tag'i'
| + | :tag'td' |
| − | :wikitext(
| + | :tag'p' |
| − | Buffer'Это [[Wikipedia:stub|заготовка статьи]]':_(args.subject)' ',--space
| + | :addClass'asbox-body' |
| − | '. Вы можете помочь Джейропедии, [',
| + | :wikitext( |
| − | page:fullUrl('action=edit', 'relative'),
| + | Buffer'This':_(args.subject):_(args.article or 'article'):_(args.qualifier)' ',--space |
| − | ' расширив её].'
| + | ' is a [[Wikipedia:stub|stub]]. You can help Jeyropedia by [', |
| | + | page:fullUrl('action=edit', 'relative'), |
| | + | ' expanding it].' |
| | + | ) |
| | + | :done() |
| | + | :node(args.note and |
| | + | mw.html.create() |
| | + | :tag'p' |
| | + | :addClass'asbox-note' |
| | + | :wikitext(args.note) |
| | + | :done() |
| | ) | | ) |
| − | :done()
| |
| − | :node(args.name and
| |
| − | require'Module:Navbar'._navbar{
| |
| − | args.name,
| |
| − | mini = 'yes',
| |
| − | style = 'position: absolute; right: 15px; display: none;'
| |
| − | }
| |
| − | )
| |
| − | :node(args.note and
| |
| − | mw.html.create()
| |
| − | :tag'br':done()
| |
| − | :tag'span'
| |
| − | :css{['font-style'] = 'normal', ['font-size'] = 'smaller'}
| |
| − | :wikitext(args.note)
| |
| − | :done()
| |
| − | )
| |
| | :allDone() | | :allDone() |
| | + | :node(args.name and |
| | + | require'Module:Navbar'._navbar{ |
| | + | args.name, |
| | + | mini = 'yes', |
| | + | } |
| | + | ) |
| | --[[ | | --[[ |
| | Stub categories for templates include a sort key; this ensures that all stub tags appear at the beginning of their respective categories. | | Stub categories for templates include a sort key; this ensures that all stub tags appear at the beginning of their respective categories. |
| Line 260: |
Line 264: |
| | ]] | | ]] |
| | if page.namespace == 0 then -- Main namespace | | if page.namespace == 0 then -- Main namespace |
| − | category'Все незавершённые статьи' | + | category'All stub articles' |
| | catStub() | | catStub() |
| | elseif p.demo then | | elseif p.demo then |
| Line 283: |
Line 287: |
| | end | | end |
| | end | | end |
| − | return output:wikitext(not p.demo and category{done = true} or nil) | + | return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. tostring(output:wikitext(not p.demo and category{done = true} or nil)) |
| | end | | end |
| | | | |
| | return p | | return p |