{{ include('displayprofile-form-edit-common-fields.twig') }}
{% set title = "Collect interval"|trans %}
{% set helpText = "How often should the Player check for new content."|trans %}
{% set options = [
{ id: 60, value: "1 minute"|trans },
{ id: 300, value: "5 minutes"|trans },
{ id: 600, value: "10 minutes"|trans },
{ id: 1800, value: "30 minutes"|trans },
{ id: 3600, value: "1 hour"|trans },
{ id: 5400, value: "1 hour 30 minutes"|trans },
{ id: 7200, value: "2 hours"|trans },
{ id: 9000, value: "2 hours 30 minutes"|trans },
{ id: 10800, value: "3 hours"|trans },
{ id: 12600, value: "3 hours 30 minutes"|trans },
{ id: 14400, value: "4 hours"|trans },
{ id: 18000, value: "5 hours"|trans },
{ id: 21600, value: "6 hours"|trans },
{ id: 25200, value: "7 hours"|trans },
{ id: 28800, value: "8 hours"|trans },
{ id: 32400, value: "9 hours"|trans },
{ id: 36000, value: "10 hours"|trans },
{ id: 39600, value: "11 hours"|trans },
{ id: 43200, value: "12 hours"|trans },
{ id: 86400, value: "24 hours"|trans }
] %}
{{ forms.dropdown("collectInterval", "single", title, displayProfile.getSetting("collectInterval"), options, "id", "value", helpText) }}
{% set title = "XMR Public Address"|trans %}
{% set helpText = "Please enter the public address for XMR."|trans %}
{{ forms.input("xmrNetworkAddress", title, displayProfile.getSetting("xmrNetworkAddress"), helpText) }}
{% set title = "Enable stats reporting?"|trans %}
{% set helpText = "Should the application send proof of play stats to the CMS."|trans %}
{{ forms.checkbox("statsEnabled", title, displayProfile.getSetting("statsEnabled"), helpText) }}
{% set title = "Aggregation level"|trans %}
{% set helpText = "Set the level of collection for Proof of Play Statistics to be applied to selected Layouts / Media and Widget items."|trans %}
{% set options = [
{ id: 'Individual', value: "Individual"|trans },
{ id: 'Hourly', value: "Hourly"|trans },
{ id: 'Daily', value: "Daily"|trans },
] %}
{{ forms.dropdown("aggregationLevel", "single", title, displayProfile.getSetting("aggregationLevel"), options, "id", "value", helpText, "aggregation-level") }}
{% set title = "Record geolocation on each Proof of Play?"|trans %}
{% set helpText = "If the geolocation of the Display is known, enable to record that location against each proof of play record."|trans %}
{{ forms.checkbox("isRecordGeoLocationOnProofOfPlay", title, displayProfile.getSetting("isRecordGeoLocationOnProofOfPlay"), helpText) }}
{% set title = "Enable PowerPoint?"|trans %}
{% set helpText = "Should Microsoft PowerPoint be Enabled? The Player will need PowerPoint installed to Display PowerPoint files."|trans %}
{{ forms.checkbox("powerpointEnabled", title, displayProfile.getSetting("powerpointEnabled"), helpText) }}
{% set title = "Download Window Start Time"|trans %}
{% set helpText = "The start of the time window to connect to the CMS and download updates."|trans %}
{{ forms.time("downloadStartWindow", title, displayProfile.getSetting("downloadStartWindow"), helpText, "", "", "","HH:mm") }}
{% set title = "Download Window End Time"|trans %}
{% set helpText = "The end of the time window to connect to the CMS and download updates."|trans %}
{{ forms.time("downloadEndWindow", title, displayProfile.getSetting("downloadEndWindow"), helpText, "", "", "","HH:mm") }}
{% set title = "Force HTTPS?"|trans %}
{% set helpText = "Should Displays be forced to use HTTPS connection to the CMS?"|trans %}
{{ forms.checkbox("forceHttps", title, displayProfile.getSetting("forceHttps"), helpText) }}
{% set title = "Operating Hours"|trans %}
{% set helpText = "Select a day part that should act as operating hours for this display - email alerts will not be sent outside of operating hours"|trans %}
{% set attributes = [
{ name: "data-width", value: "300px" },
{ name: "data-allow-clear", value: "true" },
{ name: "data-placeholder--id", value: null },
{ name: "data-placeholder--value", value: "" },
{ name: "data-search-url", value: url_for("daypart.search") },
{ name: "data-search-term", value: "name" },
{ name: "data-id-property", value: "dayPartId" },
{ name: "data-text-property", value: "name" },
{ name: "data-filter-options", value: '{"isAlways":"0", "isCustom":"0"}' }
] %}
{{ forms.dropdown("dayPartId", "single", title, displayProfile.getSetting("dayPartId"), [{dayPartId:null, name:""}]|merge(dayParts), "dayPartId", "name", helpText, "pagedSelect", "", "", "", attributes) }}
{% set title = "Authentication Whitelist"|trans %}
{% set helpText = "A comma separated list of domains which should be allowed to perform NTML/Negotiate authentication."|trans %}
{{ forms.input("authServerWhitelist", title, displayProfile.getSetting("authServerWhitelist"), helpText) }}
{% set title = "Edge Browser Whitelist"|trans %}
{% set helpText = "A comma separated list of website urls which should be rendered by the Edge Browser instead of Chromium."|trans %}
{{ forms.input("edgeBrowserWhitelist", title, displayProfile.getSetting("edgeBrowserWhitelist"), helpText) }}
{% set title = "Width"|trans %}
{% set helpText = "The Width of the Display Window. 0 means full width."|trans %}
{{ forms.number("sizeX", title, displayProfile.getSetting("sizeX"), helpText) }}
{% set title = "Height"|trans %}
{% set helpText = "The Height of the Display Window. 0 means full height."|trans %}
{{ forms.number("sizeY", title, displayProfile.getSetting("sizeY"), helpText) }}
{% set title = "Left Coordinate"|trans %}
{% set helpText = "The left pixel position the display window should be sized from."|trans %}
{{ forms.number("offsetX", title, displayProfile.getSetting("offsetX"), helpText) }}
{% set title = "Top Coordinate"|trans %}
{% set helpText = "The top pixel position the display window should be sized from."|trans %}
{{ forms.number("offsetY", title, displayProfile.getSetting("offsetY"), helpText) }}
{% set title = "CTRL Key required to access Player Information Screen?"|trans %}
{% set helpText = "Should the Player information screen require the CTRL key?"|trans %}
{{ forms.checkbox("clientInfomationCtrlKey", title, displayProfile.getSetting("clientInfomationCtrlKey"), helpText) }}
{% set title = "Key for Player Information Screen"|trans %}
{% set helpText = "Which key should activate the Player information screen? A single character."|trans %}
{{ forms.input("clientInformationKeyCode", title, displayProfile.getSetting("clientInformationKeyCode"), helpText) }}
{% set title = "Log Level"|trans %}
{% set helpText = "The logging level that should be recorded by the Player."|trans %}
{% set options = [
{ id: 'audit', value: "Audit"|trans },
{ id: 'info', value: "Information"|trans },
{ id: 'error', value: "Error"|trans },
{ id: 'off', value: "Off"|trans }
] %}
{{ forms.dropdown("logLevel", "single", title, displayProfile.getSetting("logLevel"), options, "id", "value", helpText) }}
{% set title = "Log file path name."|trans %}
{% set helpText = "Create a log file on disk in this location. Please enter a fully qualified path."|trans %}
{{ forms.input("logToDiskLocation", title, displayProfile.getSetting("logToDiskLocation"), helpText) }}
{% set title = "Show the icon in the task bar?"|trans %}
{% set helpText = "Should the application icon be shown in the task bar?"|trans %}
{{ forms.checkbox("showInTaskbar", title, displayProfile.getSetting("showInTaskbar"), helpText) }}
{% set title = "Cursor Start Position"|trans %}
{% set helpText = "The position of the cursor when the Player starts up."|trans %}
{% set options = [
{ id: "Unchanged", value: "Unchanged"|trans },
{ id: "Top Left", value: "Top Left"|trans },
{ id: "Top Right", value: "Top Right"|trans },
{ id: "Bottom Left", value: "Bottom Left"|trans },
{ id: "Bottom Right", value: "Bottom Right"|trans }
] %}
{{ forms.dropdown("cursorStartPosition", "single", title, displayProfile.getSetting("cursorStartPosition"), options, "id", "value", helpText) }}
{% set title = "Enable Double Buffering"|trans %}
{% set helpText = "Double buffering helps smooth the playback but should be disabled if graphics errors occur"|trans %}
{{ forms.checkbox("doubleBuffering", title, displayProfile.getSetting("doubleBuffering"), helpText) }}
{% set title = "Duration for Empty Layouts"|trans %}
{% set helpText = "If an empty layout is detected how long (in seconds) should it remain on screen? Must be greater than 1."|trans %}
{{ forms.number("emptyLayoutDuration", title, displayProfile.getSetting("emptyLayoutDuration"), helpText) }}
{% set title = "Enable Mouse"|trans %}
{% set helpText = "Enable the mouse."|trans %}
{{ forms.checkbox("enableMouse", title, displayProfile.getSetting("enableMouse"), helpText) }}
{% set title = "Enable Shell Commands"|trans %}
{% set helpText = "Enable the Shell Command module."|trans %}
{{ forms.checkbox("enableShellCommands", title, displayProfile.getSetting("enableShellCommands"), helpText) }}
{% if theme.getSetting('DISPLAY_PROFILE_CURRENT_LAYOUT_STATUS_ENABLED', 0) == 1 %}
{% set title = "Notify current layout"|trans %}
{% set helpText = "When enabled the Player will send the current layout to the CMS each time it changes. Warning: This is bandwidth intensive and should be disabled unless on a LAN."|trans %}
{{ forms.checkbox("sendCurrentLayoutAsStatusUpdate", title, displayProfile.getSetting("sendCurrentLayoutAsStatusUpdate"), helpText) }}
{% endif %}
{% set title = "Expire Modified Layouts?"|trans %}
{% set helpText = "Expire Modified Layouts immediately on change. This means a layout can be cut during playback if it receives an update from the CMS"|trans %}
{{ forms.checkbox("expireModifiedLayouts", title, displayProfile.getSetting("expireModifiedLayouts"), helpText) }}
{% set title = "Maximum concurrent downloads"|trans %}
{% set helpText = "The maximum number of concurrent downloads the Player will attempt."|trans %}
{{ forms.number("maxConcurrentDownloads", title, displayProfile.getSetting("maxConcurrentDownloads"), helpText) }}
{% set title = "Shell Command Allow List"|trans %}
{% set helpText = "Which shell commands should the Player execute?"|trans %}
{{ forms.input("shellCommandAllowList", title, displayProfile.getSetting("shellCommandAllowList"), helpText) }}
{% if theme.getSetting('DISPLAY_PROFILE_SCREENSHOT_INTERVAL_ENABLED', 0) == 1 %}
{% set title = "Screen shot interval"|trans %}
{% set helpText = "The duration between status screen shots in minutes. 0 to disable. Warning: This is bandwidth intensive."|trans %}
{{ forms.number("screenShotRequestInterval", title, displayProfile.getSetting("screenShotRequestInterval"), helpText) }}
{% endif %}
{% set title = "Screen Shot Size"|trans %}
{% set helpText = "The size of the largest dimension. Empty or 0 means the screen size."|trans %}
{{ forms.input("screenShotSize", title, displayProfile.getSetting("screenShotSize"), helpText) }}
{% set title = "Limit the number of log files uploaded concurrently"|trans %}
{% set helpText = "The number of log files to upload concurrently. The lower the number the longer it will take, but the better for memory usage."|trans %}
{{ forms.number("maxLogFileUploads", title, displayProfile.getSetting("maxLogFileUploads"), helpText) }}
{% set title = "Embedded Web Server Port"|trans %}
{% set helpText = "The port number to use for the embedded web server on the Player. Only change this if there is a port conflict reported on the status screen."|trans %}
{{ forms.number("embeddedServerPort", title, displayProfile.getSetting("embeddedServerPort"), helpText) }}
{% set title = "Embedded Web Server allow WAN?"|trans %}
{% set helpText = "Should we allow access to the Player Embedded Web Server from WAN? You may need to adjust the device firewall to allow external traffic"|trans %}
{{ forms.checkbox("embeddedServerAllowWan", title, displayProfile.getSetting("embeddedServerAllowWan"), helpText) }}
{% set title = "Prevent Sleep?"|trans %}
{% set helpText = "Stop the player PC power management from Sleeping the PC"|trans %}
{{ forms.checkbox("preventSleep", title, displayProfile.getSetting("preventSleep"), helpText) }}
{% if commands|length > 0 %}
{% include "displayprofile-form-edit-command-fields.twig" %}
{% endif %}