Fossil needs more control over the header of each HTML page in order
to insert information inside of <head>...</head> to load the
style-sheet, the scripts, and make whatever other references are
necessary.  Right now, the <head>...</head> is generated by a
repository-specific "header" template, with the help from some TH1
variables like $baseurl, $current_page, $title, $home, $project_name,
etc.

Option 1:

Continue to have all the <html><head>...</head><body> material be
generated from the header template as it is now.  Just add some
additional variables to allow the new <link> marks required for CSP
support to be added.

This gives the most flexibility to the site administrator, to make the
site work like she wants.  But it also makes writing your own header
templates more complicated.  And when new capabilities come out (such
as CSP) it requires existing repositories to edit their header
templates in order to insert the new information.

Option 2:

Have Fossil take over complete control of all content HTML page
continue up to and including <body>.  The repository "header" template
would only generate the material that comes after <body>.  For
symmetry, the "footer" template would also be changed to stop prior to
the final </body> and Fossil will automatically generate the closing
</body></html> itself.

This approach is the most automatic.  The header and footer scripts
become easier to manage, and required changes to the <head>...</head>
needed for new features (such as CSP) happen automatically without the
administrator having to make any changes.  It is relatively easy to
upgrade legacy header and footer templates.  Just delete all text
through the <body> in the header template and delete </body> and all
that comes afterwards in the footer.

Option 3:

Fossil automatically generates <html><head>...</head><body> and then
appends whatever is in the "header" template, as with option 2.
Except, if the header template already contains a <body> tag, then
Fossil assumes that the admin knows what she is doing and lets the
header template generate everything as it does now.  Similarly with
the footer, Fossil will automatically generating the closing
</body></html> unless it sees that the footer script has already done
so.

This approach continues to work on legacy repos.  It allows repos to
upgrade easily just by deleting all header text up to and including
the first <body> tag.  And it allows knowledgeable admins to set up
their own custom <html><head>...</head><body> text if they have some
unanticipated need.  The downside is that this system is more complex
to explain and document.

Option 4:

Behave as in option 1 or option 2, depending on a setting.  The
setting defaults to do legacy option 1 support.  Then when an admin
goes to update the header and footer scripts to the option 2 style,
she also changes a setting to cause the <html><head>...</head><body>
content to be prepended and the </body></html> content to appended.


Summary:

The mere exercise of writing all this down as clarified my thinking
and caused me to prefer option 3.  But I'm still open to hearing other
opinions and/or receiving suggestions for other options.  Please send
your feedback, even if it is just "+1 Option 3".
-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
fossil-dev mailing list
fossil-dev@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/fossil-dev

Reply via email to