Mô đun:Portal bar
Giao diện
Mô-đun này là loại cần được khóa. Nó là một mô-đun nhìn thấy rõ được sử dụng bởi một số lượng lớn các trang, hoặc là các thay thế rất thường xuyên. Bởi vì phá hoại hoặc lỗi sai khi sửa sẽ ảnh hưởng đến nhiều trang và thậm chí chỉnh sửa tầm thường có thể gây ra tải đáng kể cho các máy chủ, nó được khóa bảo vệ hạn chế sửa đổi. |
Mô đun Lua này được sử dụng ở khoảng 9.000 trang, vì thế những thay đổi đến nó sẽ hiện ra rõ ràng. Vui lòng thử nghiệm các thay đổi ở trang con /sandbox, /testcases của mô đun, hoặc ở chỗ thử mô đun. Cân nhắc thảo luận các thay đổi tại trang thảo luận trước khi áp dụng sửa đổi. |
Mô đun này phụ thuộc vào các mô đun sau: |
Mô đun này sử dụng TemplateStyles: |
This module implements the {{portal bar}} template. It displays a horizontal bar of portals.
See here and here for testcases.
Note: in order to make the test cases work, the Sandbox CSS classes have "-sand" appended to their names. If you wish to update the CSS, copy the contents of each class from Module:Portal bar/sandbox/styles.css to Module:Portal bar/styles.css, but do not alter the class names, nor just copy-paste the entire CSS file. For the current difference in CSS between Sandbox and Main, see here.
Usage
[sửa mã nguồn]{{#invoke:Portal bar|main|''portal 1''|''portal 2 ''|...|border=''no''}}
- Positional parameters - the names of the portals to be displayed.
border
- if|border=
is equal tono
,n
,false
, or0
, then the portal box will have no border.redlinks
- if|redlinks=
is equal toyes
,y
,true
orinclude
, then the portal box will show redlinked portals
Examples
[sửa mã nguồn]{{#invoke:portal bar|main|Visual arts|Science|Literature}}
Produces:
{{#invoke:portal bar|main|Visual arts|Science|Literature|border=no}}
Produces:
For further examples, see Template:Portal bar/testcases.
Images
[sửa mã nguồn]This module uses Module:Portal to get portal images. To add, change, or remove images, please see the instructions at Module:Portal#Image.
-- This module implements {{portal bar}}.
require('strict')
-- determine whether we're being called from a sandbox
local isSandbox = mw.getCurrentFrame():getTitle():find('sandbox', 1, true)
local sandbox = isSandbox and '/sandbox' or ''
local portalModule = require('Mô đun:Portal'..sandbox)
local getImageName = portalModule._image
local checkPortals = portalModule._checkPortals
local processPortalArgs = portalModule._processPortalArgs
local yesno = require( 'Mô đun:Yesno' )
local getArgs = require('Mô đun:Arguments').getArgs
local p = {}
local function sandboxVersion(s)
return isSandbox and s.."-sand" or s
end
-- Builds the portal bar used by {{portal bar}}.
function p._main( portals, args )
-- check for sensible args
args = type(args) == "table" and args or {}
-- Normalize arguments
for key, default in pairs({border=true,redlinks=false,tracking=true}) do
if args[key] == nil then args[key] = default end
args[key] = yesno(args[key], default)
end
local nav = mw.html.create( 'div' )
:addClass(sandboxVersion('portal-bar'))
:addClass( 'noprint metadata noviewer' )
:attr( 'role', 'navigation' )
:attr( 'aria-label' , 'Cổng thông tin' )
:addClass(sandboxVersion(args.border and 'portal-bar-bordered' or 'portal-bar-unbordered'))
local trackingCat = ''
-- Allow any number of portals
args.minPortals = 0
args.maxPortals = -1
-- Check to see whether there are redlinks, filter out unless args.redlink is true
portals, trackingCat = checkPortals(portals, args)
nav:wikitext(trackingCat)
if #portals == 0 then
return trackingCat
end
local related = yesno(args.related)
if related then
nav:addClass(sandboxVersion('portal-bar-related'))
else
local header = nav:tag('span')
header:addClass(sandboxVersion('portal-bar-header'))
header:wikitext('[[Wikipedia:Danh sách cổng thông tin|Cổng thông tin]]')
header:wikitext(':')
end
local container = nav:tag('ul')
container:addClass(sandboxVersion('portal-bar-content'))
if related then
container:addClass(sandboxVersion('portal-bar-content-related'))
end
local size = related and '27x25px' or '21x19px'
for _, portal in ipairs( portals ) do
container
:tag( 'li' )
:addClass(sandboxVersion('portal-bar-item'))
:wikitext( string.format('<span class="nowrap">[[Tập tin:%s|%s]] </span>[[Cổng thông tin:%s|%s]]',
getImageName(portal,true), size, portal, portal))
end
local styleFile = 'Mô đun:Portal bar'..sandbox..'/styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = styleFile }
} .. tostring( nav )
end
-- Processes external arguments and sends them to the other functions.
function p.main( frame )
local origArgs = getArgs(frame)
local portals, args = processPortalArgs(origArgs)
return p._main( portals, args )
end
return p