diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 0000000..6a4703f --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,87 @@ +# OTS Signs Theme — Copilot Instructions + +Custom Xibo CMS theme for OTS Signs digital signage service. Built with Twig templates, vanilla CSS, and vanilla JS. No build pipeline — all assets are inlined at runtime. + +## Architecture + +- **Template engine**: Twig, inheriting from Xibo core's `base.twig` +- **Entry point**: `ots-signs/views/authed.twig` — wraps all authenticated pages (sidebar + topbar + content) +- **CSS delivery**: CSS files are **inlined** inside ` +{% endblock %} + +{% block pageContent %} + + +
+ +
+ +
+ +{% endblock %} + +{% block javaScript %} + {# Add common files #} + {% include "editorTranslations.twig" %} + {% include "editorVars.twig" %} + + + + + + + + + + + + {# ── Embed mode: postMessage bridge ──────────────────────── #} + +{% endblock %} diff --git a/ots-signs/views/welcome-page.twig b/ots-signs/views/welcome-page.twig new file mode 100644 index 0000000..c06f24b --- /dev/null +++ b/ots-signs/views/welcome-page.twig @@ -0,0 +1,648 @@ +{# +/** + * Copyright (C) 2026 OTS Signs + * + * Welcome / onboarding page for OTS Signs. + * + * Overrides Xibo's default welcome-page.twig. All cards are rendered + * server-side in Twig — no dependency on the Xibo compiled JS bundle. + * Inline JS populates live stat counts via the existing fetchCount pattern. + */ +#} +{% extends "authed.twig" %} + +{% block title %}{{ "Welcome"|trans }} | {% endblock %} + +{% block pageContent %} + + +
+ + {# ── Hero ─────────────────────────────────────────────────────────── #} + {% set productName = theme.getThemeConfig('theme_title') %} +
+
+

{% trans %}Welcome to {{ productName }}{% endtrans %}

+

{% trans %}Your digital signage control centre. Connect your displays, upload content, design layouts, and schedule what plays — all from one place.{% endtrans %}

+ +
+ +
+ + {# ── Get Started steps ────────────────────────────────────────────── #} +
+

{% trans "Get Started" %}

+ + {% if currentUser.featureEnabled("displays.view") %} +
+
+
1
+
+ +
+
+
+
{% trans "Connect a Display" %}
+

{% trans %}Install the player app on a screen, then authorise it here. Once connected, your display is ready to receive scheduled content.{% endtrans %}

+ +
+
+ + {% trans "Displays" %} +
+
+ {% endif %} + + {% if currentUser.featureEnabled("library.view") %} +
+
+
2
+
+ +
+
+
+
{% trans "Upload Content" %}
+

{% trans %}Add images, videos, and other media files to your library. Supported formats include JPEG, PNG, MP4 and more.{% endtrans %}

+ +
+
+ + {% trans "Media Files" %} +
+
+ {% endif %} + + {% if currentUser.featureEnabled("layout.view") %} +
+
+
3
+
+ +
+
+
+
{% trans "Design a Layout" %}
+

{% trans %}Create multi-zone screen layouts using the visual editor. Combine images, videos, text, and data widgets into a polished design.{% endtrans %}

+ +
+
+ + {% trans "Layouts" %} +
+
+ {% endif %} + + {% if currentUser.featureEnabled("schedule.view") %} +
+
+
4
+
+ +
+
+
+
{% trans "Schedule Content" %}
+

{% trans %}Assign layouts and campaigns to displays on a timed schedule. Set start and end times, repeat rules, and priorities.{% endtrans %}

+ +
+
+ + {% trans "Schedules" %} +
+
+ {% endif %} + +
{# /ots-welcome-steps #} + + {# ── Resources ────────────────────────────────────────────────────── #} +

{% trans "Resources" %}

+
+ + + +
+
{% trans "User Manual" %}
+

{% trans "Step-by-step guides for every feature in OTS Signs." %}

+
+
+ + + +
+
{% trans "Support" %}
+

{% trans "Get help from the OTS Signs support team." %}

+
+
+ + {% if currentUser.isSuperAdmin() %} + + +
+
{% trans "CMS Settings" %}
+

{% trans "Configure your CMS installation and storage options." %}

+
+
+ {% endif %} + +
{# /ots-welcome-resources #} + +
{# /ots-welcome-page #} +{% endblock %} + +{% block javaScript %} + +{% endblock %}