refactor(online): move the visitor lists to Twig
The four pages share one template each way, so the visitor row and the tabs
become components of the module.
Where a visitor is is a link assembled from the places configuration, so both
formatters behind it return Twig\Markup and the templates print it as it is. The
forum one returns null instead of an empty string: markup is an object, and an
object is truthy however empty it is — a caller could no longer tell "no place"
from "nothing to show".
The IP and browser of a visitor were guarded by rights >= 3 with a second, always
true check for any rights inside; only the outer one survives.
become components of the module.
Where a visitor is is a link assembled from the places configuration, so both
formatters behind it return Twig\Markup and the templates print it as it is. The
forum one returns null instead of an empty string: markup is an object, and an
object is truthy however empty it is — a caller could no longer tell "no place"
from "nothing to show".
The IP and browser of a visitor were guarded by rights >= 3 with a second, always
true check for any rights inside; only the outer one survives.