Editing Module:Infobox
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 4: | Line 4: | ||
-- <nowiki> |
-- <nowiki> |
||
require('strict') |
|||
local editbutton = require('Module:Edit button') |
local editbutton = require('Module:Edit button') |
||
local smwutils = |
local smwutils = requires('Module:SMW Utils') |
||
local Infobox = {} |
local Infobox = {} |
||
Line 24: | Line 23: | ||
args_smw = {}, -- parameters parsed for smw |
args_smw = {}, -- parameters parsed for smw |
||
infobox_name = nil, -- template name |
infobox_name = nil, -- template name |
||
classes = {}, -- list of classes to add, using the default_version |
|||
param_names = {}, -- ordered param list |
param_names = {}, -- ordered param list |
||
params = {}, -- param definitions |
params = {}, -- param definitions |
||
Line 59: | Line 57: | ||
--]] |
--]] |
||
function Infobox.param(param_name) |
function Infobox.param(param_name) |
||
param = { |
|||
property = 'args_parsed', |
property = 'args_parsed', |
||
param_name = param_name, |
param_name = param_name, |
||
Line 72: | Line 70: | ||
--]] |
--]] |
||
function Infobox.raw_param(param_name) |
function Infobox.raw_param(param_name) |
||
param = { |
|||
property = 'args_raw', |
property = 'args_raw', |
||
param_name = param_name, |
param_name = param_name, |
||
Line 85: | Line 83: | ||
--]] |
--]] |
||
function Infobox.smw_param(param_name) |
function Infobox.smw_param(param_name) |
||
param = { |
|||
property = 'args_smw', |
property = 'args_smw', |
||
param_name = param_name, |
param_name = param_name, |
||
Line 172: | Line 170: | ||
_cell:wikitext(content) |
_cell:wikitext(content) |
||
-- Add the switch data if multiple values exist |
-- Add the switch data if multiple values exist |
||
data_attr_param = self:add_switch_data(v.content) |
|||
if data_attr_param then |
if data_attr_param then |
||
_cell:attr('data-attr-param', data_attr_param) |
_cell:attr('data-attr-param', data_attr_param) |
||
Line 195: | Line 193: | ||
return self |
return self |
||
end |
end |
||
--[[ |
--[[ |
||
Line 209: | Line 208: | ||
-- config: table containing configuration parameters |
-- config: table containing configuration parameters |
||
---- infobox_name = mandatory unique identifier for this infobox, used for css |
---- infobox_name = mandatory unique identifier for this infobox, used for css |
||
---- |
---- max_buttuons = max number of switch buttons before using a dropdown list instead |
||
--]] |
--]] |
||
function Infobox:config(config) |
function Infobox:config(config) |
||
Line 217: | Line 216: | ||
elseif k == 'max_buttons' then |
elseif k == 'max_buttons' then |
||
self.max_buttons = tonumber(v) |
self.max_buttons = tonumber(v) |
||
elseif k == 'class' then |
|||
if type(v) == 'string' then |
|||
self.classes = {v} |
|||
elseif type(v) == 'table' then |
|||
self.classes = v |
|||
end |
|||
end |
end |
||
end |
end |
||
Line 238: | Line 231: | ||
--]] |
--]] |
||
function Infobox:parse_versions() |
function Infobox:parse_versions() |
||
function insert_version_name(version_name) |
|||
table.insert(self.version_names, version_name) |
table.insert(self.version_names, version_name) |
||
if smwutils.valid_subobject_name(version_name) == false then |
if smwutils.valid_subobject_name(version_name) == false then |
||
Line 369: | Line 362: | ||
local func_params = func.params |
local func_params = func.params |
||
local func_fetched_params = {} |
local func_fetched_params = {} |
||
local i = 1 |
|||
for _, func_param in ipairs(func_params) do |
for _, func_param in ipairs(func_params) do |
||
func_fetched_params |
table.insert(func_fetched_params, self:get_param(func_param, version)) |
||
i = i + 1 |
|||
end |
end |
||
return func_name(unpack(func_fetched_params)) |
return func_name(unpack(func_fetched_params)) |
||
Line 411: | Line 402: | ||
:addClass('infobox') |
:addClass('infobox') |
||
:addClass('infobox-'..self.infobox_name) |
:addClass('infobox-'..self.infobox_name) |
||
⚫ | |||
local class_name = self:get_param(class, self.default_version) |
|||
if type(class_name) == 'string' then |
|||
self.rtable:addClass('infobox-'..mw.ustring.gsub(class_name, '%s', '_')) |
|||
end |
|||
end |
|||
-- Create the switch datatable if multiple versions |
-- Create the switch datatable if multiple versions |
||
if self.versions > 1 then |
if self.versions > 1 then |
||
Line 474: | Line 459: | ||
local property = self.params[param_name].smw_property |
local property = self.params[param_name].smw_property |
||
if property then |
if property then |
||
value = self:get_param(self.smw_param(param_name), version) |
|||
if value ~= nil then |
if value ~= nil then |
||
subobject[property] = value |
subobject[property] = value |
||
Line 555: | Line 540: | ||
name = 'smw__' + name |
name = 'smw__' + name |
||
end |
end |
||
data_param = self.switch_datatable:tag('span'):attr('data-attr-param', name) |
|||
-- Add each version to the datatable |
-- Add each version to the datatable |
||
for version=1, self.versions do |
for version=1, self.versions do |
||
text = self:get_param(content, version) |
|||
if text == nil then |
if text == nil then |
||
text = self.params[content.param_name].empty |
text = self.params[content.param_name].empty |
||
Line 580: | Line 565: | ||
-- Create categories |
-- Create categories |
||
local category_text = '' |
local category_text = '' |
||
⚫ | |||
if mw.title.getCurrentTitle():inNamespace(0) then |
|||
⚫ | |||
for key, _ in pairs(self.categories) do |
|||
⚫ | |||
end |
|||
end |
|||
local dump = '' |
|||
if self.args_raw.__dump then |
|||
setmetatable(self, nil) |
|||
dump = '<nowiki>'..mw.dumpObject(self)..'</nowiki>' |
|||
setmetatable(self, Infobox) |
|||
end |
end |
||
return tostring(self.rtable) .. tostring(self.switch_datatable) .. error_text .. category_text |
return tostring(self.rtable) .. tostring(self.switch_datatable) .. error_text .. category_text |
||
end |
end |
||