Initial commit
This commit is contained in:
10
client/custom/modules/advanced/css/advanced.css
Normal file
10
client/custom/modules/advanced/css/advanced.css
Normal file
@@ -0,0 +1,10 @@
|
||||
.panel {
|
||||
&:has(> .panel-body > .report-container .chart-container) {
|
||||
//overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
.chart-container[data-type="line"] {
|
||||
margin-right: var(--16px);
|
||||
margin-left: var(--2px);
|
||||
}
|
||||
40
client/custom/modules/advanced/css/bpmn.css
Normal file
40
client/custom/modules/advanced/css/bpmn.css
Normal file
@@ -0,0 +1,40 @@
|
||||
@font-face {
|
||||
font-family: 'bpmn';
|
||||
src: url('../fonts/bpmn.eot?w7in3t');
|
||||
src: url('../fonts/bpmn.eot?w7in3t#iefix') format('embedded-opentype'),
|
||||
url('../fonts/bpmn.ttf?w7in3t') format('truetype'),
|
||||
url('../fonts/bpmn.woff?w7in3t') format('woff'),
|
||||
url('../fonts/bpmn.svg?w7in3t#bpmn') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
[class^="bpmn-icon-"], [class*=" bpmn-icon-"] {
|
||||
font-family: 'bpmn' !important;
|
||||
speak: none;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.bpmn-icon-event:before {
|
||||
content: "\e900";
|
||||
}
|
||||
|
||||
.bpmn-icon-gateway:before {
|
||||
content: "\e901";
|
||||
}
|
||||
|
||||
.bpmn-icon-hand:before {
|
||||
content: "\e902";
|
||||
}
|
||||
|
||||
.bpmn-icon-task:before {
|
||||
content: "\e903";
|
||||
}
|
||||
|
||||
BIN
client/custom/modules/advanced/fonts/bpmn.eot
Normal file
BIN
client/custom/modules/advanced/fonts/bpmn.eot
Normal file
Binary file not shown.
14
client/custom/modules/advanced/fonts/bpmn.svg
Normal file
14
client/custom/modules/advanced/fonts/bpmn.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Generated by IcoMoon</metadata>
|
||||
<defs>
|
||||
<font id="icomoon" horiz-adv-x="1024">
|
||||
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
||||
<missing-glyph horiz-adv-x="1024" />
|
||||
<glyph unicode=" " horiz-adv-x="512" d="" />
|
||||
<glyph unicode="" glyph-name="event" d="M456.824 888.284c-312.412-39.596-484.524-382.884-330.486-659.164 112.018-200.909 367.132-280.714 576.891-180.462 277.571 132.662 338.296 499.615 118.531 716.25-94.072 92.733-233.856 139.991-364.936 123.377zM579.904 797.476c283.433-57.388 386.237-405.732 178.737-605.64-203.090-195.661-539.922-89.285-596.116 188.26-49.585 244.89 172.49 466.964 417.38 417.38z" />
|
||||
<glyph unicode="" glyph-name="gateway" d="M278.395 681.595l-232.315-232.325 465.92-465.9 465.92 465.9-232.315 232.325c-127.772 127.78-232.896 232.325-233.605 232.325s-105.833-104.545-233.605-232.325zM683.489 620.831l170.194-170.209-17.882-18.127c-100.076-101.455-321.58-321.134-323.802-321.134s-223.726 219.679-323.802 321.134l-17.882 18.127 170.194 170.209c93.606 93.614 170.778 170.209 171.489 170.209s77.883-76.595 171.489-170.209z" />
|
||||
<glyph unicode="" glyph-name="hand" d="M502.857 886.857q-26.286 0-45.143-18.857t-18.857-45.143v-374.857h-18.286v301.714q0 26.286-18.857 45.143t-45.143 18.857-45.143-18.857-18.857-45.143v-448l-88 117.143q-21.714 29.143-58.286 29.143-30.286 0-51.714-21.429t-21.429-51.714q0-24.571 14.857-44l219.429-292.571q21.714-29.143 58.286-29.143h393.143q19.429 0 34.857 12.571t19.429 32l43.429 231.429q2.857 18.286 2.857 33.714v284.571q0 26.286-18.857 45.143t-45.143 18.857-45.143-18.857-18.857-45.143v-155.429h-18.286v301.714q0 26.286-18.857 45.143t-45.143 18.857-45.143-18.857-18.857-45.143v-301.714h-18.286v374.857q0 26.286-18.857 45.143t-45.143 18.857zM502.857 960q38.857 0 71.714-20.286t50.571-55.143q10.857 2.286 24 2.286 56.571 0 96.857-40.286t40.286-96.857v-9.714q60 3.429 103.143-36.571t43.143-100v-284.571q0-22.857-4.571-47.429l-43.429-230.857q-8-45.143-43.714-74.857t-82-29.714h-393.143q-34.286 0-65.429 15.714t-51.714 42.571l-219.429 292.571q-29.143 38.857-29.143 88 0 60.571 42.857 103.429t103.429 42.857q44.571 0 73.143-19.429v248q0 56.571 40.286 96.857t96.857 40.286q13.143 0 24-2.286 17.714 34.857 50.571 55.143t71.714 20.286z" />
|
||||
<glyph unicode="" glyph-name="task" d="M749.714 813.714h-475.429q-37.714 0-64.571-26.857t-26.857-64.571v-475.429q0-37.714 26.857-64.571t64.571-26.857h475.429q37.714 0 64.571 26.857t26.857 64.571v475.429q0 37.714-26.857 64.571t-64.571 26.857zM914.286 722.286v-475.429q0-68-48.286-116.286t-116.286-48.286h-475.429q-68 0-116.286 48.286t-48.286 116.286v475.429q0 68 48.286 116.286t116.286 48.286h475.429q68 0 116.286-48.286t48.286-116.286z" />
|
||||
</font></defs></svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
BIN
client/custom/modules/advanced/fonts/bpmn.ttf
Normal file
BIN
client/custom/modules/advanced/fonts/bpmn.ttf
Normal file
Binary file not shown.
BIN
client/custom/modules/advanced/fonts/bpmn.woff
Normal file
BIN
client/custom/modules/advanced/fonts/bpmn.woff
Normal file
Binary file not shown.
6999
client/custom/modules/advanced/lib/espo-bpmn.js
Normal file
6999
client/custom/modules/advanced/lib/espo-bpmn.js
Normal file
File diff suppressed because one or more lines are too long
3
client/custom/modules/advanced/lib/init.js
Normal file
3
client/custom/modules/advanced/lib/init.js
Normal file
File diff suppressed because one or more lines are too long
17
client/custom/modules/advanced/lib/module-advanced.js
Normal file
17
client/custom/modules/advanced/lib/module-advanced.js
Normal file
File diff suppressed because one or more lines are too long
2316
client/custom/modules/advanced/lib/templates.tpl
Normal file
2316
client/custom/modules/advanced/lib/templates.tpl
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
{{{value}}}
|
||||
@@ -0,0 +1 @@
|
||||
<div class="actions-container">{{{actions}}}</div>
|
||||
@@ -0,0 +1 @@
|
||||
<div class="conditions-container">{{{conditions}}}</div>
|
||||
@@ -0,0 +1,24 @@
|
||||
<div class="flow-list-container list-group">
|
||||
{{#each flowDataList}}
|
||||
<div class="list-group-item" data-id="{{id}}">
|
||||
<div>
|
||||
{{#if ../isEditMode}}
|
||||
<div class="btn-group pull-right">
|
||||
<button
|
||||
class="btn btn-default {{#if isTop}} hidden {{/if}} {{#if isBottom}} radius-right {{/if}}"
|
||||
data-action="moveUp"
|
||||
data-id="{{id}}"
|
||||
><span class="fas fa-arrow-up"></span></button>
|
||||
<button
|
||||
class="btn btn-default {{#if isBottom}} hidden {{/if}} {{#if isTop}} radius-left {{/if}} "
|
||||
data-action="moveDown"
|
||||
data-id="{{id}}"
|
||||
><span class="fas fa-arrow-down"></span></button>
|
||||
</div>
|
||||
{{/if}}
|
||||
<h5>{{label}}</h5>
|
||||
</div>
|
||||
<div class="flow" data-id="{{id}}" style="margin-top: 20px;">{{{var id ../this}}}</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
@@ -0,0 +1,12 @@
|
||||
<div>
|
||||
<span>{{{timerBaseTranslatedValue}}}</span>
|
||||
{{#if hasShift}}
|
||||
<span class="text-italic">{{{timerShiftOperatorTranslatedValue}}}</span>
|
||||
<span>{{{timerShiftValue}}}</span>
|
||||
<span>{{{timerShiftUnitsTranslatedValue}}}</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{#if hasFormula}}
|
||||
<div class="form-group"></div>
|
||||
{{/if}}
|
||||
<div class="formula-container">{{{timerFormula}}}</div>
|
||||
@@ -0,0 +1,28 @@
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<select data-name="timerBase" class="form-control">
|
||||
{{#each timerBaseOptionDataList}}
|
||||
<option value="{{value}}"{{#if isSelected}} selected{{/if}}>{{label}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<select data-name="timerShiftOperator" class="form-control hidden">
|
||||
{{#each timerShiftOperatorOptionDataList}}
|
||||
<option value="{{value}}"{{#if isSelected}} selected{{/if}}>{{label}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<input data-name="timerShift" class="form-control hidden" value="{{timerShiftValue}}">
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<select data-name="timerShiftUnits" class="form-control hidden">
|
||||
{{#each timerShiftUnitsOptionDataList}}
|
||||
<option value="{{value}}"{{#if isSelected}} selected{{/if}}>{{label}}</option>
|
||||
{{/each}}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="formula-container">{{{timerFormula}}}</div>
|
||||
@@ -0,0 +1,25 @@
|
||||
<style>
|
||||
.flowchart-group-container.fullscreen {
|
||||
> .button-container {
|
||||
margin: var(--4px) var(--6px);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="flowchart-group-container">
|
||||
<div class="button-container clearfix">
|
||||
<div class="btn-group pull-right">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-text action"
|
||||
data-action="switchFullScreenMode"
|
||||
title="{{translate 'Full Screen' scope='BpmnFlowchart'}}"
|
||||
><i class="fas fa-maximize"></i></button>
|
||||
</div>
|
||||
<div class="btn-group pull-right">
|
||||
<button type="button" class="btn btn-text action" data-action="zoomOut" title="{{translate 'Zoom Out' scope='BpmnFlowchart'}}"><span class="fas fa-minus"></span></button>
|
||||
<button type="button" class="btn btn-text action" data-action="zoomIn" title="{{translate 'Zoom In' scope='BpmnFlowchart'}}"><span class="fas fa-plus"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flowchart-container" style="width: 100%; height: {{heightString}};"></div>
|
||||
</div>
|
||||
@@ -0,0 +1,262 @@
|
||||
<link href="{{basePath}}client/custom/modules/advanced/css/bpmn.css" rel="stylesheet">
|
||||
|
||||
<!--suppress CssUnusedSymbol -->
|
||||
<style>
|
||||
.flowchart-group-container.fullscreen {
|
||||
> .button-container {
|
||||
margin: var(--4px) var(--6px);
|
||||
}
|
||||
}
|
||||
|
||||
.flowchart-group-container {
|
||||
button {
|
||||
span.fa-long-arrow-right {
|
||||
position: relative;
|
||||
top: var(--1px);
|
||||
}
|
||||
}
|
||||
|
||||
> .button-container {
|
||||
user-select: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[data-role="bpm-menu-item-text"] {
|
||||
padding-right: var(--20px);
|
||||
}
|
||||
|
||||
[data-role="bpm-menu-item-checkbox"]:not(.hidden) + [data-role="bpm-menu-item-text"] {
|
||||
padding-right: var(--26px);
|
||||
}
|
||||
|
||||
span[data-role="bpm-menu-item-icon"] {
|
||||
> svg {
|
||||
max-height: var(--18px);
|
||||
}
|
||||
|
||||
width: var(--30px);
|
||||
height: var(--22px);
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
ul[data-role="bpm-element-menu"] {
|
||||
> li > a {
|
||||
padding-left: var(--10px);
|
||||
|
||||
overflow: unset !important;
|
||||
}
|
||||
}
|
||||
|
||||
span[data-role="bpm-menu-item-icon"] + span {
|
||||
padding-left: var(--8px);
|
||||
}
|
||||
|
||||
span[data-role="bpm-button-icon"] {
|
||||
position: relative;
|
||||
top: var(--1px);
|
||||
padding-right: var(--1px);
|
||||
color: var(--gray-soft);
|
||||
}
|
||||
|
||||
.fullscreen {
|
||||
ul[data-role="bpm-element-menu"][data-element-group="event"] {
|
||||
max-height: calc(100vh - var(--50px));
|
||||
overflow-y: scroll;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="flowchart-group-container">
|
||||
<div class="button-container">
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default action" data-action="resetState" title="{{translate 'Hand tool' scope='BpmnFlowchart'}}"><span class="far fa-hand-paper"></span></button>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<div class="btn-group">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default dropdown-toggle add-event-element"
|
||||
data-toggle="dropdown"
|
||||
title="{{translate 'Create Event tool' scope='BpmnFlowchart'}}"
|
||||
>
|
||||
<span class="bpmn-icon-event" data-role="bpm-button-icon"></span>
|
||||
{{translate 'Events' scope='BpmnFlowchart'}}
|
||||
<span class="caret"></span></button>
|
||||
<ul
|
||||
class="dropdown-menu"
|
||||
data-role="bpm-element-menu"
|
||||
data-element-group="event"
|
||||
>
|
||||
{{#each elementEventDataList}}
|
||||
{{#ifEqual name '_divider'}}
|
||||
<li class="divider"></li>
|
||||
{{else}}
|
||||
<li>
|
||||
<a
|
||||
class="action"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
data-name="{{name}}"
|
||||
data-action="setStateCreateFigure"
|
||||
>
|
||||
<span
|
||||
class="fas fa-check pull-right{{#ifNotEqual ../currentElement name}} hidden{{/ifNotEqual}}"
|
||||
data-role="bpm-menu-item-checkbox"
|
||||
></span>
|
||||
<div
|
||||
style="color: {{color}}"
|
||||
data-role="bpm-menu-item-text"
|
||||
><span data-role="bpm-menu-item-icon">{{#if iconHtml}}{{{iconHtml}}}{{/if}}</span><span>{{translate name category='elements' scope='BpmnFlowchart'}}</span></div>
|
||||
</a>
|
||||
</li>
|
||||
{{/ifEqual}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default dropdown-toggle add-gateway-element"
|
||||
data-toggle="dropdown"
|
||||
title="{{translate 'Create Gateway tool' scope='BpmnFlowchart'}}"
|
||||
><span class="bpmn-icon-gateway" data-role="bpm-button-icon"></span>
|
||||
{{translate 'Gateways' scope='BpmnFlowchart'}}
|
||||
<span class="caret"></span></button>
|
||||
<ul
|
||||
class="dropdown-menu"
|
||||
data-role="bpm-element-menu"
|
||||
>
|
||||
{{#each elementGatewayDataList}}
|
||||
<li>
|
||||
<a
|
||||
class="action"
|
||||
role="button"
|
||||
tabindex="0"
|
||||
data-name="{{name}}"
|
||||
data-action="setStateCreateFigure"
|
||||
>
|
||||
<span
|
||||
class="fas fa-check pull-right{{#ifNotEqual name ../currentElement}} hidden{{/ifNotEqual}}"
|
||||
data-role="bpm-menu-item-checkbox"
|
||||
></span>
|
||||
<div
|
||||
data-role="bpm-menu-item-text"
|
||||
><span data-role="bpm-menu-item-icon">{{#if iconHtml}}{{{iconHtml}}}{{/if}}</span><span>{{translate name category='elements' scope='BpmnFlowchart'}}</span></div>
|
||||
</a>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default dropdown-toggle add-task-element"
|
||||
data-toggle="dropdown"
|
||||
title="{{translate 'Create Activity tool' scope='BpmnFlowchart'}}"
|
||||
><span class="bpmn-icon-task" data-role="bpm-button-icon"></span>
|
||||
{{translate 'Activities' scope='BpmnFlowchart'}}
|
||||
<span class="caret"></span></button>
|
||||
<ul
|
||||
class="dropdown-menu"
|
||||
data-role="bpm-element-menu"
|
||||
>
|
||||
{{#each elementTaskDataList}}
|
||||
{{#ifEqual name '_divider'}}
|
||||
<li class="divider"></li>
|
||||
{{else}}
|
||||
<li>
|
||||
<a class="action" role="button" tabindex="0" data-name="{{name}}" data-action="setStateCreateFigure">
|
||||
<span
|
||||
class="fas fa-check pull-right{{#ifNotEqual ../currentElement name}} hidden{{/ifNotEqual}}"
|
||||
data-role="bpm-menu-item-checkbox"
|
||||
></span>
|
||||
<div
|
||||
data-role="bpm-menu-item-text"
|
||||
><span data-role="bpm-menu-item-icon">{{#if iconHtml}}{{{iconHtml}}}{{/if}}</span><span>{{translate name category='elements' scope='BpmnFlowchart'}}</span></div>
|
||||
</a>
|
||||
</li>
|
||||
{{/ifEqual}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default action"
|
||||
data-action="setStateCreateFlow"
|
||||
title="{{translate 'Connect tool' scope='BpmnFlowchart'}}"
|
||||
><span class="fa fa-long-arrow-right"></span></button>
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default action"
|
||||
data-action="setStateRemove"
|
||||
title="{{translate 'Erase tool' scope='BpmnFlowchart'}}"
|
||||
><i class="fa fa-eraser"></i></button>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button
|
||||
class="btn btn-text dropdown-toggle"
|
||||
data-toggle="dropdown"
|
||||
><span class="fas fa-ellipsis-h"></span></button>
|
||||
<ul class="dropdown-menu dropdown-menu-with-icons pull-right">
|
||||
<li>
|
||||
<a
|
||||
role="button"
|
||||
tabindex="0"
|
||||
data-action="moveToCenter"
|
||||
>
|
||||
<span class="fas fa-arrows-to-dot fa-sm"></span>
|
||||
<span class="item-text">{{translate 'Move to Center' scope='BpmnFlowchart'}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a
|
||||
role="button"
|
||||
tabindex="0"
|
||||
data-action="undo"
|
||||
>
|
||||
<span class="fas fa-rotate-left fa-sm"></span>
|
||||
<span class="item-text">{{translate 'Undo' scope='BpmnFlowchart'}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
role="button"
|
||||
tabindex="0"
|
||||
data-action="redo"
|
||||
>
|
||||
<span class="fas fa-rotate-right fa-sm"></span>
|
||||
<span class="item-text">{{translate 'Redo' scope='BpmnFlowchart'}}</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<button type="button" class="btn btn-text action hidden" data-action="apply" title="{{translate 'Apply'}}"><i class="fas fa-save"></i></button>
|
||||
|
||||
<div class="btn-group pull-right">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-text action"
|
||||
data-action="switchFullScreenMode"
|
||||
title="{{translate 'Full Screen' scope='BpmnFlowchart'}}"
|
||||
><i class="fas fa-maximize"></i></button>
|
||||
</div>
|
||||
|
||||
<div class="btn-group pull-right">
|
||||
<button type="button" class="btn btn-text action" data-action="zoomOut" title="{{translate 'Zoom Out' scope='BpmnFlowchart'}}"><span class="fas fa-minus"></span></button>
|
||||
<button type="button" class="btn btn-text action" data-action="zoomIn" title="{{translate 'Zoom In' scope='BpmnFlowchart'}}"><span class="fas fa-plus"></span></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flowchart-container" style="width: 100%; height: {{heightString}};"></div>
|
||||
</div>
|
||||
@@ -0,0 +1 @@
|
||||
<div class="record-container record no-side-margin">{{{record}}}</div>
|
||||
@@ -0,0 +1,4 @@
|
||||
<div class="cell" data-name="flowchart">
|
||||
<label class="field-label" data-name="flowchart"></label>
|
||||
<div class="field" data-name="flowchart">{{{flowchart}}}</div>
|
||||
</div>
|
||||
@@ -0,0 +1,11 @@
|
||||
<div class="no-side-margin">
|
||||
<form id="dashlet-options">
|
||||
<div class="record middle no-side-margin">{{{record}}}</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="panel runtime-filters-panel">
|
||||
<div class="panel-body">
|
||||
<div class="runtime-filters-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
<div class="input-group">
|
||||
<input class="form-control main-element" type="text" data-name="{{name}}-time" value="{{time}}" autocomplete="off">
|
||||
<span class="input-group-btn">
|
||||
<button type="button" class="btn btn-default time-picker-btn btn-icon" tabindex="-1"><i class="far fa-clock"></i></button>
|
||||
</span>
|
||||
</div>
|
||||
@@ -0,0 +1,10 @@
|
||||
{{#each days}}
|
||||
<div>
|
||||
<label>
|
||||
<input
|
||||
type="checkbox" {{#ifPropEquals ../selectedWeekdays @index true}} checked {{/ifPropEquals}}
|
||||
class="main-element form-checkbox" disabled
|
||||
> {{.}}
|
||||
</label>
|
||||
</div>
|
||||
{{/each}}
|
||||
@@ -0,0 +1,13 @@
|
||||
{{#each days}}
|
||||
<div>
|
||||
<label style="cursor: pointer;">
|
||||
<input
|
||||
type="checkbox"
|
||||
data-name="{{../name}}"
|
||||
value="{{@index}}"
|
||||
{{#ifPropEquals ../selectedWeekdays @index true}} checked {{/ifPropEquals}}
|
||||
class="main-element form-checkbox"
|
||||
> {{.}}
|
||||
</label>
|
||||
</div>
|
||||
{{/each}}
|
||||
@@ -0,0 +1,67 @@
|
||||
<div class="node-row">
|
||||
<div class="node">{{{node}}}</div>
|
||||
</div>
|
||||
<!--suppress CssUnusedSymbol -->
|
||||
<style>
|
||||
.node-row {
|
||||
width: 64%;
|
||||
|
||||
.item-list {
|
||||
> div {
|
||||
&:not(.node-operator) {
|
||||
padding: var(--10px) var(--10px);
|
||||
border: var(--1px) solid var(--default-border-color);
|
||||
border-radius: var(--border-radius-small);
|
||||
margin: var(--10px) 0;
|
||||
}
|
||||
|
||||
label.control-label {
|
||||
color: var(--gray-soft);
|
||||
margin-bottom: var(--3px);
|
||||
}
|
||||
|
||||
a.remove-filter,
|
||||
a[data-action="removeGroup"] {
|
||||
position: relative;
|
||||
top: var(--minus-4px);
|
||||
}
|
||||
|
||||
&.node-operator {
|
||||
> div {
|
||||
margin-bottom: var(--2px);
|
||||
}
|
||||
}
|
||||
|
||||
&:has(> .filter) {
|
||||
max-width: var(--340px);
|
||||
}
|
||||
|
||||
&:has(> .clearfix) {
|
||||
max-width: var(--400px);
|
||||
}
|
||||
|
||||
&,
|
||||
> .clearfix {
|
||||
> a[data-action="removeGroup"] {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
&,
|
||||
> .clearfix {
|
||||
> a[data-action="removeGroup"] {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
.node-row {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1 @@
|
||||
<span></span>
|
||||
@@ -0,0 +1,31 @@
|
||||
<div class="grid-auto-fill-xs filters-row"></div>
|
||||
|
||||
<!--suppress CssUnusedSymbol -->
|
||||
<style>
|
||||
.filters-row {
|
||||
grid-column-gap: var(--10px);
|
||||
|
||||
> .column {
|
||||
> div {
|
||||
padding: var(--8px);
|
||||
border: var(--1px) solid var(--default-border-color);
|
||||
border-radius: var(--border-radius-small);
|
||||
|
||||
.column-label {
|
||||
min-height: calc(var(--40px) + var(--4px));
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.column-field {
|
||||
margin-bottom: var(--2px);
|
||||
|
||||
.control-label {
|
||||
margin-bottom: var(--1px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
margin-bottom: var(--10px);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,15 @@
|
||||
<div class="clearfix">
|
||||
<a
|
||||
role="button"
|
||||
tabindex="0"
|
||||
class="pull-right"
|
||||
data-action="removeGroup"
|
||||
><span class="fas fa-times"></span></a>
|
||||
</div>
|
||||
<div class="row form-group">
|
||||
<div class="col-md-12 function-container field" data-name="function">{{{function}}}</div>
|
||||
<div class="col-md-12 attribute-container field" data-name="attribute">{{{attribute}}}</div>
|
||||
<div class="col-md-12 expression-container field" data-name="expression">{{{expression}}}</div>
|
||||
<div class="col-md-12 operator-container field" data-name="operator" style="margin-top: var(--2px);">{{{operator}}}</div>
|
||||
<div class="col-md-12 value-container field" data-name="value">{{{value}}}</div>
|
||||
</div>
|
||||
@@ -0,0 +1,24 @@
|
||||
<a
|
||||
role="button"
|
||||
tabindex="0"
|
||||
class="pull-right"
|
||||
data-action="removeGroup"
|
||||
style="position: relative;"
|
||||
><span class="fas fa-times"></span></a>
|
||||
|
||||
<div>
|
||||
<span
|
||||
>{{#if showGroupTypeLabel}}<span>{{translate type category='filtersGroupTypes' scope='Report'}}</span> {{/if}}(</span>
|
||||
</div>
|
||||
<!--suppress CssOverwrittenProperties -->
|
||||
<div
|
||||
class="node"
|
||||
style="
|
||||
{{#unless noOffset}}
|
||||
left: var(--20px); width: calc(100% - var(--20px)); position: relative;
|
||||
{{else}}
|
||||
margin-left: var(--18px); width: calc(100% - var(--18px));
|
||||
{{/unless}}
|
||||
"
|
||||
>{{{node}}}</div>
|
||||
<div>)</div>
|
||||
@@ -0,0 +1,34 @@
|
||||
<style>
|
||||
.node-operator:last-child {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="item-list"></div>
|
||||
|
||||
<div class="buttons btn-group">
|
||||
<a class="small dropdown-toggle" role="button" tabindex="0" data-toggle="dropdown"><span class="fas fa-plus"></span> {{translate operator category='filtersGroupTypes' scope='Report'}}</a>
|
||||
<ul class="dropdown-menu">
|
||||
{{#unless fieldDisabled}}
|
||||
<li><a data-action="addField" role="button" tabindex="0" title="{{translate 'Add field' scope='Report'}}">{{translate 'Field' scope='Report'}}</a></li>
|
||||
{{/unless}}
|
||||
{{#unless orDisabled}}
|
||||
<li><a data-action="addOr" role="button" tabindex="0" title="{{translate 'Add OR group' scope='Report'}}">(... {{translate 'OR' scope='Report'}} ...)</a></li>
|
||||
{{/unless}}
|
||||
{{#unless andDisabled}}
|
||||
<li><a data-action="addAnd" role="button" tabindex="0" title="{{translate 'Add AND group' scope='Report'}}">(... {{translate 'AND' scope='Report'}} ...)</a></li>
|
||||
{{/unless}}
|
||||
{{#unless notDisabled}}
|
||||
<li><a data-action="addNot" role="button" tabindex="0" title="{{translate 'Add NOT group' scope='Report'}}">{{translate 'NOT' scope='Report'}} (...)</a></li>
|
||||
{{/unless}}
|
||||
{{#unless subQueryInDisabled}}
|
||||
<li><a data-action="addSubQueryIn" role="button" tabindex="0" title="{{translate 'Add IN group' scope='Report'}}">{{translate 'IN' scope='Report'}} (...)</a></li>
|
||||
{{/unless}}
|
||||
{{#unless complexExpressionDisabled}}
|
||||
<li><a data-action="addComplexExpression" role="button" tabindex="0" title="{{translate 'Add Complex expression' scope='Report'}}">{{translate 'Complex expression' scope='Report'}}</a></li>
|
||||
{{/unless}}
|
||||
{{#unless havingDisabled}}
|
||||
<li><a data-action="addHavingGroup" role="button" tabindex="0" title="{{translate 'Add Having group' scope='Report'}}">{{translate 'Having' scope='Report'}}</a></li>
|
||||
{{/unless}}
|
||||
</ul>
|
||||
</div>
|
||||
@@ -0,0 +1,22 @@
|
||||
<div class="row">
|
||||
<div class="cell cell-entityType col-sm-6 form-group">
|
||||
<label class="field-label-entityType control-label">{{translate 'entityType' scope='Report' category='fields'}}</label>
|
||||
<div class="field field-entityType" data-name="entityType">
|
||||
{{{entityType}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="list-group no-side-margin">
|
||||
<div class="list-group-item">
|
||||
<h4 class="list-group-item-heading">{{translate 'Grid Report' scope='Report'}}</h4>
|
||||
<p>{{translate 'gridReportDescription' category='messages' scope='Report'}}</p>
|
||||
<div class="form-group">
|
||||
<button class="btn btn-primary" data-action="create" data-type="Grid">{{translate 'Create'}}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="list-group-item">
|
||||
<h4 class="list-group-item-heading">{{translate 'List Report' scope='Report'}}</h4>
|
||||
<p>{{translate 'listReportDescription' category='messages' scope='Report'}}</p>
|
||||
<button class="btn btn-primary" data-action="create" data-type="List">{{translate 'Create'}}</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,17 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="cell form-group">
|
||||
<label class="control-label">#1</label>
|
||||
<div class="field margin-bottom v1-container">
|
||||
{{{v1}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell form-group">
|
||||
<label class="control-label">#2</label>
|
||||
<div class="field margin-bottom v2-container">
|
||||
{{{v2}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
<div class="panel no-side-margin">
|
||||
<div class="panel-body report-container">{{{record}}}</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<div class="cell form-group" data-name="exportFormat">
|
||||
<label class="control-label" data-name="exportFormat">{{translate 'exportFormat' category='fields' scope='Report'}}</label>
|
||||
<div class="field" data-name="exportFormat">{{{exportFormat}}}</div>
|
||||
</div>
|
||||
|
||||
{{#if column}}
|
||||
<div class="cell form-group" data-name="column">
|
||||
<label class="control-label" data-name="column">{{translate 'column' category='fields' scope='Report'}}</label>
|
||||
<div class="field" data-name="column">{{{column}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -0,0 +1 @@
|
||||
<div class="report-container">{{{report}}}</div>
|
||||
@@ -0,0 +1,2 @@
|
||||
<div class="chart-container" data-type="{{type}}"></div>
|
||||
<div class="legend-container"></div>
|
||||
@@ -0,0 +1,8 @@
|
||||
<div class="header page-header">{{{header}}}</div></div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="report-container">{{{report}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<div class="row filters-row grid-auto-fill-xs">
|
||||
{{#each filterDataList}}
|
||||
<div class="filter col-sm-4 col-md-3" data-name="{{name}}">{{{var key ../this}}}</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
{{#if readOnly}}
|
||||
({{stringValue}})
|
||||
{{else}}
|
||||
<span data-field="executionField">{{{executionField}}}</span>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,13 @@
|
||||
{{#if readOnly}}
|
||||
{{translate type scope='Workflow' category='labels'}}
|
||||
<span class="field-container hidden">{{{field}}}</span>
|
||||
<span class="shift-days-container hidden">{{{shiftDays}}}</span>
|
||||
{{else}}
|
||||
<div class="row">
|
||||
<div class="col-sm-2">
|
||||
<span data-field="type">{{{typeField}}}</span>
|
||||
</div>
|
||||
<div class="field-container col-sm-4 hidden">{{{field}}}</div>
|
||||
<div class="shift-days-container col-sm-6 hidden">{{{shiftDays}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,15 @@
|
||||
{{#if readOnly}}
|
||||
{{translate shiftDaysOperator scope='Workflow' category='labels'}} {{value}} {{translate unitValue scope='Workflow' category='labels'}}
|
||||
{{else}}
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<span data-field="operator">{{{operatorField}}}</span>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<span data-field="value">{{{valueField}}}</span>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<span data-field="unit">{{{unitField}}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,5 @@
|
||||
{{#if readOnly}}
|
||||
{{{listHtml}}}
|
||||
{{else}}
|
||||
<span data-field="value">{{{valueField}}}</span>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,47 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
|
||||
{{#if target}}
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Entity' scope='Workflow' category='labels'}}</label>
|
||||
<div class="field" data-name="target">
|
||||
{{{target}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'assignmentRule' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field" data-name="assignmentRule">
|
||||
{{{assignmentRule}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'targetTeam' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field" data-name="targetTeam">
|
||||
{{{targetTeam}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'targetUserPosition' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field" data-name="targetUserPosition">
|
||||
{{{targetUserPosition}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'listReport' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field" data-name="listReport">
|
||||
{{{listReport}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,38 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Entity' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="link">{{{link}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group add-field-container">
|
||||
{{{addField}}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-md-12">
|
||||
<div class="field-definitions form-group">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-12 hidden" data-name="formula">
|
||||
<label class="control-label">{{translate 'Formula' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="formula"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-6 hidden" data-name="linkList">
|
||||
<label class="control-label">{{translate 'linkList' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="linkList"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,33 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'recipient' scope='Workflow'}}</label>
|
||||
<div class="field field-recipient">
|
||||
{{{recipient}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 cell-users form-group">
|
||||
<label class="control-label">{{translate 'users' scope='Workflow'}}</label>
|
||||
<div class="field field-users">
|
||||
{{{users}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 cell-specifiedTeams form-group">
|
||||
<label class="control-label">{{translate 'Team' category='scopeNamesPlural'}}</label>
|
||||
<div class="field field-specifiedTeams">
|
||||
{{{specifiedTeams}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell cell-messageTemplate col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'messageTemplate' scope='Workflow'}}</label>
|
||||
<div class="field field-messageTemplate">{{{messageTemplate}}}</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 form-group">
|
||||
{{complexText messageTemplateHelpText}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,30 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Link' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="link">{{{link}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group add-field-container">
|
||||
{{{addField}}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-md-12">
|
||||
<div class="field-definitions form-group">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-12 hidden" data-name="formula">
|
||||
<label class="control-label">{{translate 'Formula' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="formula"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,8 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="cell form-group" data-name="formula">
|
||||
<label class="control-label">{{translate 'Formula' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="formula">{{{formula}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,28 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-6" data-name="whatToFollow">
|
||||
<label class="control-label">{{translate 'whatToFollow' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="whatToFollow">{{{whatToFollow}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-6" data-name="recipient">
|
||||
<label class="control-label">{{translate 'whoFollow' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="recipient">{{{recipient}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-6" data-name="usersToMakeToFollow">
|
||||
<label class="control-label">{{translate 'User' category='scopeNamesPlural'}}</label>
|
||||
<div class="field" data-name="usersToMakeToFollow">{{{usersToMakeToFollow}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-6" data-name="specifiedTeams">
|
||||
<label class="control-label">{{translate 'Team' category='scopeNamesPlural'}}</label>
|
||||
<div class="field" data-name="specifiedTeams">{{{specifiedTeams}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,16 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Link' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="link">{{{link}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<div class="field" data-name="entity"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,38 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="cell cell-usersToMakeToFollow form-group">
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Entity' scope='Workflow' category='labels'}}</label>
|
||||
<div class="field" data-name="target">
|
||||
{{{target}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label
|
||||
class="control-label field-label-methodName"
|
||||
>{{translate 'methodName' category='labels' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="methodName">{{{methodName}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-12 form-group">
|
||||
<label
|
||||
class="control-label field-label-additionalParameters"
|
||||
>{{translate 'additionalParameters' category='labels' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="additionalParameters">{{{additionalParameters}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-12 form-group">
|
||||
<div class="field" data-name="helpText">{{{helpText}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,99 @@
|
||||
<style type="text/css">
|
||||
.field-toSpecifiedTeams .list-group, .field-toSpecifiedUsers .list-group, .field-toSpecifiedContacts .list-group {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="execution-time-container form-group">{{{executionTime}}}</div>
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'From' scope='Workflow'}}</label>
|
||||
<div class="field field-from">{{{from}}}</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 from-email-container hidden form-group">
|
||||
<label class="control-label">{{translate 'Email Address' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="fromEmailAddress">{{{fromEmailAddress}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'To' scope='Workflow'}}</label>
|
||||
<div class="field field-to">{{{to}}}</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 to-email-container hidden form-group">
|
||||
<label class="control-label">{{translate 'Email Address' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="toEmailAddress">{{{toEmailAddress}}}</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 toSpecifiedTeams-container hidden form-group">
|
||||
<label class="control-label">{{translate 'Team' category='scopeNamesPlural'}}</label>
|
||||
<div class="field-toSpecifiedTeams">
|
||||
{{{toSpecifiedTeams}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 toSpecifiedUsers-container hidden form-group">
|
||||
<label class="control-label">{{translate 'User' category='scopeNamesPlural'}}</label>
|
||||
<div class="field-toSpecifiedUsers">
|
||||
{{{toSpecifiedUsers}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 toSpecifiedContacts-container hidden form-group">
|
||||
<label class="control-label">{{translate 'Contact' category='scopeNamesPlural'}}</label>
|
||||
<div class="field-toSpecifiedContacts">
|
||||
{{{toSpecifiedContacts}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'CC' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="cc">{{{cc}}}</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 cc-email-container hidden form-group">
|
||||
<label class="control-label">{{translate 'Email Address' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="ccEmailAddress">{{{ccEmailAddress}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Reply-To' scope='Workflow'}}</label>
|
||||
<div class="field field-replyTo">{{{replyTo}}}</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 reply-to-email-container hidden form-group">
|
||||
<label class="control-label">{{translate 'Email Address' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="replyToEmailAddress">{{{replyToEmailAddress}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell cell-emailTemplate col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Email Template' scope='Workflow'}}</label>
|
||||
<div class="field field-emailTemplate">{{{emailTemplate}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 doNotStore-container form-group">
|
||||
<label class="control-label">{{translate 'doNotStore' scope='Workflow'}}</label>
|
||||
<div class="field-doNotStore">
|
||||
{{{doNotStore}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'optOutLink' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field" data-name="optOutLink">
|
||||
{{{optOutLink}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'attachmentsVariable' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="attachmentsVariable">
|
||||
{{{attachmentsVariable}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,45 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-6" data-name="requestType">
|
||||
<label class="control-label">{{translate 'requestType' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="requestType">{{{requestType}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-12" data-name="requestUrl">
|
||||
<label class="control-label">{{translate 'requestUrl' category='fields' scope='Workflow'}} *</label>
|
||||
<div class="field" data-name="requestUrl">{{{requestUrl}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-12" data-name="headers">
|
||||
<label class="control-label">{{translate 'headers' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="headers">{{{headers}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-6" data-name="contentType">
|
||||
<label class="control-label">{{translate 'requestContentType' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="contentType">{{{contentType}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-12" data-name="content">
|
||||
<label class="control-label">{{translate 'requestContent' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="content">{{{content}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-6" data-name="contentVariable">
|
||||
<label class="control-label">{{translate 'requestContentVariable' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="contentVariable">{{{contentVariable}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group" data-name="target">
|
||||
<label class="control-label">{{translate 'target' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="target">
|
||||
{{{target}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell cell-workflow col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'BpmnFlowchart' category='scopeNames'}}</label>
|
||||
<div class="field" data-name="flowchart">{{{flowchart}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell cell-workflow col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'startElementId' scope='BpmnProcess' category='fields'}}</label>
|
||||
<div class="field" data-name="elementId">{{{elementId}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,21 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="execution-time-container form-group">{{{executionTime}}}</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group" data-name="target">
|
||||
<label class="control-label">{{translate 'target' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="target">
|
||||
{{{target}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell cell-workflow col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Workflow Rule' scope='Workflow'}}</label>
|
||||
<div class="field field-workflow">{{{workflow}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,29 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Entity' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="target">{{{target}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group add-field-container">
|
||||
{{{addField}}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-md-12">
|
||||
<div class="field-definitions form-group"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-md-12 form-group hidden" data-name="formula">
|
||||
<label class="control-label">{{translate 'Formula' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="formula"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,24 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group add-field-container">
|
||||
{{{addField}}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-md-12">
|
||||
<div class="field-definitions form-group">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-12 hidden" data-name="formula">
|
||||
<label class="control-label">{{translate 'Formula' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="formula"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<div class="panel panel-default no-side-margin">
|
||||
<div class="panel-body panel-body-form">
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group">
|
||||
<label class="control-label">{{translate 'Link' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="link">{{{link}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group hidden" data-name="parentEntityType">
|
||||
<label class="control-label">{{translate 'Entity Type' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="parentEntityType">
|
||||
{{{parentEntityType}}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-sm-6 form-group add-field-container">
|
||||
{{{addField}}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell col-md-12">
|
||||
<div class="field-definitions form-group">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="cell form-group col-md-12 hidden" data-name="formula">
|
||||
<label class="control-label">{{translate 'Formula' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="formula"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,46 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
{{#if hasTarget}}
|
||||
<div class="cell form-group">
|
||||
<label class="control-label">{{translate 'Entity' scope='Workflow' category='labels'}}</label>
|
||||
<div class="field" data-name="target">{{{targetTranslated}}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="cell form-group">
|
||||
<label class="control-label">{{translate 'assignmentRule' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field" data-name="assignmentRule">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cell form-group">
|
||||
<label class="control-label">{{translate 'targetTeam' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field" data-name="targetTeam"></div>
|
||||
</div>
|
||||
|
||||
<div class="cell form-group">
|
||||
<label class="control-label">{{translate 'targetUserPosition' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field" data-name="targetUserPosition"></div>
|
||||
</div>
|
||||
|
||||
{{#if hasListReport}}
|
||||
<div class="cell form-group">
|
||||
<label class="control-label">{{translate 'listReport' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field" data-name="listReport"></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,47 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
{{#unless noEntityName}}
|
||||
{{#if displayedLinkedEntityName}}
|
||||
{{#if linkTranslated}} <span class="text-muted chevron-right"></span> {{linkTranslated}}{{/if}}
|
||||
<span class="text-muted chevron-right"></span>
|
||||
{{{displayedLinkedEntityName}}}{{/if}}{{#if numberId}} #{{numberId}}{{/if}}
|
||||
{{/unless}}
|
||||
{{#if aliasId}} <span class="text-muted not-draggable chevron-right"></span> <span class="text-danger"><i>{{aliasId}}</i></span>{{/if}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
{{#if actionData.fieldList}}
|
||||
{{#each actionData.fieldList}}
|
||||
<div class="field-row cell form-group" data-field="{{./this}}">
|
||||
<label class="control-label">{{translate ./this category='fields' scope=../linkedEntityName}}</label>
|
||||
{{#if (lookup ../fieldActionLabelMap this)}}
|
||||
<span class="text-muted"> · {{lookup ../fieldActionLabelMap this}}</span>
|
||||
{{/if}}
|
||||
<div class="field-container field" data-field="{{./this}}"></div>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{#if actionData.linkList}}
|
||||
{{#if actionData.linkList.length}}
|
||||
<div class="field-row cell form-group" data-field="linkList">
|
||||
<label class="control-label small">{{translate 'linkListShort' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field small" data-name="linkList">{{{linkList}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<div class="field hidden" data-name="formula">{{{formula}}}</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,37 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
{{#if actionData.recipient}}
|
||||
<div class="field-row cell form-group">
|
||||
<label class="control-label">{{translate 'recipient' scope='Workflow'}}</label>
|
||||
<div class="field-container">
|
||||
{{recipientLabel}}
|
||||
</div>
|
||||
<div class="field-recipient" data-field="recipient">
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if actionData.messageTemplate}}
|
||||
<div class="field-row cell form-group" data-field="messageTemplate">
|
||||
<label class="control-label">{{translate 'messageTemplate' scope='Workflow' category='labels'}}</label>
|
||||
<div
|
||||
class="field-container field field-messageTemplate complex-text"
|
||||
data-field="messageTemplate"
|
||||
>{{complexText messageTemplate}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
{{#if linkTranslated}} <span class="chevron-right text-muted"></span> {{{linkTranslated}}}{{/if}}
|
||||
{{#if parentEntityTypeTranslated}} <span class="chevron-right text-muted"></span> {{{parentEntityTypeTranslated}}}{{/if}}
|
||||
|
||||
<div class="margin-top">
|
||||
<div class="field hidden" data-name="formula">{{{formula}}}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,40 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
|
||||
<div class="cell form-group" data-name="whatToFollow">
|
||||
<label class="control-label">{{translate 'whatToFollow' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field">{{{targetTranslated}}}</div>
|
||||
</div>
|
||||
|
||||
<div class="cell form-group" data-name="recipient">
|
||||
<label class="control-label">{{translate 'whoFollow' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="recipient">{{{recipient}}}</div>
|
||||
</div>
|
||||
|
||||
<div class="cell form-group" data-name="usersToMakeToFollow">
|
||||
<label class="control-label">{{translate 'User' category='scopeNamesPlural'}}</label>
|
||||
<div class="field" data-name="usersToMakeToFollow">{{{usersToMakeToFollow}}}</div>
|
||||
</div>
|
||||
|
||||
<div class="cell form-group" data-name="specifiedTeams">
|
||||
<label class="control-label">{{translate 'Team' category='scopeNamesPlural'}}</label>
|
||||
<div class="field" data-name="specifiedTeams">{{{specifiedTeams}}}</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}} <span class="chevron-right text-muted"></span> {{{linkTranslated}}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
<div class="field-row cell form-group" data-name="entity">
|
||||
<div class="field-container field" data-name="entity"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,37 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
|
||||
<div class="cell form-group">
|
||||
<label class="control-label">{{translate 'Entity' scope='Workflow' category='labels'}}</label>
|
||||
<div class="field" data-name="target">{{{targetTranslated}}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field-row cell form-group" data-field="methodName">
|
||||
<label class="control-label">{{translate 'methodName' scope='Workflow' category='labels'}}</label>
|
||||
<div class="field-container field field-methodName" data-field="methodName">{{{methodName}}}</div>
|
||||
</div>
|
||||
|
||||
{{#if actionData.additionalParameters}}
|
||||
<div class="field-row cell form-group" data-field="additionalParameters">
|
||||
<label class="control-label">{{translate 'additionalParameters' category='labels' scope='Workflow'}}</label>
|
||||
<div class="field-container field field-additionalParameters" data-field="additionalParameters">{{{additionalParameters}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
<div class="field-row cell form-group execution-time-container" data-field="execution-time">
|
||||
<div class="field" data-field="execution-time">{{{executionTime}}}</div>
|
||||
</div>
|
||||
|
||||
{{#if actionData.from}}
|
||||
<div class="field-row cell form-group" data-field="from">
|
||||
<label class="control-label">{{translate 'From' scope='Workflow'}}</label>
|
||||
<div class="field-container field" data-field="from">
|
||||
{{#ifEqual actionData.from 'specifiedEmailAddress'}}
|
||||
{{actionData.fromEmail}}
|
||||
{{else}}
|
||||
{{fromLabel}}
|
||||
{{/ifEqual}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if actionData.to}}
|
||||
<div class="field-row cell form-group" data-field="to">
|
||||
<label class="control-label">{{translate 'To' scope='Workflow'}}</label>
|
||||
<div class="field-container field" data-field="to">
|
||||
{{#ifEqual actionData.to 'specifiedEmailAddress'}}
|
||||
{{actionData.toEmail}}
|
||||
{{else}}
|
||||
{{toLabel}}
|
||||
{{/ifEqual}}
|
||||
{{#ifEqual actionData.to 'specifiedTeams'}}
|
||||
<div class="field-container field field-toSpecifiedTeams" data-field="toSpecifiedTeams">{{{toSpecifiedTeams}}}</div>
|
||||
{{/ifEqual}}
|
||||
{{#ifEqual actionData.to 'specifiedUsers'}}
|
||||
<div class="field-container field field-toSpecifiedUsers" data-field="toSpecifiedUsers">{{{toSpecifiedUsers}}}</div>
|
||||
{{/ifEqual}}
|
||||
{{#ifEqual actionData.to 'specifiedContacts'}}
|
||||
<div class="field-container field field-toSpecifiedContacts" data-field="toSpecifiedContacts">{{{toSpecifiedContacts}}}</div>
|
||||
{{/ifEqual}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if actionData.cc}}
|
||||
<div class="field-row cell form-group" data-field="replyTo">
|
||||
<label class="control-label">{{translate 'CC' scope='Workflow'}}</label>
|
||||
<div class="field-container field" data-field="replyTo">
|
||||
{{#ifEqual actionData.cc 'specifiedEmailAddress'}}
|
||||
{{actionData.ccEmail}}
|
||||
{{else}}
|
||||
{{ccLabel}}
|
||||
{{/ifEqual}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if actionData.replyTo}}
|
||||
<div class="field-row cell form-group" data-field="replyTo">
|
||||
<label class="control-label">{{translate 'Reply-To' scope='Workflow'}}</label>
|
||||
<div class="field-container field" data-field="replyTo">
|
||||
{{#ifEqual actionData.replyTo 'specifiedEmailAddress'}}
|
||||
{{actionData.replyToEmail}}
|
||||
{{else}}
|
||||
{{replyToLabel}}
|
||||
{{/ifEqual}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if actionData.emailTemplateId}}
|
||||
<div class="field-row cell form-group" data-field="emailTemplate">
|
||||
<label class="control-label">{{translate 'Email Template' scope='Workflow' category='labels'}}</label>
|
||||
<div class="field-container field" data-field="emailTemplate">{{{emailTemplate}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if actionData.doNotStore}}
|
||||
<div class="field-row cell form-group" data-field="doNotStore">
|
||||
<label class="control-label">{{translate 'doNotStore' scope='Workflow'}}</label>
|
||||
<div class="field-container field-doNotStore" data-field="doNotStore">{{{doNotStore}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="field-row cell form-group" data-name="optOutLink">
|
||||
<label class="control-label">{{translate 'optOutLink' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field-container field" data-name="optOutLink">{{{optOutLink}}}</div>
|
||||
</div>
|
||||
|
||||
{{#if actionData.attachmentsVariable}}
|
||||
<div class="field-row cell form-group" data-name="attachmentsVariable">
|
||||
<label class="control-label">{{translate 'attachmentsVariable' scope='Workflow' category='fields'}}</label>
|
||||
<div class="field-container field" data-name="attachmentsVariable">{{{attachmentsVariable}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,42 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
|
||||
<div class="field-list small margin-top">
|
||||
<div class="cell form-group" data-name="requestType">
|
||||
<label class="control-label">{{translate 'requestType' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="requestType">{{{requestType}}}</div>
|
||||
</div>
|
||||
|
||||
<div class="cell form-group" data-name="requestUrl">
|
||||
<label class="control-label">{{translate 'requestUrl' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="requestUrl">{{{requestUrl}}}</div>
|
||||
</div>
|
||||
<div class="cell form-group" data-name="headers">
|
||||
<label class="control-label">{{translate 'headers' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="headers">{{{headers}}}</div>
|
||||
</div>
|
||||
<div class="cell form-group" data-name="contentType">
|
||||
<label class="control-label">{{translate 'requestContentType' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="contentType">{{{contentType}}}</div>
|
||||
</div>
|
||||
<div class="cell form-group {{#if actionData.contentVariable}} hidden {{/if}} " data-name="content">
|
||||
<label class="control-label">{{translate 'requestContent' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="content">{{{content}}}</div>
|
||||
</div>
|
||||
<div class="cell form-group{{#unless actionData.contentVariable}} hidden{{/unless}}" data-name="contentVariable">
|
||||
<label class="control-label">{{translate 'requestContentVariable' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field" data-name="contentVariable">{{{contentVariable}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,35 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
<div class="cell form-group" data-name="target">
|
||||
<label class="control-label">{{translate 'target' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field">{{{targetTranslated}}}</div>
|
||||
</div>
|
||||
|
||||
{{#if actionData.flowchartId}}
|
||||
<div class="field-row cell form-group" data-name="flowchart">
|
||||
<label class="control-label">{{translate 'BpmnFlowchart' category='scopeNames'}}</label>
|
||||
<div class="field" data-name="flowchart">{{{flowchart}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if actionData.elementId}}
|
||||
<div class="field-row cell form-group" data-name="elementId">
|
||||
<label class="control-label">{{translate 'startElementId' scope='BpmnProcess' category='fields'}}</label>
|
||||
<div class="field" data-name="elementId">{{{elementId}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,32 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
<div class="field-row cell form-group execution-time-container" data-field="execution-time">
|
||||
<div class="field" data-field="execution-time">{{{executionTime}}}</div>
|
||||
</div>
|
||||
|
||||
<div class="cell form-group" data-name="target">
|
||||
<label class="control-label">{{translate 'target' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field">{{{targetTranslated}}}</div>
|
||||
</div>
|
||||
|
||||
{{#if actionData.workflowId}}
|
||||
<div class="field-row cell form-group" data-field="workflow">
|
||||
<label class="control-label">{{translate 'Workflow' scope='Workflow' category='labels'}}</label>
|
||||
<div class="field-container field field-workflow" data-field="workflow">{{{workflow}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,36 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
{{#if entityTypeTranslated}}{{#if linkTranslated}} <span class="text-muted chevron-right"></span> {{linkTranslated}}{{/if}} <span class="text-muted chevron-right"></span> {{{entityTypeTranslated}}}{{/if}}
|
||||
{{#if text}}
|
||||
'{{text}}'
|
||||
{{else}}
|
||||
{{#if numberId}} #{{numberId}}{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
{{#if actionData.fieldList}}
|
||||
{{#each actionData.fieldList}}
|
||||
<div class="field-row cell form-group" data-field="{{./this}}">
|
||||
<label class="control-label">{{translate ./this category='fields' scope=../linkedEntityName}}</label>
|
||||
{{#if (lookup ../fieldActionLabelMap this)}}
|
||||
<span class="text-muted"> · {{lookup ../fieldActionLabelMap this}}</span>
|
||||
{{/if}}
|
||||
<div class="field-container field" data-field="{{./this}}"></div>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="field hidden" data-name="formula">{{{formula}}}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,42 @@
|
||||
<div class="row">
|
||||
{{#unless readOnly}}
|
||||
<div class="col-md-1">
|
||||
<button class="btn btn-default btn-sm btn-icon" type="button" data-action='editAction'><span class="fas fa-pencil-alt fa-sm"></span></button>
|
||||
<div>
|
||||
<a class="btn btn-text btn-sm btn-icon drag-handle"><span class="fas fa-grip fa-sm fa-rotate-90"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
<div class="col-md-10">
|
||||
{{translate actionType scope='Workflow' category='actionTypes'}}
|
||||
{{#if linkTranslated}} <span class="text-muted chevron-right"></span> {{{linkTranslated}}}{{/if}}
|
||||
{{#if parentEntityTypeTranslated}} <span class="text-muted chevron-right"></span> {{{parentEntityTypeTranslated}}}{{/if}}
|
||||
|
||||
<div class="field-list small" style="margin-top: 12px;">
|
||||
{{#if actionData.fieldList}}
|
||||
{{#each actionData.fieldList}}
|
||||
<div class="field-row cell form-group" data-field="{{./this}}">
|
||||
<label class="control-label">{{translate ./this category='fields' scope=../linkedEntityName}}</label>
|
||||
{{#if (lookup ../fieldActionLabelMap this)}}
|
||||
<span class="text-muted"> · {{lookup ../fieldActionLabelMap this}}</span>
|
||||
{{/if}}
|
||||
<div class="field-container field" data-field="{{./this}}"></div>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{#if actionData.linkList}}
|
||||
{{#if actionData.linkList.length}}
|
||||
<div class="field-row cell form-group" data-field="linkList">
|
||||
<label class="control-label small">{{translate 'linkListShort' category='fields' scope='Workflow'}}</label>
|
||||
<div class="field small" data-name="linkList">{{{linkList}}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<div class="field hidden" data-name="formula">{{{formula}}}</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
{{#if readOnly}}
|
||||
{{translate shiftDaysOperator scope='Workflow'}} {{value}} {{translate 'days' scope='Workflow'}}
|
||||
{{else}}
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="input-group input-group-sm">
|
||||
<span data-field="operator" class="input-group-item" style="width: 40px;">{{{operatorField}}}</span>
|
||||
<span data-field="value" class="input-group-item input-group-item-middle">{{{valueField}}}</span>
|
||||
<span class="small input-group-addon radius-right" style="max-width: 60px;">{{translate 'days' scope='Workflow'}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,5 @@
|
||||
{{#if readOnly}}
|
||||
{{translateOption value scope='Workflow' field='subjectType'}}
|
||||
{{else}}
|
||||
<span data-field="value">{{{valueField}}}</span>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,10 @@
|
||||
{{#if readOnly}}
|
||||
<code>
|
||||
{{/if}}
|
||||
<div
|
||||
class="field-container"
|
||||
style="display: inline-block;{{#unless readOnly}} min-width: 100%;{{/unless}}"
|
||||
>{{{field}}}</div>
|
||||
{{#if readOnly}}
|
||||
</code>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,5 @@
|
||||
{{#if readOnly}}
|
||||
{{{listHtml}}}
|
||||
{{else}}
|
||||
<span data-field="value">{{{valueField}}}</span>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,5 @@
|
||||
{{#if readOnly}}
|
||||
<code>{{value}}</code>
|
||||
{{else}}
|
||||
<input type="text" class="form-control input-sm" data-name="subject" value="{{value}}">
|
||||
{{/if}}
|
||||
@@ -0,0 +1,26 @@
|
||||
{{#if readOnly}}
|
||||
<span class="comparison">
|
||||
{{translate comparisonValue category='labels' scope='Workflow'}}
|
||||
</span>
|
||||
<span class="subject-type">
|
||||
{{{subjectType}}}
|
||||
</span>
|
||||
<span class="subject">
|
||||
{{{subject}}}
|
||||
</span>
|
||||
{{else}}
|
||||
<div class="row">
|
||||
<div class="col-sm-6 comparison">
|
||||
<span data-field="comparison">{{{comparisonField}}}</span>
|
||||
</div>
|
||||
<div class="col-sm-6 subject-type">
|
||||
{{{subjectType}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 subject">
|
||||
{{{subject}}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
{{#if readOnly}}
|
||||
<span class="comparison">
|
||||
{{translate comparisonValue category='labels' scope='Workflow'}}
|
||||
</span>
|
||||
<span class="subject-type">
|
||||
{{{subjectType}}}
|
||||
</span>
|
||||
<span class="subject">
|
||||
{{{subject}}}
|
||||
</span>
|
||||
<span class="shift-days">
|
||||
{{{shiftDays}}}
|
||||
</span>
|
||||
{{else}}
|
||||
<div class="row">
|
||||
<div class="col-sm-6 comparison">
|
||||
<span data-field="comparison">{{{comparisonField}}}</span>
|
||||
</div>
|
||||
<div class="col-sm-6 subject-type">
|
||||
{{{subjectType}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 subject">
|
||||
{{{subject}}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 shift-days">
|
||||
{{{shiftDays}}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
{{#if readOnly}}
|
||||
<span class="comparison">
|
||||
{{translate comparisonValue category='labels' scope='Workflow'}}
|
||||
</span>
|
||||
|
||||
<span class="subject-type">
|
||||
{{{subjectType}}}
|
||||
</span>
|
||||
|
||||
<span class="subject">
|
||||
{{{subject}}}
|
||||
</span>
|
||||
{{else}}
|
||||
<div class="row">
|
||||
<div class="col-sm-6 comparison">
|
||||
<span data-field="comparison">{{{comparisonField}}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 subject">
|
||||
{{{subject}}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,19 @@
|
||||
{{#if readOnly}}
|
||||
<div class="subject">
|
||||
{{{subject}}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="row">
|
||||
<div class="col-sm-2 subject-type">
|
||||
<span data-field="subjectType">{{{subjectTypeField}}}</span>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6 subject">
|
||||
{{{subject}}}
|
||||
</div>
|
||||
|
||||
{{#if hasActionType}}
|
||||
<div class="col-sm-3" data-field="actionType">{{{actionTypeField}}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,22 @@
|
||||
{{#if readOnly}}
|
||||
<span class="subject">
|
||||
{{#if subject}} {{{subject}}} {{else}} {{translate 'today' scope='Workflow' category='labels'}} {{/if}}
|
||||
</span>
|
||||
<span class="shift-days">
|
||||
{{{shiftDays}}}
|
||||
</span>
|
||||
{{else}}
|
||||
<div class="row">
|
||||
<div class="col-sm-2 subject-type">
|
||||
<span data-field="subjectType">{{{subjectTypeField}}}</span>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-4 subject">
|
||||
{{{subject}}}
|
||||
</div>
|
||||
|
||||
<div class="col-sm-5 shift-days">
|
||||
{{{shiftDays}}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -0,0 +1 @@
|
||||
{{#if isNotEmpty}}<div class="well"><span class="complex-text">{{{value}}}</span></div>{{/if}}
|
||||
@@ -0,0 +1,32 @@
|
||||
<div>
|
||||
<div class="actions{{#unless readOnly}} margin margin-bottom{{/unless}} no-side-margin"></div>
|
||||
{{#unless readOnly}}
|
||||
<div class="btn-group">
|
||||
<button
|
||||
class="btn btn-default btn-sm btn-icon radius-right"
|
||||
type="button"
|
||||
data-action="showAddAction"
|
||||
title="{{translate 'Add Action' scope='Workflow'}}"
|
||||
><span class="fas fa-plus"></span></button>
|
||||
</div>
|
||||
{{/unless}}
|
||||
</div>
|
||||
|
||||
{{#if showNoData}}
|
||||
<div class="list-container margin-top">
|
||||
<div class="no-data">
|
||||
{{translate 'No Data'}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<!--suppress CssUnusedSymbol -->
|
||||
<style>
|
||||
.actions-container {
|
||||
.actions {
|
||||
.drag-handle {
|
||||
cursor: grab;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,135 @@
|
||||
{{#if showConditionsAll}}
|
||||
<div>
|
||||
<div class="all-conditions"></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if showConditionsAny}}
|
||||
<div
|
||||
{{#if marginForConditionsAny}}style="margin-top: var(--20px)"{{/if}}
|
||||
>
|
||||
<div class="any-conditions"></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if showFormula}}
|
||||
<div
|
||||
{{#if marginForFormula}}style="margin-top: var(--20px)"{{/if}}
|
||||
>
|
||||
<label class="control-label"
|
||||
>{{translate 'Formula' scope='Workflow'}}
|
||||
<small class="text-muted"> · {{translate 'formulaInfo' category='texts' scope='Workflow'}}</small></label>
|
||||
<div
|
||||
class="formula-conditions clearfix"
|
||||
{{#if readOnly}}style="margin-left: 10px;"{{/if}}
|
||||
></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if showNoData}}
|
||||
<div class="list-container margin-top">
|
||||
<div class="no-data">
|
||||
{{translate 'No Data'}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<!--suppress CssUnusedSymbol -->
|
||||
<style>
|
||||
.all-conditions,
|
||||
.any-conditions {
|
||||
> div {
|
||||
.cell {
|
||||
> label {
|
||||
color: var(--gray-soft);
|
||||
}
|
||||
|
||||
&,
|
||||
> .clearfix {
|
||||
> a[data-action="removeCondition"] {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
&,
|
||||
> .clearfix {
|
||||
> a[data-action="removeCondition"] {
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
padding: var(--2px) var(--10px) var(--10px) var(--10px);
|
||||
border: var(--1px) solid var(--default-border-color);
|
||||
border-radius: var(--border-radius-small);
|
||||
|
||||
a[data-action="removeCondition"] {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: var(--4px);
|
||||
}
|
||||
|
||||
&[data-role="field-cell"] {
|
||||
max-width: calc(var(--340px) + var(--10px));
|
||||
}
|
||||
|
||||
&[data-role="group-cell"] {
|
||||
> .condition {
|
||||
margin-top: var(--6px);
|
||||
}
|
||||
|
||||
&:has(> [data-action="removeCondition"]) {
|
||||
> .condition {
|
||||
margin-top: var(--20px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.condition {
|
||||
.row + .row {
|
||||
> div:not(:empty) {
|
||||
margin-top: var(--8px);
|
||||
}
|
||||
}
|
||||
|
||||
padding-top: var(--2px);
|
||||
}
|
||||
|
||||
padding-top: var(--4px);
|
||||
}
|
||||
|
||||
[data-role="operator"] {
|
||||
font-size: 0.85em;
|
||||
margin: var(--5px) var(--4px) var(--4px);
|
||||
user-select: none;
|
||||
|
||||
&:last-child {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.items {
|
||||
+ .btn-group {
|
||||
margin-top: var(--2px);
|
||||
}
|
||||
}
|
||||
|
||||
> .no-data {
|
||||
margin-right: var(--10px);
|
||||
}
|
||||
|
||||
> .items {
|
||||
> .cell[data-role="group-cell"] {
|
||||
max-width: calc(var(--340px) + var(--10px) + var(--22px));
|
||||
|
||||
&:has(.cell[data-role="group-cell"]) {
|
||||
max-width: calc(var(--340px) + var(--10px) + var(--22px) + var(--22px));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,26 @@
|
||||
<div class="panel panel-default panel-conditions hidden" data-name="conditions">
|
||||
<div class="panel-heading"><h4 class="panel-title">{{translate 'Conditions' scope='Workflow'}}</h4></div>
|
||||
<div class="panel-body conditions-container">
|
||||
{{{conditions}}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default panel-actions hidden" data-name="actions">
|
||||
<div class="panel-heading"><h4 class="panel-title">{{translate 'Actions' scope='Workflow'}}</h4></div>
|
||||
<div class="panel-body actions-container">
|
||||
{{{actions}}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if workflowLogRecords}}
|
||||
<div class="panel panel-default" data-name="workflowLogRecords">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<span style="cursor: pointer;" class="action" data-action="refresh" data-panel="workflowLogRecords" title="{{translate 'clickToRefresh' category='messages'}}">{{translate 'workflowLogRecords' scope='Workflow' category='links'}}</span>
|
||||
</h4>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
{{{workflowLogRecords}}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
1
client/custom/modules/dummy.txt
Normal file
1
client/custom/modules/dummy.txt
Normal file
@@ -0,0 +1 @@
|
||||
dummy
|
||||
373
client/custom/modules/link-button/css/buttons.css
Normal file
373
client/custom/modules/link-button/css/buttons.css
Normal file
@@ -0,0 +1,373 @@
|
||||
.btn-secondary {
|
||||
color: #fff;
|
||||
background-color: #6c757d;
|
||||
border-color: #6c757d;
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
color: #fff;
|
||||
background-color: #5a6268;
|
||||
border-color: #545b62;
|
||||
}
|
||||
|
||||
.btn-secondary:focus, .btn-secondary.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
|
||||
}
|
||||
|
||||
.btn-secondary.disabled, .btn-secondary:disabled {
|
||||
color: #fff;
|
||||
background-color: #6c757d;
|
||||
border-color: #6c757d;
|
||||
}
|
||||
|
||||
.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-secondary.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #545b62;
|
||||
border-color: #4e555b;
|
||||
}
|
||||
|
||||
.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-secondary.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
|
||||
}
|
||||
|
||||
.btn-light {
|
||||
color: #212529;
|
||||
background-color: #f8f9fa;
|
||||
border-color: #f8f9fa;
|
||||
}
|
||||
|
||||
.btn-light:hover {
|
||||
color: #212529;
|
||||
background-color: #e2e6ea;
|
||||
border-color: #dae0e5;
|
||||
}
|
||||
|
||||
.btn-light:focus, .btn-light.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
|
||||
}
|
||||
|
||||
.btn-light.disabled, .btn-light:disabled {
|
||||
color: #212529;
|
||||
background-color: #f8f9fa;
|
||||
border-color: #f8f9fa;
|
||||
}
|
||||
|
||||
.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-light.dropdown-toggle {
|
||||
color: #212529;
|
||||
background-color: #dae0e5;
|
||||
border-color: #d3d9df;
|
||||
}
|
||||
|
||||
.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-light.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
|
||||
}
|
||||
|
||||
.btn-dark {
|
||||
color: #fff;
|
||||
background-color: #343a40;
|
||||
border-color: #343a40;
|
||||
}
|
||||
|
||||
.btn-dark:hover {
|
||||
color: #fff;
|
||||
background-color: #23272b;
|
||||
border-color: #1d2124;
|
||||
}
|
||||
|
||||
.btn-dark:focus, .btn-dark.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
|
||||
}
|
||||
|
||||
.btn-dark.disabled, .btn-dark:disabled {
|
||||
color: #fff;
|
||||
background-color: #343a40;
|
||||
border-color: #343a40;
|
||||
}
|
||||
|
||||
.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-dark.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #1d2124;
|
||||
border-color: #171a1d;
|
||||
}
|
||||
|
||||
.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-dark.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-primary {
|
||||
color: #007bff;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #007bff;
|
||||
}
|
||||
|
||||
.btn-outline-primary:hover {
|
||||
color: #fff;
|
||||
background-color: #007bff;
|
||||
border-color: #007bff;
|
||||
}
|
||||
|
||||
.btn-outline-primary:focus, .btn-outline-primary.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-primary.disabled, .btn-outline-primary:disabled {
|
||||
color: #007bff;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-outline-primary.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #007bff;
|
||||
border-color: #007bff;
|
||||
}
|
||||
|
||||
.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-outline-primary.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-secondary {
|
||||
color: #6c757d;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #6c757d;
|
||||
}
|
||||
|
||||
.btn-outline-secondary:hover {
|
||||
color: #fff;
|
||||
background-color: #6c757d;
|
||||
border-color: #6c757d;
|
||||
}
|
||||
|
||||
.btn-outline-secondary:focus, .btn-outline-secondary.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {
|
||||
color: #6c757d;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-outline-secondary.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #6c757d;
|
||||
border-color: #6c757d;
|
||||
}
|
||||
|
||||
.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-outline-secondary.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-success {
|
||||
color: #28a745;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #28a745;
|
||||
}
|
||||
|
||||
.btn-outline-success:hover {
|
||||
color: #fff;
|
||||
background-color: #28a745;
|
||||
border-color: #28a745;
|
||||
}
|
||||
|
||||
.btn-outline-success:focus, .btn-outline-success.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-success.disabled, .btn-outline-success:disabled {
|
||||
color: #28a745;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-outline-success.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #28a745;
|
||||
border-color: #28a745;
|
||||
}
|
||||
|
||||
.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-outline-success.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-info {
|
||||
color: #aba8cc;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #aba8cc;
|
||||
}
|
||||
|
||||
.btn-outline-info:hover {
|
||||
color: #fff;
|
||||
background-color: #8c88b9;
|
||||
border-color: #8c88b9;
|
||||
}
|
||||
|
||||
.btn-outline-info:focus, .btn-outline-info.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(140, 112, 180, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-info.disabled, .btn-outline-info:disabled {
|
||||
color: #dfb9ed;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-outline-info.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #7671ac;
|
||||
border-color: #6d68a6;
|
||||
}
|
||||
|
||||
.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-outline-info.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(227, 139, 231, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-warning {
|
||||
color: #ffc107;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #ffc107;
|
||||
}
|
||||
|
||||
.btn-outline-warning:hover {
|
||||
color: #212529;
|
||||
background-color: #ffc107;
|
||||
border-color: #ffc107;
|
||||
}
|
||||
|
||||
.btn-outline-warning:focus, .btn-outline-warning.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-warning.disabled, .btn-outline-warning:disabled {
|
||||
color: #ffc107;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-outline-warning.dropdown-toggle {
|
||||
color: #212529;
|
||||
background-color: #ffc107;
|
||||
border-color: #ffc107;
|
||||
}
|
||||
|
||||
.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-outline-warning.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-danger {
|
||||
color: #dc3545;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #dc3545;
|
||||
}
|
||||
|
||||
.btn-outline-danger:hover {
|
||||
color: #fff;
|
||||
background-color: #dc3545;
|
||||
border-color: #dc3545;
|
||||
}
|
||||
|
||||
.btn-outline-danger:focus, .btn-outline-danger.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-danger.disabled, .btn-outline-danger:disabled {
|
||||
color: #dc3545;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-outline-danger.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #dc3545;
|
||||
border-color: #dc3545;
|
||||
}
|
||||
|
||||
.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-outline-danger.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-light {
|
||||
color: #f8f9fa;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #f8f9fa;
|
||||
}
|
||||
|
||||
.btn-outline-light:hover {
|
||||
color: #212529;
|
||||
background-color: #f8f9fa;
|
||||
border-color: #f8f9fa;
|
||||
}
|
||||
|
||||
.btn-outline-light:focus, .btn-outline-light.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-light.disabled, .btn-outline-light:disabled {
|
||||
color: #f8f9fa;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-outline-light.dropdown-toggle {
|
||||
color: #212529;
|
||||
background-color: #f8f9fa;
|
||||
border-color: #f8f9fa;
|
||||
}
|
||||
|
||||
.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-outline-light.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-dark {
|
||||
color: #343a40;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #343a40;
|
||||
}
|
||||
|
||||
.btn-outline-dark:hover {
|
||||
color: #fff;
|
||||
background-color: #343a40;
|
||||
border-color: #343a40;
|
||||
}
|
||||
|
||||
.btn-outline-dark:focus, .btn-outline-dark.focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
|
||||
}
|
||||
|
||||
.btn-outline-dark.disabled, .btn-outline-dark:disabled {
|
||||
color: #343a40;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,
|
||||
.show > .btn-outline-dark.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #343a40;
|
||||
border-color: #343a40;
|
||||
}
|
||||
|
||||
.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,
|
||||
.show > .btn-outline-dark.dropdown-toggle:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
{{#ifEqual mode 'openNewTab'}}
|
||||
{{#if value}}
|
||||
<a href="{{url}}" class="btn btn-{{style}} {{buttonSize}}" title="{{title}}" target="_blank">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</a>
|
||||
{{else}}
|
||||
{{#if valueIsSet}}
|
||||
<span class="none-value">{{translate 'None'}}</span>
|
||||
{{else}}
|
||||
<span class="loading-value">...</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
|
||||
{{#ifEqual mode 'openUrl'}}
|
||||
{{#if value}}
|
||||
<a href="{{url}}" class="btn btn-{{style}} {{buttonSize}}" title="{{title}}">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</a>
|
||||
{{else}}
|
||||
{{#if valueIsSet}}
|
||||
<span class="none-value">{{translate 'None'}}</span>
|
||||
{{else}}
|
||||
<span class="loading-value">...</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
|
||||
{{#ifEqual mode 'openPopup'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} {{buttonSize}}" title="{{title}}" data-action="open-popup">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{else}}
|
||||
{{#if valueIsSet}}
|
||||
<span class="none-value">{{translate 'None'}}</span>
|
||||
{{else}}
|
||||
<span class="loading-value">...</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
|
||||
{{#ifEqual mode 'openModal'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} {{buttonSize}}" title="{{title}}" data-action="open-modal">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{else}}
|
||||
{{#if valueIsSet}}
|
||||
<span class="none-value">{{translate 'None'}}</span>
|
||||
{{else}}
|
||||
<span class="loading-value">...</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
|
||||
{{#ifEqual mode 'openEspoModal'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} {{buttonSize}}" title="{{title}}" data-action="espo-modal">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{else}}
|
||||
{{#if valueIsSet}}
|
||||
<span class="none-value">{{translate 'None'}}</span>
|
||||
{{else}}
|
||||
<span class="loading-value">...</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
|
||||
{{#ifEqual mode 'quickCreate'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} {{buttonSize}}" title="{{title}}" data-action="quick-create">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{else}}
|
||||
{{#if valueIsSet}}
|
||||
<span class="none-value">{{translate 'None'}}</span>
|
||||
{{else}}
|
||||
<span class="loading-value">...</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
|
||||
{{#ifEqual mode 'runEspoWorkflow'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} {{buttonSize}}" title="{{title}}" data-action="run-workflow">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{else}}
|
||||
{{#if valueIsSet}}
|
||||
<span class="none-value">{{translate 'None'}}</span>
|
||||
{{else}}
|
||||
<span class="loading-value">...</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
@@ -0,0 +1,12 @@
|
||||
<input
|
||||
type="text"
|
||||
class="main-element form-control"
|
||||
placeholder="{{placeholder}}"
|
||||
data-name="{{name}}"
|
||||
value="{{value}}"
|
||||
{{#if params.maxLength}} maxlength="{{params.maxLength}}"{{/if}}
|
||||
autocomplete="espo-{{name}}"
|
||||
{{#if noSpellCheck}}
|
||||
spellcheck="false"
|
||||
{{/if}}
|
||||
>
|
||||
105
client/custom/modules/link-button/res/templates/fields/list.tpl
Normal file
105
client/custom/modules/link-button/res/templates/fields/list.tpl
Normal file
@@ -0,0 +1,105 @@
|
||||
{{#ifEqual mode 'openNewTab'}}
|
||||
{{#if value}}
|
||||
<a href="{{url}}" class="btn btn-{{style}} label-md" style="height:24px" title="{{title}}" target="_blank">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</a>
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
{{#ifEqual mode 'openUrl'}}
|
||||
{{#if value}}
|
||||
<a href="{{url}}" class="btn btn-{{style}} label-md" style="height:24px" title="{{title}}">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</a>
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
{{#ifEqual mode 'openPopup'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} label-md" style="height:24px" title="{{title}}" data-action="open-popup">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
{{#ifEqual mode 'openModal'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} label-md" style="height:24px" title="{{title}}" data-action="open-modal">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
{{#ifEqual mode 'openEspoModal'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} label-md" style="height:24px" title="{{title}}" data-action="espo-modal">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
{{#ifEqual mode 'quickCreate'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} label-md" style="height:24px" title="{{title}}" data-action="quick-create">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
{{#ifEqual mode 'runEspoWorkflow'}}
|
||||
{{#if value}}
|
||||
<button class="btn btn-{{style}} label-md" style="height:24px" title="{{title}}" data-action="run-workflow">
|
||||
{{#if iconLeft}}
|
||||
<span class="{{iconLeft}}"></span>
|
||||
{{/if}}
|
||||
{{#if buttonLabel}}
|
||||
<span> {{buttonLabel}} </span>
|
||||
{{/if}}
|
||||
{{#if iconRight}}
|
||||
<span class="{{iconRight}}"></span>
|
||||
{{/if}}
|
||||
</button>
|
||||
{{/if}}
|
||||
{{/ifEqual}}
|
||||
@@ -0,0 +1 @@
|
||||
<iframe class="link-button-modal" title="URL Preview" src="{{url}}" width="100%" height="100%" frameborder="0"></iframe>
|
||||
@@ -0,0 +1,24 @@
|
||||
define('link-button:views/admin/field-manager/fields/confirmation-dialog', ['views/fields/bool'], (Dep) => {
|
||||
return class extends Dep {
|
||||
|
||||
setup() {
|
||||
super.setup();
|
||||
this.listenTo(this.model, 'change:mode', this.toggleConfirmationDialog);
|
||||
}
|
||||
|
||||
afterRender() {
|
||||
super.afterRender();
|
||||
this.toggleConfirmationDialog();
|
||||
}
|
||||
|
||||
toggleConfirmationDialog() {
|
||||
if (this.model.get('mode') === 'runEspoWorkflow') {
|
||||
this.getParentView().showField('confirmationDialog');
|
||||
this.getParentView().showField('hideOriginalWorkflowAction');
|
||||
} else {
|
||||
this.getParentView().hideField('confirmationDialog');
|
||||
this.getParentView().hideField('hideOriginalWorkflowAction');
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,22 @@
|
||||
define('link-button:views/admin/field-manager/fields/confirmation-text', ['views/fields/text'], (Dep) => {
|
||||
return class extends Dep {
|
||||
|
||||
setup() {
|
||||
super.setup();
|
||||
this.listenTo(this.model, 'change:confirmationDialog change:mode', this.toggleConfirmationText);
|
||||
}
|
||||
|
||||
afterRender() {
|
||||
super.afterRender();
|
||||
this.toggleConfirmationText();
|
||||
}
|
||||
|
||||
toggleConfirmationText() {
|
||||
if (this.model.get('confirmationDialog') === true && this.model.get('mode') === 'runEspoWorkflow') {
|
||||
this.getParentView().showField('confirmationText');
|
||||
} else {
|
||||
this.getParentView().hideField('confirmationText');
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
define('link-button:views/admin/field-manager/fields/mode', ['views/fields/enum'], (Dep) => {
|
||||
return class extends Dep {
|
||||
|
||||
setup() {
|
||||
super.setup();
|
||||
this.updateModeOptions();
|
||||
}
|
||||
|
||||
afterRender() {
|
||||
super.afterRender();
|
||||
}
|
||||
|
||||
updateModeOptions() {
|
||||
const isAdvancedPackInstalled = this.getHelper().getAppParam('isAdvancedPackInstalled');
|
||||
const modeOptions = this.model.getFieldParam('mode', 'options') || [];
|
||||
|
||||
if (isAdvancedPackInstalled) {
|
||||
modeOptions.push('runEspoWorkflow');
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,24 @@
|
||||
define('link-button:views/admin/field-manager/fields/popup', ['views/fields/int'], (Dep) => {
|
||||
return class extends Dep {
|
||||
|
||||
setup() {
|
||||
super.setup();
|
||||
this.listenTo(this.model, 'change:mode', this.togglePopupSize);
|
||||
}
|
||||
|
||||
afterRender() {
|
||||
super.afterRender();
|
||||
this.togglePopupSize();
|
||||
}
|
||||
|
||||
togglePopupSize() {
|
||||
if (this.model.get('mode') === 'openPopup') {
|
||||
this.getParentView().showField('popupHeight');
|
||||
this.getParentView().showField('popupWidth');
|
||||
} else {
|
||||
this.getParentView().hideField('popupHeight');
|
||||
this.getParentView().hideField('popupWidth');
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,242 @@
|
||||
define('link-button:views/fields/link-button', ['views/fields/url'], (Dep) => {
|
||||
return class extends Dep {
|
||||
|
||||
type = 'link-button'
|
||||
editTemplate = 'link-button:fields/edit'
|
||||
listTemplate = 'link-button:fields/list'
|
||||
detailTemplate = 'link-button:fields/detail'
|
||||
|
||||
setup() {
|
||||
super.setup();
|
||||
|
||||
this.events['click button[data-action="open-modal"]'] = () => {
|
||||
this.actionOpenModal();
|
||||
};
|
||||
|
||||
this.events['click button[data-action="espo-modal"]'] = () => {
|
||||
this.actionEspoModal();
|
||||
};
|
||||
|
||||
this.events['click button[data-action="open-popup"]'] = () => {
|
||||
this.actionOpenPopup();
|
||||
};
|
||||
|
||||
this.events['click button[data-action="quick-create"]'] = () => {
|
||||
this.actionQuickCreate();
|
||||
};
|
||||
|
||||
this.events['click button[data-action="run-workflow"]'] = () => {
|
||||
this.actionCheckWorkFlow();
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
afterRender() {
|
||||
super.afterRender();
|
||||
const superParent = this.getParentView().getParentView()._parentView;
|
||||
const url = this.model.get(this.name);
|
||||
const hideLabel = this.model.getFieldParam(this.name, 'hideLabel');
|
||||
const isDetailMode = this.isDetailMode();
|
||||
const hideOriginalWorkflowAction = this.model.getFieldParam(this.name, 'hideOriginalWorkflowAction');
|
||||
const mode = this.model.getFieldParam(this.name, 'mode');
|
||||
|
||||
if (hideLabel === true) {
|
||||
this.getLabelElement().hide();
|
||||
}
|
||||
|
||||
if (url && isDetailMode && hideOriginalWorkflowAction === true && mode === 'runEspoWorkflow') {
|
||||
const workflowId = url.split('#')[1]?.split('/').pop();
|
||||
superParent.hideHeaderActionItem(`runWorkflow_${workflowId}`);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data() {
|
||||
return {
|
||||
...super.data(),
|
||||
iconLeft: this.model.getFieldParam(this.name, 'iconLeft'),
|
||||
iconRight: this.model.getFieldParam(this.name, 'iconRight'),
|
||||
mode: this.model.getFieldParam(this.name, 'mode'),
|
||||
buttonLabel: this.model.getFieldParam(this.name, 'buttonLabel') || null,
|
||||
placeholder: this.model.getFieldParam(this.name, 'placeholder') || null,
|
||||
title: this.model.getFieldParam(this.name, 'title') || null,
|
||||
buttonSize: this.model.getFieldParam(this.name, 'buttonSize'),
|
||||
style: this.model.getFieldParam(this.name, 'style'),
|
||||
};
|
||||
}
|
||||
|
||||
actionOpenModal() {
|
||||
this.notify('Loading...');
|
||||
this.createView('dialog', 'link-button:views/modals/button-url', {
|
||||
buttonLabel: this.model.getFieldParam(this.name, 'buttonLabel') || null,
|
||||
url: this.model.get(this.name),
|
||||
closeButton: true,
|
||||
backdrop: true,
|
||||
}, function (view) {
|
||||
view.render();
|
||||
this.notify(false);
|
||||
this.listenToOnce(view, 'close', () => {
|
||||
this.clearView('dialog');
|
||||
});
|
||||
}, this);
|
||||
}
|
||||
|
||||
actionEspoModal() {
|
||||
let model = this.model;
|
||||
let url = this.model.get(this.name);
|
||||
let hashPart = url.split('#')[1];
|
||||
if (!hashPart) {
|
||||
return Espo.Ui.error('Error: this is not a valid CRM URL');
|
||||
}
|
||||
|
||||
let parts = hashPart.split('/');
|
||||
let entityType = parts[0];
|
||||
if (!entityType) {
|
||||
return Espo.Ui.error('Error: no entity type found');
|
||||
}
|
||||
|
||||
let recordId = parts[parts.length - 1];
|
||||
if (!recordId) {
|
||||
return Espo.Ui.error('Error: no record ID found');
|
||||
}
|
||||
|
||||
this.notify('Loading...');
|
||||
this.createView('quickView', 'link-button:views/modals/espo-modal', {
|
||||
scope: entityType,
|
||||
id: recordId,
|
||||
removeDisabled: true,
|
||||
}, function (view) {
|
||||
view.render();
|
||||
this.notify(false);
|
||||
this.listenTo(view, 'after:save', () => {
|
||||
model.fetch();
|
||||
});
|
||||
this.listenToOnce(view, 'close', () => {
|
||||
this.clearView('quickView');
|
||||
});
|
||||
}, this);
|
||||
}
|
||||
|
||||
actionQuickCreate() {
|
||||
let model = this.model;
|
||||
let url = this.model.get(this.name);
|
||||
let hashPart = url.split('#')[1];
|
||||
if (!hashPart) {
|
||||
return Espo.Ui.error('Error: this is not a valid CRM URL');
|
||||
}
|
||||
|
||||
let parts = hashPart.split('/');
|
||||
let entityTypeModal = parts[0];
|
||||
if (!entityTypeModal) {
|
||||
return Espo.Ui.error('Error: no entity type found');
|
||||
}
|
||||
|
||||
let viewName;
|
||||
if (entityTypeModal === 'Email') {
|
||||
viewName = 'views/modals/compose-email';
|
||||
} else {
|
||||
viewName = this.getMetadata().get('clientDefs.' + entityTypeModal + '.modalViews.edit') || 'views/modals/edit';
|
||||
}
|
||||
|
||||
let attributes = {
|
||||
parentId: model.id,
|
||||
parentType: model.entityType,
|
||||
parentName: model.get('name'),
|
||||
};
|
||||
|
||||
if (
|
||||
entityTypeModal === 'Email' &&
|
||||
['Contact', 'Lead', 'Account'].includes(model.entityType) &&
|
||||
model.get('emailAddress')
|
||||
) {
|
||||
attributes.to = model.get('emailAddress');
|
||||
attributes.nameHash = {};
|
||||
attributes.nameHash[model.get('emailAddress')] = model.get('name');
|
||||
}
|
||||
|
||||
this.notify('Loading...');
|
||||
this.createView('quickCreate', viewName, {
|
||||
scope: entityTypeModal,
|
||||
attributes: attributes,
|
||||
}, function (view) {
|
||||
view.render();
|
||||
this.notify(false);
|
||||
this.listenTo(view, 'after:save', () => {
|
||||
model.fetch();
|
||||
});
|
||||
this.listenToOnce(view, 'close', () => {
|
||||
this.clearView('quickCreate');
|
||||
//model.collection.fetch();
|
||||
});
|
||||
}, this);
|
||||
}
|
||||
|
||||
actionCheckWorkFlow() {
|
||||
let message = this.translate('confirmation', 'messages');
|
||||
let confirmationText = this.model.getFieldParam(this.name, 'confirmationText');
|
||||
let confirmation = this.model.getFieldParam(this.name, 'confirmationDialog');
|
||||
if (confirmationText) {
|
||||
message = this.getHelper().transformMarkdownText(confirmationText).toString();
|
||||
}
|
||||
|
||||
if (!confirmation) {
|
||||
this.actionEspoWorkFlow();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Espo.Ui.confirm(message, {
|
||||
confirmText: this.translate('Yes', 'labels'),
|
||||
cancelText: this.translate('No', 'labels'),
|
||||
backdrop: true,
|
||||
isHtml: true,
|
||||
})
|
||||
.then(() => this.actionEspoWorkFlow());
|
||||
}
|
||||
|
||||
|
||||
actionEspoWorkFlow() {
|
||||
let model = this.model;
|
||||
let url = model.get(this.name);
|
||||
let hashPart = url.split('#')[1];
|
||||
if (!hashPart) {
|
||||
return Espo.Ui.error('Error: this is not a valid workflow URL');
|
||||
}
|
||||
let parts = hashPart.split('/');
|
||||
let entityType = parts[0];
|
||||
if (!entityType) {
|
||||
return Espo.Ui.error('Error: no entity type found');
|
||||
}
|
||||
let workflowId = parts[parts.length - 1];
|
||||
if (entityType !== 'Workflow') {
|
||||
return Espo.Ui.error(('Error: not a workflow'));
|
||||
}
|
||||
|
||||
Espo.Ajax.getRequest('LinkButton/WorkflowCheck/' + workflowId)
|
||||
.then(response => {
|
||||
if (response.isManual === false) {
|
||||
return Espo.Ui.error(('Error: not a manual or active workflow'));
|
||||
}
|
||||
|
||||
Espo.Ajax.postRequest('WorkflowManual/action/run', {
|
||||
targetId: model.id,
|
||||
id: workflowId,
|
||||
}).then(() => {
|
||||
model.fetch().then(() => {
|
||||
Espo.Ui.success(('Done'));
|
||||
});
|
||||
});
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error);
|
||||
Espo.Ui.error(('Error checking workflow type'));
|
||||
});
|
||||
}
|
||||
|
||||
actionOpenPopup() {
|
||||
const popupHeight = this.model.getFieldParam(this.name, 'popupHeight') || 800;
|
||||
const popupWidth = this.model.getFieldParam(this.name, 'popupWidth') || 600;
|
||||
window.open(this.model.get(this.name), '_blank', `scrollbars=yes,height=${popupHeight},width=${popupWidth}`);
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
define('link-button:views/modals/button-url', ['views/modal'], (Dep) => {
|
||||
return class extends Dep {
|
||||
|
||||
template = 'link-button:modals/button-url'
|
||||
fitHeight = true
|
||||
isCollapsable = true
|
||||
|
||||
data() {
|
||||
return {
|
||||
...super.data(),
|
||||
url: this.options.url
|
||||
};
|
||||
}
|
||||
|
||||
setup() {
|
||||
super.setup();
|
||||
this.headerText = document.title || this.options.buttonLabel || 'Modal';
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,7 @@
|
||||
define('link-button:views/modals/espo-modal', ['views/modals/detail'], (Dep) => {
|
||||
return class extends Dep {
|
||||
|
||||
isCollapsable = true
|
||||
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user