Initial Upload

This commit is contained in:
Matt Batchelder
2025-12-02 10:32:59 -05:00
commit 05ce0da296
2240 changed files with 467811 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
<button class="btn btn-success XiboFormButton d-none action-button-add" type="button" data-title="{{trans.button.description}}" href="{{addUrl}}">
<i class="fa fa-plus-circle" aria-hidden="true"></i>&nbsp;{{trans.button.name}}
</button>

View File

@@ -0,0 +1,93 @@
<form class="action-edit-form">
{{> forms/inputs/hidden value=actionType id="actionType"}}
{{> forms/inputs/dropdown value=actionTypeHelper title=trans.actionType id="actionTypeHelper" customClass="action-form-input" options=actionTypeOptions optionsTitle="title" optionsValue="name"}}
{{> forms/inputs/dropdown id="triggerType" value=triggerType title=trans.triggerType customClass="action-edit-form-trigger action-form-input" options=(arr (obj name="touch" title=trans.touch) (obj name="webhook" title=trans.webhook) (obj name="keyPress" title=trans.keyPress)) optionsTitle="title" optionsValue="name" helpText=trans.triggerTypeHelpText }}
{{> forms/inputs/text id="triggerCode" value=triggerCode title=trans.triggerCode customClass="action-form-input" helpText=trans.triggerCodeHelpText visibility='{ "field": "triggerType", "type": "eq", "value": "webhook" }' }}
{{> forms/inputs/keyCapture id="triggerKey" target="triggerCode" title=trans.triggerKey customClass="action-form-input" helpText=trans.triggerKeyHelpText visibility='{ "field": "triggerType", "type": "eq", "value": "keyPress" }' }}
{{> forms/inputs/hidden id="source" value=source }}
{{> forms/inputs/dropdown id="sourceId" value=sourceId title=trans.triggerTarget customClass='action-edit-form-trigger action-form-input' options=(arr (obj name="" title="")) optionsTitle="title" optionsValue="name" helpText=trans.triggerTargetHelpText }}
{{!-- Set layout name as screen --}}
{{#eq target "layout"}}
{{set "targetValue" "screen"}}
{{else}}
{{set "targetValue" target}}
{{/eq}}
{{> forms/inputs/hidden id="target" value=targetValue customClass="action-form-input" }}
{{> forms/inputs/dropdown id="targetId" value=targetId title=trans.target customClass="action-edit-form-target action-form-input" options=(arr (obj name="" title="")) optionsTitle="title" optionsValue="name" helpText=trans.targetHelpText }}
{{!-- For nav widget only --}}
<div class="form-group action-target-widget-component">
<label class="control-label action-target-widget-edit-label"><strong>{{trans.widgetToLoad}}</strong></label>
<div class="input-info-container">
{{>forms/inputs/add-ons/helpText helpText=trans.widgetToLoadHelpText}}
</div>
{{> forms/inputs/hidden id="widgetId" value=widgetId customClass="action-target-widget-id" }}
{{#if widgetId}}
<div class="action-target-widget-edit-container">
<div class="action-target-widget-edit-name" title="[{{widgetId}}] {{widgetName}}">
{{#if widgetName}}
"{{widgetName}}"
{{else}}
{{widgetId}}
{{/if}}
</div>
<div class="action-target-widget-dropdown-button">
<i class="fa fa-ellipsis"></i>
<div class="action-target-widget-dropdown-container">
<div class="action-edit-widget-btn" data-action="delete-widget">
{{trans.deleteActionTargetWidget}}
</div>
<div class="action-edit-widget-btn" data-action="edit-widget">
{{trans.editActionTargetWidget}}
</div>
</div>
</div>
</div>
{{else}}
<div class="action-target-widget-add-container">
<div class="action-edit-widget-btn" data-action="add-widget">
{{trans.createActionTargetWidget}}
</div>
</div>
{{/if}}
</div>
{{!-- For nav layout only --}}
{{> forms/inputs/dropdown id="layoutCode" value=layoutCode title=trans.layoutCode customClass="action-form-input" selectType="pagedSelect"
options=(arr (obj name="" title="")) optionsTitle="title" optionsValue="name"
visibility='{ "field": "actionTypeHelper", "type": "eq", "value": "navLayout" }'
customData=(arr
(obj name="width" value="100%")
(obj name="search-url" value=layoutCodeSearchURL)
(obj name="search-term" value="code")
(obj name="id-property" value="code")
(obj name="text-property" value="code")
(obj name='initial-value' value=layoutCode)
(obj name='initial-key' value="code")
)
helpText=trans.layoutCodeHelpText
}}
<div class="alert alert-danger error-message w-100"></div>
<div class="action-btn-container">
<div class="right-buttons">
<div class="action-btn" data-action="close">
{{trans.cancelAction}}
</div>
<div class="action-btn" data-action="save">
{{trans.saveAction}}
</div>
</div>
{{#unless newAction}}
<div class="action-btn" data-action="delete">
{{trans.deleteAction}}
</div>
{{/unless}}
</div>
</form>

View File

@@ -0,0 +1,94 @@
<div class="action-view">
<div class="action-group">
<div class="action-label">{{trans.actionType}}</div>
<div class="action-value">{{lookup trans actionTypeName}}</div>
</div>
<div class="action-group">
<div class="action-label">{{trans.triggerType}}</div>
<div class="action-value">{{lookup trans triggerType}}</div>
</div>
{{#eq triggerType "webhook"}}
<div class="action-group">
<div class="action-label">{{trans.triggerCode}}</div>
<div class="action-value">{{triggerCode}}</div>
</div>
{{/eq}}
{{#eq triggerType "keyPress"}}
<div class="action-group">
<div class="action-label">{{trans.triggerKey}}</div>
<div class="action-value">{{triggerCodeFormatted}}</div>
</div>
{{/eq}}
{{#if sourceId}}
<div class="action-group">
<div class="action-label">{{trans.triggerTarget}}</div>
<div class="action-value">
{{#if sourceName}}
"{{sourceName}}"
{{else}}
{{sourceId}}
{{/if}}
({{lookup trans.targetsAndSources source}})
</div>
</div>
{{/if}}
{{#if showTarget}}
{{#if targetId}}
{{!-- Set layout name as screen --}}
{{#eq target "layout"}}
{{set "targetValue" "screen"}}
{{else}}
{{set "targetValue" target}}
{{/eq}}
<div class="action-group">
<div class="action-label">{{trans.target}}</div>
<div class="action-value">
{{#if targetName}}
"{{targetName}}"
{{else}}
{{targetId}}
{{/if}}
({{lookup trans.targetsAndSources targetValue}})
</div>
</div>
{{/if}}
{{/if}}
{{#if widgetId}}
<div class="action-group">
<div class="action-label">{{trans.widgetToLoad}}</div>
<div class="action-value">
{{#if widgetName}}
"{{widgetName}}"
{{else}}
{{widgetId}}
{{/if}}
({{lookup trans.targetsAndSources 'widget'}})
</div>
</div>
{{/if}}
{{#if layoutCode}}
<div class="action-group">
<div class="action-label">{{trans.layoutCode}}</div>
<div class="action-value">{{layoutCode}}</div>
</div>
{{/if}}
{{#unless readOnly}}
<div class="action-btn-container">
<div class="action-btn" data-action="edit" title="{{trans.editAction}}">
{{trans.editAction}}
</div>
<div class="action-btn" data-action="delete" title="{{trans.deleteAction}}">
{{trans.deleteAction}}
</div>
</div>
{{/unless}}
</div>

View File

@@ -0,0 +1,14 @@
<div class="actions-container">
<div class="actions-content">
{{#unless readOnly}}
<button class="actions-content-button" type="button" data-action="add">
<span>{{trans.addAction}}</span>
<span class="icon">
<i class="fa fa-plus"></i>
</span>
</button>
{{/unless}}
<div class="actions-list"></div>
</div>
</div>

View File

@@ -0,0 +1,6 @@
<div class="checkbox">
<label for="autoSubmit" accesskey="a" title="{{trans.helpText}}">
<input type="checkbox" id="autoSubmit" name="autoSubmit">
{{trans.label}}
</label>
</div>

View File

@@ -0,0 +1,112 @@
<nav class="navbar viewer-navbar designer-{{object.type}}-selected">
<div class="viewer-navbar-info">
{{! Element Info }}
{{#eq object.type "widget"}}
<div class="info">
{{#ifCond object.widgetName '||' object.moduleName}}
<div class="label-name">
<strong title="{{trans.widgetType}}">{{objectTypeName}}</strong> <div class="name" title="{{trans.widgetName}}">{{#if object.widgetName}}"{{object.widgetName}}"{{/if}}{{#if moduleTemplateTitle}}<span class="template-name" title="{{trans.widgetTemplate}}"> | "{{moduleTemplateTitle}}"</span>{{/if}}</div>
</div>
{{/ifCond}}
</div>
{{else eq object.type "element"}}
<div class="info">
<div class="label-name">
<strong>{{objectTypeName}}</strong> | <div class="mediaTemplate" title="{{trans.templateName}}">{{object.template.title}}</div>
{{#if object.elementName}} - <div class="name" title="{{trans.elementName}}">"{{object.elementName}}"</div>{{/if}}
{{#if object.elementMediaInfo}}
- <div class="mediaInfo">[
<div class="mediaInfoName" title="{{trans.elementMediaInfoName}}">{{object.elementMediaInfo.name}}</div>
<div class="mediaInfoId" title="{{trans.elementMediaInfoId}}">#{{object.elementMediaInfo.id}}</div>
]</div>{{/if}}
</div>
</div>
{{else eq object.type "element-group"}}
<div class="info">
<div class="label-name">
<strong>{{objectTypeName}}</strong>{{#if object.elementGroupName}} - <div class="name" title="{{trans.elementGroupName}}">"{{object.elementGroupName}}"</div>{{/if}}
</div>
</div>
{{else if object}}
<div class="info">
<div class="label-name">
<strong>{{objectTypeName}}</strong> <div class="name" title="{{trans.regionName}}">{{#if object.name}}"{{object.name}}"{{/if}}</div>
</div>
</div>
{{/eq}}
</div>
<div class="viewer-navbar-controls">
{{! Left area }}
<div class="area-right">
{{#if renderLayout}}
<button type="button" id="play-btn" class="btn btn-sm" data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{ trans.playPreviewLayout }}">
<i class="fa fa-play-circle" data-toggle="popover" title="{{ trans.playPreviewLayoutPOTitle }}" data-content="{{ trans.playPreviewLayoutPOMessage }}" data-placement="top"></i>
</button>
{{else}}
<button type="button" id="inline-editor-save" class="btn btn-sm" data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top"
data-title="{{ trans.saveEditorChanges }}">
<i class="fa fa-save"></i>
</button>
{{/if}}
{{#unless readOnlyModeOn}}
{{#eq object.type "element"}}
{{#if widget.isPermissionsModifiable}}
<button type="button" id="permissions-btn" class="properties-btn properties-widget btn btn-sm" data-property="Permissions"
data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{trans.tools.permissions.description}}">
<i class="tool-icon-permissions card-icon"></i>
</button>
{{/if}}
{{/eq}}
{{#eq object.type "widget"}}
{{#if object.isPermissionsModifiable}}
<button type="button" id="permissions-btn" class="properties-btn btn btn-sm" data-property="Permissions"
data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{trans.tools.permissions.description}}">
<i class="tool-icon-permissions card-icon"></i>
</button>
{{/if}}
{{#if object.isEditable}}
{{#if object.canAttachAudio}}
<button type="button" id="audio-btn" class="properties-btn btn btn-sm" data-property="Audio"
data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{trans.tools.audio.description}}">
<i class="tool-icon-audio card-icon"></i>
</button>
{{/if}}
{{/if}}
{{/eq}}
{{#eq object.type "region"}}
{{#neq object.subType "zone"}}
{{#if object.isPermissionsModifiable}}
<button type="button" id="permissions-btn" class="properties-btn btn btn-sm" data-property="Permissions"
data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top" data-title="{{trans.tools.permissions.description}}">
<i class="tool-icon-permissions card-icon"></i>
</button>
{{/if}}
{{/neq}}
{{/eq}}
{{/unless}}
</div>
{{! Right area }}
<div class="area-left">
{{#unless readOnlyModeOn}}
{{#if undoActive}}
<button type="button" id="undo-btn" class="btn btn-sm tooltip-always-on" data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top"
data-title="{{trans.undoActiveTitle}}">
<i class="fa fa-undo"></i>
</button>
{{/if}}
{{#if trashActive}}
<button type="button" id="delete-btn" class="btn btn-sm" data-toggle="tooltip" data-container=".editor-bottom-bar" data-placement="top"
data-title="{{trans.trashBinActiveTitle}}">
<i class="fa fa-trash"></i>
</button>
{{/if}}
{{/unless}}
</div>
</div>
</nav>

View File

@@ -0,0 +1,34 @@
<table id="campaigns" class="table agenda-table" data-type="campaigns" width="100%">
<thead>
<tr class="table-title">
<th colspan="4">{{trans.campaigns}}</th>
</tr>
<tr>
<th></th>
<th>{{trans.id}}</th>
<th>{{trans.name}}</th>
<th>{{trans.cyclePlayback}}</th>
</tr>
</thead>
<tbody>
<% _.each(campaigns, function(campaign){ %>
<tr data-elem-id="<%= campaign.campaignId %>">
<td></td>
<td>
<%= campaign.campaignId %>
</td>
<td>
<%= campaign.campaign %>
</td>
<%
var icon = "";
if (campaign.cyclePlaybackEnabled == 0)
icon = "fa-times";
else
icon = "fa-check";
%>
<td><span class="fa <%= icon %>"></span></td>
</tr>
<% }); %>
</tbody>
</table>

View File

@@ -0,0 +1,30 @@
<table id="displaygroups" class="table agenda-table" data-type="displaygroups" width="100%">
<thead>
<tr class="table-title">
<th colspan="3">{{trans.displayGroups}}</th>
</tr>
<tr>
<th></th>
<th>{{trans.id}}</th>
<th>{{trans.name}}</th>
</tr>
</thead>
<tbody>
<% _.each(displaygroups, function(displaygroup){ %>
<tr data-elem-id="<%= displaygroup.displayGroupId %>">
<%
var icon = "";
if (displaygroup.isDisplaySpecific == 1)
icon = "fa-television";
%>
<td><span class="fa <%= icon %>"></span></td>
<td>
<%= displaygroup.displayGroupId %>
</td>
<td>
<%= displaygroup.displayGroup %>
</td>
</tr>
<% }); %>
</tbody>
</table>

View File

@@ -0,0 +1,44 @@
<div class="col-sm-12 cal-event-agenda-filter">
<div class="d-flex justify-content-between">
<!-- Timeline Checkbox -->
<div class="d-flex align-items-center">
<div class="form-check">
<input title="{{ trans.showTimeLineLabel }}" class="form-check-input" type="checkbox" id="showTimeline" name="showTimeline">
<label class="form-check-label" title="{{ trans.showTimeLineLabel }}" for="showTimeline" accesskey="">{{ trans.showTimeLineLabel }}</label>
</div>
</div>
<!-- Geo location -->
<form class="form-inline cal-event-location">
<button id="toggleMap" type="button" class="btn btn-primary pull-right" title="{{ trans.geoMap }}"><i
class="fa fa-map"></i></button>
<button id="getLocation" type="button" class="btn btn-white pull-right" title="{{ trans.geoGetBrowserLocation }}"><i class="fa fa-map-marker"></i>
</button>
<button id="clearLocation" type="button" class="btn btn-white pull-right" title="{{ trans.geoClearCoord }}"><i class="fa fa-times"></i>
</button>
<div class="form-group pull-right">
<input type="email" class="form-control" id="geoLongitude" placeholder="{{ trans.geoLongitude }}">
</div>
<div class="form-group pull-right">
<input type="text" class="form-control" id="geoLatitude" placeholder="{{ trans.geoLatitude }}">
</div>
</form>
</div>
<!-- Timeline -->
<div class="cal-event-time-bar" style="display: none;">
<div class="btn slider-step-btn time-picker-step-btn" data-step="-1">
<span class="fa fa-step-backward"></span>
</div>
<input id="timePicker" type="text" data-slider-id='timePickerSlider' data-slider-min="0" data-slider-max="1439"
data-slider-step="1" data-slider-value="0" data-slider-handle="square" />
<div class="btn slider-step-btn time-picker-step-btn" data-step="1">
<span class="fa fa-step-forward"></span>
</div>
</div>
<!-- Geo location map -->
<div class="cal-event-location-map" data-default-lat="{{ defaultLat }}" data-default-long="{{ defaultLong }}">
<div id="geoFilterAgendaMap" style="height: 400px; width: 100%" class="d-none"></div>
</div>
</div>

View File

@@ -0,0 +1,97 @@
<table class="table agenda-table agenda-table-layouts" data-type="layouts" style="width: 100%;">
<thead>
<tr class="table-title">
<% if (layouts.type == 4) { %>
<th colspan="11" class="pr-2">
<% } else { %>
<th colspan="10" class="pr-2">
<% } %>
<% if (layouts.type == 1) { %>
<span>{{trans.layouts}}</span>
<% } else if (layouts.type == 3) { %>
<span>{{trans.overlayLayouts}}</span>
<% } else if (layouts.type == 4) { %>
<span>{{trans.interruptLayouts}}</span>
<% } else if (layouts.type == 5) { %>
<span>{{trans.campaignLayouts}}</span>
<% } else if (layouts.type == 7) { %>
<span>{{trans.fullscreenVideoImage}}</span>
<% } else if (layouts.type == 8) { %>
<span>{{trans.fullscreenPlaylist}}</span>
<% } else if (layouts.type == 9) { %>
<span>{{trans.synchronised}}</span>
<% } %>
<span class="pull-right badge badge-light" title="{{trans.numberLayouts}}" data-toggle="tooltip" data-placement="top">
<%= layouts.length %>
</span>
</th>
</tr>
<tr>
<th></th>
<th>{{trans.id}}</th>
<th>{{trans.layoutName}}</th>
<th>{{trans.status}}</th>
<th>{{trans.fromDate}}</th>
<th>{{trans.toDate}}</th>
<th>{{trans.layoutDuration}}</th>
<% if (layouts.type == 4) { %>
<th>{{trans.shareOfVoice}}</th>
<% } %>
<th>{{trans.displayOrder}}</th>
<th>{{trans.priority}}</th>
<th>{{trans.visible}}</th>
</tr>
</thead>
<tbody>
<% _.each(layouts, function(layout){ %>
<tr
class="<%= layout.itemClass %>"
data-elem-id="<%= layout.layoutId %>"
data-event-id="<%= layout.eventId %>"
data-toggle="tooltip"
<% if (layout.itemClass == 'low-priority') { %>
title="{{trans.layoutWontBeShown}}"
<% } %>
>
<td><span class="fa <%= layout.itemIcon %>"></span></td>
<td><%= layout.layoutId %></td>
<td><%= layout.layoutName %></td>
<%
var icon = "";
if (layout.layoutStatus == 1)
icon = "fa-check";
else if (layout.layoutStatus == 0)
icon = "fa-times";
else if (layout.layoutStatus == 3)
icon = "fa-cogs";
else
icon = "fa-exclamation";
%>
<td><span class="fa <%= icon %>"></span></td>
<% if (layout.isAlways == 1) { %>
<td>{{trans.always}}</td>
<td><span class="fa fa-retweet"></span></td>
<% } else { %>
<td><%= layout.eventFromDt %></td>
<td><%= layout.eventToDt %></td>
<% } %>
<td><%= layout.layoutDuration %></td>
<% if (layouts.type == 4) { %>
<td><%= layout.shareOfVoice %></td>
<% } %>
<td><%= layout.layoutDisplayOrder %></td>
<td><%= layout.eventPriority %></td>
<%
var icon = "";
if (layout.itemClass == 'low-priority')
icon = "fa-times";
else
icon = "fa-check";
%>
<td><span class="fa <%= icon %>"></span></td>
</tr>
<% }); %>
</tbody>
</table>

View File

@@ -0,0 +1,92 @@
<div class="container-fluid">
<!-- Content panel with tabs -->
<div class="card with-nav-tabs bg-white agenda-panel">
<!-- Tab Panel -->
<% if (typeof agenda.displayGroupList != 'undefined' && agenda.displayGroupList.length > 1) { %>
<div class="card-heading">
<ul class="nav nav-tabs flex-nowrap w-100" style="overflow:auto hidden;">
<% _.each(agenda.displayGroupList, function(displayGroup){ %>
<% if (displayGroup['id'] == agenda.selectedDisplayGroup) { %>
<li class="nav-item flex-shrink-0 active" <% if (agenda.displayGroupList.length > 10) { %>style="order: -1;" <% }; %>>
<% } else { %>
<li class="nav-item flex-shrink-0">
<% }; %>
<%
// If it is a simple display show an
var displayGroupIcon = "";
if (displayGroup['isDisplaySpecific'] == 0)
displayGroupIcon = "<span class='fa fa-television'></span> ";
%>
<a class="nav-link" data-toggle="tab" data-id="<%= displayGroup['id'] %>" href="#tab_<%= displayGroup['id'] %>">
<%= (displayGroupIcon + displayGroup['name']) %>
</a>
</li>
<% }); %>
</ul>
</div>
<% } %>
<!-- Tab Content -->
<div class="card-body p-1">
<% if (agenda.errorMessage != '') { %>
<!-- Request failed - Show Error Message -->
<div class="text-danger text-center">
<% if (agenda.errorMessage == 'display_not_selected') { %>
<p>{{trans.displayNotSelected}}</p>
<% } else if (agenda.errorMessage == 'no_events') { %>
<p>{{trans.noEventsForTheChosen}}</p>
<% } else if (agenda.errorMessage == 'request_failed') { %>
<p>{{trans.dataRequestFailed}}</p>
<% } %>
</div>
<% } else if(!jQuery.isEmptyObject(agenda.results)) { %>
<!-- Request successful - Show Data -->
<!-- Breadcrumb trail -->
<div class="cal-event-breadcrumb-trail col-12 mt-2">
<div id="content"></div>
</div>
<!-- Agenda Data Content -->
<div class="tab-content">
<% _.each(agenda.displayGroupList, function(displayGroup){ %>
<% if (typeof agenda.results[(displayGroup['id'])] != 'undefined') { %>
<%
var resultItem = agenda.results[displayGroup['id']];
var isActive = (displayGroup['id'] == agenda.selectedDisplayGroup) ? 'active' : '';
%>
<div id="tab_<%= displayGroup['id'] %>" class="tab-pane <%= isActive %> container-fluid">
<div class="row">
<% if(typeof resultItem.events != 'undefined') { %>
<div class="col-lg-9 agenda-col agenda-col-lt">
<%= cal._layouts(resultItem.events, resultItem.layouts, 1) %>
<%= cal._layouts(resultItem.events, resultItem.layouts, 3) %>
<%= cal._layouts(resultItem.events, resultItem.layouts, 4) %>
<%= cal._layouts(resultItem.events, resultItem.layouts, 5) %>
<%= cal._layouts(resultItem.events, resultItem.layouts, 7) %>
<%= cal._layouts(resultItem.events, resultItem.layouts, 8) %>
<%= cal._layouts(resultItem.events, resultItem.layouts, 9) %>
</div>
<div class="col-lg-3 agenda-col agenda-col-dg">
<div class="row">
<div class="col-6 col-lg-12 agenda-col">
<%= cal._displaygroups(resultItem.events, resultItem.displayGroups) %>
</div>
<div class="col-6 col-lg-12 agenda-col">
<%= cal._campaigns(resultItem.events, resultItem.campaigns) %>
</div>
</div>
</div>
<% } %>
</div>
</div>
<% } %>
<% }); %>
</div>
<% } %>
</div>
</div>
</div>

View File

@@ -0,0 +1,42 @@
<!-- Layout -->
<span>
<% if (layout.link != '') { %>
<a href="<%= layout.link %>"><%= layout.name %></a>
<% } else { %>
<%= layout.name %>
<% } %>
</span>
<span>&nbsp;<i class="fa fa-arrow-right" aria-hidden="true"></i>&nbsp;</span>
<!-- Campaign -->
<% if (typeof campaign != 'undefined') { %>
<span>
<% if (campaign.link != '') { %>
<a href="<%= campaign.link %>"><%= campaign.name %></a>
<% } else { %>
<%= campaign.name %>
<% } %>
</span>
<span>&nbsp;<i class="fa fa-arrow-right" aria-hidden="true"></i>&nbsp;</span>
<% } %>
<!-- Schedule -->
<span>
<a href="<%= schedule.link %>" class="XiboFormButton" data-event-start="<%= schedule.fromDt %>" data-event-end="<%= schedule.toDt %>">
{{trans.schedule}}
</a>
</span>
<!-- Display Groups -->
<% _.each(displayGroups, function(displayGroup){ %>
<span>&nbsp;<i class="fa fa-arrow-right" aria-hidden="true"></i>&nbsp;</span>
<span>
<% if (displayGroup.link != '') { %>
<a href="<%= displayGroup.link %>"><%= displayGroup.name %></a>
<% } else { %>
<%= displayGroup.name %>
<% } %>
</span>
<% }); %>

View File

@@ -0,0 +1,82 @@
<div id="cal-day-box">
<div class="row-fluid clearfix cal-row-head">
<div class="span1 col-1 cal-cell"><%= cal.locale.time %></div>
<div class="span11 col-11 cal-cell"><%= cal.locale.events %></div>
</div>
<% if(all_day.length) {%>
<div class="row-fluid clearfix cal-day-hour">
<div class="span1 col-1"><b><%= cal.locale.all_day %></b></div>
<div class="span11 col-11">
<% _.each(all_day, function(event){ %>
<%
var eventTitle = (event.event.isAlways == 1) ? event.title : "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsDateFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsDateFormat) + "] " + event.title;
%>
<div class="day-highlight dh-<%= event['class'] %>">
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
class="event-item">
<%= eventTitle %></a>
</div>
<% }); %>
</div>
</div>
<% }; %>
<% if(before_time.length) {%>
<div class="row-fluid clearfix cal-day-hour">
<div class="span1 col-3"><b><%= cal.locale.before_time %></b></div>
<div class="span5 col-5">
<% _.each(before_time, function(event){ %>
<div class="day-highlight dh-<%= event['class'] %>">
<span class="cal-hours pull-right"><%= event.end_hour %></span>
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
class="event-item">
<%= event.title %></a>
</div>
<% }); %>
</div>
</div>
<% }; %>
<div id="cal-day-panel" class="clearfix">
<div id="cal-day-panel-hour">
<% for(i = 0; i < hours; i++){ %>
<div class="cal-day-hour">
<% for(l = 0; l < cal._hour_min(i); l++){ %>
<div class="row-fluid cal-day-hour-part">
<div class="span1 col-1"><b><%= cal._hour(i, l) %></b></div>
<div class="span11 col-11"></div>
</div>
<% }; %>
</div>
<% }; %>
</div>
<% _.each(by_hour, function(event){ %>
<div class="pull-left day-event <% if (event.lines < 1) { %>day-event-small<% } %> day-highlight dh-<%= event['class'] %>" style="margin-top: <%= (event.top * 30) %>px; height: <%= (event.lines * 30) %>px"
<% if (event.lines < 2) { %>data-toggle="popover" data-html="true" data-content="<a href='<%= event.url ? event.url : "javascript:void(0)" %>'><%= event.title %></a>" title="<%= event.start_hour %> - <%= event.end_hour %>"<% } %>
>
<span class="cal-hours"><%= event.start_hour %> - <%= event.end_hour %></span>
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
data-event-class="<%= event['class'] %>" class="event-item">
<%= event.title %></a>
</div>
<% }); %>
</div>
<% if(after_time.length) {%>
<div class="row-fluid clearfix cal-day-hour">
<div class="span1 col-3"><b><%= cal.locale.after_time %></b></div>
<div class="span11 col-9">
<% _.each(after_time, function(event){ %>
<div class="day-highlight dh-<%= event['class'] %>">
<span class="cal-hours"><%= event.start_hour %></span>
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
data-event-class="<%= event['class'] %>" class="event-item">
<%= event.title %></a>
</div>
<% }); %>
</div>
</div>
<% }; %>
</div>

View File

@@ -0,0 +1,82 @@
<span id="cal-slide-tick" style="display: none"></span>
<div id="cal-slide-content" class="cal-event-list">
<ul class="unstyled list-unstyled">
<% _.each(events, function(event) { %>
<%
var title = event.title;
var eventIcon = "fa-desktop";
var eventClass = "event-warning";
var eventPriority = "";
if (event.event.isAlways != 1) {
if (event.event.eventTypeId == 2) {
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
} else if (event.sameDay) {
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
} else {
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsDateFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsDateFormat) + "] " + event.title;
}
}
if (event.event.displayOrder > 0)
title = title + " (" + event.event.displayOrder + ")";
if (event.event.displayGroups.length <= 1) {
eventClass = "event-info";
}
else {
eventClass = "event-success";
}
if (event.event.isAlways == 1) {
eventIcon = "fa-retweet";
}
if (event.event.recurrenceType != null && event.event.recurrenceType != "") {
eventClass = "event-special";
eventIcon = "fa-repeat";
}
if (event.event.isPriority >= 1) {
eventClass = "event-important";
eventIcon = "fa-bullseye";
eventPriority = event.event.isPriority;
}
if (event.event.eventTypeId == 2) {
eventIcon = "fa-wrench";
}
if (event.event.eventTypeId == 4) {
eventIcon = "fa-hand-paper";
}
if (event.event.isGeoAware === 1) {
eventIcon = "fa-map-marker";
}
if (event.event.eventTypeId == 6) {
eventIcon = "fa-paper-plane";
}
if (event.event.eventTypeId == 9) {
eventIcon = "fa-refresh";
}
if (!event.editable) {
event.url = null;
eventIcon = "fa-lock";
eventClass = "event-inverse";
}
%>
<li>
<span class="pull-left event <%= event['class'] %>"></span>&nbsp;
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
data-event-class="<%= eventClass %>" class="event-item">
<span class="fa <%= eventIcon %>"><span class="event-priority"><%= eventPriority %></span></span> <%= title %></a>
</li>
<% }) %>
</ul>
<div class="btn btn-light cal-agenda-button" title="{{trans.openAgenda}}">{{trans.agenda}}</div>
</div>

View File

@@ -0,0 +1,86 @@
<div class="cal-month-day <%= cls %>">
<span class="pull-right cal-month-day-number" data-cal-date="<%= data_day %>" <% if (events.length > 0) { %>data-cal-events="1"<% } %> ><%= day %></span>
<% if (events.length > 0) { %>
<span class="cal-month-day-number-events label label-info" data-toggle="tooltip" title="{{trans.numberOfEvents}}"><%= events.length %></span>
<% } %>
<% if (events.length > 0) { %>
<div class="events-list" data-cal-start="<%= start %>" data-cal-end="<%= end %>">
<% _.each(events, function(event) { %>
<%
var title = event.title;
var eventIcon = "fa-desktop";
var eventClass = "event-warning";
var eventPriority = "";
if (event.event.isAlways != 1) {
if (event.event.eventTypeId == 2) {
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
} else if (event.sameDay) {
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
} else {
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsDateFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsDateFormat) + "] " + event.title;
}
}
if (event.event.displayOrder > 0)
title = title + " (" + event.event.displayOrder + ")";
if (event.event.displayGroups.length <= 1) {
eventClass = "event-info";
}
else {
eventClass = "event-success";
}
if (event.event.isAlways == 1) {
eventIcon = "fa-retweet";
}
if (event.event.recurrenceType != null && event.event.recurrenceType != "") {
eventClass = "event-special";
eventIcon = "fa-repeat";
}
if (event.event.isPriority >= 1) {
eventClass = "event-important";
eventIcon = "fa-bullseye";
eventPriority = event.event.isPriority;
}
if (event.event.eventTypeId == 2) {
eventIcon = "fa-wrench";
}
if (event.event.eventTypeId == 4) {
eventIcon = "fa-hand-paper";
}
if (event.event.isGeoAware === 1) {
eventIcon = "fa-map-marker";
}
if (event.event.eventTypeId == 6) {
eventIcon = "fa-paper-plane";
}
if (event.event.eventTypeId == 9) {
eventIcon = "fa-refresh";
}
if (!event.editable) {
event.url = null;
eventIcon = "fa-lock";
eventClass = "event-inverse";
}
%>
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
data-event-class="<%= eventClass %>"
class="pull-left event <%= eventClass %>" data-toggle="tooltip"
title="<%= event.title %>"><span class="fa <%= eventIcon %>"><span class="event-priority"><%= eventPriority %></span></span></a>
<% }); %>
</div>
<% } %>
</div>

View File

@@ -0,0 +1,19 @@
<div class="cal-row-fluid cal-row-head">
<% _.each(days_name, function(name){ %>
<div class="cal-cell1"><%= name %></div>
<% }) %>
</div>
<div class="cal-month-box">
<% for(i = 0; i < 6; i++) { %>
<% if(cal.stop_cycling == true) break; %>
<div class="cal-row-fluid cal-before-eventlist">
<div class="cal-cell1 cal-cell" data-cal-row="-day1"><%= cal._day(i, day++) %></div>
<div class="cal-cell1 cal-cell" data-cal-row="-day2"><%= cal._day(i, day++) %></div>
<div class="cal-cell1 cal-cell" data-cal-row="-day3"><%= cal._day(i, day++) %></div>
<div class="cal-cell1 cal-cell" data-cal-row="-day4"><%= cal._day(i, day++) %></div>
<div class="cal-cell1 cal-cell" data-cal-row="-day5"><%= cal._day(i, day++) %></div>
<div class="cal-cell1 cal-cell" data-cal-row="-day6"><%= cal._day(i, day++) %></div>
<div class="cal-cell1 cal-cell" data-cal-row="-day7"><%= cal._day(i, day++) %></div>
</div>
<% } %>
</div>

View File

@@ -0,0 +1,22 @@
{{#each displays}}
<tr>
<td>{{displayId}} {{#eq displayId leadDisplayId}}{{trans.lead}}{{/eq}}</td>
<td>{{display}}</td>
<td>
<div class="form-group pagedSelect">
<select class="form-control syncContentSelect single-select" name="layoutId_{{displayId}}" id="layoutId_{{displayId}}" data-search-url="{{../urlForLayoutSearch}}"
data-search-term="layout" data-width="100%" data-id-property="layoutId" data-text-property="layout" data-anchor-element="#contentSelectorTable"
data-initial-key="layoutId" data-initial-value="{{layoutId}}" data-display-id="{{displayId}}" data-lead-display-id="{{leadDisplayId}}">
<option></option>
</select>
</div>
{{#eq displayId leadDisplayId}}
<button data-display-id="{{displayId}}" id="setMirrorContent" type="button" class="btn btn-success d-none"
title="{{../trans.setOnAllDisplays}}">
{{../trans.mirror}}
</button>
{{/eq}}
<input name="displayGroupIds[]" type="hidden" id="displayGroupIds[]" value="{{displayGroupId}}">
</td>
</tr>
{{/each}}

View File

@@ -0,0 +1,73 @@
<% _.each(events, function(event){ %>
<%
var title = event.title;
var eventIcon = "fa-desktop";
var eventClass = "event-warning";
var eventPriority = "";
if (event.event.isAlways != 1) {
if (event.event.eventTypeId == 2) {
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
} else if (event.sameDay) {
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsTimeFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsTimeFormat) + "] " + event.title;
} else {
title = "[" + moment(event.scheduleEvent.fromDt, systemDateFormat).format(jsDateFormat) + " - " + moment(event.scheduleEvent.toDt, systemDateFormat).format(jsDateFormat) + "] " + event.title;
}
}
if (event.event.displayOrder > 0)
title = title + " (" + event.event.displayOrder + ")";
if (event.event.displayGroups.length <= 1) {
eventClass = "event-info";
}
else {
eventClass = "event-success";
}
if (event.event.isAlways == 1) {
eventIcon = "fa-retweet";
}
if (event.event.recurrenceType != null && event.event.recurrenceType != "") {
eventClass = "event-special";
eventIcon = "fa-repeat";
}
if (event.event.isPriority >= 1) {
eventClass = "event-important";
eventIcon = "fa-bullseye";
eventPriority = event.event.isPriority;
}
if (event.event.eventTypeId == 4) {
eventIcon = "fa-hand-paper";
}
if (event.event.isGeoAware === 1) {
eventIcon = "fa-map-marker";
}
if (event.event.eventTypeId == 6) {
eventIcon = "fa-paper-plane";
}
if (event.event.eventTypeId == 9) {
eventIcon = "fa-refresh";
}
if (!event.editable) {
event.url = null;
eventIcon = "fa-wrench";
eventClass = "event-inverse";
}
%>
<div class="cal-row-fluid">
<div class="cal-cell<%= event.days%> cal-offset<%= event.start_day %> day-highlight dh-<%= event['class'] %>">
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
data-event-class="<%= eventClass %>"
class="cal-event-week event<%= event.id %>"><span class="fa <%= eventIcon %>"><span class="event-priority"><%= eventPriority %></span></span> <%= title %></a>
</div>
</div>
<% }); %>

View File

@@ -0,0 +1,18 @@
<div class="cal-week-box">
<div class="cal-offset1 cal-column"></div>
<div class="cal-offset2 cal-column"></div>
<div class="cal-offset3 cal-column"></div>
<div class="cal-offset4 cal-column"></div>
<div class="cal-offset5 cal-column"></div>
<div class="cal-offset6 cal-column"></div>
<div class="cal-row-fluid cal-row-head">
<% _.each(days_name, function(name) { %>
<div class="cal-cell1 <%= cal._getDayClass('week', start) %>" data-toggle="tooltip" title="<%= cal._getHolidayName(start) %>"><%= name %><br>
<small><span data-cal-date="<%= start.getFullYear() %>-<%= start.getMonthFormatted() %>-<%= start.getDateFormatted() %>" data-cal-view="day"><%= cal.options.type !== 'Jalali' ? start.getDate() : start.getJalaliDate() %> <%= cal.options.type !== 'Jalali' ? cal.locale['ms' + start.getMonth()] : cal.locale['jms' + (start.getJalaliMonth() - 1)] %></span></small>
</div>
<% start.setDate(start.getDate() + 1); %>
<% }) %>
</div>
<hr>
<%= cal._week() %>
</div>

View File

@@ -0,0 +1,13 @@
<span class="pull-right" data-cal-date="<%= data_day %>" data-cal-view="month"><%= month_name %></span>
<% if (events.length > 0) { %>
<small class="cal-events-num badge badge-important pull-left"><%= events.length %></small>
<div class="hide events-list" data-cal-start="<%= start %>" data-cal-end="<%= end %>">
<% _.each(events, function(event) { %>
<a href="<%= event.url ? event.url : 'javascript:void(0)' %>" data-event-id="<%= event.id %>"
data-event-start="<%= event.start %>" data-event-end="<%= event.end %>"
data-event-class="<%= event['class'] %>"
class="pull-left event <%= event['class'] %> event<%= event.id %>" data-toggle="tooltip"
title="<%= event.title %>"></a>
<% }); %>
</div>
<% } %>

View File

@@ -0,0 +1,20 @@
<div class="cal-year-box">
<div class="row row-fluid cal-before-eventlist">
<div class="span3 col-md-3 cal-cell" data-cal-row="-month1"><%= cal._month(0) %></div>
<div class="span3 col-md-3 cal-cell" data-cal-row="-month2"><%= cal._month(1) %></div>
<div class="span3 col-md-3 cal-cell" data-cal-row="-month3"><%= cal._month(2) %></div>
<div class="span3 col-md-3 cal-cell" data-cal-row="-month4"><%= cal._month(3) %></div>
</div>
<div class="row row-fluid cal-before-eventlist">
<div class="span3 col-md-3 cal-cell" data-cal-row="-month1"><%= cal._month(4) %></div>
<div class="span3 col-md-3 cal-cell" data-cal-row="-month2"><%= cal._month(5) %></div>
<div class="span3 col-md-3 cal-cell" data-cal-row="-month3"><%= cal._month(6) %></div>
<div class="span3 col-md-3 cal-cell" data-cal-row="-month4"><%= cal._month(7) %></div>
</div>
<div class="row row-fluid cal-before-eventlist">
<div class="span3 col-md-3 cal-cell" data-cal-row="-month1"><%= cal._month(8) %></div>
<div class="span3 col-md-3 cal-cell" data-cal-row="-month2"><%= cal._month(9) %></div>
<div class="span3 col-md-3 cal-cell" data-cal-row="-month3"><%= cal._month(10) %></div>
<div class="span3 col-md-3 cal-cell" data-cal-row="-month4"><%= cal._month(11) %></div>
</div>
</div>

View File

@@ -0,0 +1,46 @@
<form action="{{campaignAssignLayoutURL}}"
data-assignment-remove-url="{{campaignRemoveLayoutURL}}?layoutId={{layoutId}}"
data-existing-display-order="{{displayOrder}}"
method="POST"
class="form-horizontal XiboForm">
{{> forms/inputs/hidden id="layoutId" value=layoutId }}
{{> forms/inputs/dropdown id="daysOfWeek[]" value=null title=trans.daysOfWeekDropdownTitle selectType="customSelect"
options=(arr
(obj id=1 name=trans.daysOfWeek.monday)
(obj id=2 name=trans.daysOfWeek.tuesday)
(obj id=3 name=trans.daysOfWeek.wednesday)
(obj id=4 name=trans.daysOfWeek.thursday)
(obj id=5 name=trans.daysOfWeek.friday)
(obj id=6 name=trans.daysOfWeek.saturday)
(obj id=7 name=trans.daysOfWeek.sunday)
)
optionsTitle="name" optionsValue="id" multiple="true"
helpText=trans.daysOfWeekDropdownHelpText
}}
{{> forms/inputs/dropdown id="dayPartId" value=null title=trans.dayPartDropdownTitle selectType="customSelect"
customData=(arr
(obj name="search-url" value=dayPartSearchURL)
(obj name="search-term" value="name")
(obj name="id-property" value="dayPartId")
(obj name="text-property" value="name")
(obj name="initial-key" value="dayPartId")
(obj name="placeholder--id" value=null)
(obj name="placeholder--value" value="")
(obj name="allow-clear" value="true")
)
helpText=trans.dayPartDropdownHelpText
}}
{{> forms/inputs/hidden id="geoFence" value=geoFence }}
{{> forms/inputs/message title=trans.builderMessage}}
<div id="campaign-builder-map"
data-map-tile-server="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
data-map-lat="{{defaultLat}}"
data-map-long="{{defaultLong}}"
data-map-zoom="13"
style="height: 500px; width: 100%"></div>
</form>

View File

@@ -0,0 +1,5 @@
<li data-layout-id="{{ layoutId }}" class="btn btn-sm btn-white {{#if locked}}ui-state-disabled{{/if}}">
<div class="float-left text-left layout-order">{{index}}</div>
<div class="layout-name float-left" title="{{ layoutName }}">{{ layoutName }}</div>
<div class="layout-icon fa {{#if locked}}fa-lock{{else}}fa-minus layout-remove{{/if}}"></div>
</li>

View File

@@ -0,0 +1 @@
<input class="free-text form-control form-control-inline" value="{{ initVal }}">

View File

@@ -0,0 +1,5 @@
<div class="http-key-value-element mt-1">
<input class="form-control validated-element form-control-inline http-key" placeholder="{{trans.key}}" value="{{ key }}">
<input class="form-control validated-element form-control-inline http-value" placeholder="{{trans.value}}" value="{{ value }}">
<button type="button" class="btn btn-sm btn-warning pull-right http-key-value-remove"><i class="fa fa-minus"></i></button>
</div>

View File

@@ -0,0 +1,80 @@
{{! URL }}
<label for="httpURL{{ unique }}" class="http-url-label form-check-label">{{trans.url}}</label>
<input name="httpURL{{ unique }}" id="httpURL{{ unique }}" class="http-url w-100 validated-element form-control form-control-inline" placeholder="{{trans.url}}" value="{{ value.url }}">
{{! Query params }}
<div class="request-params request-section mt-2">
<div class="form-check w-100">
<input type="checkbox" data-toggle-element=".query-builder-container" data-toggle-class="d-inline-block" class="show-query-builder ignore-change form-check-input" id="queryParamsBuilder{{ unique }}" name="queryParamsBuilder{{ unique }}" title="{{trans.queryParamBuilder}}" checked>
<label for="queryParamsBuilder{{ unique }}" class="show-query-builder-label form-check-label">{{trans.queryBuilder}}</label>
</div>
<div class="form-group-command query-builder-container w-100 bg-white p-2 d-none d-inline-block">
<label for="queryBuilderContainer{{ unique }}" class="http-key-value-container-label">{{trans.queryParams}}:</label>
<button class="http-key-value-add btn btn-info btn-sm pull-right" type="button">
<i class="fa fa-plus"></i>
</button>
<div id="queryBuilderContainer{{ unique }}" class="http-key-value-container"></div>
</div>
</div>
{{! Method }}
<div class="form-group-command mt-2">
<label for="httpMethod{{ unique }}">{{trans.requestMethod}}:</label>
<select name="httpMethod{{ unique }}" id="httpMethod{{ unique }}" class="http-method pl-1 form-control form-control-inline">
<option value="GET" {{#eq value.requestOptions.method "GET"}}selected="selected"{{/eq}}>GET</option>
<option value="POST" {{#eq value.requestOptions.method "POST"}}selected="selected"{{/eq}}>POST</option>
<option value="PUT" {{#eq value.requestOptions.method "PUT"}}selected="selected"{{/eq}}>PUT</option>
<option value="DELETE" {{#eq value.requestOptions.method "DELETE"}}selected="selected"{{/eq}}>DELETE</option>
<option value="CONNECT" {{#eq value.requestOptions.method "CONNECT"}}selected="selected"{{/eq}}>CONNECT</option>
<option value="HEAD" {{#eq value.requestOptions.method "HEAD"}}selected="selected"{{/eq}}>HEAD</option>
<option value="OPTIONS" {{#eq value.requestOptions.method "OPTIONS"}}selected="selected"{{/eq}}>OPTIONS</option>
<option value="PATCH" {{#eq value.requestOptions.method "PATCH"}}selected="selected"{{/eq}}>PATCH</option>
<option value="TRACE" {{#eq value.requestOptions.method "TRACE"}}selected="selected"{{/eq}}>TRACE</option>
</select>
</div>
{{! Headers }}
<div class="request-headers request-section mt-2">
<div class="form-check w-100">
<input type="checkbox" data-toggle-element=".http-headers" data-toggle-element-reverse=".http-headers-container" data-toggle-class="d-inline-block" class="show-raw-headers ignore-change form-check-input" id="showRawHeaders{{ unique }}" name="showRawHeaders{{ unique }}" title="{{trans.showRawHeaders}}">
<label for="showRawHeaders{{ unique }}" class="show-raw-headers-label form-check-label">{{trans.showRawHeaders}}</label>
</div>
<textarea name="httpHeaders{{ unique }}" id="httpHeaders{{ unique }}" class="http-headers w-100 d-none form-control validated-element form-control-inline" placeholder="{{trans.headers}}"></textarea>
<div class="form-group-command http-headers-container w-100 bg-white p-2 d-none d-inline-block">
<label for="httpHeadersContainer{{ unique }}" class="http-key-value-container-label">{{trans.headers}}</label>
<button class="http-key-value-add btn btn-info btn-sm pull-right" type="button">
<i class="fa fa-plus"></i>
</button>
<div id="httpHeadersContainer{{ unique }}" class="http-key-value-container"></div>
</div>
</div>
{{! Body }}
<div class="request-body request-section mt-2">
{{! Content type }}
<div class="form-group-command">
<label for="httpContentType{{ unique }}" class="pl-1">{{trans.contentType}}:</label>
<select name="httpContentType{{ unique }}" id="httpContentType{{ unique }}" class="http-contenttype form-control form-control-inline">
<option value="application/x-www-form-urlencoded" {{#eq value.contenttype "application/x-www-form-urlencoded"}}selected="selected"{{/eq}}>urlencoded</option>
<option value="application/json" {{#eq value.contenttype "application/json"}}selected="selected"{{/eq}}>json</option>
<option value="text/plain" {{#eq value.contenttype "text/plain"}}selected="selected"{{/eq}}>textplain</option>
</select>
</div>
{{! Body data }}
<div class="form-check w-100 mt-2">
<input type="checkbox" data-toggle-element=".http-data" data-toggle-element-reverse=".http-data-container" data-toggle-class="d-inline-block" class="show-raw-data ignore-change form-check-input" id="showRawData{{ unique }}" name="showRawData{{ unique }}" title="{{trans.showRawBodyData}}">
<label for="showRawData{{ unique }}" class="show-raw-data-label form-check-label">{{trans.showRawData}}</label>
</div>
<textarea name="httpData{{ unique }}" id="httpData{{ unique }}" class="http-data w-100 validated-element d-none form-control form-control-inline" placeholder="{{trans.bodyData}}"></textarea>
<div class="form-group-command http-data-container w-100 bg-white p-2 d-none d-inline-block">
<label for="httpDataContainer{{ unique }}" class="http-key-value-container-label">{{trans.bodyData}}</label>
<button class="http-key-value-add btn btn-info btn-sm pull-right" type="button">
<i class="fa fa-plus"></i>
</button>
<div id="httpDataContainer{{ unique }}" class="http-key-value-container"></div>
</div>
</div>

View File

@@ -0,0 +1,11 @@
<div class="intent-extra-element">
<input class="form-control form-control-inline validated-element extra-name" placeholder="{{trans.name}}" value="{{ name }}">
<select class="form-control form-control-inline extra-type">
<option value="string" {{#eq type "string"}}selected="selected"{{/eq}}>string</option>
<option value="int" {{#eq type "int"}}selected="selected"{{/eq}}>int</option>
<option value="bool" {{#eq type "bool"}}selected="selected"{{/eq}}>bool</option>
<option value="intArray" {{#eq type "intArray"}}selected="selected"{{/eq}}>intArray</option
</select>
<input class="form-control form-control-inline validated-element extra-value" placeholder="{{trans.value}}" value="{{ value }}">
<button type="button" class="btn btn-sm btn-warning pull-right intent-remove-extra"><i class="fa fa-minus"></i></button>
</div>

View File

@@ -0,0 +1,19 @@
<div class="form-group-command intent-type-container">
<label for="intentType{{ unique }}" class="intent-type-label">{{trans.type}}:</label>
<select name="intentType{{ unique }}" id="intentType{{ unique }}" class="intent-type form-control form-control-inline">
<option value="activity" {{#eq value.type "activity"}}selected="selected"{{/eq}}>activity</option>
<option value="service" {{#eq value.type "service"}}selected="selected"{{/eq}}>service</option>
<option value="broadcast" {{#eq value.type "broadcast"}}selected="selected"{{/eq}}>broadcast</option>
</select>
</div>
<input name="intentName{{ unique }}" id="intentName{{ unique }}" class="intent-name form-control validated-element form-control-inline" placeholder="{{trans.intent}}" value="{{ value.name }}">
<div class="form-group-command">
<label for="intentExtraContainer{{ unique }}" class="intent-extra-container-label">{{trans.extra}}:</label>
<button class="intent-add-extra btn btn-info btn-sm pull-right" type="button">
<i class="fa fa-plus"></i>
</button>
<div id="intentExtraContainer{{ unique }}" class="intent-extra-container"></div>
</div>

View File

@@ -0,0 +1,15 @@
<div class="form-check pull-right">
<input type="checkbox" class="show-command-preview form-check-input" id="showCommandPreview{{ unique }}" name="showCommandPreview{{ unique }}" title="{{trans.showCommandPreview}}">
<label for="showCommandPreview{{ unique }}" class="show-command-preview-label form-check-label">{{trans.showCommandPreview}}</label>
</div>
<select class="command-type form-control form-control-inline">
{{#each types}}
<option value="{{ @key }}" {{#eq @key ../type}}selected="selected"{{/eq}}>{{ this }}</option>
{{/each}}
</select>
<div class="command-inputs panel panel-default"></div>
<div disabled="disabled" class="command-preview bg-primary p-2 w-100" data-invalid-message="{{trans.invalidCommand}}">
<code class="text-white"></code>
</div>

View File

@@ -0,0 +1,49 @@
<div class="form-group-command form-group-device form-group-rs232">
<input class="form-control form-control-inline validated-element rs232-text-input rs232-device-name" placeholder="{{trans.deviceNameCOM}}" value="{{ value.cs.deviceName }}">
<input class="form-control form-control-inline validated-element rs232-text-input rs232-baud-rate" placeholder="{{trans.baudRate}}" value="{{ value.cs.baudRate }}">
<input class="form-control form-control-inline validated-element rs232-text-input rs232-data-bits" placeholder="{{trans.dateBits}}" value="{{ value.cs.dataBits }}">
</div>
<div class="form-group-command form-group-rs232">
<div class="col-12 col-sm-6">
<label for="rs232Parity{{ unique }}">{{trans.parity}}:</label>
<select name="rs232Parity{{ unique }}" id="rs232Parity{{ unique }}" class="rs232-parity form-control">
<option value="None" {{#eq value.cs.parity "None"}}selected="selected"{{/eq}}>None</option>
<option value="Odd" {{#eq value.cs.parity "Odd"}}selected="selected"{{/eq}}>Odd</option>
<option value="Even" {{#eq value.cs.parity "Even"}}selected="selected"{{/eq}}>Even</option>
<option value="Mark" {{#eq value.cs.parity "Mark"}}selected="selected"{{/eq}}>Mark</option>
<option value="Space" {{#eq value.cs.parity "Space"}}selected="selected"{{/eq}}>Space</option>
</select>
</div>
<div class="col-12 col-sm-6">
<label for="rs232StopBits{{ unique }}">{{trans.stopBits}}:</label>
<select name="rs232StopBits{{ unique }}" id="rs232StopBits{{ unique }}" class="rs232-stop-bits form-control">
<option value="None" {{#eq value.cs.stopBits "None"}}selected="selected"{{/eq}}>None</option>
<option value="One" {{#eq value.cs.stopBits "One"}}selected="selected"{{/eq}}>One</option>
<option value="Two" {{#eq value.cs.stopBits "Two"}}selected="selected"{{/eq}}>Two</option>
<option value="OnePointFive" {{#eq value.cs.stopBits "OnePointFive"}}selected="selected"{{/eq}}>OnePointFive</option>
</select>
</div>
<div class="col-12 col-sm-6">
<label for="rs232Handshake{{ unique }}">{{trans.handshake}}:</label>
<select name="rs232Handshake{{ unique }}" id="rs232Handshake{{ unique }}" class="rs232-handshake form-control">
<option value="None" {{#eq value.cs.handshake "None"}}selected="selected"{{/eq}}>None</option>
<option value="XOnXOff" {{#eq value.cs.handshake "XOnXOff"}}selected="selected"{{/eq}}>XOnXOff</option>
<option value="RequestToSend" {{#eq value.cs.handshake "RequestToSend"}}selected="selected"{{/eq}}>RequestToSend</option>
<option value="RequestToSendXOnXOff" {{#eq value.cs.handshake "RequestToSendXOnXOff"}}selected="selected"{{/eq}}>RequestToSendXOnXOff</option>
</select>
</div>
<div class="col-12 col-sm-6">
<label for="rs232HexSupport{{ unique }}">{{trans.hexSupport}}:</label>
<select name="rs232HexSupport{{ unique }}" id="rs232HexSupport{{ unique }}" class="rs232-hex-support form-control">
<option value="0" {{#eq value.cs.hexSupport "0"}}selected="selected"{{/eq}}>0</option>
<option value="1" {{#eq value.cs.hexSupport "1"}}selected="selected"{{/eq}}>1</option>
<option value="default 0" {{#eq value.cs.hexSupport "default 0"}}selected="selected"{{/eq}}>default 0</option>
</select>
</div>
</div>
<div class="form-group-command form-group-rs232 command-group">
<input class="form-control rs232-command" placeholder="{{trans.command}}" value="{{ value.command }}">
</div>

View File

@@ -0,0 +1,7 @@
<select name="tpv_ledCommand{{ unique }}" id="tpv_ledCommand{{ unique }}" class="tpv-led-command form-control form-control-inline" style="width:100%">
<option value="off" {{#eq value "off"}}selected="selected"{{/eq}}>{{trans.off}}</option>
<option value="red" {{#eq value "red"}}selected="selected"{{/eq}}>{{trans.red}}</option>
<option value="green" {{#eq value "green"}}selected="selected"{{/eq}}>{{trans.green}}</option>
<option value="blue" {{#eq value "blue"}}selected="selected"{{/eq}}>{{trans.blue}}</option>
<option value="white" {{#eq value "white"}}selected="selected"{{/eq}}>{{trans.white}}</option>
</select>

View File

@@ -0,0 +1,22 @@
<div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">{{title}}</h5>
{{#if buttons.cancel}}
<button type="button" class="close" data-dismiss="modal" aria-label="{{buttons.cancel.label}}">
<span aria-hidden="true">&times;</span>
</button>
{{/if}}
</div>
<div class="modal-body">
<p>{{message}}</p>
</div>
<div class="modal-footer">
{{#each buttons}}
<button type="button" class="btn extra {{class}}">{{label}}</button>
{{/each}}
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,23 @@
<div class="context-menu-overlay" oncontextmenu="return false">
<div class="context-menu context-menu-group">
<div class="main-button-container d-flex flex-column">
{{#if canBeGrouped}}
<div class="context-menu-btn groupElementsBtn" data-title="{{trans.groupElements}}" data-action="Group" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fas fa-chain"></i><span>{{trans.groupElements}}</span>
</div>
{{/if}}
{{#if canBeAddedToGroup}}
<div class="context-menu-btn addElementsToGroupBtn" data-title="{{trans.addElementsToGroup}}" data-action="addToGroup" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fas fa-chain"></i><span>{{trans.addElementsToGroup}}</span>
</div>
{{/if}}
{{#if canBeDeleted}}
<div class="context-menu-btn deleteGroupElementsBtn" data-title="{{trans.deleteGroupElements}}" data-action="Delete" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fa fa-trash"></i><span>{{trans.deleteGroupElements}}</span>
</div>
{{/if}}
</div>
</div>
</div>

View File

@@ -0,0 +1,135 @@
<div class="context-menu-overlay" oncontextmenu="return false">
<div class="context-menu context-menu-{{type}}">
{{#if isSortable}}
<div class="sort-controls-container">
<div class="context-menu-btn" data-title="{{trans.moveTopLeft}}" data-action="Move" data-action-type="topLeft" data-toggle="tooltip" data-container=".context-menu">
<i class="fa fa-fast-backward"></i>
</div>
<div class="context-menu-btn" data-title="{{trans.moveLeft}}" data-action="Move" data-action-type="oneLeft" data-toggle="tooltip" data-container=".context-menu">
<i class="fa fa-backward"></i>
</div>
<div class="context-menu-btn" data-title="{{trans.moveRight}}" data-action="Move" data-action-type="oneRight" data-toggle="tooltip" data-container=".context-menu">
<i class="fa fa-forward"></i>
</div>
<div class="context-menu-btn" data-title="{{trans.moveTopRight}}" data-action="Move" data-action-type="topRight" data-toggle="tooltip" data-container=".context-menu">
<i class="fa fa-fast-forward"></i>
</div>
</div>
{{/if}}
<div class="main-button-container d-flex flex-column">
{{#if canChangeLayer}}
<div class="context-menu-btn" data-title="{{trans.bringToFront}}" data-action="Layer" data-action-type="bringToFront" data-toggle="tooltip" data-container=".context-menu">
<i class="fas fa-caret-square-up"></i><span>{{trans.bringToFront}}</span>
</div>
<div class="context-menu-btn" data-title="{{trans.bringForward}}" data-action="Layer" data-action-type="bringForward" data-toggle="tooltip" data-container=".context-menu">
<i class="fas fa-caret-up"></i><span>{{trans.bringForward}}</span>
</div>
<div class="context-menu-btn" data-title="{{trans.sendBackwards}}" data-action="Layer" data-action-type="sendBackwards" data-toggle="tooltip" data-container=".context-menu">
<i class="fas fa-caret-down"></i><span>{{trans.sendBackwards}}</span>
</div>
<div class="context-menu-btn" data-title="{{trans.sendToBack}}" data-action="Layer" data-action-type="sendToBack" data-toggle="tooltip" data-container=".context-menu">
<i class="fas fa-caret-square-down"></i><span>{{trans.sendToBack}}</span>
</div>
{{/if}}
{{#if canUngroup}}
<div class="context-menu-btn" data-title="{{trans.ungroupElements}}" data-action="Ungroup" data-toggle="tooltip" data-container=".context-menu">
<i class="fas fa-chain-broken"></i><span>{{trans.ungroupElements}}</span>
</div>
{{/if}}
{{#if isEditableWidget}}
{{#if canAttachAudio}}
<div class="context-menu-btn widget-property" data-title="{{trans.editAudio}}" data-property="Audio" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="tool-icon-audio"></i><span>{{trans.editAudio}}</span>
</div>
{{/if}}
{{#eq editor "playlist"}}
<div class="context-menu-btn widget-property" data-title="{{trans.editExpiry}}" data-property="Expiry" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="tool-icon-expiry"></i><span>{{trans.editExpiry}}</span>
</div>
<div class="context-menu-btn widget-property" data-title="{{trans.editTransIn}}" data-property="Transition" data-property-type="in" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="tool-icon-transitionIn"></i><span>{{trans.editTransIn}}</span>
</div>
<div class="context-menu-btn widget-property" data-title="{{trans.editTransOut}}" data-property="Transition" data-property-type="out" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="tool-icon-transitionOut"></i><span>{{trans.editTransOut}}</span>
</div>
{{/eq}}
{{/if}}
{{#if isPlaylist}}
{{#unless isDynamicPlaylist}}
<div class="context-menu-btn editPlaylistBtn" data-title="{{trans.editPlaylist}}" data-action="editPlaylist" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fa fa-edit"></i><span>{{trans.editPlaylist}}</span>
</div>
{{#if playlistCanBeConverted}}
<div class="context-menu-btn convertPlaylistButton" data-title="{{trans.convertPlaylistHelpText}}" data-action="convertPlaylist" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fa fa-refresh"></i><span>{{trans.convertPlaylist}}</span>
</div>
{{/if}}
{{/unless}}
{{/if}}
{{#if isFrameOrZone}}
{{#if widget.isPermissionsModifiable}}
<div class="context-menu-btn permissionsBtn" data-title="{{trans.editPermissions}}" data-property="PermissionsWidget" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="tool-icon-permissions"></i><span>{{trans.editPermissions}}</span>
</div>
{{/if}}
{{else if isPlaylist}}
{{#if isPermissionsModifiable}}
<div class="context-menu-btn permissionsBtn" data-title="{{trans.editPlaylistPermissions}}" data-property="Permissions" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="tool-icon-permissions"></i><span>{{trans.editPlaylistPermissions}}</span>
</div>
{{/if}}
{{else if isElementBased}}
{{#if elementWidget.isPermissionsModifiable}}
<div class="context-menu-btn permissionsBtn" data-title="{{trans.editWidgetPermissions}}" data-property="PermissionsCanvasWidget" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="tool-icon-permissions"></i><span>{{trans.editWidgetPermissions}}</span>
</div>
{{/if}}
{{else}}
{{#if isPermissionsModifiable}}
<div class="context-menu-btn permissionsBtn" data-title="{{trans.editPermissions}}" data-property="Permissions" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="tool-icon-permissions"></i><span>{{trans.editPermissions}}</span>
</div>
{{/if}}
{{/if}}
{{#if canBeCopied}}
<div class="context-menu-btn copyBtn" data-title="{{trans.copy}}" data-action="Copy" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fa fa-copy"></i><span>{{trans.copy}}</span>
</div>
{{/if}}
{{#if canHaveNewConfig}}
<div class="context-menu-btn newConfigBtn" data-title="{{trans.newConfig}}" data-action="newConfig" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fa fa-plus-square"></i><span>{{trans.newConfig}}</span>
</div>
{{/if}}
{{#if canEditText}}
<div class="context-menu-btn editText" data-title="{{trans.editText}}" data-action="editText" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fa fa-edit"></i><span>{{trans.editText}}</span>
</div>
{{/if}}
{{#if isFrameOrZone}}
<div class="context-menu-btn editFrameBtn" data-title="{{trans.options}}" data-action="editFrame" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fa fa-cog"></i><span>{{trans.options}}</span>
</div>
{{/if}}
{{#if isDeletable}}
<div class="context-menu-btn deleteBtn" data-title="{{trans.delete}}" data-action="Delete" data-toggle="tooltip" data-container=".context-menu" data-placement="bottom">
<i class="fa fa-trash"></i><span>{{trans.delete}}</span>
</div>
{{/if}}
</div>
</div>
</div>

View File

@@ -0,0 +1,30 @@
<div class="btn-group pull-right dropdown-menu-container" title="{{translations.rowMenu}}">
<button class="btn btn-white dropdown-toggle" data-toggle="dropdown"></button>
<div class="dropdown-menu dropdown-menu-right" id="dropdown-menu-right-container">
{{#each buttons}}
{{#if divider}}
<div class="dropdown-divider"></div>
{{else multiSelectOnly}}
<a {{#each dataAttributes}} data-{{ name }}="{{ value }}" {{/each}}
class="dropdown-item multi-select-button {{#if class}}{{ class }}{{else}}XiboMultiHiddenButton{{/if}} {{ id }}"
style="display: none;" tabindex="-1" href="#">
{{ text }}
</a>
{{else}}
{{#if external}}
<a class="dropdown-item {{ id }}" id="{{ id }}" tabindex="-1" data-custom-handler="{{ onclick }}"
data-custom-handler-url="{{ onclickParam }}" target="{{ linkType }}" href="{{ url }}" {{#if
title}} title="{{title}}" {{/if}}>{{ text }}</a>
{{/if}}
{{#unless external}}
<a {{#each dataAttributes}} data-{{ name }}="{{ value }}" {{/each}}
class="dropdown-item {{#if multi-select}}multi-select-button{{/if}} {{#if class}}{{ class }}{{else}}XiboFormButton{{/if}} {{ id }}"
href="{{ url }}" {{#if title}} title="{{title}}" {{/if}} tabindex="-1" href="#">
{{ text }}
</a>
{{/unless}}
{{/if}}
{{/each}}
</div>
</div>

View File

@@ -0,0 +1,17 @@
<div class="btn-group dropup mr-2"></div>
<button class="btn btn-primary select-all" data-toggle="selectAll">
{{ selectAll }}
</button>
<button class="btn btn-white dropdown-toggle" data-toggle="dropdown">
{{ withSelected }}
</button>
<div class="dropdown-menu">
{{#each buttons}}
{{#if divider}}
<div class="dropdown-divider"></div>
{{else}}
<a class="dropdown-item XiboMultiSelectFormButton" data-custom-handler="{{ customHandler }}" data-custom-handler-url="{{ customHandlerUrl }}" data-button-id="{{ id }}" data-grid-id="{{ gridId }}" data-content-type="{{ contentType }}" data-content-id-name="{{ contentIdName }}" tabindex="-1" href="#">{{ text }}</a>
{{/if}}
{{/each}}
</div>
</div>

View File

@@ -0,0 +1,19 @@
<div style="margin-top:5px; max-height: 400px; overflow-y: auto;"></div>
{{#if data}}
{{trans.playerStatusWindow}}:
{{#eq type "android"}}
<div class="card p-3 mb-3 bg-light">
<span>{{{data}}}</span>
</div>
{{/eq}}
{{#neq type "android"}}
<div class="card p-3 mb-3 bg-light">
<ul>
{{#each data as |value key|}}
<li>{{key}}: {{value}}</li>
{{/each}}
</ul>
</div>
{{/neq}}
{{/if}}
</div>

View File

@@ -0,0 +1,19 @@
<div class="fallback-data-content">
{{> forms/inputs/message title=trans.message }}
{{> forms/inputs/dropdown value=showFallback id="showFallback"
options=(arr
(obj name='never' title=trans.never)
(obj name='always' title=trans.always)
(obj name='empty' title=trans.empty)
(obj name='error' title=trans.error)
)
optionsTitle="title" optionsValue="name"
title=trans.fallbackTypeTitle helpText=trans.fallbackTypeHelpText }}
{{> forms/button action="add-new-record" type="btn-block btn-primary mb-2" name=trans.addNewRecord }}
<div class="fallback-data-records">
{{! Fallback records }}
</div>
</div>

View File

@@ -0,0 +1,12 @@
<div class="fallback-data-record-preview" data-id="{{field.id}}">
<div class="fallback-data-record-preview-title" title="{{field.title}} ({{field.type}})">
{{field.title}} ({{field.type}})
</div>
<div class="fallback-data-record-preview-value" title="{{data}}">
{{#if data}}
{{data}}
{{else}}
{{trans.noData}}
{{/if}}
</div>
</div>

View File

@@ -0,0 +1,13 @@
<div class="fallback-data-record">
<div class="fallback-data-record-fields">
{{! Fallback record fields }}
</div>
<div class="fallback-data-record-previews">
{{! Fallback record fields }}
</div>
<div class="fallback-data-record-buttons">
{{> forms/button action="delete-record" type="btn-outline-danger fb-btn-delete" name=trans.deleteRecord }}
{{> forms/button action="edit-record" type="btn-outline-primary fb-btn-edit" name=trans.editRecord }}
{{> forms/button action="save-record" type="btn-success fb-btn-save" name=trans.saveRecord }}
</div>
</div>

View File

@@ -0,0 +1,24 @@
<!-- Modal -->
<div id="{{ modal }}" class="modal fade inner-modal" role="dialog">
<div class="modal-dialog modal-sm" style="width:450px;">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">{{trans.selectFolder}}</h4>
<button type="button" class="close btnCloseInnerModal">&times;</button>
</div>
<div class="modal-body">
<div class="form-group card p-3 mb-3 bg-light">
<input id="jstree-search-form" class="form-control" type="text" placeholder="{{trans.search}}">
<div class="folder-search-no-results d-none">
<p>{{trans.noFolderMatch}}</p>
</div>
<div id="{{ container }}"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white btnCloseInnerModal">{{trans.done}}</button>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,9 @@
<div class="form-group row mb-0">
<label class="col-sm-1 control-label" for="seriesColor[]">{{ title }}</label>
<div class="col-sm-4">
<input class="form-control color-picker" name="seriesColor[]" value="{{ color }}" />
</div>
<div class="col-sm-1">
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
</div>
</div>

View File

@@ -0,0 +1,23 @@
<div class="form-group row mb-0">
<label class="col-sm-1 control-label" for="columnType[]">{{ title }}</label>
<div class="col-sm-4">
<label for="columnType[]">
<select class="form-control" name="columnType[]">
{{#each columnTypeOptions}}
<option value="{{ id }}" {{#eq id ../columnType}}selected{{/eq}}>{{ value }}</option>
{{/each}}
</select>
</label>
</div>
<div class="col-sm-4">
<select class="form-control" name="dataSetColumnId[]">
<option value=""></option>
{{#each columns}}
<option value="{{ dataSetColumnId }}" {{#eq dataSetColumnId ../dataSetColumnId}}selected{{/eq}}>{{ heading }}</option>
{{/each}}
</select>
</div>
<div class="col-sm-1">
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
</div>
</div>

View File

@@ -0,0 +1,28 @@
<div class="filter-clause-row flex-nowrap form-inline p-1">
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
<div class="form-group {{#eq title "1"}}d-none{{/eq}}">
<select class="form-control filter-clause-operator" name="filterClauseOperator[]">
{{#each filterOperatorOptions}}
<option value="{{ id }}" {{#eq id ../filterClauseOperator}}selected{{/eq}}>{{ value }}</option>
{{/each}}
</select>
</div>
<div class="form-group">
<select class="form-control filter-clause" name="filterClause[]">
<option value=""></option>
{{#each columns}}
<option value="{{ heading }}" {{#eq heading ../filterClause}}selected{{/eq}}>{{ heading }}</option>
{{/each}}
</select>
</div>
<div class="form-group">
<select class="form-control filter-clause-criteria" name="filterClauseCriteria[]">
{{#each filterOptions}}
<option value="{{ id }}" {{#eq id ../filterClauseCriteria}}selected{{/eq}}>{{ value }}</option>
{{/each}}
</select>
</div>
<div class="form-group">
<input class="form-control filter-clause-value" name="filterClauseValue[]" type="text" value="{{ filterClauseValue }}" />
</div>
</div>

View File

@@ -0,0 +1,17 @@
<div class="order-clause-row flex-nowrap form-inline justify-content-between p-1">
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
<div class="form-group">
<select class="form-control order-clause" name="orderClause[]">
<option value=""></option>
{{#each columns}}
<option value="{{ heading }}" {{#eq heading ../orderClause}} selected{{/eq}}>{{ heading }}</option>
{{/each}}
</select>
</div>
<div class="form-group">
<select class="form-control order-clause-direction" name="orderClauseDirection[]">
<option value="ASC" {{#if orderClauseAsc}}selected{{/if}}>{{ ascTitle }}</option>
<option value="DESC" {{#if orderClauseDesc}}selected{{/if}}>{{ descTitle }}</option>
</select>
</div>
</div>

View File

@@ -0,0 +1,13 @@
<div class="form-group row form-product-options">
<div class="form-group col-xl-5">
<input class="form-control" name="productOptions[]" type="text" value="{{ optionName }}" placeholder="Option Name">
</div>
<div class="form-group col-xl-5">
<input class="form-control" name="productValues[]" type="number" step="0.01" value="{{ optionValue }}" placeholder="Option Value">
</div>
<div class="form-group col-xl-2 px-2 px-xl-0">
<button class="btn btn-success pull-right"><i class="fa {{ buttonGlyph }}"></i></button>
</div>
</div>

View File

@@ -0,0 +1,20 @@
<div class="row-special d-inline-flex flex-nowrap p-1 subplaylist-items-header">
<div class="subplaylist-id-container subplaylist-id-container-header">
{{ trans.playlists }}
</div>
<div class="subplaylist-spots-container" title="{{ trans.spotsHelp }}" data-toggle="tooltip" data-placement="top">
{{ trans.spots }}
</div>
<div class="subplaylist-spots-length-container" title="{{ trans.spotsLengthHelp }}" data-toggle="tooltip" data-placement="top">
{{ trans.spotsLength }}
</div>
<div class="subplaylist-spots-fill-container" title="{{ trans.spotsFillHelp }}" data-toggle="tooltip" data-placement="top">
{{ trans.spotsFill }}
</div>
</div>
<div class="subplaylist-items-content">
<!-- Subplaylist items will be added here -->
</div>
<div class="subplaylist-items-footer">
<button class="btn btn-success w-75 subplaylist-item-btn"><i class="fa fa-plus"></i></button>
</div>

View File

@@ -0,0 +1,22 @@
<div class="subplaylist-item-row form-inline flex-nowrap p-1">
<div class="btn subplaylist-item-sort"><i class="fa fa-arrows-v"></i></div>
<button type="button" class="btn btn-white subplaylist-item-btn"><i class="fa fa-minus"></i></button>
<div class="form-group subplaylist-id-container">
<select class="form-control subplaylist-id" name="playlistId[]" data-field-id="{{playlistId}}">
<option value=""></option>
</select>
</div>
<div class="form-group subplaylist-spots-container">
<input class="form-control subplaylist-spots" name="spots[]" type="number" value="{{ spots }}" />
</div>
<div class="form-group subplaylist-spots-length-container">
<input class="form-control subplaylist-spots-length" name="spotLength[]" type="number" value="{{ spotLength }}" />
</div>
<div class="form-group subplaylist-spots-fill-container">
<select class="form-control subplaylist-spots-fill" name="spotFill[]">
<option value="repeat" {{#eq "repeat" spotFill}}selected{{/eq}} data-template-result="{{ repeatHelpText }}">{{ repeatTitle }}</option>
<option value="fill" {{#eq "fill" spotFill}}selected{{/eq}} data-template-result="{{ fillHelpText }}">{{ fillTitle }}</option>
<option value="pad" {{#eq "pad" spotFill}}selected{{/eq}} data-template-result="{{ padHelpText }}">{{ padTitle }}</option>
</select>
</div>
</div>

View File

@@ -0,0 +1,8 @@
<div class="form-group row form-colors mb-0">
<div class="col-sm-10 pl-0">
{{> forms/inputs/color id=colorId name="color[]" value=value customClass="custom-color" }}
</div>
<div class="col-sm-2">
<button type="button" class="btn btn-white"><i class="fa {{ buttonGlyph }}"></i></button>
</div>
</div>

View File

@@ -0,0 +1,23 @@
<div class="form-clock row mb-2 p-1 alert alert-info">
<div class="form-group localSelect w-75">
<select class="form-control">
<option value selected>Timezone</option>
{{#each timezones}}
<option value="{{ id }}" {{#eq id ../clockTimezone}}selected{{/eq}}>{{ value }}</option>
{{/each}}
</select>
</div>
<div class="form-group w-25">
<button class="btn btn-primary pull-right"><i class="fa {{ buttonGlyph }}"></i></button>
</div>
<div class="form-group w-50">
<input class="form-control clockLabel" type="text" value="{{ clockLabel }}" placeholder="Label" />
</div>
<div class="form-group w-50">
<input type="checkbox" class="clockHighlight" name="clockHighlight" {{#if clockHighlight}}checked{{/if}}>
<label for="clockHighlight">Highlight?</label>
</div>
</div>

View File

@@ -0,0 +1 @@
<button type="button" id="{{id}}" data-action="{{action}}" data-sub-action="{{subAction}}" class="properties-panel-btn xibo-form-btn btn {{type}}">{{name}}</button>

View File

@@ -0,0 +1,18 @@
<div id="{{id}}" class="panel-group" data-group="{{id}}">
<div class="panel-heading" data-toggle="collapse" href="#{{id}}-collapse" aria-expanded="{{#if expanded}}true{{else}}false{{/if}}" aria-controls="{{id}}-collapse">
<h4 class="panel-title">
<i class="fa fa-chevron-down"></i>
<i class="fa fa-chevron-up"></i>
<span>{{title}}</span>
</h4>
{{#if helpText}}
<div class="help-block text-muted">{{helpText}}</div>
{{/if}}
</div>
<div id="{{id}}-collapse" class="panel-collapse collapse {{#if expanded}}show{{/if}}">
<div class="panel-body field-container">
<!-- Fields -->
</div>
</div>
</div>

View File

@@ -0,0 +1,7 @@
<i class="fa fa-info-circle input-info tooltip-always-on"
data-toggle="popover"
data-trigger="hover"
data-placement="bottom"
data-html="true"
data-content='{{content}}'
>

View File

@@ -0,0 +1,6 @@
<span data-placement="bottom"
data-toggle="popover"
data-trigger="hover"
data-html="true"
data-container="body"
data-content="{{content}}"><i class="fa fa-info-circle"></i></span>

View File

@@ -0,0 +1,6 @@
<span class='media'>
<span class='media-left mr-2'>
<img style='max-width: 80px; max-height: 60px;' src='{{image}}' />
</span>
<span class='media-body'>{{title}}</span>
</span>

View File

@@ -0,0 +1,5 @@
<i class="fa fa-question-circle input-info tooltip-always-on xibo-help-text"
data-toggle="tooltip"
data-placement="top"
title="{{helpText}}">
</i>

View File

@@ -0,0 +1,16 @@
<i class="fa fa-warning input-warning tooltip-always-on"
data-toggle="popover"
data-trigger="hover"
data-placement="left"
data-html="true"
data-content='<div class="player-compatibility-helper">
{{#if message }}<div class="message">{{ message }}</div>{{/if}}
<ul>
<li {{#neq android null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/android.png" alt="Android" class="os-icon"></div>{{#if android}}<span class="desc">{{ android }}</span>{{/if}}</li>
<li {{#neq linux null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/linux.png" alt="Linux" class="os-icon"></div>{{#if linux}}<span class="desc">{{ linux }}</span>{{/if}}</li>
<li {{#neq tizen null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/tizen.png" alt="Tizen" class="os-icon"></div>{{#if tizen}}<span class="desc">{{ tizen }}</span>{{/if}}</li>
<li {{#neq webos null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/webos.png" alt="webOS" class="os-icon"></div>{{#if webos}}<span class="desc">{{ webos }}</span>{{/if}}</li>
<li {{#neq windows null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/windows.png" alt="Windows" class="os-icon"></div>{{#if windows}}<span class="desc">{{ windows }}</span>{{/if}}</li>
<li {{#neq chromeos null}}class="unsupported"{{/neq}}><div class="os-icon-container"><img src="/dist/assets/players/chromeos.png" alt="ChromeOS" class="os-icon"></div>{{#if chromeos}}<span class="desc">{{ chromeos }}</span>{{/if}}</li>
</ul>
</div>'>

View File

@@ -0,0 +1,9 @@
<div class="form-editor-controls rich-text-dimensions-control">
<label class="font-weight-bold control-label m-0">{{trans.widgetDimensions }}</label>
<div class="form-group form-group-width">
<input type="number" class="form-control text-editor-width" id="editorWidth" placeholder="{{trans.width }}" title="{{trans.width }}" value="{{dimensions.width}}">
</div>
<div class="form-group form-group-height">
<input type="number" class="form-control text-editor-height" id="editorHeight" placeholder="{{trans.height }}" title="{{trans.height }}" value="{{dimensions.height}}">
</div>
</div>

View File

@@ -0,0 +1,36 @@
<div class="form-group xibo-form-input button-switch-input-group
{{customClass}}
{{variant}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
>
<label for="{{#unless forceId}}input_{{/unless}}{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{> add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<input id="{{#unless forceId}}input_{{/unless}}{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}" type="hidden"/>
<div class="btn-group btn-block" role="group"
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
{{#if readonly}}readonly{{/if}}
>
{{!-- Set default property values --}}
{{#unless optionsValue}}
{{set "optionsValue" "name"}}
{{/unless}}
{{#unless optionsTitle}}
{{set "optionsTitle" "title"}}
{{/unless}}
{{!-- Render options --}}
{{#each options}}
<button type="button" class="btn btn-sm {{#eq (lookup this ../optionsValue) ../value}}selected{{/eq}}"
data-value="{{lookup this ../optionsValue}}"
>{{lookup this ../optionsTitle}}</button>
{{/each}}
</div>
</div>

View File

@@ -0,0 +1,3 @@
<div class="canvas-widget-control mb-2">
{{> dropdown id="canvasWidgetControl" value=widgetId title=trans.canvasWidgets customClass="canvas-widget-control-dropdown" options=widgets optionsTitle="widgetName" optionsValue="widgetId" helpText=trans.canvasWidgetsHelp }}
</div>

View File

@@ -0,0 +1,17 @@
<div class="form-check pb-3 xibo-form-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
>
<input type="checkbox" class="form-check-input" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" {{#eq (number value) 1}}checked="checked"{{/eq}}
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
/>
<label for="input_{{id}}" class="form-check-label"><strong>{{title}}</strong></label>
<div class="input-info-container pt-0">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
</div>

View File

@@ -0,0 +1,25 @@
<div class="form-group code-input-group xibo-code-input xibo-form-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
>
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<textarea class="form-control code-input d-none" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" rows="{{rows}}" data-code-type="{{variant}}"
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
>{{value}}</textarea>
<div class="code-input-editor-container non-scroll">
<div class="code-input-editor-scrollable">
<div class="code-input-editor"></div>
</div>
<button type="button" class="code-input-fs-btn btn btn-sm btn-white">
<i class="fas fa-arrows-alt hide-on-code-fs"></i>
<i class="fas fa-compress-arrows-alt show-on-code-fs"></i>
</button>
</div>
</div>

View File

@@ -0,0 +1,27 @@
<div class="form-group colorpicker-form-element colorpicker-input xibo-form-input {{customClass}}"
{{#if default}}data-default="{{default}}"{{/if}}
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
{{#if colorFormat}}data-color-format="{{colorFormat}}"{{/if}}
>
{{#if title}}
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
{{/if}}
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<div class="input-group">
<div class="input-group-prepend">
<i class="input-group-text input-group-addon" id="{{id}}_label"></i>
</div>
<input type="text" class="form-control" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}"
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
/>
</div>
<div class="picker-container"><!-- Container for the picker dropdown --></div>
</div>

View File

@@ -0,0 +1,35 @@
<div class="form-group color-gradient {{customClass}} xibo-form-input"
{{#if default}}data-default="{{default}}"{{/if}}
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
{{#if colorFormat}}data-color-format="{{colorFormat}}"{{/if}}
>
{{#if title}}
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
{{/if}}
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<div class="color-gradient-colours">
{{> color id='gradientColor1' name="" title=trans.colorGradient.gradientColor1}}
{{> color id='gradientColor2' name="" title=trans.colorGradient.gradientColor2}}
</div>
{{> dropdown id='gradientType' name="" title=trans.colorGradient.gradientType
optionsTitle="title" optionsValue="name"
options=(arr
(obj name='linear' title=trans.colorGradient.gradientTypeLinear)
(obj name='radial' title=trans.colorGradient.gradientTypeRadial)
)
helpText=helpText
}}
<div class="color-gradient-angle">
{{> number id='gradientAngle' name="" title=trans.colorGradient.gradientAngle}}
</div>
{{> hidden name=name customClass="color-gradient-hidden" value=value }}
</div>

View File

@@ -0,0 +1 @@
{{> text id=id name=name value=value title=title customClass="XiboCommand xibo-command-builder" helpText=helpText}}

View File

@@ -0,0 +1,17 @@
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
customData=(arr
(obj name='width' value='100%')
(obj name='allow-clear' value='true')
(obj name='placeholder--id' value=null)
(obj name='placeholder--value' value='')
(obj name='search-url' value=commandSearchUrl)
(obj name='search-term' value='command')
(obj name='id-property' value='code')
(obj name='text-property' value='command')
(obj name='selected-property' value='selected')
(obj name='initial-value' value=initialValue)
(obj name='initial-key' value=initialKey)
)
helpText=helpText
}}

View File

@@ -0,0 +1,28 @@
{{#if isAutoComplete }}
{{> text id=id name=name value=value title=title helpText=helpText
customData=(arr
(obj name='role' value='panelTagsInput')
(obj name='auto-complete-url' value=connectorPropertiesUrl)
(obj name='search-term-key' value=name)
)
}}
{{else}}
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
customData=(arr
(obj name='width' value='100%')
(obj name='allow-clear' value='true')
(obj name='placeholder--id' value=null)
(obj name='placeholder--value' value='')
(obj name='search-url' value=connectorPropertiesUrl)
(obj name='search-term' value='name')
(obj name='id-property' value='type')
(obj name='text-property' value='name')
(obj name='selected-property' value='selected')
(obj name='initial-value' value=initialValue)
(obj name='initial-key' value=initialKey)
(obj name='display-all' value=true)
)
helpText=helpText
}}
{{/if}}

View File

@@ -0,0 +1,9 @@
<div class="xibo-form-input custom-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
>
<input type="hidden" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}"
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}" />
</div>

View File

@@ -0,0 +1,26 @@
<div class="dataset-col-style pt-2 my-3"
data-component-id="{{id}}"
>
<div class="dataset-col-style-title">{{name}}</div>
<div class="dataset-col-style-properties" id="{{concat "dataset-col-style-properties-" id}}" data-type="{{type}}">
{{#eq type "image"}}
{{> number value=value.opacity name=(concat 'style_' id '_opacity') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='opacity')) title=trans.form.opacity}}
{{> number value=value.width name=(concat 'style_' id '_width') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='width')) title=trans.form.width}}
{{> number value=value.height name=(concat 'style_' id '_height') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='height')) title=trans.form.height}}
{{else}}
{{> number value=value.fontSize name=(concat 'style_' id '_fontSize') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='fontSize')) title=trans.form.fontSize}}
{{> color value=value.fontColor name=(concat 'style_' id '_fontColor') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='fontColor')) title=trans.form.fontColor}}
{{> dropdown value=value.fontFamily name=(concat 'style_' id '_fontFamily') title=trans.form.fontFamily customClass="font-selector dataset-col-style-property"
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
customData=(arr
(obj name='search-url' value=fontsSearchUrl)
(obj name='value' value=value.fontFamily)
(obj name='dataset-col-style-input' value='fontFamily')
)
}}
{{> checkbox value=value.bold name=(concat 'style_' id '_bold') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='bold')) title=trans.form.bold}}
{{> checkbox value=value.italics name=(concat 'style_' id '_italics') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='italics')) title=trans.form.italics}}
{{> checkbox value=value.underline name=(concat 'style_' id '_underline') customClass="dataset-col-style-property" customData=(arr (obj name='dataset-col-style-input' value='underline')) title=trans.form.underline}}
{{/eq}}
</div>
</div>

View File

@@ -0,0 +1,19 @@
<div class="xibo-form-input dataset-column-style-selector pb-2"
data-select-id="{{id}}"
>
<div class="connectedlist w-50">
<p class="text-info text-center col-out-title mb-1">{{trans.colAvailable}}1</p>
<ul id="colsOut" class="connectedSortable m-auto text-center">
</ul>
</div>
<div class="connectedlist w-50">
<p class="text-info text-center col-in-title mb-1">{{trans.colSelected}}2</p>
<ul id="colsIn" class="connectedSortable m-auto text-center">
</ul>
</div>
{{> hidden id=id name=name value=value }}
<div class="dataset-column-styles">
<!-- COL STYLES -->
</div>
</div>

View File

@@ -0,0 +1,15 @@
<div class="xibo-form-input dataset-column-selector pb-2"
data-select-id="{{id}}"
>
<div class="connectedlist w-50">
<p class="text-info text-center col-out-title mb-1">{{trans.colAvailable}}1</p>
<ul id="columnsOut" class="connectedSortable m-auto text-center">
</ul>
</div>
<div class="connectedlist w-50">
<p class="text-info text-center col-in-title mb-1">{{trans.colSelected}}2</p>
<ul id="columnsIn" class="connectedSortable m-auto text-center">
</ul>
</div>
{{> hidden id=id name=name value=value }}
</div>

View File

@@ -0,0 +1,4 @@
{{> dropdown id=id name=name value=value title=title customClass="dataset-field-selector"
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
helpText=helpText
}}

View File

@@ -0,0 +1,6 @@
<div class="xibo-form-input dataset-filter-clause"
data-filter-id="{{id}}"
>
<div class="filter-clause-container alert alert-primary p-2 overflow-auto"></div>
{{> hidden id=id name=name value=value }}
</div>

View File

@@ -0,0 +1,6 @@
<div class="xibo-form-input dataset-order-clause"
data-order-id="{{id}}"
>
<div class="order-clause-container alert alert-primary p-2 overflow-auto"></div>
{{> hidden id=id name=name value=value }}
</div>

View File

@@ -0,0 +1,17 @@
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
customData=(arr
(obj name='width' value='100%')
(obj name='allow-clear' value='true')
(obj name='placeholder--id' value=null)
(obj name='placeholder--value' value='')
(obj name='search-url' value=datasetSearchUrl)
(obj name='search-term' value='dataSet')
(obj name='id-property' value='dataSetId')
(obj name='text-property' value='dataSet')
(obj name='selected-property' value='selected')
(obj name='initial-value' value=initialValue)
(obj name='initial-key' value=initialKey)
)
helpText=helpText
}}

View File

@@ -0,0 +1,20 @@
<div class="form-group xibo-form-input date-input-group {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
>
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<div class="input-group">
<input type="text" class="form-control dateControl {{variant}}" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}" {{#if format }}data-custom-format="{{ format }}"{{/if}}
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
/>
<span class="input-group-append input-group-addon input-group-text date-clear-button d-none" role="button"><i
class="fa fa-times"></i></span>
</div>
</div>

View File

@@ -0,0 +1,5 @@
<div class="xibo-form-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
>
<hr id="input_{{id}}" class="divider ml-5 mr-5" ></hr>
</div>

View File

@@ -0,0 +1,43 @@
<div class="form-group xibo-form-input dropdown-input-group
{{#if selectType}}{{selectType}}{{else}}localSelect{{/if}}
{{customClass}}
{{variant}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
>
<label for="{{#unless forceId}}input_{{/unless}}{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<select class="form-control" id="{{#unless forceId}}input_{{/unless}}{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}"
{{#if multiple}}multiple{{/if}}
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
{{#if readonly}}readonly{{/if}}
>
{{!-- Set default property values --}}
{{#unless optionsValue}}
{{set "optionsValue" "name"}}
{{/unless}}
{{#unless optionsTitle}}
{{set "optionsTitle" "title"}}
{{/unless}}
{{!-- Render options --}}
{{#each options}}
<option value="{{lookup this ../optionsValue}}"
{{#eq (lookup this ../optionsValue) ../value}}selected{{/eq}}
{{#if image}}
data-content="{{> add-ons/dropdownOptionImage image=image title=(lookup this ../optionsTitle) }}"
{{/if}}
{{#if set}}
data-set="{{#each set}}{{this}}{{#unless @last}},{{/unless}}{{/each}}"
{{/if}}
>{{lookup this ../optionsTitle}}</option>
{{/each}}
</select>
</div>

View File

@@ -0,0 +1,5 @@
{{> dropdown id=id name=name value=value title=title customClass="effect-selector"
options=options optionsTitle="title" optionsValue="name"
customData=(arr (obj name="effects-type" value=variant) (obj name="value" value=value))
helpText=helpText
}}

View File

@@ -0,0 +1,8 @@
{{> dropdown id=id name=name value=value title=title customClass=(concat "font-selector " customClass)
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
customData=(arr
(obj name='search-url' value=fontsSearchUrl)
(obj name='value' value=value)
)
helpText=helpText
}}

View File

@@ -0,0 +1,13 @@
{{> dropdown id=id name=name title=title
value=value
selectType="localSelect"
optionsTitle="title" optionsValue="name"
options=(arr
(obj name='auto' title='Automatically select based on geographic location')
(obj name='ca' title='Canada')
(obj name='si' title='Standard International Units')
(obj name='uk2' title='United Kingdom')
(obj name='us' title='United States')
)
helpText=helpText
}}

View File

@@ -0,0 +1,5 @@
<div class="xibo-form-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
>
<div id="input_{{id}}" class="header pt-3 mb-1 {{variant}}" >{{title}}</div>
</div>

View File

@@ -0,0 +1,7 @@
<input name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" class="{{customClass}}" type="hidden" id="input_{{ id }}" value="{{ value }}"
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
/>

View File

@@ -0,0 +1,11 @@
<div class="form-group xibo-form-input image-replace-control">
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<div class="image-replace-control-area">
<div>{{helpText}}</div>
</div>
</div>

View File

@@ -0,0 +1,19 @@
<div class="form-group xibo-form-input key-capture-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
data-capture-target-id="{{target}}"
>
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<div class="key-capture-input-wrapper">
<input type="text" class="key-capture-area" id="input_{{id}}">
<span class="clear-key-button fas fa-times" title="{{trans.clearKey}}"></span>
</div>
<div class="key-capture-error"></div>
</div>

View File

@@ -0,0 +1,147 @@
{{> dropdown id=id name=name title=title
value=value
selectType="languageSelect"
variant=variant
optionsTitle="title" optionsValue="name"
options=(arr
(obj name=null title='')
(obj name='af' title='Afrikaans')
(obj name='ar-dz' title='Arabic (Algeria)')
(obj name='ar-kw' title='Arabic (Kuwait)')
(obj name='ar-ly' title='Arabic (Libya)')
(obj name='ar-ma' title='Arabic (Morocco)')
(obj name='ar-sa' title='Arabic (Saudi Arabia)')
(obj name='ar-tn' title='Arabic (Tunisia)')
(obj name='ar' title='Arabic')
(obj name='az' title='Azerbaijani')
(obj name='be' title='Belarusian')
(obj name='bg' title='Bulgarian')
(obj name='bm' title='Bambara')
(obj name='bn-bd' title='Bengali (Bangladesh)')
(obj name='bn' title='Bengali')
(obj name='bo' title='Tibetan')
(obj name='br' title='Breton')
(obj name='bs' title='Bosnian')
(obj name='ca' title='Catalan')
(obj name='cs' title='Czech')
(obj name='cv' title='Chuvash')
(obj name='cy' title='Welsh')
(obj name='da' title='Danish')
(obj name='de-at' title='German (Austria)')
(obj name='de-ch' title='German (Switzerland)')
(obj name='de' title='German')
(obj name='dv' title='Divehi')
(obj name='el' title='Greek')
(obj name='en-au' title='English (Australia)')
(obj name='en-ca' title='English (Canada)')
(obj name='en-gb' title='English (United Kingdom)')
(obj name='en-ie' title='English (Ireland)')
(obj name='en-il' title='English (Israel)')
(obj name='en-in' title='English (India)')
(obj name='en-nz' title='English (New Zealand)')
(obj name='en-sg' title='English (Singapore)')
(obj name='eo' title='Esperanto')
(obj name='es-do' title='Spanish (Dominican Republic)')
(obj name='es-mx' title='Spanish (Mexico)')
(obj name='es-us' title='Spanish (United States)')
(obj name='es' title='Spanish')
(obj name='et' title='Estonian')
(obj name='eu' title='Basque')
(obj name='fa' title='Persian')
(obj name='fi' title='Finnish')
(obj name='fil' title='Filipino')
(obj name='fo' title='Faroese')
(obj name='fr-ca' title='French (Canada)')
(obj name='fr-ch' title='French (Switzerland)')
(obj name='fr' title='French')
(obj name='fy' title='Western Frisian')
(obj name='gd' title='Scottish Gaelic')
(obj name='gl' title='Galician')
(obj name='gom-latn' title='gom (Latin)')
(obj name='gu' title='Gujarati')
(obj name='he' title='Hebrew')
(obj name='hi' title='Hindi')
(obj name='hr' title='Croatian')
(obj name='hu' title='Hungarian')
(obj name='hy-am' title='Armenian (Armenia)')
(obj name='id' title='Indonesian')
(obj name='is' title='Icelandic')
(obj name='it-ch' title='Italian (Switzerland)')
(obj name='it' title='Italian')
(obj name='ja' title='Japanese')
(obj name='jv' title='Javanese')
(obj name='ka' title='Georgian')
(obj name='kk' title='Kazakh')
(obj name='km' title='Khmer')
(obj name='kn' title='Kannada')
(obj name='ko' title='Korean')
(obj name='ku' title='Kurdish')
(obj name='ky' title='Kirghiz')
(obj name='lb' title='Luxembourgish')
(obj name='lo' title='Lao')
(obj name='lt' title='Lithuanian')
(obj name='lv' title='Latvian')
(obj name='me' title='Montenegrin')
(obj name='mi' title='Maori')
(obj name='mk' title='Macedonian')
(obj name='ml' title='Malayalam')
(obj name='mn' title='Mongolian')
(obj name='mr' title='Marathi')
(obj name='ms-my' title='Malay (Malaysia)')
(obj name='ms' title='Malay')
(obj name='mt' title='Maltese')
(obj name='my' title='Burmese')
(obj name='nb' title='Norwegian Bokmål')
(obj name='ne' title='Nepali')
(obj name='nl-be' title='Dutch (Belgium)')
(obj name='nl' title='Dutch')
(obj name='nn' title='Norwegian Nynorsk')
(obj name='pa-in' title='Punjabi (India)')
(obj name='pl' title='Polish')
(obj name='pt-br' title='Portuguese (Brazil)')
(obj name='pt' title='Portuguese')
(obj name='ro' title='Romanian')
(obj name='ru' title='Russian')
(obj name='sd' title='Sindhi')
(obj name='se' title='Northern Sami')
(obj name='si' title='Sinhala')
(obj name='sk' title='Slovak')
(obj name='sl' title='Slovenian')
(obj name='sq' title='Albanian')
(obj name='sr-cyrl' title='Serbian (Cyrillic)')
(obj name='sr' title='Serbian')
(obj name='ss' title='Swati')
(obj name='sv' title='Swedish')
(obj name='sw' title='Swahili')
(obj name='ta' title='Tamil')
(obj name='te' title='Telugu')
(obj name='tet' title='Tetum')
(obj name='tg' title='Tajik')
(obj name='th' title='Thai')
(obj name='tk' title='Turkmen')
(obj name='tl-ph' title='Tagalog (Philippines)')
(obj name='tlh' title='Klingon')
(obj name='tr' title='Turkish')
(obj name='tzl' title='Talossan')
(obj name='tzm-latn' title='Central Atlas Tamazight (Latin)')
(obj name='tzm' title='Central Atlas Tamazight')
(obj name='ug-cn' title='Uyghur (China)')
(obj name='uk' title='Ukrainian')
(obj name='ur' title='Urdu')
(obj name='uz-latn' title='Uzbek (Latin)')
(obj name='uz' title='Uzbek')
(obj name='vi' title='Vietnamese')
(obj name='x-pseudo' title='Pseudo')
(obj name='yo' title='Yoruba (Nigeria)')
(obj name='zh-cn' title='Chinese (China)')
(obj name='zh-hk' title='Chinese (Hong Kong)')
(obj name='zh-mo' title='Chinese (Macau)')
(obj name='zh-tw' title='Chinese (Taiwan)')
)
customData=(arr
(obj name='allow-clear' value='true')
(obj name='placeholder--id' value=null)
(obj name='placeholder--value' value='')
)
helpText=helpText
}}

View File

@@ -0,0 +1,25 @@
{{#if variant}}
{{set "filterOptions" '{"type":"{{variant}}"}'}}
{{else}}
{{set "filterOptions" '{"type":"image"}'}}
{{/if}}
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
customData=(arr
(obj name='width' value='100%')
(obj name='allow-clear' value='true')
(obj name='placeholder--id' value=null)
(obj name='placeholder--value' value='')
(obj name='search-url' value=mediaSearchUrl)
(obj name='search-term' value='media')
(obj name='search-term-tags' value='tags')
(obj name='id-property' value='mediaId')
(obj name='text-property' value='name')
(obj name='selected-property' value='selected')
(obj name='initial-value' value=initialValue)
(obj name='initial-key' value=initialKey)
(obj name='filter-options' value=filterOptions)
)
helpText=helpText
}}

View File

@@ -0,0 +1,18 @@
{{> dropdown id=id name=name value=value title=title selectType="dependsSelect" customClass="menu-board-category-selector"
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
customData=(arr
(obj name='width' value='100%')
(obj name='allow-clear' value='true')
(obj name='placeholder--id' value=null)
(obj name='placeholder--value' value='')
(obj name='search-url-base' value=menuBoardCategorySearchUrl)
(obj name='search-url' value=menuBoardCategorySearchUrl)
(obj name='search-term' value='name')
(obj name='id-property' value='menuCategoryId')
(obj name='text-property' value='name')
(obj name='selected-property' value='selected')
(obj name='initial-value' value=initialValue)
(obj name='initial-key' value=initialKey)
)
helpText=helpText
}}

View File

@@ -0,0 +1,17 @@
{{> dropdown id=id name=name value=value title=title selectType="pagedSelect"
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
customData=(arr
(obj name='width' value='100%')
(obj name='allow-clear' value='true')
(obj name='placeholder--id' value=null)
(obj name='placeholder--value' value='')
(obj name='search-url' value=menuBoardSearchUrl)
(obj name='search-term' value='name')
(obj name='id-property' value='menuId')
(obj name='text-property' value='name')
(obj name='selected-property' value='selected')
(obj name='initial-value' value=initialValue)
(obj name='initial-key' value=initialKey)
)
helpText=helpText
}}

View File

@@ -0,0 +1,5 @@
<div class="xibo-form-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
>
<div id="input_{{id}}" class="alert {{#if variant}}alert-{{variant}}{{else}}alert-info{{/if}}" >{{title}}</div>
</div>

View File

@@ -0,0 +1,17 @@
<div class="form-group xibo-form-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
>
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<input type="number" class="form-control" {{#if step}}step="{{step}}"{{/if}} id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" {{#if min}}min="{{min}}"{{/if}} value="{{value}}"
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
/>
</div>

View File

@@ -0,0 +1,7 @@
<div class="xibo-form-input playlist-mixer"
data-mixer-id="{{id}}"
data-playlist-id="{{playlistId}}"
>
<div class="mixer-playlist-container alert alert-primary overflow-auto"></div>
{{> hidden id=id name=name value=value }}
</div>

View File

@@ -0,0 +1,24 @@
<div class="form-group xibo-form-input rich-text-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
>
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<div class="rich-text-main-container">
<div class="text-area-buttons"></div>
<div class="rich-text-container-wrapper">
<div class="rich-text-container">
<textarea type="text" class="form-control rich-text" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}"
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
/>{{value}}</textarea>
<div class="rich-text-editor" data-target="input_{{id}}" data-allow-lib-refs="{{allowLibraryRefs}}"></div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,13 @@
<div class="form-group xibo-form-input dropdown-input-group localSelect snippet-selector"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
title="{{helpText}}">
<select class="form-control" id="input_{{id}}"
data-mode="{{mode}}"
data-target="{{target}}"
data-placeholder="{{title}}">
<option></option>
{{#each options}}
<option value="{{name}}">{{title}}</option>
{{/each}}
</select>
</div>

View File

@@ -0,0 +1,17 @@
<div class="form-group xibo-form-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
>
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<input type="text" class="form-control" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" value="{{value}}"
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
/>
</div>

View File

@@ -0,0 +1,18 @@
<div class="form-group xibo-form-input {{customClass}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
{{#if isRequired}}data-is-required="{{isRequired}}"{{/if}}
>
<label for="input_{{id}}" class="control-label"><strong>{{title}}</strong></label>
<div class="input-info-container">
{{#if helpText}}
{{>add-ons/helpText helpText=helpText}}
{{/if}}
</div>
<div class="text-area-buttons"></div>
<textarea class="form-control" id="input_{{id}}" name="{{#if name}}{{name}}{{else}}{{id}}{{/if}}" rows="6"
{{#each customData}}
data-{{this.name}}="{{this.value}}"
{{/each}}
/>{{value}}</textarea>
</div>

View File

@@ -0,0 +1,20 @@
<div class="xibo-form-input ticker-tag-selector pb-2"
data-select-id="{{id}}"
>
<div class="connectedlist w-50">
<p class="text-info text-center col-out-title mb-0">{{trans.tagAvailable}}1</p>
<ul id="tagsOut" class="connectedSortable m-auto text-center">
</ul>
</div>
<div class="connectedlist w-50">
<p class="text-info text-center col-in-title mb-0">{{trans.tagSelected}}2</p>
<ul id="tagsIn" class="connectedSortable m-auto text-center">
</ul>
</div>
{{> hidden id=id name=name value=value }}
<div class="ticker-tag-styles">
<!-- TAG STYLES -->
</div>
</div>

View File

@@ -0,0 +1,26 @@
<div class="ticker-tag-style pt-2 my-3"
data-component-id="{{id}}"
>
<div class="ticker-tag-style-title">{{lookup trans id}}</div>
<div class="ticker-tag-style-properties" id="{{concat "ticker-tag-style-properties-" id}}" data-type="{{id}}">
{{#eq type "image"}}
{{> number value=value.opacity name=(concat 'style_' id '_opacity') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='opacity')) title=trans.form.opacity}}
{{> number value=value.width name=(concat 'style_' id '_width') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='width')) title=trans.form.width}}
{{> number value=value.height name=(concat 'style_' id '_height') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='height')) title=trans.form.height}}
{{else}}
{{> number value=value.fontSize name=(concat 'style_' id '_fontSize') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='fontSize')) title=trans.form.fontSize}}
{{> color value=value.fontColor name=(concat 'style_' id '_fontColor') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='fontColor')) title=trans.form.fontColor}}
{{> dropdown value=value.fontFamily name=(concat 'style_' id '_fontFamily') title=trans.form.fontFamily customClass="font-selector ticker-tag-style-property"
options=(arr (obj name='' title='')) optionsTitle="title" optionsValue="name"
customData=(arr
(obj name='search-url' value=fontsSearchUrl)
(obj name='value' value=value.fontFamily)
(obj name='tag-style-input' value='fontFamily')
)
}}
{{> checkbox value=value.bold name=(concat 'style_' id '_bold') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='bold')) title=trans.form.bold}}
{{> checkbox value=value.italics name=(concat 'style_' id '_italics') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='italics')) title=trans.form.italics}}
{{> checkbox value=value.underline name=(concat 'style_' id '_underline') customClass="ticker-tag-style-property" customData=(arr (obj name='tag-style-input' value='underline')) title=trans.form.underline}}
{{/eq}}
</div>
</div>

View File

@@ -0,0 +1,3 @@
<div class="widget-info-container mb-1">
<span class="widget-info-name" title="{{trans.widgetName}}">{{widget.widgetName}}</span>
</div>

View File

@@ -0,0 +1,8 @@
<div class="xibo-form-input world-clock-control"
data-order-id="{{id}}"
{{#if visibility}}data-visibility="{{visibility}}"{{/if}}
{{#if dependsOn}}data-depends-on="{{dependsOn}}"{{/if}}
>
<div class="clocksContainer"></div>
{{> hidden id=id name=name value=value customClass="world-clock-value" }}
</div>

Some files were not shown because too many files have changed in this diff Show More