Military sidebar: years/battles/ribbons + branch emblems
Awards rack: no TOC steal; full awards list under ribbons
Line 1,253: Line 1,253:
return ''
return ''
end
end
-- Split semicolon / <br> lists into bullets when multiple awards
-- Split semicolon / <br> lists into bullets
local parts = {}
local parts = {}
raw = mw.ustring.gsub(raw, '<br%s*/?>', ';')
raw = mw.ustring.gsub(raw, '<br%s*/?>', ';')
for part in mw.text.gsplit(raw, ';', true) do
for part in mw.text.gsplit(raw, ';', true) do
part = trim(part)
part = trim(part)
part = mw.ustring.gsub(part, '^%*%s*', '')
if part ~= '' then
if part ~= '' then
table.insert(parts, '* ' .. part)
table.insert(parts, '* ' .. part)
end
end
end
end
if #parts <= 1 then
if #parts == 0 then
return raw
return ''
end
end
return table.concat(parts, '\n')
return table.concat(parts, '\n')
Line 1,495: Line 1,496:
local knownFor = prettyProse(parentArg(frame, 'known_for'))
local knownFor = prettyProse(parentArg(frame, 'known_for'))
local awards = prettyProse(parentArg(frame, 'awards'))
local awards = prettyProse(parentArg(frame, 'awards'))
local ribbonsRaw = parentArg(frame, 'awards_ribbons')
-- Full medal list belongs under the body ribbon rack; keep infobox short
if ribbonsRaw ~= '' and mw.ustring.len(awards) > 90 then
local first = mw.ustring.match(awards, '^([^;]+)')
awards = trim(first or awards)
end
local state = prettyPlace(parentArg(frame, 'state'))
local state = prettyPlace(parentArg(frame, 'state'))


Line 1,590: Line 1,597:
local ribbons = formatAwardsRibbons(parentArg(frame, 'awards_ribbons'))
local ribbons = formatAwardsRibbons(parentArg(frame, 'awards_ribbons'))
local awardsText = formatAwardsLegend(parentArg(frame, 'awards'))
local awardsText = formatAwardsLegend(parentArg(frame, 'awards'))
-- Body section is for the ribbon rack; skip if no ribbons (text stays in infobox)
if ribbons == '' and awardsText == '' then
if ribbons == '' then
return ''
return ''
end
end
-- Use a styled div heading (not == wiki heading) so MediaWiki does not place
-- the Contents box inside this block — JS moves the block after Biography.
local parts = {
local parts = {
'<div class="soldier-awards-section">',
'<div class="soldier-awards-section">',
'== Awards and honors ==',
'<div class="soldier-awards-heading">Awards and honors</div>',
ribbons,
}
}
if ribbons ~= '' then
table.insert(parts, ribbons)
end
if awardsText ~= '' then
if awardsText ~= '' then
table.insert(parts, '<div class="soldier-awards-list">')
table.insert(parts, awardsText)
table.insert(parts, awardsText)
table.insert(parts, '</div>')
end
end
table.insert(parts, '</div>')
table.insert(parts, '</div>')