The controller is written in Fortran itself:
Here is an example where you write HTML using multiline strings:
case ('/html')
! HTML
write(unitNo,AFORMAT) '<div class="container">' // &
'<h1>Hello World</h1>' // &
'</div>'
Here is an example where you load a Jade template:
case ('/')
! most pages look like this
templatefile = 'template/index.jade'
call jadefile(templatefile, unitNo)
You have access to URL variables:
case ('/search')
call cgi_get(dict, 'q', query)
call calculate(query)
Jade files can also have template strings with each variable in a #{template}. Pass variables using the pagevars 2D array.
case ('/profile')
pagevars(1,1) = 'name'
pagevars(1,2) = 'Nick'
templatefile = 'template/profile.jade'
call jadetemplate(templatefile, unitNo, pagevars)
In searches Fortran.io controller gets input from the model and URL variables, and displays it in the view.
case ('/search')
pagevars(1,1) = 'name'
pagevars(2,1) = 'latinName'
call cgi_get( dict, 'q', query)
call getOneMarsupial(query, pagevars(1,2), pagevars(2,2))
if (len(trim(name)) == 0) then
write(unitNo,AFORMAT) 'No results in this database :-(
'
else
! template with string
templatefile = 'template/result.jade'
call jadetemplate(templatefile, unitNo, pagevars)
endif