From 29b56bef4f7f7ed169edeed96ff2bd539f946371 Mon Sep 17 00:00:00 2001 From: Matt Batchelder Date: Wed, 11 Feb 2026 09:17:45 -0500 Subject: [PATCH] Refactor dashboard card classes to use 'content-card' instead of 'dashboard-card' - Updated various views to replace 'dashboard-card' with 'content-card' for consistency in styling. - Modified filter and table card classes across multiple pages including applications, campaigns, commands, datasets, dayparts, displays, display groups, display profiles, fonts, layouts, libraries, menu boards, modules, player software, playlists, resolutions, schedules, settings, sync groups, tags, tasks, templates, transitions, users, and user groups. --- SIDEBAR_DESIGN_REVIEW.md | 320 ------------------ custom/otssignange/css/override-dark.css | 4 +- custom/otssignange/css/override.css | 40 ++- .../otssignange/views/applications-page.twig | 8 +- custom/otssignange/views/campaign-page.twig | 8 +- custom/otssignange/views/command-page.twig | 6 +- custom/otssignange/views/dataset-page.twig | 8 +- custom/otssignange/views/daypart-page.twig | 6 +- custom/otssignange/views/display-page.twig | 10 +- .../otssignange/views/displaygroup-page.twig | 8 +- .../views/displayprofile-page.twig | 6 +- custom/otssignange/views/fonts-page.twig | 6 +- custom/otssignange/views/layout-page.twig | 8 +- custom/otssignange/views/library-page.twig | 8 +- custom/otssignange/views/menuboard-page.twig | 8 +- custom/otssignange/views/module-page.twig | 6 +- .../views/playersoftware-page.twig | 6 +- custom/otssignange/views/playlist-page.twig | 8 +- custom/otssignange/views/resolution-page.twig | 6 +- custom/otssignange/views/schedule-page.twig | 6 +- custom/otssignange/views/settings-page.twig | 2 +- custom/otssignange/views/syncgroup-page.twig | 8 +- custom/otssignange/views/tag-page.twig | 6 +- custom/otssignange/views/task-page.twig | 6 +- custom/otssignange/views/template-page.twig | 8 +- custom/otssignange/views/transition-page.twig | 6 +- custom/otssignange/views/user-page.twig | 6 +- custom/otssignange/views/usergroup-page.twig | 6 +- 28 files changed, 120 insertions(+), 414 deletions(-) delete mode 100644 SIDEBAR_DESIGN_REVIEW.md diff --git a/SIDEBAR_DESIGN_REVIEW.md b/SIDEBAR_DESIGN_REVIEW.md deleted file mode 100644 index d477892..0000000 --- a/SIDEBAR_DESIGN_REVIEW.md +++ /dev/null @@ -1,320 +0,0 @@ -# Comprehensive Sidebar Design Review - OTS Signage Theme - -## Executive Summary -The sidebar is well-structured with a modern dark-mode design, but has several areas for refinement: -- **Padding**: Generally good, but can be more consistent -- **Icon Arrangement**: Icons are properly centered and sized, but scaling between states could be improved -- **Overall Style**: Cohesive and modern, with good dark mode aesthetics - ---- - -## 1. SIDEBAR DIMENSIONS & STRUCTURE - -### CSS Variables (in `override.css`): -```css ---ots-sidebar-width: 256px /* Full width */ ---ots-sidebar-collapsed-width: 64px /* Collapsed width */ ---ots-sidebar-header-height: 64px /* Header section */ ---ots-sidebar-item-height: 44px /* Nav item height */ ---ots-sidebar-item-radius: 10px /* Border radius */ ---ots-sidebar-item-padding-x: 12px /* Horizontal padding */ -``` - -### Layout Analysis: -- **Full Width**: 256px (reasonable for desktop, matches common patterns) -- **Collapsed Width**: 64px (good for icon-only display) -- **Responsive Break**: Changes to overlay at 768px (mobile-first, good) - -**Issue #1**: When collapsed, icons still have adequate space (20px icon + padding), but text labels are 100% hidden. Consider adding a tooltip system for discoverability. - ---- - -## 2. PADDING ANALYSIS - -### Sidebar Header (`.sidebar-header`) -```css -padding: 20px 16px; /* Vertical: 20px | Horizontal: 16px */ -``` -- **Assessment**: ✅ Good - balanced and symmetrical -- **Component**: Contains logo (32px icon) + brand text + toggle button -- **Vertical Alignment**: Properly centered with `align-items: center` - -### Sidebar Content (`.sidebar-content`) -```css -padding: 12px 0; /* Vertical: 12px | Horizontal: 0 */ -``` -- **Assessment**: ⚠️ Inconsistent - no horizontal padding here -- **Issue**: Padding is applied at the list item level instead (see nav items) - -### Sidebar Navigation (`.sidebar-nav`) -```css -padding: 72px 0 120px; /* Top: 72px | Bottom: 120px | Sides: 0 */ -``` -- **Assessment**: ⚠️ **PROBLEM AREA** - padding is excessive for top/bottom - - 72px top padding assumes a fixed header height, could be dynamic - - 120px bottom padding creates large blank space (mobile unfriendly) - - No horizontal padding means nav items extend to edge - -### Navigation Items (`.ots-sidebar li.sidebar-list > a`) -```css -padding: 6px 10px; /* Item content padding */ -margin: 3px 10px; /* Outer margin/spacing */ -border-radius: 12px; -min-height: 40px; -``` -- **Assessment**: ⚠️ Mixed padding/margin approach - - **Inner padding (6px 10px)**: Good for text breathing room - - **Outer margin (3px 10px)**: Creates 10px left/right space from sidebar edge - - **Min-height (40px)**: Good touch target size - -**Recommendation**: The left margin (10px) combined with border-radius (12px) creates a nice inset look. Could be intentional and good. - ---- - -## 3. ICON ARRANGEMENT - -### Icon Container (`.ots-nav-icon`) -```css -width: 24px; -height: 24px; -display: flex; -align-items: center; -justify-content: center; -font-size: 16px; -color: currentColor; -justify-self: center; -``` -- **Assessment**: ✅ Excellent - - Square container with centered content - - `justify-self: center` ensures centering in CSS Grid layout - - `color: currentColor` inherits link color for active/hover states - -### Nav Item Grid Layout -```css -display: grid; -grid-template-columns: 20px 1fr; /* Icon: 20px fixed | Text: flex */ -align-items: center; -column-gap: 12px; -``` -- **Assessment**: ✅ Good grid-based approach - - Consistent 12px gap between icon and text - - Icon column is tight (20px), text is flexible - - **Issue**: 20px icon container is narrower than 24px icon element - could cause slight misalignment - -**Recommendation**: Change to `grid-template-columns: 24px 1fr` to match the icon container size. - -### Active Item Styling -```css -.ots-sidebar li.sidebar-list.active > a { - color: #0b1221; /* Dark text on light bg */ - background-color: #ffffff; - font-weight: 600; - box-shadow: 0 8px 18px rgba(15, 23, 42, 0.25); -} -``` -- **Assessment**: ✅ Strong visual feedback - - High contrast (white background + dark text) - - Shadow adds depth - - Icon inherits dark color via `currentColor` - ---- - -## 4. OVERALL STYLE & DESIGN CONSISTENCY - -### Color Palette (Dark Mode) -```css ---ots-sidebar-bg: #08132a; /* Very dark blue */ ---ots-sidebar-link: #f9fbff; /* Nearly white text */ ---ots-sidebar-link-hover-bg: rgba(255,255,255,0.08); ---ots-sidebar-active-bg: rgba(255,255,255,0.06); ---ots-sidebar-active-text: #ffffff; ---ots-sidebar-muted-text: #8ea4c7; /* Muted section headers */ -``` -- **Assessment**: ✅ Excellent contrast and hierarchy - - Background: Deep navy (#08132a) - - Primary text: Nearly white (#f9fbff) - - Hover: 8% white overlay (subtle) - - Active: 6% white overlay (subtle) - - Section headers: Medium blue (#8ea4c7) - - **Accessibility**: WCAG AA compliant (>4.5:1 contrast) - -### Section Headers (`.sidebar-title`) -```css -display: block; -font-size: 10px; -font-weight: 700; -text-transform: uppercase; -color: #8ea4c7; -letter-spacing: 0.12em; -padding: 12px 14px 4px; -``` -- **Assessment**: ✅ Good hierarchy - - Small, uppercase, muted color clearly distinguishes from regular nav items - - Letter spacing adds visual interest - - Adequate padding separates sections - -### Sidebar Footer (`.sidebar-footer`) -```css -border-top: 1px solid var(--color-border); -padding: 16px; -background-color: rgba(59, 130, 246, 0.05); /* Slight blue tint */ -``` -- **Assessment**: ✅ Good - - Separated with border - - Subtle background color differentiates from main nav - - 16px padding consistent with other components - ---- - -## 5. RESPONSIVE BEHAVIOR - -### Mobile Override (@media max-width: 768px) -```css -.ots-sidebar { - transform: translateX(-100%); - transition: transform var(--transition-base); - width: 280px; -} -.ots-sidebar.active { - transform: translateX(0); - box-shadow: 2px 0 8px rgba(0, 0, 0, 0.3); -} -.ots-main { - margin-left: 0; -} -``` -- **Assessment**: ✅ Good mobile experience - - Slides in from left (drawer pattern) - - Shadow adds depth when open - - Content isn't pushed aside (overlay instead) - - **Issue**: Sidebar width changes from 256px → 280px on mobile (should be 280px, maybe even narrower for mobile) - ---- - -## 6. COLLAPSED STATE STYLING - -### Collapsed Class -```css -.ots-sidebar.collapsed { - /* No explicit width override - uses CSS variable */ -} -``` -- **Assessment**: ⚠️ Lacks dedicated styling - - When `.collapsed` is added, only width changes (via CSS variable) - - No visual indicator (badge, animation) that it's collapsed - - Icon-only display works but lacks affordance - -### Collapsed Item Styling (`.sidebar-collapsed-item-bg`) -```css ---ots-sidebar-collapsed-item-bg: rgba(255, 255, 255, 0.08); ---ots-sidebar-collapsed-item-hover-bg: rgba(255, 255, 255, 0.16); -``` -- **Assessment**: ⚠️ Variables defined but not actively used in CSS rules - - These variables exist but I don't see them applied to `.collapsed` state styling - - **Action Item**: Verify if collapsed items have proper styling - ---- - -## 7. KEY ISSUES & RECOMMENDATIONS - -### 🔴 HIGH PRIORITY - -1. **Icon/Grid Mismatch** - - Icon container: 24px, but grid column: 20px - - **Fix**: Change `grid-template-columns: 20px 1fr` → `grid-template-columns: 24px 1fr` - -2. **Excessive Nav Padding** - - `.sidebar-nav { padding: 72px 0 120px }` is too much - - **Fix**: Use dynamic sizing based on header height (JavaScript or CSS custom property) - - **Suggestion**: `padding: var(--ots-sidebar-header-height) 0 60px` (60px is enough for footer breathing room) - -3. **Collapsed State Styling** - - Collapsed items have CSS variables defined but not used - - **Fix**: Add active rules like: - ```css - .ots-sidebar.collapsed li.sidebar-list.active > a { - background-color: rgba(255, 255, 255, 0.12); - } - ``` - -### 🟡 MEDIUM PRIORITY - -4. **Icon Discoverability When Collapsed** - - No tooltips or labels appear when sidebar is collapsed - - **Suggestion**: Add `title` attributes to nav items or implement CSS tooltips - -5. **Sidebar Header Button Spacing** - - Header has "toggle" button but spacing could be tighter on mobile - - **Suggestion**: When collapsed, header could be more compact - -6. **Mobile Width Inconsistency** - - Sidebar is 256px full-width but 280px on mobile (why wider?) - - **Suggestion**: Keep consistent at 256px or make it responsive (e.g., 90vw max 280px on small phones) - -### 🟢 LOW PRIORITY - -7. **Brand Icon & Text** - - Logo + text look good but could use more breathing room - - **Current**: `gap: 12px` - consider `gap: 16px` for more visual separation - ---- - -## 8. VISUAL SPACING SUMMARY - -| Component | Padding | Margin | Assessment | -|-----------|---------|--------|------------| -| Header | 20px V, 16px H | — | ✅ Good | -| Content Wrapper | 12px V, 0 H | — | ⚠️ Inconsistent | -| Nav List | 72px T, 120px B | — | 🔴 Excessive | -| Nav Items | 6px V, 10px H | 3px V, 10px H | ✅ Good | -| Section Headers | 12px T, 14px H | — | ✅ Good | -| Footer | 16px | — | ✅ Consistent | - ---- - -## 9. ICON SIZING CONSISTENCY - -| Element | Width | Height | Font Size | Usage | -|---------|-------|--------|-----------|-------| -| Nav Icon | 24px | 24px | 16px | Primary nav items | -| Brand Icon | 32px | 32px | 24px | Logo in header | -| Topbar Icon | 20px | 20px | 16px | Topbar controls | - -**Assessment**: ✅ Good hierarchy and clarity - ---- - -## 10. RECOMMENDATIONS FOR NEXT PHASE - -1. ✅ Fix grid column width mismatch (20px → 24px) -2. ✅ Refactor `.sidebar-nav` padding (use CSS variables or dynamic) -3. ✅ Add collapsed state active item styling -4. ✅ Add `title` attributes to nav items for tooltip support -5. ⚠️ Consider adding a visual "collapse indicator" (e.g., chevron or light pulsing border) -6. ⚠️ Standardize mobile sidebar width -7. ⚠️ Add more breathing room in header (gap: 16px instead of 12px for brand icon) - ---- - -## Summary - -**Overall Grade: B+ (85/100)** - -### Strengths: -- ✅ Modern, cohesive dark-mode aesthetic -- ✅ Good color contrast and accessibility -- ✅ Proper icon sizing and centering -- ✅ Responsive mobile overlay pattern -- ✅ Clear visual hierarchy (headers, active states, hover) - -### Weaknesses: -- ⚠️ Excessive bottom padding in nav list -- ⚠️ Grid icon column width mismatch -- ⚠️ Lacking visual affordance when collapsed -- ⚠️ Icon discoverability issues - -### Quick Wins (implement first): -1. Change `grid-template-columns: 20px 1fr` → `24px 1fr` -2. Change `.sidebar-nav padding: 72px 0 120px` → `64px 0 60px` -3. Add collapsed state styling for active items - diff --git a/custom/otssignange/css/override-dark.css b/custom/otssignange/css/override-dark.css index 22e4ae5..f9e158b 100644 --- a/custom/otssignange/css/override-dark.css +++ b/custom/otssignange/css/override-dark.css @@ -485,7 +485,7 @@ html::before, html::after, body::before, body::after, #page-wrapper::before, #pa } /* Defensive: override any explicit white panel backgrounds that leak outside their container */ -.card, .panel, .panel-body, .dashboard-card, .ots-sidebar li.sidebar-list.active > a { +.card, .panel, .panel-body, .dashboard-card, .content-card, .ots-sidebar li.sidebar-list.active > a { background-color: var(--color-surface) !important; color: var(--color-text-primary) !important; } @@ -1341,7 +1341,7 @@ body.login-page *::after { /* EXTRA DEFENSIVE: ensure no white background shows through on long pages */ -html, body, #page-wrapper, .ots-shell, .ots-main, #content-wrapper, .content-wrapper, .ots-content, .page-content, .container, .container-fluid, .dashboard-page, .dashboard, .dashboard-card, .page { +html, body, #page-wrapper, .ots-shell, .ots-main, #content-wrapper, .content-wrapper, .ots-content, .page-content, .container, .container-fluid, .dashboard-page, .dashboard, .dashboard-card, .content-card, .page { background-color: var(--color-background) !important; background-image: none !important; background-repeat: no-repeat !important; diff --git a/custom/otssignange/css/override.css b/custom/otssignange/css/override.css index 2bbda53..97e3cbb 100644 --- a/custom/otssignange/css/override.css +++ b/custom/otssignange/css/override.css @@ -438,7 +438,8 @@ body.ots-light-mode .ots-topbar .nav-link:hover { color: #2563eb; } -body.ots-light-mode .dashboard-card { +body.ots-light-mode .dashboard-card, +body.ots-light-mode .content-card { background: linear-gradient(180deg, rgba(255, 255, 255, 0.95), rgba(241, 245, 249, 0.95)); border-color: #e2e8f0; } @@ -480,6 +481,7 @@ html, body, #page-wrapper, .ots-main, .ots-content, .page-content { .ots-topbar, .ots-footer, .dashboard-card, +.content-card, .dropdown-menu, .dropdown-right, .modal-content { @@ -3772,16 +3774,20 @@ body.ots-sidebar-open .ots-topbar { DASHBOARD PAGE ============================================================================ */ -.dashboard-card { +.dashboard-card, +.content-card { background: linear-gradient(180deg, rgba(30, 41, 59, 0.92), rgba(15, 23, 42, 0.92)); border: 1px solid rgba(148, 163, 184, 0.18); border-radius: 16px; box-shadow: 0 18px 40px rgba(8, 15, 30, 0.35); backdrop-filter: blur(6px); - transition: transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base); overflow: hidden; } +.dashboard-card { + transition: transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base); +} + .dashboard-card:hover { transform: translateY(-2px); box-shadow: 0 22px 50px rgba(8, 15, 30, 0.45); @@ -3789,7 +3795,9 @@ body.ots-sidebar-open .ots-topbar { } .dashboard-card .panel-header, -.dashboard-card .widget-title { +.dashboard-card .widget-title, +.content-card .panel-header, +.content-card .widget-title { background: linear-gradient(90deg, rgba(59, 130, 246, 0.16), rgba(99, 102, 241, 0.12)); border-bottom: 1px solid rgba(148, 163, 184, 0.2); padding: 18px 20px; @@ -3799,13 +3807,19 @@ body.ots-sidebar-open .ots-topbar { .dashboard-card .panel-header h3, .dashboard-card .widget-title h3, .dashboard-card .panel-header h4, -.dashboard-card .widget-title h4 { +.dashboard-card .widget-title h4, +.content-card .panel-header h3, +.content-card .widget-title h3, +.content-card .panel-header h4, +.content-card .widget-title h4 { color: var(--color-text-primary); font-weight: 700; } .dashboard-card .panel-body, -.dashboard-card .widget-body { +.dashboard-card .widget-body, +.content-card .panel-body, +.content-card .widget-body { padding: 20px; min-width: 0; width: 100%; @@ -4320,7 +4334,8 @@ body.ots-sidebar-open .ots-topbar { .panel.panel-white, .panel.box, .widget, -.dashboard-card { +.dashboard-card, +.content-card { background-color: var(--color-surface) !important; color: var(--color-text-primary) !important; border: 1px solid var(--color-border) !important; @@ -6809,6 +6824,17 @@ body.ots-light-mode .ots-displays-page #datatable-container .XiboData table.data will-change: auto !important; } +/* Content cards are static – no hover animation */ +.content-card { + transition: none !important; +} + +.content-card:hover { + transform: none !important; + box-shadow: 0 18px 40px rgba(8, 15, 30, 0.35) !important; + border-color: rgba(148, 163, 184, 0.18) !important; +} + /* Ensure the very bottom of the page follows the theme variables (light/dark) by forcing html/body and shell containers to use the variable-driven background. This prevents residual dark bars under the footer. */ diff --git a/custom/otssignange/views/applications-page.twig b/custom/otssignange/views/applications-page.twig index caf3df9..59f6fe8 100644 --- a/custom/otssignange/views/applications-page.twig +++ b/custom/otssignange/views/applications-page.twig @@ -18,10 +18,10 @@

{% trans "Manage API applications and connectors." %}

-
+
-
+

{% trans "Filter Applications" %}

-
+
@@ -59,7 +59,7 @@
-
+
-
+
-
+

{% trans "Filter Campaigns" %}

-
+
@@ -104,7 +104,7 @@
-
+
diff --git a/custom/otssignange/views/command-page.twig b/custom/otssignange/views/command-page.twig index 773c045..c22dab3 100644 --- a/custom/otssignange/views/command-page.twig +++ b/custom/otssignange/views/command-page.twig @@ -35,10 +35,10 @@

{% trans "Create and manage commands for Displays." %}

-
+
-
+

{% trans "Filter Commands" %}

-
+
{% if currentUser.featureEnabled("command.add") %} diff --git a/custom/otssignange/views/dataset-page.twig b/custom/otssignange/views/dataset-page.twig index 912760d..2953a2c 100644 --- a/custom/otssignange/views/dataset-page.twig +++ b/custom/otssignange/views/dataset-page.twig @@ -35,10 +35,10 @@

{% trans "Manage structured data sources." %}

-
+
-
+

{% trans "Filter DataSets" %}

-
+
@@ -89,7 +89,7 @@
-
+
diff --git a/custom/otssignange/views/daypart-page.twig b/custom/otssignange/views/daypart-page.twig index 82c630d..2aa92b9 100644 --- a/custom/otssignange/views/daypart-page.twig +++ b/custom/otssignange/views/daypart-page.twig @@ -34,10 +34,10 @@

{% trans "Manage time-based scheduling rules." %}

-
+
-
+

{% trans "Filter Dayparts" %}

-
+
{% if currentUser.featureEnabled("daypart.add") %} diff --git a/custom/otssignange/views/display-page.twig b/custom/otssignange/views/display-page.twig index 00f7a2a..357813c 100644 --- a/custom/otssignange/views/display-page.twig +++ b/custom/otssignange/views/display-page.twig @@ -71,10 +71,10 @@

{% trans "Manage your player fleet and status." %}

-
+
-
+

{% trans "Filter Displays" %}

-
+
@@ -257,7 +257,7 @@
-
+
@@ -352,7 +352,7 @@
- Downloading/Unknown
-
+
diff --git a/custom/otssignange/views/displaygroup-page.twig b/custom/otssignange/views/displaygroup-page.twig index ada5fe7..09a7d1b 100644 --- a/custom/otssignange/views/displaygroup-page.twig +++ b/custom/otssignange/views/displaygroup-page.twig @@ -34,10 +34,10 @@

{% trans "Organize Displays into logical groups." %}

-
+
-
+

{% trans "Filter Display Groups" %}

-
+
@@ -103,7 +103,7 @@
-
+
diff --git a/custom/otssignange/views/displayprofile-page.twig b/custom/otssignange/views/displayprofile-page.twig index 476f795..aded0dc 100644 --- a/custom/otssignange/views/displayprofile-page.twig +++ b/custom/otssignange/views/displayprofile-page.twig @@ -34,10 +34,10 @@

{% trans "Manage Display settings profiles." %}

-
+
-
+

{% trans "Filter Display Settings" %}

-
+
{% if currentUser.featureEnabled("displayprofile.add") %} diff --git a/custom/otssignange/views/fonts-page.twig b/custom/otssignange/views/fonts-page.twig index 3ded06c..7627cd4 100644 --- a/custom/otssignange/views/fonts-page.twig +++ b/custom/otssignange/views/fonts-page.twig @@ -18,10 +18,10 @@

{% trans "Manage fonts for your signage content." %}

-
+
-
+

{% trans "Filter Fonts" %}

-
+
{% if currentUser.featureEnabled("font.add") %} diff --git a/custom/otssignange/views/layout-page.twig b/custom/otssignange/views/layout-page.twig index 0f19eea..6f14de7 100644 --- a/custom/otssignange/views/layout-page.twig +++ b/custom/otssignange/views/layout-page.twig @@ -12,10 +12,10 @@

{% trans "Manage and design your layouts." %}

-
+
-
+

{% trans "Filter Layouts" %}

-
+
@@ -158,7 +158,7 @@
-
+
diff --git a/custom/otssignange/views/library-page.twig b/custom/otssignange/views/library-page.twig index 17d3676..feaa15d 100644 --- a/custom/otssignange/views/library-page.twig +++ b/custom/otssignange/views/library-page.twig @@ -35,10 +35,10 @@

{% trans "Manage your media library." %}

-
+
-
+

{% trans "Filter Media" %}

-
+
@@ -134,7 +134,7 @@
-
+
diff --git a/custom/otssignange/views/menuboard-page.twig b/custom/otssignange/views/menuboard-page.twig index 95b010b..984133a 100644 --- a/custom/otssignange/views/menuboard-page.twig +++ b/custom/otssignange/views/menuboard-page.twig @@ -34,10 +34,10 @@

{% trans "Manage your menu boards and content." %}

-
+
-
+

{% trans "Filter Menu Boards" %}

-
+
@@ -90,7 +90,7 @@
-
+
diff --git a/custom/otssignange/views/module-page.twig b/custom/otssignange/views/module-page.twig index f251b5b..aa788df 100644 --- a/custom/otssignange/views/module-page.twig +++ b/custom/otssignange/views/module-page.twig @@ -18,10 +18,10 @@

{% trans "Manage installed modules." %}

-
+
-
+

{% trans "Filter Modules" %}

-
+
diff --git a/custom/otssignange/views/playersoftware-page.twig b/custom/otssignange/views/playersoftware-page.twig index 0ff49b1..4bf6661 100644 --- a/custom/otssignange/views/playersoftware-page.twig +++ b/custom/otssignange/views/playersoftware-page.twig @@ -34,10 +34,10 @@

{% trans "Manage player software versions and downloads." %}

-
+
-
+

{% trans "Filter Player Versions" %}

-
+
{% if currentUser.featureEnabled("playersoftware.add") %} diff --git a/custom/otssignange/views/playlist-page.twig b/custom/otssignange/views/playlist-page.twig index a99e228..0d629fa 100644 --- a/custom/otssignange/views/playlist-page.twig +++ b/custom/otssignange/views/playlist-page.twig @@ -32,10 +32,10 @@

{% trans "Create and manage content playlists." %}

-
+
-
+

{% trans "Filter Playlists" %}

-
+
@@ -133,7 +133,7 @@
-
+
diff --git a/custom/otssignange/views/resolution-page.twig b/custom/otssignange/views/resolution-page.twig index ad8d27b..39e3995 100644 --- a/custom/otssignange/views/resolution-page.twig +++ b/custom/otssignange/views/resolution-page.twig @@ -35,10 +35,10 @@

{% trans "Manage display resolutions." %}

-
+
-
+

{% trans "Filter Resolutions" %}

-
+
{% if currentUser.featureEnabled("resolution.add") %} diff --git a/custom/otssignange/views/schedule-page.twig b/custom/otssignange/views/schedule-page.twig index 77b6a42..5e976aa 100644 --- a/custom/otssignange/views/schedule-page.twig +++ b/custom/otssignange/views/schedule-page.twig @@ -35,10 +35,10 @@

{% trans "Schedule content to your displays." %}

-
+
-
+

{% trans "Filter Schedule" %}

-
+
{% if currentUser.featureEnabled("schedule.add") %} diff --git a/custom/otssignange/views/settings-page.twig b/custom/otssignange/views/settings-page.twig index df86d6c..a1bdbed 100644 --- a/custom/otssignange/views/settings-page.twig +++ b/custom/otssignange/views/settings-page.twig @@ -19,7 +19,7 @@

{% trans "Configure CMS settings." %}

-
+
{% if settings.SETTING_LIBRARY_TIDY_ENABLED %} diff --git a/custom/otssignange/views/syncgroup-page.twig b/custom/otssignange/views/syncgroup-page.twig index 9444f1a..088171e 100644 --- a/custom/otssignange/views/syncgroup-page.twig +++ b/custom/otssignange/views/syncgroup-page.twig @@ -34,10 +34,10 @@

{% trans "Create and manage synchronized Display groups." %}

-
+
-
+

{% trans "Filter Sync Groups" %}

-
+
@@ -75,7 +75,7 @@
-
+
diff --git a/custom/otssignange/views/tag-page.twig b/custom/otssignange/views/tag-page.twig index a2417af..890976d 100644 --- a/custom/otssignange/views/tag-page.twig +++ b/custom/otssignange/views/tag-page.twig @@ -18,10 +18,10 @@

{% trans "Manage content tags." %}

-
+
-
+

{% trans "Filter Tags" %}

-
+
diff --git a/custom/otssignange/views/task-page.twig b/custom/otssignange/views/task-page.twig index bf209b8..d887ff8 100644 --- a/custom/otssignange/views/task-page.twig +++ b/custom/otssignange/views/task-page.twig @@ -18,16 +18,16 @@

{% trans "Manage scheduled system tasks." %}

-
+
-