- Specify the svg and xlink namespaces to the `xml->sxml' procedure so that it
doesn't include them in full for each tag.
- For the default `pre-post-order' handler strip the `svg:' prefix if found.
- Strip the `svg:' namespace from the SVG element and insert the `xmlns' and
`xmlns:xlink' namespace definition attributes into the attributes.
This is all very brittle and badly done, but for the moment this fixes my
use-case of wanting to display SVG images embedded in the HTML.
When starting a new blog, or trying to run on some very old data, there is no
data available on any bogus or legitimate comments. When this happens Tekuti
will try to divide by 0 and divide 0 by other things in a few places, assuming
that there is at least _some_ data about bogus and legitimate comments.
I’m not 100% sure what the expectation is of these calculations, so I might have
chosen the wrong solution, but it seems to me that if there is no data
available, all we know is that there is nothing (0).
This fixes an issue with both trying to comment on a fresh new data set, or a
dataset that hasn’t been touched since 2014.
When setting up Tekuti for the first time the ‘compute-bogus-comments’ will get
the current commit passed in and try to get the parent. Since there is only the
“initial commit” at this stage it will get ‘#f’ as the parent commit and pass it
in to ‘fold-commits’. Trying to parse revision ‘#f’ will surely fail.
The ‘fold-commits’ function already expects that ‘rev’ might be empty, so this
should work out fine.
* tekuti/config.scm (*comments-open-window*): New config, indicating
seconds for which to keep comments open.
* tekuti/page-helpers.scm (post-editing-form): Expose comments closed
date feature.
* tekuti/page.scm (page-new-comment): Oops -- we were missing a
server-side comments-open check!
* tekuti/post.scm (*post-spec*): Serialize comments-closed-timestamp.
(post-comments-open?): Return false if we are after the
comments-closed-timestamp.
(post-comments-closed-timestamp): New accessor.
(munge-post): Write comments-closed-timestamp.
(parse-post-data): Parse comments-closed-timestamp from form data.
* tekuti/page-helpers.scm (html-doctype): Relax to HTML doctype.
(define-tag-set, void-element?, template-element?, raw-text-element?)
(escapable-raw-text-element?, foreign-element?, make-char-quotator)
(attribute-value-empty?, attribute-value-needs-quotes-chars)
(attribute-value-needs-quotes?, print-attribute-value/quoted)
(print-text/quoted, shtml->html): Emit HTML by default. This will
allow documents to contain <script> tags which themselves have &, <,
and so on.
As a side effect of this change, any pending posts in your repository
that are in "draft" status will effectively move into the new "draft"
state, which means they can be reached by their URL. That's not a big
deal though because those URLs are not trivial to guess.
* tekuti/page-helpers.scm (post-editing-form): Add radio button to
choose post status.
* tekuti/post.scm (post-public?, post-draft?, post-private?): New
accessors for post status.
(post-from-key): Add #:allow-draft? keyword argument.
* tekuti/page.scm (page-show-post): Allow direct access to draft posts.