Files
zoneminder/web
Isaac Connor bd3a5ad4ec refactor: share filter-panel inline decision in a skin helper
The rule for whether the monitor filter panel is shown inline (with its
own toggle icon) or embedded in the left sidebar was duplicated across
console, montage, montagereview and watch, plus the body-class logic in
getBodyTopHTML. Each copy only checked ZM_WEB_FILTER_SETTINGS_POSITION and
ignored the navbar, so the toggle was missing whenever the panel was shown
inline.

The sidebar can only embed into a left navbar, so without one the filters
must be inline and keep their toggle. The effective navbar position is not
the ZM_WEB_NAVBAR_TYPE default but the per-user value that index.php
resolves from the request/cookie/session into the global $navbar_type;
skin.js uses that same value to decide whether to relocate the panel.

Add filterSettingsInline() to the skin functions and use it in all five
places. It returns true when $navbar_type is not 'left', or when the
position is explicitly inline, matching skin.js.

Verified live by flipping the zmNavbar_type cookie: with 'normal' the
views render inline and show the working toggle (console, montage,
montagereview); with 'left' and a sidebar position they render in sidebar
mode with no inline toggle.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-18 22:36:52 -04:00
..

Modern ZoneMinder Skin

This web frontend to ZoneMinder is a complete rewrite of the classic frontend, based on CakePHP.