PATH:
home
/
letacommog
/
crmleta
/
layouts
/
v7
/
modules
/
ITS4YouProcessFlow
/
resources
/********************************************************************************* * The content of this file is subject to the Process Flow 4 You license. * ("License"); You may not use this file except in compliance with the License * The Initial Developer of the Original Code is IT-Solutions4You s.r.o. * Portions created by IT-Solutions4You s.r.o. are Copyright(C) IT-Solutions4You s.r.o. * All Rights Reserved. ********************************************************************************/ Vtiger.Class("ITS4YouProcessFlow_Actions_Js",{},{ its4you_modulefields: new Array(), its4you_nummodulefields: new Array(), its4you_modulefields_data: new Array(), instances: new Array(), modulefields : false, nummodulefields : 0, formElement : false, pfContainer: false, forModule: false, forView: false, getInstance : function() { var view = app.view(); var parentModule = app.getParentModuleName(); if(parentModule != 'Settings'){ this.getListActions(view,''); this.registerPostEventsListener(); if (view == "Edit"){ this.registerEditEventsListener(); } } }, controlField : function(field, validate){ var thisInstance = this; thisInstance.setDebugText('control field start'); var modulefields = thisInstance.its4you_modulefields; var nummodulefields = thisInstance.its4you_nummodulefields; var forfieldname = field.data('fieldname'); thisInstance.setDebugText('control field name:'+forfieldname); if (typeof forfieldname == 'undefined') { var forfieldname = field.attr('name'); } if (typeof forfieldname != 'undefined') { if(forfieldname.substring(forfieldname.length - 2, forfieldname.length) == '[]') { forfieldname = forfieldname.substring(0, forfieldname.length - 2); } thisInstance.setDebugText('control field A'); if(jQuery.inArray(forfieldname, modulefields) !== -1) { thisInstance.setDebugText('control field B'); if(typeof field != 'undefined' && typeof thisInstance.its4you_modulefields_data != 'undefined'){ var field_val = field.val(); if (field.attr('type') == 'checkbox') { if (field.not(':checked')){ field_val = ""; } } if (thisInstance.its4you_modulefields_data[forfieldname] == field_val) { return false; } } thisInstance.setDebugText('control field C'); thisInstance.controlFields(); } else { thisInstance.setDebugText('control field A end'); } } }, getFieldElementByName: function(fieldname) { var fieldElement = jQuery("[name='"+fieldname+"[]']"); if (!fieldElement.length){ fieldElement = jQuery("[name='"+fieldname+"']"); } return fieldElement; }, controlFields : function(){ var thisInstance = this; var modulefields = thisInstance.its4you_modulefields; var nummodulefields = thisInstance.its4you_nummodulefields; var formElement = thisInstance.getForm(); var for_module = thisInstance.getForModule(); var for_view = thisInstance.getForView(); var params = { "module": "ITS4YouProcessFlow", "action": "IndexAjax", "mode": "controlFields", "for_module": for_module, "for_view": for_view, 'record': formElement.find('[name=record]').val() }; var postData = {}; var formData = formElement.serializeFormData(); for(var i=0; i<nummodulefields; i++){ var fieldName = modulefields[i]; var fieldValue = formData[fieldName]; //if (typeof formData[fieldName] == 'undefined') { var fieldElement = thisInstance.getFieldElementByName(fieldName); if (typeof fieldElement != 'undefined') { var fieldtype = fieldElement.data('fieldtype'); if (typeof fieldtype == 'undefined') { var alterElement = jQuery("#"+for_module+"_editView_fieldName_"+fieldName); if (typeof alterElement != 'undefined') { fieldtype = alterElement.data('fieldtype'); fieldElement = alterElement; } } if (typeof fieldtype != 'undefined') { if (fieldtype == "multipicklist") { fieldValue = ""; if (fieldElement.val() != null) { fieldValue = fieldElement.val().join(" |##| "); } } if (fieldtype == "file") { var fieldValue = ""; if (fieldElement.val() != null && fieldElement.val() != "") { fieldValue = fieldElement.val(); } else { var closestDiv = fieldElement.closest("div"); var inputElements = jQuery(".uploadedFileDetails",closestDiv).find("input[value='1']"); if (inputElements && inputElements.length > 0){ fieldValue = "1"; } } } if (fieldtype == "checkbox") { if (fieldElement.is(':checked')){ fieldValue = "1"; } else { fieldValue = "0"; } } } } postData[fieldName] = fieldValue; } thisInstance.its4you_modulefields_data = postData; params['postData'] = JSON.stringify(postData); var str = jQuery.param( params ); thisInstance.setDebugText(str); app.request.post({data: params}).then( function (error, result) { app.helper.hideProgress(); if (error) { app.helper.showErrorNotification(); return; } else { if (result.success) { jQuery.each(result.entries, function (i, data) { thisInstance.executeActions(i, data); }); } } } ) }, getForm : function(){ if(this.formElement == false){ this.setForm(jQuery('#EditView')); } return this.formElement; }, setForm : function(element){ this.formElement = element; return this; }, getForModule : function(){ if(this.forModule == false){ this.setForModule(app.getModuleName()); } return this.forModule; }, setForModule : function(for_module){ this.forModule = for_module; return this; }, getForView : function(){ if(this.forView == false){ this.setForView(app.view()); } return this.forView; }, setForView : function(for_view){ this.forView = for_view; return this; }, registerEditEventsListener: function () { var thisInstance = this; var formElement = this.getForm(); //formElement.find('.inputElement').trigger('Vtiger.Validation.Hide.Messsage') formElement.find('.inputElement').on('Vtiger.Validation.Hide.Messsage', function(e){ thisInstance.setDebugText('Vtiger.Validation.Hide.Messsage inputElement:' + jQuery(this).val() ); thisInstance.controlField(jQuery(this),false); }); formElement.find('.dateField').on('Vtiger.Validation.Hide.Messsage', function(e){ thisInstance.setDebugText('Vtiger.Validation.Hide.Messsage dateField:' + jQuery(this).val() ); thisInstance.controlField(jQuery(this),false); }); jQuery(".select2",formElement).change(function(){ thisInstance.controlField(jQuery(this),false); }); formElement.find('[type=checkbox]').click(function() { thisInstance.controlField(jQuery(this),false); }); jQuery(document).on('Vtiger.Reference.Selection', function(e,data){ var selectElement = jQuery(e.target); thisInstance.controlField(selectElement,false); }); }, getListViewContainer: function () { if (this.listViewContainer === false) { this.listViewContainer = jQuery('#listViewContent'); } return this.listViewContainer; }, executeActions: function (id, actions) { var self = this; jQuery.each(actions, function (i, action) { var instance = self.getPFActionInstanceByModuleName(action.parent_module); if (instance) { var container = self.getContainer(); instance.run(id, action, container); } }); }, getPFActionInstanceByModuleName : function(moduleName){ moduleClassName = moduleName + "_PFActions_Js"; var instance = false; if(typeof this.instances[moduleClassName] == 'undefined'){ if(typeof window[moduleClassName] != 'undefined'){ instance = new window[moduleClassName](); this.instances[moduleClassName] = instance; } } else { instance = this.instances[moduleClassName]; } return instance; }, getListActions: function (for_view,event_name) { var thisInstance = this; thisInstance.instances = new Array(); var actualInstance = window.app.controller(); if(typeof actualInstance.getDefaultParams == "function") { var params = actualInstance.getDefaultParams(); } else { var params = {}; } if (for_view == "Edit") { var formElement = this.getForm(); params['record'] = formElement.find('[name=record]').val(); } else if (for_view == "List") { params['search_params'] = JSON.stringify(actualInstance.getListSearchParams()); } params['module'] = 'ITS4YouProcessFlow'; params['for_module'] = app.getModuleName(); params['for_view'] = for_view; params['event_name'] = event_name; params['action'] = 'IndexAjax'; params['mode'] = 'getPFListActions'; params['view'] = ''; app.helper.showProgress(); var str = jQuery.param( params ); thisInstance.setDebugText('getListActions'); thisInstance.setDebugText(str); app.request.post({data: params}).then( function (error, result) { app.helper.hideProgress(); if (error) { app.helper.showErrorNotification(); return; } else { if (result.fields) { thisInstance.its4you_modulefields = result.fields; thisInstance.its4you_nummodulefields = result.numfields; } if (result.success) { jQuery.each(result.entries, function (i, data) { thisInstance.executeActions(i, data); }); } } } ) }, registerPostEventsListener: function () { var self = this; app.event.on('post.listViewFilter.click', function (event, searchRow) { self.getListActions('List','post.listViewFilter.click'); }); app.event.on('post.relatedListLoad.click', function (event, searchRow) { var linkKey = self.getLinkKey(); var forView = 'relatedList'; if (linkKey == 'LBL_RECORD_DETAILS' || linkKey == 'LBL_RECORD_SUMMARY') { forView = 'Detail'; } self.getListActions(forView,'post.relatedListLoad.click'); }); app.event.on('post.overlay.load', function (parentRecordId, params) { self.getListActions('relatedDetail','post.overlay.load'); }); app.event.on('post.QuickCreateForm.save', function (event,data) { self.getListActions('Detail','post.QuickCreateForm.save'); }); app.event.on('PostAjaxSaveEvent', function (e, fieldBasicData, postSaveRecordDetails,contentHolder) { self.getListActions('Detail','PostAjaxSaveEvent'); }); app.event.on('post.overLayEditView.loaded',function(e, container){ self.setContainer(container); var for_view = 'Edit'; self.getListActions(for_view,'post.overLayEditView.loaded'); var formElement = container.find('#EditView'); self.setForm(formElement); var for_module = formElement.find('[name=module]').val(); self.setForModule(for_module); self.setForView(for_view); self.registerEditEventsListener(); }); }, getContainer: function () { return this.pfContainer; }, setContainer: function (element) { this.pfContainer = element; return this; }, setDebugText : function(text){ //if (window.console) console.log('[ITS4YouDynamicFields] ' + text); }, getLinkKey : function(){ var link_key = ''; var tabContainer = jQuery('div.related-tabs'); if (typeof tabContainer != 'undefined') { var active_tab = tabContainer.find('li.active'); if (typeof active_tab != 'undefined') { var link_key = active_tab.data('link-key'); if (typeof link_key == 'undefined') { link_key = ''; } } } return link_key; }, }); jQuery(document).ready(function() { var ITS4YouProcessFlowActionsInstance = new ITS4YouProcessFlow_Actions_Js(); ITS4YouProcessFlowActionsInstance.getInstance(); });
[+]
..
[-] processflow_actions.js
[edit]