Module:Infobox song: Difference between revisions
MusikAnimal (talk | contribs) No edit summary |
MusikAnimal (talk | contribs) No edit summary |
||
Line 69: | Line 69: | ||
} | } | ||
) | ) | ||
local root = mw.html.create() | |||
local ulRoot = root:tag('ul') | |||
:addClass('studio-sessions') | |||
local sessions = {} | local sessions = {} | ||
for r = 1, #results do | for r = 1, #results do | ||
local page = results[r]['page'] | local page = results[r]['page'] | ||
if page ~= nil and page ~= '' then | |||
if r == result then | |||
root:wikitext('[[' .. page .. ']]') | |||
return tostring(root) | |||
elseif page ~= nil and page ~= '' then | |||
ulRoot:tag('li') | |||
:wikitext('[[' .. page .. ']]') | |||
end | end | ||
end | end | ||
return table.concat(sessions, ' • ') | return tostring(root) | ||
-- return table.concat(sessions, ' • ') | |||
end | end | ||
Revision as of 04:22, 16 September 2020
Documentation for this module may be created at Module:Infobox song/doc
local p = {}
function p._track_listing(song, album)
local cargo = mw.ext.cargo
local results = cargo.query(
'track_listings',
'track, song, song_page_title',
{
where = 'work = "' .. album .. '" AND main_listing = 1',
orderBy = 'track_listings._ID ASC'
}
)
local root = mw.html.create()
local olRoot = root:tag('ol')
local has_match = false
for r = 1, #results do
local result = results[r]
local page = mw.title.new(result['song_page_title'])
wikitext = result['song']
if page.exists then
wikitext = '[[' .. result['song_page_title'] .. '|' .. result['song'] .. ']]'
end
olRoot:tag('li')
:attr('value', result['track'])
:wikitext(wikitext)
if result['song'] == song then
has_match = true
end
end
if has_match then
return tostring(root)
end
return ''
-- local tableRoot = root:tag('table')
-- for r = 1, #results do
-- local row = tableRoot:tag('tr')
-- local result = results[r]
-- row:tag('td')
-- :css('padding-right', '5px')
-- :wikitext(result['track'] .. '.')
-- row:tag('td'):wikitext('[[' .. result['song_page_title'] .. '|' .. result['song'] .. ']]')
-- end
end
function p.track_listing(frame)
local song = frame.args[1]
local album = frame.args[2]
return p._track_listing(song, album)
end
function p._studio_sessions(song)
local cargo = mw.ext.cargo
local results = cargo.query(
'studio_sessions, recordings, songs',
'studio_sessions._pageName=page',
{
where = 'songs.name = "' .. song .. '"',
join = 'recordings.song=songs.name,studio_sessions._pageName=recordings._pageName',
groupBy = 'studio_sessions._pageName'
}
)
local root = mw.html.create()
local ulRoot = root:tag('ul')
:addClass('studio-sessions')
local sessions = {}
for r = 1, #results do
local page = results[r]['page']
if r == result then
root:wikitext('[[' .. page .. ']]')
return tostring(root)
elseif page ~= nil and page ~= '' then
ulRoot:tag('li')
:wikitext('[[' .. page .. ']]')
end
end
return tostring(root)
-- return table.concat(sessions, ' • ')
end
function p.studio_sessions(frame)
local album = frame.args[1]
return p._studio_sessions(album)
end
return p