Skip to content
Snippets Groups Projects
user avatar
Andreas Gohr authored
This will open up the discussion from #236 again and I'm not sure how to
solve this best.

The TEMPLATE_PAGETOOLS_DISPLAY event is very specific to the dokuwiki
template in theory. In practice many other templates implemented not
only the same event but also use the same HTML (and often even the same
CSS). Which makes the event more like a core event.

This branch now changes the HTML the event expects back from handlers.
When merged it would immeadiately break all plugins implementing this
event (and by broken I mean the layout/design of the template breaks).

Since the expected data changes, I would argue this should be a new
event or at least be implemented in a way to not break the design by
installing an old plugin and by giving the plugin a chance to know if
it's running on the old or the new code.

This is what this commit does. By changing the view names, old plugins
should not display (because they hopefull do not handle those views) but
gives them an easy way to handle the old and new views in one plugin.

However, I'm not perfectly happy with it, yet.

The way I implemented the new SVG handling is by means of a new class
dokuwiki\template\dokuwiki\tpl which provides a pageToolAction() method.
Plugins could use this method to easily return the proper HTML for the
pagetool items and we could adjust this method later on to make
adjustments to the pagetools without breaking anything again.

However this method is template specific again. While it would possible
for plugins to use this method even when the wiki runs another plugin
emitting the event, it would be a bit weird.

A better way would be for the event to not expect HTML at all, but
instead a data structure of the data currently passed to
pageToolAction(). Templates could then decide to implement the event,
but still render the data in a completely different way...

OTOH this means plugins are no longer free to add whatever they want
into the pagetools. We once argued plugins might want to add submenus or
other fancy stuff there. But in fact no plugin ever did.

If we decide to go this new way of making the event more of a first
class citizen of template development, then we would probably have to
move parts or all of the tpl class back to the core.
db433680
History
Name Last commit Last update