Editing
Module:Self
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
-- .___ ___. ______ _______ __ __ __ _______ _______. _______ __ _______ -- | \/ | / __ \ | \ | | | | | | | ____| _ / || ____|| | | ____| -- | \ / | | | | | | .--. || | | | | | | |__ (_) | (----`| |__ | | | |__ -- | |\/| | | | | | | | | || | | | | | | __| \ \ | __| | | | __| -- | | | | | `--' | | '--' || `--' | | `----.| |____ _.----) | | |____ | `----.| | -- |__| |__| \______/ |_______/ \______/ |_______||_______|(_)_______/ |_______||_______||__| -- Written by [[user:Jarekt]] -- Original Template:Self used the following templates and modules: -- * Template:Dir -- * Template:Lang -- * Template:License migration is redundant -- * Template:License migration is redundant multiple -- * Template:Self/is-pd-expired -- * Template:SDC statement exist -- * Module:SDC tracking require('strict') -- used for debugging purposes as it detects cases of unintended global variables local p = {} ------------------------------------------------------------------------------- local function normalize_input_args(input_args, output_args) for name, value in pairs( input_args ) do value = mw.text.trim(value) -- trim whitespaces from the beggining and the end of the string if value ~= '' then -- nuke empty strings if type(name)=='string' then name = string.lower(name) end output_args[name] = value end end return output_args end ------------------------------------------------------------------------------- local function startswith(name, str) -- test if strings starts with "str" return (string.sub(name,1,string.len(str))==str) end ------------------------------------------------------------------------------- local function license_migration_is_redundant(name) -- Lua version of Template:License migration is redundant name = string.lower(name) return (startswith(name, 'cc-by-3.0' ) or startswith(name, 'cc-by-sa-3.0') or name=='cc-by-4.0' or name=='cc-by-all' or name=='cc-by-sa-4.0' or name=='cc-by-sa-all' or name=='cc-by-sa-any' or name=='cc-by-sa-1.0+' or name=='cc-by-sa-2.0+' or name=='cc-by-sa-4.0,3.0,2.5,2.0,1.0') end ------------------------------------------------------------------------------- local function pd_is_expired(name) -- Lua version of [[Template:Self/is-pd-expired]] name = string.lower(name) return (startswith(name, 'pd-us-') or startswith(name, 'pd-old') or startswith(name, 'pd-anon') or name=='pd-us' or name=='pd-1923' or name=='pd-canada-anon' or name=='anonymous-eu') end ------------------------------------------------------------------------------- function p.main(frame) -- parse inputs local args, sargs = {}, {} args = normalize_input_args(frame:getParent().args, args) args = normalize_input_args(frame.args, args) local lang = args.lang or frame:callParserFunction("int","lang") -- get user's chosen language local dir = mw.language.new( lang ):getDir() -- get text direction local page = mw.title.getCurrentTitle() local namespace = page.namespace -- get page namespace local author = args.author -- evaluate numbered inputs local tag = {} local ntag = 0 -- will count numbered inputs local pd_expired = false -- Do we have any public domain tags due to expiration local redundant = false for label, value in pairs( args ) do -- loop through numbered variables if (type(label)=='number' and value~='Self') then ntag = ntag+1 tag[ntag] = value pd_expired = pd_expired or pd_is_expired(tag[ntag]) redundant = redundant or license_migration_is_redundant(tag[ntag]) elseif (type(label)=='string') then sargs[label] = args[label] end end -- One of the tags indicate public domain work not released by the author local output, cats = {}, {} local msg if pd_expired then msg = mw.message.new( 'wm-license-self-invalid-parameter'):inLanguage(lang):plain() msg = mw.ustring.format('<div class="error" style="text-align:center; font-weight:bold;">%s</div>', msg) table.insert(output, msg) table.insert(cats, '[[Category:Files with invalid parameter in Self template]]') end -- get proper header, like ("I, the copyright holder of this work, hereby publish it under the following license:") if (ntag>1 and author) then msg = mw.message.new( 'wm-license-self-multiple-licenses-with-author', author) elseif (ntag==1 and author) then msg = mw.message.new( 'wm-license-self-one-license-with-author', author) elseif (ntag>1) then -- no author msg = mw.message.new( 'wm-license-self-multiple-licenses') else -- ntag==1 and no author msg = mw.message.new( 'wm-license-self-one-license') end msg = msg:inLanguage(lang):plain() local lang_fmt = '<div lang="%s" dir="%s" class="description %s" style="display:inline;">%s</div>' msg = mw.ustring.format(lang_fmt, lang, dir, lang, msg) msg = mw.ustring.format('<div class="center" style="font-weight:bold;">%s</div>', msg) table.insert(output, msg) -- render license templates sargs.attribution = args.attribution or author if not args.migration and redundant then sargs.migration='redundant' end for i=1,ntag do table.insert(output, frame:expandTemplate{ title = tag[i], args=sargs } ) end -- extra message if multiple templates present ("You may select the license of your choice.") if (ntag>1) then msg = mw.message.new( 'wm-license-self-multiple-licenses-select'):inLanguage(lang):plain() msg = mw.ustring.format(lang_fmt, lang, dir, lang, msg) msg = mw.ustring.format('<div class="center">%s</div>', msg) table.insert(output, msg) end -- assemble the final template and save as string local results = frame:preprocess(table.concat(output,'\n')) msg = '<div style="clear:both; margin:0.5em auto; background-color:var(--background-color-interactive,#eaecf0); color:inherit; border:2px solid var(--border-color-subtle,#c8ccd1); padding:8px; direction:%s; " class="licensetpl_wrapper">%s</div>' results = mw.ustring.format(msg, dir, results) -- If used in files then add some categories if needed if namespace==6 then table.insert(cats, '[[Category:Self-published work]]') local entity = mw.wikibase.getEntity() -- check if SDC statement exist if not(entity and entity.statements and entity.statements['P275']) then table.insert(cats, '[[Category:Self-published work missing SDC copyright license]]') end results = results .. table.concat(cats) -- add categories only to files end return results end return p
Summary:
Please note that all contributions to Islcamical Commons may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
commons:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Self/doc
(
edit
)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Module
Discussion
English
Views
Read
Edit source
View history
More
Search
Navigation
Main page
welcome
Community portal
village pump
participate
Upload file
Recent changes
latestfiles
Random File
contact
Special pages
Tools
What links here
Related changes
Upload file
Page information