Difference between revisions of "Module:HonorTabs"
From Pathfinder Wiki
DesignerThan (talk | contribs) |
DesignerThan (talk | contribs) |
||
Line 4: | Line 4: | ||
function p.generateHonorTabs( frame ) | function p.generateHonorTabs( frame ) | ||
local parentFrame = frame:getParent() | local parentFrame = frame:getParent() | ||
+ | local landingPage = parentFrame.args['landingPage'] | ||
+ | if landingPage == nil or landingPage == '' then | ||
+ | landingPage = frame:expandTemplate{ title='GetHonorLandingPage' } | ||
+ | end | ||
+ | local langSuffix = frame:expandTemplate{ title='GetLangSuffix' } | ||
+ | local HTMLCodeString = "" | ||
+ | -- create the overview tab | ||
+ | HTMLCodeString = HTMLCodeString .. createSimpleTab(generateTabURL( frame, landingPage, langSuffix, 'Overview')) | ||
+ | -- create requirement tab | ||
+ | -- create answer variants tab | ||
+ | -- create lesson plans tab | ||
+ | HTMLCodeString = HTMLCodeString .. createSimpleTab(generateTabURL( frame, landingPage..'/Lesson_Plans', langSuffix, 'Lesson Plans')) | ||
+ | -- create worksheets tab | ||
+ | HTMLCodeString = HTMLCodeString .. createSimpleTab(generateTabURL( frame, landingPage..'/Worksheet', langSuffix, 'Worksheet')) | ||
return parentFrame.args['landingPage'] | return parentFrame.args['landingPage'] | ||
end | end | ||
Line 74: | Line 88: | ||
:wikitext( wikiLink ) | :wikitext( wikiLink ) | ||
return tostring( HTMLCode ) | return tostring( HTMLCode ) | ||
+ | end | ||
+ | |||
+ | function generateTabURL( frame, page, langSuffix, text ) | ||
+ | -- check inputs | ||
+ | if ( page == nil or page == "" ) then return 'fatal error' end | ||
+ | |||
+ | return '[[' .. page .. langSuffix .. '|' .. frame:expandTemplate{ title='Localize', args = { text } } .. ']]' | ||
end | end | ||
return p | return p |
Revision as of 21:14, 6 July 2021
Documentation for this module may be created at Module:HonorTabs/doc
local p = {}
local honorVariants = require ( "Module:HonorVariants" )
function p.generateHonorTabs( frame )
local parentFrame = frame:getParent()
local landingPage = parentFrame.args['landingPage']
if landingPage == nil or landingPage == '' then
landingPage = frame:expandTemplate{ title='GetHonorLandingPage' }
end
local langSuffix = frame:expandTemplate{ title='GetLangSuffix' }
local HTMLCodeString = ""
-- create the overview tab
HTMLCodeString = HTMLCodeString .. createSimpleTab(generateTabURL( frame, landingPage, langSuffix, 'Overview'))
-- create requirement tab
-- create answer variants tab
-- create lesson plans tab
HTMLCodeString = HTMLCodeString .. createSimpleTab(generateTabURL( frame, landingPage..'/Lesson_Plans', langSuffix, 'Lesson Plans'))
-- create worksheets tab
HTMLCodeString = HTMLCodeString .. createSimpleTab(generateTabURL( frame, landingPage..'/Worksheet', langSuffix, 'Worksheet'))
return parentFrame.args['landingPage']
end
function p.createAnswerTab( frame )
local ansVariants = ""
if frame.args.answerVariants then ansVariants = frame.args.answerVariants end
local landingPage = frame.args.landingPage
local t_answerVariants = honorVariants.getExpandedHonorVariants(frame, ansVariants, landingPage, "Answer Key")
result_string = outputVariantsTab(frame, t_answerVariants)
return result_string
end
function outputVariantsTab( frame, variants )
local HTMLCode = ""
local HTMLCodeString = ""
if (variants == nil) then
-- should not happen!
HTMLCodeString = "no variants?! = nil"
elseif (#variants < 1) then
-- should not happen!
HTMLCodeString = "no variants?! < 1"
elseif (#variants == 1) then
HTMLCodeString = createSimpleTab( variants[1].url )
else
-- now there should be more then 1 variants
local HTMLTabParent = mw.html.create( 'li' )
local buttonArgs = {}
buttonArgs['tagname'] = 'button'
local explodedPageName = mw.text.split( frame:expandTemplate{title='PAGENAMEwithoutLang'}, '/', true)
buttonArgs['class'] = 'dropdown-toggle' .. ' ' .. explodedPageName[#explodedPageName]
if (explodedPageName[#explodedPageName] == 'Answer Key') then
buttonArgs['class'] = buttonArgs['class'] .. ' selflink'
end
buttonArgs['type'] = 'button'
buttonArgs['id'] = 'dropdownAnswerKeys'
buttonArgs['data-toggle'] = 'dropdown'
buttonArgs['aria-haspopup'] = 'true'
buttonArgs['aria-expanded'] = 'false'
buttonText = frame:expandTemplate{title = 'Localize', args = {'Answer Key'} }
local dropdownButton = frame:extensionTag('htmltag', buttonText, buttonArgs)
HTMLTabParent
:addClass( 'honor-nav-item' )
:addClass( 'dropdown' )
:wikitext( dropdownButton )
HTMLVariantsContainer = mw.html.create( 'div' )
HTMLVariantsContainer
:addClass( 'dropdown-menu' )
:attr( 'aria-labelledby', 'dropdownAnswerKeys')
for key, variant in pairs(variants) do
HTMLVariantLink = mw.html.create( 'span' )
HTMLVariantLink
:addClass( 'dropdown-item' )
:wikitext( variant.url )
:done()
HTMLVariantsContainer:node( HTMLVariantLink )
end
HTMLVariantsContainer:done()
HTMLTabParent:node( HTMLVariantsContainer )
HTMLCodeString = tostring( HTMLTabParent )
end
return HTMLCodeString
end
function createSimpleTab( wikiLink )
local HTMLCode = mw.html.create( 'li' )
HTMLCode
:addClass( 'honor-nav-item' )
:wikitext( wikiLink )
return tostring( HTMLCode )
end
function generateTabURL( frame, page, langSuffix, text )
-- check inputs
if ( page == nil or page == "" ) then return 'fatal error' end
return '[[' .. page .. langSuffix .. '|' .. frame:expandTemplate{ title='Localize', args = { text } } .. ']]'
end
return p