Modul:Portal bar: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
-require('Module:No globals') |
|||
(9 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)
end
local getImageName = require( 'Module:Portal' ).image
local yesno = require( 'Module:Yesno' )
Baris 10 ⟶ 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.
Baris 25 ⟶ 28:
nav
:addClass( 'navbox' )
:css( 'padding', '0.4em
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
Baris 41 ⟶ 71:
:wikitext( string.format( '[[File:%s|24x21px]]', getImageName{ portal } ) )
:done()
:wikitext( string.format( '[[Portal:%s|Portal %s
end
|