Friday, July 12, 2019

About front ends and renderers

I checked in my work on #3110. The test suite passes again. The data checker is still missing, but this is less urgent.

The lino.modlib.memo.Plugin.front_end setting is now ready for beta testing on a site with two web front ends.

We must sometimes produce absolute URIs (e.g. when parsing a notification message to an email), and sometimes relative URIs (e.g. when rendering it in the summary panel of the comments per ticket).

Lino now uses the BASE tag when sending notification emails. This avoids us adding an option to the memo parser which would instruct it to generate absolute URIs. Not sure whether email clients support it, though. To be observed. The difference is visible e.g. in Before today the body of a notification email was:

<body> (22/12/2016 19:45) Robin a comment? <a href="" ... </body>

Now it is:

<html><head><base href="" target="_blank"></head>
<body>(22/12/2016 19:45) Robin a comment? <a href="/api/tickets/Tickets/1" ... </body></html>

Note that only comments are previewable. The body of a notification message has currently no preview. That’s because notification messages aren’t shown often, so we can parse them on the fly when needed. You might say here that currently the are shown often, namely in the dashboard (notify.MyMessages). But I have the feeling that this dashboard item will go away since nobody reads notifications in the dashboard.

The difference between a “front end” (i.e. a plugin) and a “renderer” is not clear. Maybe we should merge them. Maybe we should change ar.renderer to ar.front_end. En attendant we can use ar.renderer.front_end.

TODO: Note the difference between Site and Kernel : Site contains the “configuration”, which is available after instantiation of the SITE. Kernel contains the “run-time environment” of a SITE and is available only after startup. Maybe we should rename “kernel” to “rte” to make this more evident.

I started a new page Stories.

The memo parser currently always produces relative URIs

I removed the MailRenderer class in lino.core.renderer because it was no longer needed.

En passant I reviewed some parts of the book.