查看“模块:Test”的源代码
←
模块:Test
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local params = {} params["prefix" ] = {'a', 'i', 'e'} params["display_title" ] = {'false'} params["title" ] = "表格默认标题" params["width" ] = "60%" params["item_per_tab" ] = "50" params["header" ] = {'作者', '主题', '简介'} params["color" ] = {'#004B97', '#0066CC', '#0066CC'} params["bg_color" ] = {'#FF9224', '#FFDCB9', '#FFE4CA'} params["color_alt" ] = {'#004B97', '#0066CC', '#0066CC'} params["bg_color_alt" ] = {'#FF9224', '#FFDCB9', '#FFE4CA'} params["header_color" ] = {'#004B97', '#0066CC', '#0066CC'} params["header_bg_color" ] = {'#FF9224', '#FFAD86', '#FFAD86'} params["display" ] = {'true', 'true', 'true'} params["col_width" ] = {'5%', '25%', '35%'} params["border_color" ] = { '#D26900 #FF9224 #D26900 #D26900', '#D26900 #FFDCB9 #D26900 #FF9224', '#D26900 #D26900 #D26900 #FF9224', } params["header_border_color" ] = { '#D26900 #FF9224 #D26900 #D26900', '#D26900 #FFAD86 #D26900 #FFAD86', '#D26900 #D26900 #D26900 #FF9224', } params["border_style" ] = { "dashed solid double double", "dashed double double solid", "dashed double double solid", } params["header_border_style" ] = { "double solid dashed double", "double double dashed solid", "double double dashed solid", } params["border_width" ] = { "5px 1px 3px 5px", "5px 1px 3px 1px", "5px 5px 3px 1px", } params["header_border_width" ] = { "5px 1px 3px 5px", "5px 1px 3px 1px", "5px 5px 3px 1px", } local global_param_list = { "title", "display_title", "width", "item_per_tab" } local col_param_list = { "header" , "color" , "bg_color" , "color_alt" , "bg_color_alt" , "header_color" , "header_bg_color" , "display" , "col_width" , "border_color" , "header_border_color" , "border_style" , "header_border_style" , "border_width" , "header_border_width" , } function renderHeader(tbl) local row = tbl:tag('tr') for i=1,3 do if params["display"][i] == "true" then local header_th = row:tag('th') header_th :wikitext(params["header"][i]) :css('padding' ,'10px') :css('width' , params["col_width" ][i]) :css('color' , params["header_color" ][i]) :css('background-color' , params["header_bg_color" ][i]) :css('border-width' , params["header_border_width" ][i]) :css('border-color' , params["header_border_color" ][i]) :css('border-style' , params["header_border_style" ][i]) end end end function renderRow(row_id, args, tbl) local row = tbl:tag('tr') for i=1,3 do if params["display"][i] == "true" then local info = row:tag('td') info :wikitext(args[params["prefix"][i] .. row_id]) --单元格样式 :css('padding' ,'10px') :css('width' , params["col_width" ][i]) :css('border-width' , params["border_width" ][i]) :css('border-color' , params["border_color" ][i]) :css('border-style' , params["border_style" ][i]) if row_id % 2 == 0 then info :css('color' , params["color" ][i]) :css('background-color' , params["bg_color" ][i]) else info :css('color' , params["color_alt" ][i]) :css('background-color' , params["bg_color_alt" ][i]) end end end end --处理表格 function renderTable(args, row_ids) local tbl = mw.html.create('table') :addClass('wikitable') :addClass('mw-collapsible') :addClass('mw-collapsed') :addClass('plainrowheaders') :css('display', 'block') :css('overflow-x', 'auto') :css('width', params["width"]) if params["display_title"] == "true" then local caption = tbl:tag('caption') caption :wikitext(title) :css('white-space', 'nowrap') end renderHeader(tbl) for _, a in ipairs(row_ids) do renderRow(a, args, tbl) end return tbl end function renderTabs(args) -- extract row_ids in each tables -- i hate lua why array subscribtion starts at 1 local tot_row_ids = {} local item_per_tab = tonumber(params["item_per_tab"]) for k, _ in pairs(args) do local anum = ('' .. k):match('^a(%d+)$') if anum then table.insert(tot_row_ids, tonumber(anum)) end end table.sort(tot_row_ids) local tab_count = (tableLength(tot_row_ids) - 1) / item_per_tab + 1 local tabs_row_ids = {} for i=1,tab_count do tabs_row_ids[i] = {} for j=1,item_per_tab do tabs_row_ids[i][j] = tot_row_ids[(i-1)*item_per_tab + j] end end -- if only one table is needed... if tab_count == 1 then return renderTable(args, next(tabs_row_ids)) end -- create tabs-container local tabs_div = mw.html.create('div') tabs_div:addClass("tabs-container") -- create tab ui list local tab_list = tabs_div:tag("ul") tab_list :addClass("tabs-pages") :css("margin", "0") for i, _ in ipairs(tabs_row_ids) do local list_ele = tab_list:tag("li") if i == 1 then list_ele:addClass("active") end list_ele :addClass("tab") :tag("strong") :wikitext(tostring(i*(item_per_tab-1)+1).."~"..tostring(i*item_per_tab)) end -- create actual tables local tables_list = tabs_div:tag("div") tables_list:addClass("tabs-contents") for i, row_ids in ipairs(tabs_row_ids) do local table_ele = tables_list:tag("div") table_ele:addClass("tab-c") if i == 1 then table_ele:addClass("active") end local inner_content = table_ele:tag("div") inner_content :addClass("inner-content") local content_tbl = renderTable(args, row_ids) inner_content:node(content_tbl) end return tabs_div end function tableLength(t) local count = 0 for _ in pairs(t) do count = count + 1 end return count end function p._historicalActivity(args) -- deal with params for _, key in ipairs(global_param_list) do if args[key] then params[key] = args[key] end end for _, key in ipairs(col_param_list) do for i=1,3 do if args[key..tostring(i)] then params[key][i] = args[key..tostring(i)] end end end --处理表格 local tb1 = renderTabs(args) local res = mw.html.create() res:node(tb1) return tostring(res) end function p.historicalActivity(frame) local args = {} local parent_args = frame:getParent().args;--获取页面传来得参数,而不是模板的参数 --将获取的参数传给args for k, v in pairs(parent_args) do if v ~= '' then args[k] = v end end return p._historicalActivity(args) end return p
本页使用的模板:
模板:Purge
(
查看源代码
)
模块:Test/doc
(
查看源代码
)
返回
模块:Test
。
导航菜单
个人工具
登录
命名空间
模块
讨论
English
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
学习园地
新人须知
教程整合
论坛百科
SS分区介绍
论坛设定
论坛文化
传奇殿堂
SS大事年表
SS大学图书馆
维基事务
基本规则
新手指南——技术
新手指南——内容
wiki语法手册
规范全集
工具
链入页面
相关更改
特殊页面
页面信息