//CHARGEMENT DE LA PAGE function init_plugin_workflow(){ switch($.urlParam('page')){ case 'sheet.workflow': workflow_workflow_type_change(); workflow_effect_search(); workflow_lock_input(); break; } //Tri possible des effets de workflow $('#workflow-effects tbody').sortable({ handle :'.fa-arrows-alt', axis :'y', update : function( event, ui ){ var data = $('#workflow-effect-form').toJson(); data.action = 'workflow_workflow_effect_sort'; data.workflow = $('#workflow-form').attr('data-id'); data.sort = []; $('#workflow-effects tbody tr:visible').each(function(){ var tr = $(this); data.sort.push(tr.attr('data-id')); }); $.action(data); } }); $('#workflows').sortable_table({ onSort : workflow_workflow_search }); } //verouillez les champs en fonction du type de workflow (liste, entité ou général) function workflow_lock_input(){ if( $('#workflow-form').attr('data-id') != ''){ $('.create-only').attr('disabled','disabled'); }else{ $('.create-only').removeAttr('disabled','disabled'); } } /** WORKFLOW **/ //Récuperation d'une liste de workflow dans le tableau #workflows function workflow_workflow_search(callback){ var box = new FilterBox('#filters'); $('#workflows').fill({ action:'workflow_workflow_search', filters: box.filters(), sort: $('#workflows').sortable_table('get') },function(response){ $('.results-count span').text(response.pagination.total); if(callback!=null) callback(); }); } //Ajout ou modification d'élément workflow function workflow_workflow_save(){ var data = $('#workflow-form').toJson(); if($('#workflow-effects [data-slug="entity"].open').length!=0){ $.message('warning','Un effet est encore en cours d\'edition, merci de le valider avant d\'enregistrer le workflow entier'); return; } data.cause = new FilterBox('#cause-filters').filters().advanced; data.effect = new FilterBox('#effect-filters').filters().advanced; $.action(data,function(r){ $.urlParam('id',r.id); $('#workflow-form').attr('data-id',r.id); workflow_lock_input(); workflow_cause_search(); workflow_effect_search(); workflow_event_search(); $.message('success','Enregistré'); }); } //Suppression d'élement workflow function workflow_workflow_delete(element,event){ event.stopPropagation(); event.preventDefault(); if(!confirm('Êtes vous sûr de vouloir supprimer cet item ?')) return; var line = $(element).closest('li'); $.action({ action: 'workflow_workflow_delete', id: line.attr('data-id') },function(r){ line.remove(); $.message('info','Item supprimé'); }); } //Lancement manuel d'un workflow function workflow_workflow_run(element){ $('.btn-workflow-execute').addClass('btn-preloader'); $.action({ action : 'workflow_workflow_run', id : $('#workflow-form').attr('data-id'), eventSlug : $(element).closest('li').attr('data-slug') },function(r){ $.message('success','Executé'); }); } //Modification du type d'un workflow (verouillage de certains champs et récuperations des causes/effets/evenement lié a ce type) function workflow_workflow_type_change(){ if($('#type').val() == 'global'){ $('.entity-group').addClass('hidden'); }else{ $('.entity-group').removeClass('hidden'); } workflow_cause_search(); workflow_event_search(); } /** WORKFLOWEVENT **/ //Récuperation d'une liste de workflowevent dans le tableau #workflowevents function workflow_event_search(callback){ var box = new FilterBox('#filters'); $('#workflow-events').fill({ action:'workflow_event_search', workflow : $('#workflow-form').attr('data-id'), filters: box.filters(), type: $('#type').val(), entity: $('#entity').val(), sort: $('#workflow-events').sortable_table('get') },function(response){ $('#event').html(''); for(var slug in response.events){ $('#event').append(''); } if(callback!=null) callback(); }); } //Ajout ou modification d'élément workflowevent function workflow_workflow_event_save(){ var data = $('#workflow-event-form').toJson(); data.workflow = $('#workflow-form').attr('data-id'); $.action(data,function(r){ $('#workflow-event-form').attr('data-id',''); workflow_event_search(); $.message('success','Enregistré'); }); } //Suppression d'élement workflowevent function workflow_workflow_event_delete(element){ var line = $(element).closest('li'); $.action({ action: 'workflow_workflow_event_delete', id: line.attr('data-id') },function(r){ line.remove(); $.message('info','Item supprimé'); }); } /* WORKFLOW CAUSES */ //Récuperation d'une liste de workfloweffect dans le tableau #workfloweffects function workflow_cause_search(callback){ $.action({ action:'workflow_cause_search', workflow: $('#workflow-form').attr('data-id'), type: $('#type').val(), entity: $('#entity').val(), sort: $('#workflow-effects').sortable_table('get') },function(response){ $('#cause-filters').remove(); $('.workflow-causes .advanced-search-box').remove(); $('.workflow-cause-filters').html(''); for (var i in response.filters) { $('.workflow-cause-filters').append(response.filters[i]); } var filters = ''; for(var k in response.causes.available){ filters+='' } var causes = $('#cause-filters-template').template({enabled : response.causes.enabled,filters : filters}); causes.removeClass('hidden'); causes.attr('id','cause-filters').attr('data-type','filter'); $('#cause-filters-template').after(causes); init_components(); if(callback!=null) callback(); }); } /** WORKFLOWEFFECT **/ //Récuperation d'une liste de workfloweffect dans le tableau #workfloweffects function workflow_effect_search(callback){ $('#workflow-effects').fill({ action:'workflow_effect_search', workflow: $('#workflow-form').attr('data-id'), type: $('#type').val(), entity: $('#entity').val(), sort: $('#workflow-effects').sortable_table('get') },function(response){ $('#workflow-effects tbody tr:visible').each(function(){ var slug = $(this).attr('data-slug'); if(window['workflow_effect_'+slug+'_init']) window['workflow_effect_'+slug+'_init']($(this)); }); init_components('#workflow-effects'); if(callback!=null) callback(); }); } //Ajout ou modification d'élément workfloweffect function workflow_workflow_effect_save(){ var data = $('#workflow-effect-form').toJson(); data.workflow = $('#workflow-form').attr('data-id'); $.action(data,function(r){ $('#workflow-effect-form').attr('data-id',''); workflow_effect_search(function(){ workflow_workflow_effect_edit($('#workflow-effects [data-id="'+r.id+'"] .btn-edit')); }); $.message('success','Enregistré'); }); } //Récuperation ou edition d'élément workfloweffect function workflow_workflow_effect_edit(element){ //var line = $(element).closest('tr'); var button = $(element); var tr = button.closest('tr'); var form = tr.find('.workflow-effect-form'); if(!tr.hasClass('open')){ $('#workflow-effects tr').removeClass('open'); //open tr.addClass('open'); form.find('input:eq(0)').focus(); }else{ //save & close data = {}; data.id = tr.attr('data-id'); data.action = 'workflow_workflow_effect_save'; data.values = {}; $('.workflow-effect-form [data-id]',tr).each(function(){ var input = $(this) ; var id = input.attr('data-id'); if(!id) return; if(input.attr("type")=='checkbox' || input.attr("type")=='radio'){ data.values[id] = (input.is(':checked')?1:0); } else if(input.attr("type")=='file'){ if(!input[0].files.length) return; if(input[0].files.length == 1){ data.values[id] = input[0].files[0]; } else { data.values[id] = {}; for(var i=0; i