Module:Upload campaign link
Jump to navigation
Jump to search
Lua
CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules
Support module for Template:UploadCampaignLink2.
Takes the campaign
, id
, lat
, lon
(or long
), commonscat
, categories
, description
and descriptionlang
parameters from the template calling Template:UploadCampaignLink2 and uses these to create a link to an upload campaign.
Code
local p = {}
function p.campaignLink( frame )
local ppargs = frame:getParent().args
--as longitude naming isn't standardised
local lon = ppargs['lon']
if lon == nil then
lon = ppargs['long']
end
--
url = '//commons.wikimedia.org/wiki/special:uploadWizard?campaign=' .. ppargs['campaign'] .. '&id=' .. p.url_encode(ppargs['id']) .. '&descriptionlang='
if ppargs['descriptionlang'] == "" or ppargs['descriptionlang'] == nil then
url = url .. 'en'
else
url = url .. ppargs['descriptionlang']
end
url = url .. '&description=' .. p.url_encode(ppargs['description'])
if ppargs['lat'] ~= "" and ppargs['lat'] ~= nil then
url = url .. '&lat=' .. ppargs['lat'] .. '&lon=' .. ppargs['lon']
end
if ppargs['commonscat'] ~= "" and ppargs['commonscat'] ~= nil then
url = url .. '&categories=' .. p.url_encode(ppargs['commonscat'])
elseif ppargs['categories'] ~= "" and ppargs['categories'] ~= nil then
url = url .. '&categories=' .. p.url_encode(ppargs['categories'])
end
return url
end
function p.url_encode(str)
if (str) then
str = string.gsub (str, "\n", "\r\n")
str = string.gsub (str, "([^%w %-%_%.%~])",
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
end
return str
end
return p