No edit summary |
mNo edit summary |
||
(15 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
function pageNews.main(frame) | function pageNews.main(frame) | ||
local currentTitle = mw.title.getCurrentTitle().text | local currentTitle = string.gsub(mw.title.getCurrentTitle().text, ' ', '_') | ||
local empty = true | |||
-- Check if there are any interviews for this page | -- Check if there are any interviews for this page | ||
local tables = 'News' | local tables = 'News' | ||
local fields = ' | local fields = '_pageName, category, game, date, content, targets, author' | ||
local cargoArgs = { | local cargoArgs = { | ||
where = 'targets HOLDS "' .. currentTitle .. ' | where = 'content LIKE "%[[' .. currentTitle .. '|%" OR content LIKE "%[[' .. currentTitle .. ']]%" OR targets HOLDS "' .. currentTitle .. '"', | ||
orderBy = 'date' | orderBy = 'date DESC' | ||
} | } | ||
local results = cargo.query(tables, fields, cargoArgs) | local results = cargo.query(tables, fields, cargoArgs) | ||
local container = mw.html.create(' | |||
local container = mw.html.create():node(mw.html.create('h2'):wikitext('News')) | |||
if #results > 0 then | if #results > 0 then | ||
empty = false | |||
local ul = mw.html.create('ul') | local ul = mw.html.create('ul') | ||
for r = 1, #results do | for r = 1, #results do | ||
ul:node(mw.html.create('li'):node(News.main(pageNews.object(results[r])))) | ul:node(mw.html.create('li'):node(News.main(pageNews.object(results[r])))) | ||
end | end | ||
container:node( | |||
container:node(ul) | |||
end | |||
if empty then | |||
return '<span class="d-none"></span>' | |||
else | |||
return container | |||
end | end | ||
end | end | ||
function pageNews.object(result) | function pageNews.object(result) | ||
local object = { | local object = { | ||
date = result.date, | |||
_pageName = result._pageName, | |||
category = result.category, | |||
game = result.game, | |||
content = result.content, | |||
author = result.author | |||
} | |||
return object | return object | ||
end | end | ||
return pageNews | return pageNews |
Latest revision as of 08:01, 30 April 2024
Documentation for this module may be created at Module:PageNews/doc
local cargo = mw.ext.cargo
local News = require('Module:NewsItem')
local pageNews = {}
function pageNews.main(frame)
local currentTitle = string.gsub(mw.title.getCurrentTitle().text, ' ', '_')
local empty = true
-- Check if there are any interviews for this page
local tables = 'News'
local fields = '_pageName, category, game, date, content, targets, author'
local cargoArgs = {
where = 'content LIKE "%[[' .. currentTitle .. '|%" OR content LIKE "%[[' .. currentTitle .. ']]%" OR targets HOLDS "' .. currentTitle .. '"',
orderBy = 'date DESC'
}
local results = cargo.query(tables, fields, cargoArgs)
local container = mw.html.create():node(mw.html.create('h2'):wikitext('News'))
if #results > 0 then
empty = false
local ul = mw.html.create('ul')
for r = 1, #results do
ul:node(mw.html.create('li'):node(News.main(pageNews.object(results[r]))))
end
container:node(ul)
end
if empty then
return '<span class="d-none"></span>'
else
return container
end
end
function pageNews.object(result)
local object = {
date = result.date,
_pageName = result._pageName,
category = result.category,
game = result.game,
content = result.content,
author = result.author
}
return object
end
return pageNews