モジュール:Thread
表示
このモジュールについての説明文ページを モジュール:Thread/doc に作成できます
-- <pre>
--[[
Forum.jsのスレッド一覧取得用モジュール
@author Funa-enpitu
@source https://www.mediawiki.org/wiki/User:Funa-enpitu/Forum/thread.lua
@license Creative Commons Attribution-ShareAlike License 4.0
@latest ver.1.0 | 23 January 2024 (UTC)
]]
local p = {};
function p.main(frame)
if(frame.args[3]=='true') then
return '<table>'..tr(frame.args[1],' class="f-sticky"')..tr(frame.args[2],'')..'</table>'
else
return '<table class="wikitable" style="width:100%;"><tr><th style="width:50%;">スレッド</th><th>投稿数</th><th>最終投稿</th></tr>'..tr(frame.args[1],' class="f-sticky"')..tr(frame.args[2],'')..'</table>'
end
end
function tr(json,attr)
local tr = ''
for idx, val in pairs(mw.text.jsonDecode(json)) do
local i = p.getinfo({args={page=val['title']}})
tr = tr..string.format('<tr'..attr..'><td>[[%s|%s]]</td><td>%s</td><td>[[%s#post-%s|%s]] by [[User:%s|%s]]</td></tr>',val['title'],mw.title.new(val['title']).subpageText,i['posts'],val['title'],i['posts'],i['date'],i['user'],i['user'])
end
return tr
end
function p.getinfo(frame)
local lastpost = string.gsub(mw.title.new(frame.args['page']):getContent(),'(.*){{post|(.-)}}$','%2')
local lpinfo = mw.text.split(lastpost,'|')
if(frame.args['js']=='true') then
return lpinfo[2]
else
return {
user= lpinfo[1],
posts= lpinfo[2],
date= lpinfo[3]
}
end
end
return p;
-- </pre>