Blog entries should be just another type of node

Sunday, November 5, 2023

Here is my summary after having played a full week with #5193 (Blog entries should be just another type of node).

Visible changes in publisher: Hierarchical pages now have previous/next links. Blog entries now have the same layout as hierarchical pages.

After my playing I think that we actually do not want previous/next links on blog entries. In the admin view yes, there we want to navigate also in display mode “detail”, but not on a publisher link. Such links are meant to be shared in social media where people get quickly distracted by every useless detail.

The lino.modlib.publisher plugin is now used as menu group for the three other CMS-specific plugins (blogs, pages and albums).

The new setting publisher.locations replaces the PublisherViews choicelist.

A bug caused the “Start now” button on a background task to not work. We can now run these tasks manually.

TODO: Think about #5204 (About Site.user_linod, checkdata, checksummaries & Co)

I reviewed the __init__() method of lino.modlib.linod.Procedure. Now it takes just the func object. That’s much easier to remember for application developers. This optimization revealed an issue in lino.core.choicelists: the deconstruct() method of a ChoiceListField must remove the choices keyword because the list of choices of a ChoiceListField does not influence whether we need a migration or not. As a side effect, Choice no longer needs to be @deconstructible. (See Friday, November 3, 2023 for details)

Removed duplicate definition of requests.BaseRequest.obj2url().

lino.modlib.users.User is now lino.modlib.publisher.Publishable

lino_xl/lib/pages/fixtures/demo2.py shows how to run a background task from a script.

I changed Plugin._active to Plugin.hidden and renamed Plugin.deactivate() to Plugin.hide(). You can now hide a plugin in the get_plugin_configs. I removed the obsolete Plugin.disables_plugins attribute.

The lino_xl.lib.topics plugin is now more easy to integrate because the InterestsByController slave panel becomes invisible when the plugin gets hidden.

The add_interest action is no longer needed since InterestsByController has an insert button in the slave summary.

The files utils.py and views.py in lino_xl.lib.pages were no longer used. I removed them.

When the plugin specified as the menu group of another plugin has itself a menu_group, then get_menu_group() now returns the menu_group of the menu group.