Module:File license
From Tardis Wiki, the free Doctor Who reference
Documentation for this module may be created at Module:File license/doc
local p = {} --p stands for package
local h = {} --h stands for helper
function p.makeLicense(frame)
local args = frame:getParent().args
local image = args["image"] or ""
local imageSize = tonumber(args["image size"]) or 80
local typeOfFile = args["type of file"] or "image"
local source = args["source"] or ""
local license = args["license"] or ""
local copyrightHolder = args["copyright holder"] or ""
local copyrightHolderDisplay = args["copyright holder display"] or ""
local copyrightYear = args["copyright year"] or ""
local intent = args["intent"] or "to illustrate articles"
local tentative = args["tentative"] or ""
local ownWork = args["own work"] or ""
local trademarkOwner = args["trademark owner"] or ""
local trademarkUsage = args["trademark usage"] or "Its use here is believed not to be [[wikipedia:trademark infringement|trademark infringement]]. "
local attribution = args["attribution"] or ""
local attributionFormat = args["attribution format"] or ""
local includeEndorsementNotice = args["endorsement notice"] or ""
local subject = args["subject"] or ""
local subjectLicense = args["subject license"] or ""
local extra = args["extra"] or ""
if tentative ~= "" then
tentativeText = "It is believed that use"
else
tentativeText = "Use"
end
local typeOfFileArticle = "a"
local vowels = {["a"] = true, ["e"] = true, ["i"] = true, ["o"] = true, ["u"] = true}
if vowels[string.sub(typeOfFile, 1, 1)] then
typeOfFileArticle = "an"
end
local sourceText = ""
if source ~= "" then
sourceText = " from " .. source
end
local subjectText = ""
if subject ~= "" then
subjectText = " of " .. subject
end
local copyrightHolderData = mw.loadData("Module:File license/data/copyright holders")
local imageCode = ""
if image ~= "" then
imageCode = '<span style="margin-top:5px;float:left;margin-right:10px;">[[File:' .. image .. '|' .. tostring(imageSize) .. "px]]</span>"
elseif copyrightHolderData[copyrightHolder] then
if copyrightHolderData[copyrightHolder][2] then
imageCode = '<span style="margin-top:5px;float:left;margin-right:10px;">[[File:' .. copyrightHolderData[copyrightHolder][2] .. '|' .. tostring(imageSize) .. "px]]</span>"
end
end
local copyrightHolderText = ""
if copyrightHolder ~= "" then
if copyrightHolderData[copyrightHolder] then
if copyrightHolderData[copyrightHolder][1] then
copyrightHolderText = frame:preprocess(copyrightHolderData[copyrightHolder][1])
end
elseif copyrightHolderDisplay ~= "" then
copyrightHolderText = "[[" .. copyrightHolder .. "|" .. copyrightHolderDisplay .. "]]"
else
copyrightHolderText = frame:preprocess(copyrightHolder)
end
end
local subjectCopyrightHolderText = ""
if subjectCopyrightHolder ~= "" then
if copyrightHolderData[subjectCopyrightHolder] then
if copyrightHolderData[subjectCopyrightHolder][1] then
subjectCopyrightHolderText = frame:preprocess(copyrightHolderData[subjectCopyrightHolder][1])
end
elseif subjectCopyrightHolderDisplay then
subjectCopyrightHolderText = "[[" .. subjectCopyrightHolder .. "|" .. subjectCopyrightHolderDisplay .. "]]"
else
subjectCopyrightHolderText = frame:preprocess(subjectCopyrightHolder)
end
end
local attributionText = attribution
if attributionText == "" then
attributionText = copyrightHolderText
end
if attributionText == "" then
attributionText = trademarkOwner
end
local licenseData = mw.loadData("Module:File license/data/licenses")
local licenseText = ""
local licenseMachinedata = ""
if licenseData[license] then
if ownWork ~= "" then
licenseText = "I, the copyright holder of this " .. typeOfFile .. ", hereby " .. frame:preprocess(licenseData[license][2]) .. " it's use on Tardis Wiki, hosted on servers in France by Wiki Federation, " .. intent .. ". "
else
licenseText = tentativeText .. " of this " .. typeOfFile .. " " .. intent .. " on Tardis Wiki, hosted on servers in France by Wiki Federation, " .. frame:preprocess(licenseData[license][1])
end
licenseText = frame:preprocess(licenseData[license][11]) .. licenseText .. " " .. frame:preprocess(licenseData[license][3])
licenseMachinedata = '<span class="licensetpl"><span class="licensetpl_short">' .. licenseData[license][4] .. '</span><span class="licensetpl_long">' .. licenseData[license][5] .. '</span><span class="licensetpl_link">' .. frame:preprocess("<nowiki>" .. licenseData[license][6] .. "</nowiki>") .. '</span><span class="licensetpl_link_req">' .. tostring(licenseData[license][7]) .. '</span><span class="licensetpl_attr_req">' .. tostring(licenseData[license][8]) .. '</span><span class="licensetpl_attr">' .. attributionText .. '</span><span class="licensetpl_nonfree">' .. tostring(licenseData[license][9]) .. '</span></span>'
end
local extraLicenses = ""
local done = false
local i = 2
while not done do
if args["license" .. tostring(i)] and args["license" .. tostring(i)] ~= "" and licenseData[args["license" .. tostring(i)]] then
if licenseData[args["license" .. tostring(i)]][6] ~= "" then
extraLicenses = extraLicenses .. frame:preprocess("[" .. licenseData[args["license" .. tostring(i)]][6] .. " " .. licenseData[args["license" .. tostring(i)]][5] .. "]") .. ", "
else
extraLicenses = extraLicenses .. licenseData[args["license" .. tostring(i)]][5] .. ", "
end
licenseMachinedata = licenseMachinedata .. '<span class="licensetpl"><span class="licensetpl_short">' .. licenseData[args["license" .. tostring(i)]][4] .. '</span><span class="licensetpl_long">' .. licenseData[args["license" .. tostring(i)]][5] .. '</span><span class="licensetpl_link">' .. frame:preprocess("<nowiki>" .. licenseData[args["license" .. tostring(i)]][6] .. "</nowiki>") .. '</span><span class="licensetpl_link_req">' .. tostring(licenseData[args["license" .. tostring(i)]][7]) .. '</span><span class="licensetpl_attr_req">' .. tostring(licenseData[args["license" .. tostring(i)]][8]) .. '</span><span class="licensetpl_attr">' .. attributionText .. '</span><span class="licensetpl_nonfree">' .. tostring(licenseData[args["license" .. tostring(i)]][9]) .. '</span></span>'
i = i + 1
else
done = true
end
end
if extraLicenses ~= "" then
extraLicenses = extraLicenses:sub(1, -3) .. ". "
if ownWork then
extraLicensesText = "<br/><br/>I also make this file available under the following additional license"
if i > 3 then
extraLicensesText = extraLicensesText .. "s"
end
extraLicensesText = extraLicensesText .. ": " .. extraLicenses
else
extraLicensesText = "<br/><br/>This file is also available under the following additional license"
if i > 3 then
extraLicensesText = extraLicensesText .. "s"
end
extraLicensesText = extraLicensesText .. ": " .. extraLicenses
end
licenseText = licenseText .. extraLicensesText
end
local subjectLicenseText = ""
if licenseData[subjectLicense] then
subjectLicenseText = "\n<hr/>" .. frame:preprocess(licenseData[subjectLicense][11]) .. "The inclusion of " .. subject .. " in this " .. typeOfFile .. " " .. frame:preprocess(licenseData[subjectLicense][1]) .. " " .. frame:preprocess(licenseData[subjectLicense][3])
licenseMachinedata = licenseMachinedata .. '<span class="licensetpl"><span class="licensetpl_short">' .. licenseData[subjectLicense][4] .. '</span><span class="licensetpl_long">' .. licenseData[subjectLicense][5] .. '</span><span class="licensetpl_link">' .. frame:preprocess("<nowiki>" .. licenseData[subjectLicense][6] .. "</nowiki>") .. '</span><span class="licensetpl_link_req">' .. tostring(licenseData[subjectLicense][7]) .. '</span><span class="licensetpl_attr_req">' .. tostring(licenseData[subjectLicense][8]) .. '</span><span class="licensetpl_attr">' .. attributionText .. '</span><span class="licensetpl_nonfree">' .. tostring(licenseData[subjectLicense][9]) .. '</span></span>'
licenseText = licenseText .. subjectLicenseText
end
if extraLicenses ~= "" or subjectLicenseText ~= "" then
licenseMachinedata = '<span class="licensetpl_wrapper">' .. licenseMachinedata .. '</span>'
end
local infoMachinedata = '<span class="fileinfotpl"><span class="fileinfotpl_desc">' .. string.sub(typeOfFileArticle, 1, 1):upper() .. string.sub(typeOfFileArticle, 2, -1) .. ' ' .. typeOfFile .. sourceText .. '.</span><span class="fileinfotpl_src">' .. source .. '</span><span class="fileinfotpl_aut">' .. copyrightHolderText .. '</span></span>'
local i = 1
local extraCopyrightText = ""
if args["extra copyright"] and args["extra copyright"] ~= "" then
args["extra copyright1"] = args["extra copyright"]
args["extra copyright owner1"] = args["extra copyright owner"]
args["extra copyright year1"] = args["extra copyright year"]
end
while args["extra copyright" .. tostring(i)] and args["extra copyright" .. tostring(i)] ~= "" do
extraCopyrightText = extraCopyrightText .. args["extra copyright" .. tostring(i)]
if string.find(args["extra copyright" .. tostring(i)], "and") then
extraCopyrightText = extraCopyrightText .. " are "
else
extraCopyrightText = extraCopyrightText .. " is "
end
extraCopyrightText = extraCopyrightText .. " © " .. args["extra copyright owner" .. tostring(i)]
if args["extra copyright year" .. tostring(i)] and args["extra copyright year" .. tostring(i)] ~= "" then
extraCopyrightText = extraCopyrightText .. " " .. args["extra copyright year" .. tostring(i)]
end
extraCopyrightText = extraCopyrightText .. ". "
i = i + 1
end
if extraCopyrightText ~= "" then
extraCopyrightText = "\n<hr/>" .. extraCopyrightText
end
local trademarkText = ""
if trademarkOwner ~= "" then
trademarkText = "\n<hr/><span class='restriction-trademarked'>Additionally, some or all of this " .. typeOfFile .. " is a trademark of " .. trademarkOwner .. ". "
if trademarkUsage ~= "" then
trademarkText = trademarkText .. trademarkUsage
end
trademarkText = trademarkText .. "</span>"
end
local copyrightOwnedByText = ""
if licenseData[license][10] then
copyrightOwnedByText = "It is not under copyright, but some parties may still have other intellectual property rights over this image. "
else
if copyrightYear ~= "" then
copyrightOwnedByText = "Its copyright is owned by " .. copyrightHolderText .. ", " .. copyrightYear .. ". Other parties may have intellectual property rights over this image, as well. "
else
copyrightOwnedByText = "Its copyright is owned by " .. copyrightHolderText .. ". Other parties may have intellectual property rights over this image, as well. "
end
end
local attributionNotice = ""
if attributionText ~= "" then
if licenseData[license][8] then
attributionNotice = "\n<hr/>When using this " .. typeOfFile .. ", its creator/owner, " .. attributionText .. ", must be attributed. "
else
attributionNotice = "\n<hr/>While not required by the license, this " .. typeOfFile .. " can be attributed to " .. attributionText .. ". "
end
if attributionFormat ~= "" then
attributionNotice = attributionNotice .. "This should be done in in the following way: <br/><center>" .. frame:preprocess(attributionFormat) .. "</center>"
end
end
local endorsementNotice = ""
if includeEndorsementNotice ~= "" then
endorsementNotice = "\n<hr/>The presence of this " .. typeOfFile .. " does not in any way imply endorsement by the copyright holder of the page on which it appears. It also does not imply any endorsement of this wiki in general. This wiki is not affiliated with any entity who owns, or is represented by, this" .. typeOfFile .. ". "
end
if extra ~= "" then
extra = "<hr/>" .. extra
end
local finalLicense = '<div id="license">' .. imageCode .. "This file is " .. typeOfFileArticle .. " '''" .. typeOfFile .. "'''" .. subjectText .. sourceText .. ". " .. copyrightOwnedByText .. extraCopyrightText .. endorsementNotice .. "\n<hr/>" .. licenseText .. trademarkText .. attributionNotice .. extra .. "</div>"
local infoMachinedata = '<span class="fileinfotpl"><span class="fileinfotpl_desc" style="display:none;">' .. string.sub(typeOfFileArticle, 1, 1):upper() .. string.sub(typeOfFileArticle, 2, -1) .. ' ' .. typeOfFile .. subjectText .. sourceText .. '.</span><span class="fileinfotpl_src" style="display:none;">' .. source .. '</span><span class="fileinfotpl_aut" style="display:none;">' .. copyrightHolderText .. '</span><span class="fileinfotpl_perm">' .. finalLicense .. '</span></span>'
finalLicense = '<span style="display:none;"> ' .. licenseMachinedata .. "</span>" .. infoMachinedata
return finalLicense
end
return p