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 = require('Module:SMW Utils') |
local smwutils = require('Module:SMW Utils') |
||
local episode_classes = { |
|||
['hopeport'] = 'hopeport', |
|||
['hopeforest'] = 'hopeforest', |
|||
['mine of mantuban'] = 'mantuban', |
|||
['crenopolis'] = 'crenopolis', |
|||
} |
|||
local Infobox = {} |
local Infobox = {} |
||
Line 24: | Line 30: | ||
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 64: | ||
--]] |
--]] |
||
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 77: | ||
--]] |
--]] |
||
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 90: | ||
--]] |
--]] |
||
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 177: | ||
_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 209: | Line 214: | ||
-- 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 222: | ||
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 |
||
Line 238: | Line 237: | ||
--]] |
--]] |
||
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 368: | ||
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 408: | ||
: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 |
|||
-- 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 465: | ||
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 546: | ||
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 568: | Line 559: | ||
end |
end |
||
function Infobox:set_episode_class(ep_param) |
|||
ep_param = string.lower(ep_param or '') |
|||
if episode_classes[ep_param] ~= nil then |
|||
self:addClass('infobox-'..episode_classes[ep_param]) |
|||
⚫ | |||
⚫ | |||
--[[ |
--[[ |
||
Line 580: | Line 577: | ||
-- 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 |
end |
||
local dump = '' |
local dump = '' |