Module:CountdownBanner: Difference between revisions

From 20R1
No edit summary
No edit summary
Line 3: Line 3:
function p.show( frame )
function p.show( frame )
     local currentTime = os.time()
     local currentTime = os.time()
    local query = '{{#ask: [[Category:Events]] [[Event Date::>' .. os.date("!%Y-%m-%d", currentTime) .. ']]'
                .. '|?Event Date'
                .. '|?Event Name=Name'
                .. '|?Event Location=Location'
                .. '|?Event Flyer=Flyer'
                .. '|sort=Event Date'
                .. '|order=asc'
                .. '|limit=1'
                .. '}}'


-- Use the normal DPL-style SMW query instead of mw.smw.ask
    local result = frame:preprocess( query )
local query = '{{#ask: [[Category:Events]] [[Event Date::>=' .. os.date("!%Y-%m-%d", currentTime) .. ']] '
              .. '|?Event Date'
              .. '|?Event Name=Name'
              .. '|?Event Location=Location'
              .. '|?Event Flyer=Flyer'
              .. '|sort=Event Date'
              .. '|order=asc'
              .. '|limit=1'
              .. '|format=template'
              .. '|template=CountdownBannerHelper'
              .. '}}'


local result = frame:preprocess( query )
    if result == '' or result:match'^%s*$' then
        return '<div style="background:#b22234;color:white;padding:20px;text-align:center;font-size:18px;">No upcoming events scheduled</div>'
    end


-- If nothing returned, show friendly message
    return frame:preprocess( '{{CountdownBannerDisplay|' .. result .. '}}' )
if result == '' or result:match'^%s*$' then
  return 'Query:<pre>'..query..'<br><br>Result:'..result..'</pre><div style="background:#b22234;color:white;padding:20px;text-align:center;font-size:18px;">No immediate upcoming events scheduled</div>'
end
 
return result
end
end


return p
return p

Revision as of 21:36, 19 November 2025

Documentation for this module may be created at Module:CountdownBanner/doc

local p = {}

function p.show( frame )
    local currentTime = os.time()
    local query = '{{#ask: [[Category:Events]] [[Event Date::>' .. os.date("!%Y-%m-%d", currentTime) .. ']]'
                .. '|?Event Date'
                .. '|?Event Name=Name'
                .. '|?Event Location=Location'
                .. '|?Event Flyer=Flyer'
                .. '|sort=Event Date'
                .. '|order=asc'
                .. '|limit=1'
                .. '}}'

    local result = frame:preprocess( query )

    if result == '' or result:match'^%s*$' then
        return '<div style="background:#b22234;color:white;padding:20px;text-align:center;font-size:18px;">No upcoming events scheduled</div>'
    end

    return frame:preprocess( '{{CountdownBannerDisplay|' .. result .. '}}' )
end

return p