Module:Clickable button
- Afrikaans
- አማርኛ
- Аԥсшәа
- العربية
- Արեւմտահայերէն
- অসমীয়া
- Asturianu
- Авар
- Azərbaycanca
- تۆرکجه
- Basa Bali
- বাংলা
- 閩南語 / Bân-lâm-gú
- Башҡортса
- Беларуская
- Беларуская (тарашкевіца)
- भोजपुरी
- Bikol Central
- Български
- Bosanski
- Dansk
- الدارجة
- Español
- فارسی
- Føroyskt
- Français
- Galego
- गोंयची कोंकणी / Gõychi Konknni
- 한국어
- Հայերեն
- हिन्दी
- Hrvatski
- Bahasa Hulontalo
- Ilokano
- Bahasa Indonesia
- Italiano
- עברית
- Jawa
- ಕನ್ನಡ
- Қазақша
- Kurdî
- Ladin
- ລາວ
- Latviešu
- Lietuvių
- मैथिली
- Македонски
- മലയാളം
- मराठी
- مصرى
- ဘာသာမန်
- Bahasa Melayu
- 閩東語 / Mìng-dĕ̤ng-ngṳ̄
- Монгол
- မြန်မာဘာသာ
- Nederlands
- नेपाली
- 日本語
- Nordfriisk
- Norsk bokmål
- Occitan
- Oʻzbekcha / ўзбекча
- ਪੰਜਾਬੀ
- ပအိုဝ်ႏဘာႏသာႏ
- Papiamentu
- پښتو
- ភាសាខ្មែរ
- Polski
- Português
- Qaraqalpaqsha
- Română
- Русский
- संस्कृतम्
- Scots
- සිංහල
- Simple English
- سنڌي
- Slovenščina
- کوردی
- Српски / srpski
- Srpskohrvatski / српскохрватски
- Suomi
- Svenska
- தமிழ்
- ၽႃႇသႃႇတႆး
- ไทย
- Тоҷикӣ
- Türkçe
- Українська
- اردو
- Tiếng Việt
- Volapük
- 文言
- Winaray
- 吴语
- 粵語
- 中文
- Betawi
- Руски
Appearance
From Wikipedia, the free encyclopedia
[画像:Protected] This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing.
[画像:Warning] This Lua module is used in system messages, and on approximately 1,070,000 pages, or roughly 2% of all pages.
Changes to it can cause immediate changes to the Wikipedia user interface.
To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them.
Changes to it can cause immediate changes to the Wikipedia user interface.
To avoid major disruption and server load, any changes should be tested in the module's /sandbox or /testcases subpages, or in your own module sandbox. The tested changes can be added to this page in a single edit. Please discuss changes on the talk page before implementing them.
This module depends on the following other modules:
This module implements the {{Clickable button }} template.
Usage from wikitext
To use this module from wikitext, you should normally use the {{Clickable button }} template. However, it can also be used with the syntax {{#invoke:Clickable button|main|args}}
. Please see the template page for a list of available parameters.
Usage from Lua modules
To use this module from other Lua modules, first load the module.
local mClickableButton = require('Module:Clickable button')
You can then generate a button using the main function.
mClickableButton.main(args)
The args variable should be a table containing the arguments to pass to the module. To see the different arguments that can be specified and how they affect the module output, please refer to the {{Clickable button }} template documentation.
The above documentation is transcluded from Module:Clickable button/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Subpages of this module.
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Subpages of this module.
-- This module implements {{clickable button 2}}. local yesno = require('Module:Yesno') local delink = require('Module:Delink')._delink local p = {} function p.main(frame) local getArgs = require('Module:Arguments').getArgs local args = getArgs(frame) return p._main(args) end function p._main(args) -- If first arg or a url is not provided, -- but we have a second arg, make a button. -- Otherwise, return nothing. args.originalInput = args[1] args[1] = delink({args[1]}) if args[1] == "" then args[1] = nil end if not args[1] and not args.url then if args[2] then p.nolink = true else return '' end end local data = p.makeLinkData(args) local link = p.renderLink(args.originalInput, data) local trackingCategories = p.renderTrackingCategories(args) return link .. trackingCategories 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] elseif args[2] then data.display = args[2] else data.display = args.url p.urlisdisplay = true end else data.isUrl = false p.urlisdisplay = false data.link = args[1] if args[2] then data.display = args[2] else data.display = args[1] end if args[1] and args[1]:find('http') then data.isUrl = true end end if yesno(args.link) == false then p.nolink = true end -- Colours -- For the merge with {{clickable button}} local colour = args.color and args.color:lower() -- 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 is unset, --then let color determine class if not class then if colour == 'blue' then class = 'mw-ui-progressive' elseif colour == 'red' then class = 'mw-ui-destructive' elseif colour == 'green' then class = 'mw-ui-constructive' end 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]) elseif p.urlisdisplay then currentTitle = mw.title.getCurrentTitle() end if success and linkTitle and mw.title.equals(currentTitle, linkTitle) and not p.urlisdisplay then if class == 'ui-button-blue' or class == 'mw-ui-progressive' or class == 'mw-ui-constructive' then data.backgroundColor = '#2962CB' data.color = '#fff' 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 elseif p.urlisdisplay then data.dummyLink = tostring(currentTitle) end -- Add user-specified styles. data.style = args.style end return data end function p.renderLink(originalInput, data) -- Render the display span tag. local display do local displaySpan = mw.html.create('span') for i, class in ipairs(data.classes or {}) do displaySpan:addClass(class) end displaySpan :css{ ['background-color'] = data.backgroundColor, color = data.color } if data.style then displaySpan:cssText(data.style) end displaySpan:wikitext(data.display) display = tostring(displaySpan) end -- Render the link local link if originalInput and originalInput:find('|') then link = string.format('[[%s|%s]]', delink({originalInput, wikilinks = 'target'}), display) elseif p.nolink then if p.urlisdisplay then link = string.format('[[%s|%s]]', data.dummyLink, display) else link = string.format('%s', display) end else if data.isUrl then link = string.format('[%s %s]', data.link, display) else link = string.format('[[%s |%s]]', data.link, display) end end return string.format('<span class="plainlinks clickbutton">%s</span>', link) end function p.renderTrackingCategories(args) if yesno(args.category) == false then return '' end local class = args.class and args.class:lower() if class == 'ui-button-green' or class == 'ui-button-blue' or class == 'ui-button-red' then return '[[Category:Pages using old style ui-button-color]]' else return '' end end return p