Module:Portal bar/sandbox: Difference between revisions

Content deleted Content added
better args check
use code in Module:Portal
Line 3:
require('Module:No globals')
 
local getImageNameportalModule = require( 'Module:Portal/sandbox' ).image
local getImageName = portalModule.image
local checkTracking = portalModule._checkTracking
local processPortalArgs = portalModule._processPortalArgs
local yesno = require( 'Module:Yesno' )
local getArgs = require('Module:Arguments').getArgs
Line 10 ⟶ 13:
local function sandbox(args, s)
return args.sandbox and s.."-sand" or s
end
 
-- Check whether to do tracking in this namespace
-- Returns true unless the page is one of the banned namespaces
local function isTrackedNamespace()
local thisPageNS = mw.title.getCurrentTitle().namespace
return thisPageNS ~= 1 -- Talk
and thisPageNS ~= 2 -- User
and thisPageNS ~= 3 -- User talk
and thisPageNS ~= 5 -- Wikipedia talk
and thisPageNS ~= 7 -- File talk
and thisPageNS ~= 11 -- Template talk
and thisPageNS ~= 15 -- Category talk
and thisPageNS ~= 101 -- Portal talk
and thisPageNS ~= 118 -- Draft
and thisPageNS ~= 119 -- Draft talk
and thisPageNS ~= 829 -- Module talk
end
 
-- Check whether to do tracking on this pagename
-- Returns false if the page title matches one of the banned strings
-- Otherwise returns true
local function isTrackedPagename()
local thisPageLC = mw.ustring.lower(mw.title.getCurrentTitle().text)
local match = string.match
return match(thisPageLC, "/archive") == nil
and match(thisPageLC, "/doc") == nil
and match(thisPageLC, "/test") == nil
end
 
Line 62 ⟶ 37:
:addClass(sandbox(args,args.border and 'portal-bar-bordered' or 'portal-bar-unbordered'))
local trackingEnabled = args.tracking and isTrackedNamespace() and isTrackedPagenamecheckTracking()
 
-- scan for nonexistent portals, if they exist remove them from the portals
Line 118 ⟶ 93:
function p.main( frame )
local origArgs = getArgs(frame)
local portals, args = {}, {}processPortalArgs(origArgs)
-- Process the args to make an array of portal names that can be used with
-- ipairs. We need to use ipairs because we want to list all the portals in
-- the order they were passed to the template, but we also want to be able
-- to deal with positional arguments passed explicitly, for example
-- {{portal|2=Politics}}. The behaviour of ipairs is undefined if nil values
-- are present, so we need to make sure they are all removed.
local portals, args = {}, {}
for k, v in pairs( origArgs ) do
-- Make sure we have no non-string portal names.
if type( k ) == 'number' and type( v ) == 'string' then
table.insert(portals, k)
elseif type( k ) ~= 'number' then -- Separate named arguments from portals.
args[ k ] = v
end
end
table.sort( portals )
for i, v in ipairs( portals ) do
-- Swap keys with values
portals[ i ] = origArgs[ v ]
end
return p._main( portals, args )
end