Editing
Module:Information/slim
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!
--[[ __ __ _ _ ___ __ _ _ | \/ | ___ __| |_ _| | ___ _|_ _|_ __ / _| ___ _ __ _ __ ___ __ _| |_(_) ___ _ __ | |\/| |/ _ \ / _` | | | | |/ _ (_)| || '_ \| |_ / _ \| '__| '_ ` _ \ / _` | __| |/ _ \| '_ \ | | | | (_) | (_| | |_| | | __/_ | || | | | _| (_) | | | | | | | | (_| | |_| | (_) | | | | |_| |_|\___/ \__,_|\__,_|_|\___(_)___|_| |_|_| \___/|_| |_| |_| |_|\__,_|\__|_|\___/|_| |_| This module is intended to be the engine behind "Template:Information". Please do not modify this code without applying the changes first at "Module:Information/sandbox" and testing at "Module:Information/testcases". Authors and maintainers: * User:Jarekt - original version ]] local ISOdate = require('Module:ISOdate') -- ==================================================================== -- === This function is just responsible for producing HTML of the === -- === template. At this stage all the fields are already filed === -- ==================================================================== local function Build_html(args) -- get text direction local dir = 'ltr' if mw.language.new( args.lang ):isRTL() then dir = 'rtl' end -- Permissions tag local tag1 = mw.message.new( "wm-license-information-permission" ):inLanguage(args.lang):plain() local tag2 = mw.message.new( "wm-license-information-permission-reusing-link" ):inLanguage(args.lang):plain() local tag3 = mw.message.new( "wm-license-information-permission-reusing-text" ):inLanguage(args.lang):plain() local permission_tag = string.format("%s<br /><small>([[%s|%s]])</small>", tag1, tag2, tag3) tag1 = mw.message.new( "wm-license-information-description" ):inLanguage(args.lang):plain() tag2 = mw.title.getCurrentTitle().text -- pagename local description_tag = string.format('%s<span class="summary fn" style="display:none">%s</span>', tag1, tag2) tag3 = string.format(' lang="%s"', args.lang) -- add other fields local params = { {field='description' , id='fileinfotpl_desc' , tag=description_tag, alt='Description missing', wrapper='%s', td=' class="description"'}, {field='other_fields_1'}, {field='date' , id='fileinfotpl_date' , tag='wm-license-information-date', wrapper='%s', td=tag3}, {field='source' , id='fileinfotpl_src' , tag='wm-license-information-source', alt='Source missing', wrapper='%s'}, {field='author' , id='fileinfotpl_aut' , tag='wm-license-information-author', alt='Author missing', wrapper='%s'}, {field='permission' , id='fileinfotpl_perm' , tag=permission_tag, wrapper='%s'}, {field='other_versions' , id='fileinfotpl_ver' , tag='wm-license-information-other-versions', wrapper='%s'}, {field='other_fields'} } local results = {} for _, param in ipairs(params) do local field, tag, cell1, cell2, id field = args[param.field] if field and mw.ustring.match(field,"^[%s%p]+$") then field=nul; end -- ignore panctuatin only fields if param.id then -- skip "other fields" parameter if field then -- add "id" to first <td> cell only if the field is present id = string.format('id="%s" ', param.id) elseif param.alt then -- Some field have "Missing" message if field is not provided field = mw.getCurrentFrame():expandTemplate{ title = param.alt } end if field or args.demo then -- skip the row if still no field tag = param.tag if string.sub(tag,1,10) == 'wm-license' then tag = mw.message.new( tag ):inLanguage(args.lang):plain() -- label message in args.lang language end cell1 = string.format('<td %sclass="fileinfo-paramfield" lang="%s">%s</td>\n', id or '', args.lang, tag) cell2 = string.format('<td%s>'.. param.wrapper ..'</td>', param.td or '', field or '') field = string.format('<tr style="vertical-align: top">\n%s%s\n</tr>\n\n', cell1, cell2) end end table.insert(results, field) end -- add table and outer layers local style = string.format('class="fileinfotpl-type-information toccolours vevent" style="width: 100%%;" dir="%s" cellpadding="4"', dir) results = string.format('<table %s>\n\n%s\n</table>\n', style, table.concat(results)) results = string.format('<div class="hproduct commons-file-information-table">\n%s\n</div>\n', results) return results end -- ================================================== -- === External functions =========================== -- ================================================== local p = {} -- =========================================================================== -- === Version of the function to be called from other LUA codes -- =========================================================================== function p._information(args) -- ==================================================== -- === add tag templates used for tracking === -- ==================================================== local frame = mw.getCurrentFrame() if args.date then args.date = ISOdate._ISOdate(args.date, args.lang, '', 'dtstart', '100-999') -- apply ISODate to function to date string to convert date in ISO format to translated date string -- add an empty template which can be used as a tag in PetScan local d = os.date('!*t') -- current date table local current_year = tonumber(d.year) -- current year local creation_year = tonumber(ISOdate._ISOyear(args.date)) if creation_year and current_year and (current_year-creation_year)>200 then frame:expandTemplate{ title ='Works created more than 200 years ago' } end end frame:expandTemplate{ title = 'Infobox template tag' } -- add the template tag return frame:preprocess(Build_html(args)) end -- =========================================================================== -- === Version of the function to be called from template namespace -- =========================================================================== function p.information(frame) -- switch to lowercase parameters to make them case independent local args = {} for name, value in pairs( frame:getParent().args ) do if value ~= '' then -- nuke empty strings local name1 = string.gsub( string.lower(name), ' ', '_') args[name1] = value end end for name, value in pairs( frame.args ) do if value ~= '' then -- nuke empty strings local name1 = string.gsub( string.lower(name), ' ', '_') args[name1] = value end end if not (args.lang and mw.language.isSupportedLanguage(args.lang)) then args.lang = frame:callParserFunction( "int", "lang" ) -- get user's chosen language end -- call the inner "core" function return p._information(args) 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:Information/slim/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