Modul:Portal bar: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan |
-require('Module:No globals') |
||
(10 revisi perantara oleh 2 pengguna tidak ditampilkan) | |||
Baris 1:
-- This module implements {{portal bar}}.
require('
local p = {}
local function checkPortalExists(portal)
return not (mw.title.makeTitle(100, portal).id == 0)
local getImageName = require( 'Module:Portal' ).image
local yesno = require( 'Module:Yesno' )
Baris 11 ⟶ 12:
-- Builds the portal bar used by {{portal bar}}.
function p._main( portals, args )
if #portals < 1 then return '' end -- Don't display a blank navbox if no portals were specified.
local nav = mw.html.create( 'div' )
:attr( 'role', 'navigation' )
:attr( 'aria-label' , 'Portals' )
if yesno( args.border ) == false then
nav
else▼
nav
:addClass( 'navbox' )
end
-- scan for nonexistent portals, if they exist remove them from the portals table. If redlinks=yes, then don't remove
local portallen = #portals
-- traverse the list backwards to ensure that no portals are missed (table.remove also moves down the portals in the list, so that the next portal isn't checked if going fowards.
-- going backwards allows us to circumvent this issue
for i=portallen,1,-1 do
-- the use of pcall here catches any errors that may occour when attempting to locate pages when the page name is invalid
-- if pcall returns true, then rerun the function to find if the page exists
if not pcall(checkPortalExists, portals[i]) or not checkPortalExists(portals[i]) then
-- Getting here means a redlinked portal has been found
if (args.redlinks == 'yes') or (args.redlinks == 'y') or (args.redlinks == 'true') or (args.redlinks == 'include') then
-- if redlinks as been set to yes (or similar), add the cleanup category and then break the loop before the portal is removed from the list
nav:wikitext('[[Kategori:Templat portal dengan portal berpranala merah]]')
break
end
-- remove the portal (this does not happen if redlinks=yes)
table.remove(portals,i)
end
end
-- if the length of the table is different, then rows were removed from the table, so portals were removed. If this is the case add the cleanup category
if not (portallen == #portals) then
if #portals == 0 then
return '[[Kategori:Templat portal dengan seluruh portal berpranala merah]]'
end
nav:wikitext('[[Kategori:Templat portal dengan seluruh portal berpranala merah]]')
end
local list = mw.html.create( 'ul' )
:css( 'margin', '0.1em 0 0' )
for _, portal in ipairs( portals ) do
list
:tag( 'li' )
:css( 'display', 'inline' )
:tag( 'span' ) -- Inline-block on inner span for IE6-7 compatibility.
▲ :css( 'white-space', 'nowrap' )
:
:css( '
:tag( 'span' )▼
:wikitext( string.format( '[[File:%s|24x21px]]', getImageName{ portal } ) )▼
:
▲ :wikitext( string.format( '[[File:%s|24x21px]]', getImageName{ portal } ) )
▲ :tag( 'span' )
:
:wikitext( string.format( '[[Portal:%s|Portal %s]]', portal, portal ) )
end
nav
return tostring(▼
▲ :addClass( 'noprint metadata' )
▲ :css( 'width', '100%' )
▲ :css( 'text-align', 'center' )
▲ :css( 'padding', '1px' )
▲ :css( 'font-size', '88%' )
▲ else
▲ end
end
|