मॉड्यूल:Portal bar
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. |
इस साँचे का इस्तेमाल 76391 पृष्ठों में किया जा रहा है। बड़े पैमाने पर व्यवधान और अनावश्यक सर्वर लोड से बचने के लिए, किसी भी बदलाव के पहले इस साँचे के /प्रयोगपृष्ठ उपपृष्ठ या अपने उपयोगकर्ता स्थान पर उसे जांच कर देख ले। जांचे गये बदलावों को इस साँचे में एक बार में जोड़ा जा सकता है।अन्य उपयोगकर्ताओं के खातिर, बदलाव करने से पहले उससे सम्बंधित बात-चीत वार्ता पृष्ठ पर करें। |
This module depends on the following other modules: |
This module uses TemplateStyles: |
This module implements the {{portal bar}} template. It displays a horizontal bar of portals.
See {{Portal bar/testcases}} 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
संपादित करें{{#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
संपादित करें{{#invoke:portal bar|main|Art|Science|Literature}}
Produces:
लुआ त्रुटि पंक्ति 95 पर: attempt to call upvalue 'processPortalArgs' (a nil value)।
{{#invoke:portal bar|main|Art|Science|Literature|border=no}}
Produces:
लुआ त्रुटि पंक्ति 95 पर: attempt to call upvalue 'processPortalArgs' (a nil value)।
For further examples, see Template:Portal bar/testcases.
Images
संपादित करें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('Module:No globals')
local portalModule = require('Module:Portal')
local getImageName = portalModule.image
local checkTracking = portalModule._checkTracking
local processPortalArgs = portalModule._processPortalArgs
local yesno = require( 'Module:Yesno' )
local getArgs = require('Module:Arguments').getArgs
local p = {}
local function sandbox(args, s)
return args.sandbox and s.."-sand" or s
end
-- Builds the portal bar used by {{portal bar}}.
function p._main( portals, args )
-- Don't display a blank navbox if no portals were specified.
if (not portals) or (#portals < 1) then return '' end
-- check for sensible args
args = type(args) == "table" and args or {}
-- Normalize arguments
for key, default in pairs({border=true,redlinks=false,sandbox=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(sandbox(args,'portal-bar'))
:addClass( 'noprint metadata noviewer' )
:attr( 'role', 'navigation' )
:attr( 'aria-label' , 'Portals' )
:addClass(sandbox(args,args.border and 'portal-bar-bordered' or 'portal-bar-unbordered'))
local trackingEnabled = args.tracking and checkTracking()
-- scan for nonexistent portals, if they exist remove them from the portals
-- table. If redlinks=yes, then don't remove
local trackingCats = ''
if not args.redlinks or trackingEnabled then
local existingPortals = {}
for _, portal in ipairs(portals) do
local portalTitle = mw.title.new(portal,"Portal")
if portalTitle and portalTitle.exists then
table.insert(existingPortals,portal)
elseif trackingEnabled then
trackingCats = "[[Category:Portal templates with redlinked portals]]"
end
end
portals = args.redlinks and portals or existingPortals
if #portals == 0 then
return trackingEnabled and "[[Category:Portal templates with all redlinked portals]]" or ""
end
end
local header = nav:tag('span')
header:addClass(sandbox(args,'portal-bar-header'))
header:wikitext('[[Wikipedia:Contents/Portals|Portal]]')
if #portals > 1 then
header:wikitext('s')
end
header:wikitext(':')
local container = nav:tag('div')
container:addClass(sandbox(args,'portal-bar-content'))
for _, portal in ipairs( portals ) do
container
:tag( 'div' )
:addClass(sandbox(args,'portal-bar-item'))
:tag( 'span' )
:addClass(sandbox(args,'portal-bar-logo'))
:wikitext( string.format(
'[[File:%s|21x19px|alt=]]', getImageName{ portal }
) )
:done()
:tag('span')
:addClass(sandbox(args,'portal-bar-link'))
:wikitext( string.format('[[Portal:%s|%s]]', portal, portal))
end
local styleFile = 'Module:Portal bar/'
styleFile = styleFile..(args.sandbox and 'sandbox/' or '')
styleFile = styleFile..'styles.css'
return mw.getCurrentFrame():extensionTag{
name = 'templatestyles', args = { src = styleFile }
} .. tostring( nav ) .. trackingCats
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