Difference between revisions of "Module:Landing Page Link"
From LINKS Community Center
(10 intermediate revisions by the same user not shown) | |||
Line 50: | Line 50: | ||
if args.subtitle then | if args.subtitle then | ||
data.subtitle = args.subtitle | data.subtitle = args.subtitle | ||
+ | end | ||
+ | |||
+ | if args.icon then | ||
+ | data.icon = args.icon | ||
end | end | ||
Line 118: | Line 122: | ||
local displayDiv = mw.html.create('div') | local displayDiv = mw.html.create('div') | ||
displayDiv | displayDiv | ||
− | + | :attr('class', 'click-tile-icon') | |
− | |||
− | |||
− | |||
− | |||
:tag('i') | :tag('i') | ||
− | :attr('class', 'fa | + | :attr('class', 'fa fa-4x ' .. data.icon) |
:attr('aria-hidden', 'true') | :attr('aria-hidden', 'true') | ||
− | done() | + | :done() |
+ | :done() | ||
:tag('div') | :tag('div') | ||
:attr('class', 'click-tile-content') | :attr('class', 'click-tile-content') | ||
:tag('h4') | :tag('h4') | ||
:attr('class', 'click-tile-title') | :attr('class', 'click-tile-title') | ||
− | :wikitext( | + | :wikitext(data.title) |
+ | :done() | ||
:tag('p') | :tag('p') | ||
− | :wikitext( | + | :wikitext(data.subtitle) |
+ | :done() | ||
+ | :done() | ||
display = tostring(displayDiv) | display = tostring(displayDiv) | ||
Line 146: | Line 150: | ||
end | end | ||
− | --return string.format('<span class="plainlinks">%s</span>', link) | + | --return string.format('<span class="plainlinks"><div class="click-tile">%s</div></span>', link) |
− | + | return string.format('<div class="click-tile">%s</div>', link) | |
− | + | --return link | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | return string.format('< | ||
end | end | ||
return p | return p |
Latest revision as of 15:06, 27 August 2021
Documentation for this module may be created at Module:Landing Page Link/doc
-- This module implements {{Landing Page Link}}. local yesno = require('Module:Yesno') local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Landing Page Link' }) return p.luaMain(args) end function p.luaMain(args) if not args[1] and not args.url then return '' end local data = p.makeLinkData(args) local link = p.renderLinkNew(data) return link end function p.makeLinkData(args) local data = {} -- Get the link and display values, and find whether we are outputting a -- wikilink or a URL. if args.url then data.isUrl = true data.link = args.url if args[1] then data.display = args[1] else data.display = args.url end else data.isUrl = false data.link = args[1] if args[2] then data.display = args[2] else data.display = args[1] end end if args.title then data.title = args.title end if args.subtitle then data.subtitle = args.subtitle end if args.icon then data.icon = args.icon end -- Classes local class = args.class and args.class:lower() data.classes = {} if class == 'ui-button-green' or class == 'ui-button-blue' or class == 'ui-button-red' then table.insert( data.classes, 'submit ui-button ui-widget ui-state-default ui-corner-all' .. ' ui-button-text-only ui-button-text' ) else table.insert(data.classes, 'mw-ui-button') end if class then table.insert(data.classes, class) end -- Styles do --[[ -- Check whether we are on the same page as we have specified in -- args[1], but not if we are using a URL link, as then args[1] is only -- a display value. If we are currently on the page specified in -- args[1] make the button colour darker so that it stands out from -- other buttons on the page. --]] local success, linkTitle, currentTitle if not data.isUrl then currentTitle = mw.title.getCurrentTitle() success, linkTitle = pcall(mw.title.new, args[1]) end if success and linkTitle and mw.title.equals(currentTitle, linkTitle) then if class == 'ui-button-blue' or class == 'mw-ui-progressive' or class == 'mw-ui-constructive' then data.backgroundColor = '#2962CB' elseif class == 'ui-button-green' then data.backgroundColor = '#008B6D' elseif class == 'ui-button-red' or class == 'mw-ui-destructive' then data.backgroundColor = '#A6170F' else data.backgroundColor = '#CCC' data.color = '#666' end end -- Add user-specified styles. data.style = args.style end return data end function p.renderLinkNew(data) -- Render the display span tag. local display do local displayDiv = mw.html.create('div') displayDiv :attr('class', 'click-tile-icon') :tag('i') :attr('class', 'fa fa-4x ' .. data.icon) :attr('aria-hidden', 'true') :done() :done() :tag('div') :attr('class', 'click-tile-content') :tag('h4') :attr('class', 'click-tile-title') :wikitext(data.title) :done() :tag('p') :wikitext(data.subtitle) :done() :done() display = tostring(displayDiv) end -- Render the link local link if data.isUrl then link = string.format('[%s %s]', data.link, display) else link = string.format('[[%s|%s]]', data.link, display) end --return string.format('<span class="plainlinks"><div class="click-tile">%s</div></span>', link) return string.format('<div class="click-tile">%s</div>', link) --return link end return p