vendor/uvdesk/automation-bundle/Resources/views/Workflow/events.html.twig line 1

Open in your IDE?
  1. {% set workflowAccess = user_service.isAccessAuthorized('workflows_addaction') %}
  2. <script type="text/template" id="event-add">
  3.     <select class="uv-select uv-select-grouped select-event wfEvents" name="events[<%- keyNo %>][event]" <%- typeof(event) != 'undefined' && event ? "disabled=disabled" : '' %>  style="width: 300px;">
  4.         <option value="">{% trans %}Select an Event{% endtrans %}</option>
  5.         <% for(var key in events){ %>
  6.             <option value="<%= key %>" <%- typeof(event) != 'undefined' && event == key ? 'selected' : '' %>><%= events[key] %></option>
  7.         <% } %>
  8.     </select>
  9.     <span class="apply-event">
  10.         <a class="uv-btn-tag remove-event-select" href="#"><span class="uv-icon-remove-dark-box"></a>
  11.     </span>
  12.     <p class="uv-field-message" style="display: none;"></p>
  13. </script>
  14. <script type="text/template" id="event-value-select">
  15.     <select class="uv-select uv-select-grouped wfEventTriggers" name="events[<%- keyNo %>][trigger]" style="width: 300px;">
  16.         <% for (var key in triggers) { %>
  17.             <option value="<%= key %>" <%- typeof(trigger) != 'undefined' && trigger == key ? 'selected' : '' %>><%= triggers[key] %></option>
  18.         <% } %>
  19.     </select>
  20. </script>
  21. <script type="text/javascript">
  22.     var workflowAccess = {{ workflowAccess ? 1 : 0 }};
  23.     if(typeof(sB) == 'undefined'){
  24.         var sB = {};
  25.     }
  26.     sB.eventRow = sB.PrevEvent = 0;
  27.     sB.JsonEvents = JSON.parse("{{ uvdesk_automations.getWorkflowEvents() | json_encode | e('js') }}");
  28.     sB.MatchEvents = JSON.parse("{{ uvdesk_automations.getWorkflowEventValues() | json_encode | e('js') }}");
  29.     sB.EventSelectView = Backbone.View.extend({
  30.         tagName: 'div',
  31.         className: 'uv-field-block workflow-event',
  32.         eventTemplate: _.template($('#event-add').html()),
  33.         valueSelectTemplate: _.template($('#event-value-select').html()),
  34.         events: {
  35.             'change .select-event': 'selectOption',
  36.             'change .apply-event': 'selectValue',
  37.             'click .remove-event-select': 'removeSelect'
  38.         },
  39.         initialize: function() {
  40.             (this.model == undefined || this.model.altKey != undefined) ? this.model = {'event': sB.PrevEvent ? sB.PrevEvent : 0} : false;
  41.             this.keyNo = sB.eventRow;
  42.             sB.eventRow++;
  43.         },
  44.         render: function() {
  45.             this.$el.html(this.eventTemplate(_.extend(this.model, {'keyNo': this.keyNo, 'events': sB.JsonEvents})));
  46.             return this;
  47.         },
  48.         removeSelect: function(e) {
  49.             if ($('.uv-field-block.workflow-event').length > 1) {
  50.                 this.remove();
  51.                 this.firstEnable();
  52.             } else {
  53.                 $(this.el).find('.uv-field-message').html("{{ 'This field is required'|trans }}").fadeIn(0);
  54.             }
  55.         },
  56.         selectOption: function(e) {
  57.             if (e.target.value != sB.PrevEvent) {
  58.                 $('#events').find('.workflow-event').not(this.$el).remove();
  59.                 sB.PrevEvent = e.target.value;
  60.                 if (typeof(sB.ActionSelectViews) != 'undefined') {
  61.                     sB.actionselectView.clearHtml();
  62.                 }
  63.                 if (typeof(sB.SelectViews) != 'undefined') {
  64.                     sB.selectView.clearHtml();
  65.                 }
  66.             }
  67.             this.firstEnable();
  68.             var value = sB.PrevEvent = e.target.value;
  69.             this.updateButtonHref(value);
  70.             this.siblingValue = this.$el.find('.apply-event');
  71.             this.siblingValue.find('.uv-select').remove();
  72.             this.siblingValue.prepend(this.valueSelectTemplate(_.extend(this.model, {'triggers' : sB.MatchEvents[value], 'keyNo': this.keyNo})));
  73.         },
  74.         updateButtonHref: function(value) {
  75.             if (value) {
  76.                 if (value == 'customer' || value == 'agent') {
  77.                     $('#events').find('.btn-next').attr('href', '#actions');
  78.                     $('#actions').find('.btn-prev').attr('href', '#events');
  79.                 } else {
  80.                     $('#events').find('.btn-next').attr('href', '#conditions');
  81.                     $('#actions').find('.btn-prev').attr('href', '#conditions');
  82.                 }
  83.             }
  84.         },
  85.         firstEnable: function() {
  86.             if (workflowAccess) {
  87.                 $('#events').find('.workflow-event').eq(0).find('.uv-select.wfEvents').attr('disabled', false);
  88.             }
  89.         },
  90.         selectValue: function(e) {
  91.             sB.eventselectView.removeduplicate(e);
  92.             this.firstEnable();
  93.         }
  94.     });
  95.     sB.EventSelectViews = Backbone.View.extend({
  96.         el: '.uv-view',
  97.         target: $('#events .workflow-event-body'),
  98.         initialize: function(){
  99.             {% if formData and formData.events is defined %}
  100.                 this.createEvents($.parseJSON("{{ formData.events | json_encode | e('js') }}"));
  101.             {% else %}
  102.                 this.addSelect();
  103.             {% endif %}
  104.         },
  105.         events: {
  106.             'click #events .btn-add': 'addSelect',
  107.         },
  108.         createEvents: function(eventPreviouslyAdded) {
  109.             _.each(eventPreviouslyAdded, this.addSelect, this);
  110.         },
  111.         addSelect: function(eventModel) {
  112.             var view = new sB.EventSelectView({model: eventModel});
  113.             this.target.append(viewEl = view.render().el); 
  114.             // if (typeof(eventModel.type) == 'undefined' && typeof(eventModel.trigger) != 'undefined')
  115.                 this.$(viewEl).find('select.wfEvents').trigger('change');
  116.         },
  117.         removeduplicate: function(e) {
  118.             // remove already exits elements - select
  119.             $('.apply-event select').each(function() {
  120.                 if (this.value == e.target.value) {
  121.                     $(this).not(e.target).parents('tr').remove();
  122.                 }
  123.             })
  124.         },
  125.     });
  126.     sB.eventselectView = new sB.EventSelectViews();
  127. </script>