วิกิพีเดีย
มอดูล:Subject bar
คู่มือการใช้งานมอดูล[ดู] [แก้] [ประวัติ] [ล้างแคช]
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
This module implements the {{Subject bar}} template. Please don't use this module from an article or from another wiki page. You should use the {{Subject bar}} template instead. To use the module from another Lua module, read on.
Use from another Lua module
Load the module like this:
local subjectBar = require('Module:Subject bar')._main
Then you can use the subjectBar
function like this:
local myBar = subjectBar{ book = 'Book 1', book2 = 'Book 2', -- ... portal = 'Portal 1', portal2 = 'Portal 2', -- ... commons = true, commons-search = 'Commons search string', wikt = true, wikt-search = 'Wiktionary search string' -- ... }
Please see Template:Subject bar/doc for a full list of possible parameters.
คู่มือการใช้งานที่ปรากฏด้านบนนี้ดึงมาจาก มอดูล:Subject bar/doc (แก้ | ประวัติ) ผู้เขียนสามารถทำการทดลองได้ที่กระบะทราย (สร้าง | คัดลอก) และชุดทดสอบ (สร้าง) ของมอดูลนี้ หน้าย่อยของมอดูลนี้ |
local htmlBuilder = require('Module:HtmlBuilder') local getPortalImage = require('Module:Portal').image local p = {} local function getArgNums(prefix, args) -- Returns a table containing the numbers of the arguments that exist for the specified prefix. For example, if the -- prefix was 'data', and 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end local function makeHorizontalRule() local row = htmlBuilder.create('tr') row .tag('td') .attr('colspan', '2') .tag('hr', {selfClosing = true}) return tostring(row) end local function makeItem(image, text) local root = htmlBuilder.create('table') root .css('float', 'left') .css('padding', '0px 5px') .tag('tr') .tag('td') .wikitext(image) .done() .tag('td') .css('width', '125px') .css('text-align', 'left') .wikitext(text) return tostring(root) end local function makeRow(items, heading, subheading, options) if #items < 1 then return end local swapHeadingSize = type(options) == 'table' and options.swapHeadingSize or false local row = htmlBuilder.create('tr') row .tag('td') .css('width', '175px') .tag('span') .css('font-size', swapHeadingSize and '85%' or '125%') .wikitext(heading) .done() .tag('br', {selfClosing = true}) .tag('span') .css('font-size', swapHeadingSize and '125%' or '85%') .wikitext(subheading) local cell = row.tag('td') for i, item in ipairs(items) do local image = item[1] local text = item[2] cell .wikitext(makeItem(image, text)) end return tostring(row) end local function makeNumberedRow(prefix, args, heading, subheading, getItemValsFunc, options) if args[prefix] then args[prefix .. '1'] = args[prefix] end local argNums = getArgNums(prefix, args) local items = {} for i, argNum in ipairs(argNums) do local image, text = getItemValsFunc(args[prefix .. tostring(argNum)]) table.insert(items, {image, text}) end return makeRow(items, heading, subheading, options) end function p._main(args) local rows = {} -- Get the book row text. local bookHeading = "'''[[Wikipedia:Books|Books]]'''" local bookSubheading = 'View or order collections of articles' local function getBookItemVals(book) local image = '[[File:Office-book.svg|30px|link=]]' local text = mw.ustring.format("'''''[[Book:%s|%s]]'''''", book, book) return image, text end local bookRow = makeNumberedRow('book', args, bookHeading, bookSubheading, getBookItemVals) table.insert(rows, bookRow) -- Get the portal row text local portalHeading = "'''[[วิกิพีเดีย:สถานีย่อย|สถานีย่อย]]'''" local portalSubheading = 'เข้าถึงหัวข้อที่เกี่ยวข้อง' local function getPortalItemVals(portal) local image = mw.ustring.format('[[File:%s|30x30px]]', getPortalImage{portal}) local text = mw.ustring.format("'''''[[สถานีย่อย:%s|สถานีย่อย<br />%s]]'''''", portal, portal) return image, text end local portalRow = makeNumberedRow('portal', args, portalHeading, portalSubheading, getPortalItemVals) table.insert(rows, portalRow) -- Get the sister projects row text. local sisters = { {arg = 'commons', image = 'Commons-logo.svg', prefix = 'commons', display = 'สื่อ', from = 'คอมมอนส์'}, {arg = 'species', image = 'Wikispecies-logo.svg', prefix = 'wikispecies', display = 'สารบบสปีชีส์', from = 'วิกิสปีชีส์'}, {arg = 'voy', image = 'Wikivoyage-Logo-v3-icon.svg', prefix = 'voy', display = 'คู่มือนำเที่ยว', from = 'วิกิท่องเที่ยว'}, {arg = 'n', image = 'Wikinews-logo.svg', prefix = 'wikinews', display = 'เรื่องข่าว', from = 'วิกิข่าว'}, {arg = 'wikt', image = 'Wiktionary-logo.svg', prefix = 'wiktionary', display = 'บทนิยามภาษาไทย', from = 'วิกิพีเดีย'}, {arg = 'b', image = 'Wikibooks-logo.svg', prefix = 'wikibooks', display = 'ตำรา', from = 'วิกิตำรา'}, {arg = 'q', image = 'Wikiquote-logo.svg', prefix = 'wikiquote', display = 'คำคม', from = 'วิกิคำคม'}, {arg = 's', image = 'Wikisource-logo.svg', prefix = 'wikisource', display = 'ข้อความต้นฉบับ', from = 'วิกิซอร์ซ'}, {arg = 'v', image = 'Wikiversity-logo.svg', prefix = 'wikiversity', display = 'แหล่งเรียนรู้', from = 'Wikiversity'} } local sisterItems = {} for i, t in ipairs(sisters) do if args[t.arg] then -- Get the image value. local image = mw.ustring.format('[[File:%s|30x30px|link=]]', t.image) -- Get the text value. local prefix = t.prefix local search = args[t.arg .. '-search'] or mw.title.getCurrentTitle().text local postfix = t.postfix postfix = postfix and ('#' .. postfix) or '' local display = t.display local from = t.from local text = mw.ustring.format( '[[%s:Special:Search/%s%s|%s]]<br />จาก %s', prefix, search, postfix, display, from ) -- Add the values to the items table. table.insert(sisterItems, {image, text}) end end local sisterHeading = "ศึกษาเพิ่มเติมทาง" local sisterSubheading = "'''[[วิกิพีเดีย:โครงการพี่น้อง|โครงการพี่น้อง]]'''" local sisterRow = makeRow(sisterItems, sisterHeading, sisterSubheading, {swapHeadingSize = true}) table.insert(rows, sisterRow) -- Make the table. local root = htmlBuilder.create('table') root .addClass('noprint') .addClass('navbox') .css('background-color', '#f9f9f9') .css('border', '1px solid #aaa') .css('clear', 'both') .css('margin-bottom', '0.5em') .css('margin-top', '0.5em') .wikitext(table.concat(rows, makeHorizontalRule())) return tostring(root) end function p.main(frame) -- If called via #invoke, use the args passed into the invoking template, or the args passed to #invoke if any exist. Otherwise -- assume args are being passed directly in from the debug console or from another Lua module. local origArgs if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args for k, v in pairs(frame.args) do origArgs = frame.args break end else origArgs = frame end -- Remove blank arguments. local args = {} for k, v in pairs(origArgs) do if v ~= '' then args[k] = v end end return p._main(args) end return p