晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/layouts/v7/modules/Settings/Workflows/resources/ |
Upload File : |
/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.0
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
*************************************************************************************/
Settings_Vtiger_Edit_Js("Settings_Workflows_Edit_Js", {
}, {
workFlowsContainer: false,
advanceFilterInstance: false,
ckEditorInstance: false,
fieldValueMap: false,
workFlowsActionContainer : false,
/**
* Function to get the container which holds all the workflow elements
* @return jQuery object
*/
getContainer: function () {
return this.workFlowsContainer;
},
/**
* Function to get the container which holds all the workflow elements
* @return jQuery object
*/
getActionContainer: function () {
return this.workFlowsActionContainer;
},
/**
* Function to set the reports container
* @params : element - which represents the workflow container
* @return : current instance
*/
setContainer: function (element) {
this.workFlowsContainer = element;
return this;
},
/**
* Function to set the reports step1 container
* @params : element - which represents the reports step1 container
* @return : current instance
*/
setActionContainer : function(element) {
this.workFlowsActionContainer = element;
return this;
},
calculateValues : function(){
//handled advanced filters saved values.
var enableFilterElement = jQuery('#enableAdvanceFilters');
if(enableFilterElement.length > 0 && enableFilterElement.is(':checked') == false) {
jQuery('#advanced_filter').val(jQuery('#olderConditions').val());
} else {
jQuery('[name="filtersavedinnew"]').val("6");
var advfilterlist = this.advanceFilterInstance.getValues();
jQuery('#advanced_filter').val(JSON.stringify(advfilterlist));
}
},
checkExpressionValidation : function(form) {
var params = {
'module' : app.module(),
'parent' : app.getParentModuleName(),
'action' : 'ValidateExpression',
'mode' : 'ForWorkflowEdit'
};
var serializeForm = form.serializeFormData();
params = jQuery.extend(serializeForm, params);
app.request.post({'data' : params}).then(function(error, data) {
if(error == null) {
form.get(0).submit();
} else {
jQuery(form).find('button.saveButton').removeAttr('disabled');
app.helper.showErrorNotification({'message' : app.vtranslate('LBL_EXPRESSION_INVALID')});
}
});
},
/*
* Function to register the click event for next button
*/
registerFormSubmitEvent : function() {
var self = this;
var form = jQuery('#workflow_edit');
var params = {
submitHandler: function(form) {
if(jQuery('[name="workflow_trigger"]').val() == '6' && jQuery('#schtypeid').val() == '3') {
if(jQuery('#schdayofweek').val().length <= 0) {
app.helper.showErrorNotification({'message':'Please Select atleast one value'});
return false;
}
}
var form = jQuery(form);
self.calculateValues();
window.onbeforeunload = null;
jQuery(form).find('button.saveButton').attr('disabled', 'disabled');
self.checkExpressionValidation(form);
//form.get(0).submit();
return false;
}
};
form.vtValidate(params);
},
getPopUp: function (container) {
var thisInstance = this;
if (typeof container == 'undefined') {
container = thisInstance.getContainer();
}
var isPopupShowing = false;
container.on('click', '.getPopupUi', function (e) {
// Added to prevent multiple clicks event
if(isPopupShowing) {
return false;
}
var fieldValueElement = jQuery(e.currentTarget);
var fieldValue = fieldValueElement.val();
var fieldUiHolder = fieldValueElement.closest('.fieldUiHolder');
var valueType = fieldUiHolder.find('[name="valuetype"]').val();
if (valueType == '' || valueType == 'null') {
valueType = 'rawtext';
}
var conditionsContainer = fieldValueElement.closest('.conditionsContainer');
var conditionRow = fieldValueElement.closest('.conditionRow');
var clonedPopupUi = conditionsContainer.find('.popupUi').clone(true, true).removeClass('hide').removeClass('popupUi').addClass('clonedPopupUi');
clonedPopupUi.find('select').addClass('select2');
clonedPopupUi.find('.fieldValue').val(fieldValue);
clonedPopupUi.find('.fieldValue').removeClass('hide');
if (fieldValueElement.hasClass('date')) {
clonedPopupUi.find('.textType').find('option[value="rawtext"]').attr('data-ui', 'input');
var dataFormat = fieldValueElement.data('date-format');
if (valueType == 'rawtext') {
var value = fieldValueElement.val();
} else {
value = '';
}
var clonedDateElement = '<input type="text" style="width: 30%;" class="dateField fieldValue inputElement" value="' + value + '" data-date-format="' + dataFormat + '" data-input="true" >'
clonedPopupUi.find('.fieldValueContainer div').prepend(clonedDateElement);
} else if (fieldValueElement.hasClass('time')) {
clonedPopupUi.find('.textType').find('option[value="rawtext"]').attr('data-ui', 'input');
if (valueType == 'rawtext') {
var value = fieldValueElement.val();
} else {
value = '';
}
var clonedTimeElement = '<input type="text" style="width: 30%;" class="timepicker-default fieldValue inputElement" value="' + value + '" data-input="true" >'
clonedPopupUi.find('.fieldValueContainer div').prepend(clonedTimeElement);
} else if (fieldValueElement.hasClass('boolean')) {
clonedPopupUi.find('.textType').find('option[value="rawtext"]').attr('data-ui', 'input');
if (valueType == 'rawtext') {
var value = fieldValueElement.val();
} else {
value = '';
}
var clonedBooleanElement = '<input type="checkbox" style="width: 30%;" class="fieldValue inputElement" value="' + value + '" data-input="true" >';
clonedPopupUi.find('.fieldValueContainer div').prepend(clonedBooleanElement);
var fieldValue = clonedPopupUi.find('.fieldValueContainer input').val();
if (value == 'true:boolean' || value == '') {
clonedPopupUi.find('.fieldValueContainer input').attr('checked', 'checked');
} else {
clonedPopupUi.find('.fieldValueContainer input').removeAttr('checked');
}
}
var callBackFunction = function (data) {
isPopupShowing = false;
data.find('.clonedPopupUi').removeClass('hide');
var moduleNameElement = conditionRow.find('[name="modulename"]');
if (moduleNameElement.length > 0) {
var moduleName = moduleNameElement.val();
data.find('.useFieldElement').addClass('hide');
jQuery(data.find('[name="' + moduleName + '"]').get(0)).removeClass('hide');
}
thisInstance.postShowModalAction(data, valueType);
thisInstance.registerChangeFieldEvent(data);
thisInstance.registerSelectOptionEvent(data);
thisInstance.registerPopUpSaveEvent(data, fieldUiHolder);
thisInstance.registerRemoveModalEvent(data);
data.find('.fieldValue').filter(':visible').trigger('focus');
}
conditionsContainer.find('.clonedPopUp').html(clonedPopupUi);
jQuery('.clonedPopupUi').on('shown', function () {
if (typeof callBackFunction == 'function') {
callBackFunction(jQuery('.clonedPopupUi', conditionsContainer));
}
});
isPopupShowing = true;
app.helper.showModal(jQuery('.clonedPopUp', conditionsContainer).find('.clonedPopupUi'), {cb: callBackFunction});
});
},
registerRemoveModalEvent: function (data) {
data.on('click', '.closeModal', function (e) {
data.modal('hide');
});
},
registerPopUpSaveEvent: function (data, fieldUiHolder) {
jQuery('[name="saveButton"]', data).on('click', function (e) {
var valueType = jQuery('select.textType', data).val();
fieldUiHolder.find('[name="valuetype"]').val(valueType);
var fieldValueElement = fieldUiHolder.find('.getPopupUi');
if (valueType != 'rawtext') {
fieldValueElement.addClass('ignore-validation');
} else {
fieldValueElement.removeClass('ignore-validation');
}
var fieldType = data.find('.fieldValue').filter(':visible').attr('type');
var fieldValue = data.find('.fieldValue').filter(':visible').val();
//For checkbox field type, handling fieldValue
if (fieldType == 'checkbox') {
if (data.find('.fieldValue').filter(':visible').is(':checked')) {
fieldValue = 'true:boolean';
} else {
fieldValue = 'false:boolean';
}
}
fieldValueElement.val(fieldValue);
data.modal('hide');
});
},
registerSelectOptionEvent: function (data) {
jQuery('.useField,.useFunction', data).on('change', function (e) {
var currentElement = jQuery(e.currentTarget);
var newValue = currentElement.val();
var oldValue = data.find('.fieldValue').filter(':visible').val();
var textType = currentElement.closest('.clonedPopupUi').find('select.textType').val();
if (currentElement.hasClass('useField')) {
//If it is fieldname mode then we need to allow only one field
if (oldValue != '' && textType != 'fieldname') {
var concatenatedValue = oldValue + ' ' + newValue;
} else {
concatenatedValue = newValue;
}
} else {
concatenatedValue = oldValue + newValue;
}
data.find('.fieldValue').val(concatenatedValue);
currentElement.val('').select2("val", '');
});
},
registerChangeFieldEvent: function (data) {
jQuery('.textType', data).on('change', function (e) {
var valueType = jQuery(e.currentTarget).val();
var useFieldContainer = jQuery('.useFieldContainer', data);
var useFunctionContainer = jQuery('.useFunctionContainer', data);
var uiType = jQuery(e.currentTarget).find('option:selected').data('ui');
jQuery('.fieldValue', data).hide();
jQuery('[data-' + uiType + ']', data).show();
if (valueType == 'fieldname') {
useFieldContainer.removeClass('hide');
useFunctionContainer.addClass('hide');
} else if (valueType == 'expression') {
useFieldContainer.removeClass('hide');
useFunctionContainer.removeClass('hide');
} else {
useFieldContainer.addClass('hide');
useFunctionContainer.addClass('hide');
}
jQuery('.helpmessagebox', data).addClass('hide');
jQuery('#' + valueType + '_help', data).removeClass('hide');
data.find('.fieldValue').val('');
});
},
postShowModalAction: function (data, valueType) {
if (valueType == 'fieldname') {
jQuery('.useFieldContainer', data).removeClass('hide');
jQuery('.textType', data).val(valueType).trigger('change');
} else if (valueType == 'expression') {
jQuery('.useFieldContainer', data).removeClass('hide');
jQuery('.useFunctionContainer', data).removeClass('hide');
jQuery('.textType', data).val(valueType).trigger('change');
}
jQuery('#' + valueType + '_help', data).removeClass('hide');
var uiType = jQuery('.textType', data).find('option:selected').data('ui');
jQuery('.fieldValue', data).hide();
jQuery('[data-' + uiType + ']', data).show();
},
registerEventForShowModuleFilterCondition: function () {
var thisInstance = this;
jQuery('#module_name').on('change', function (e) {
var currentElement = jQuery(e.currentTarget);
var selectedOption = currentElement.find('option:selected');
jQuery('#workflowTriggerCreate').html(selectedOption.data('create-label'));
jQuery('#workflowTriggerUpdate').html(selectedOption.data('update-label'));
var params = {
'module': 'Workflows',
'parent': 'Settings',
'view': 'EditAjax',
'mode': 'getWorkflowConditions',
'record': jQuery("input[name='record']").val(),
'module_name': currentElement.val()
}
app.helper.showProgress();
app.request.get({data: params}).then(function (error, data) {
app.helper.hideProgress();
jQuery('#workflow_condition').html(data);
var advanceFilterContainer = jQuery('#advanceFilterContainer');
vtUtils.applyFieldElementsView(jQuery('#workflow_condition'));
thisInstance.advanceFilterInstance = Workflows_AdvanceFilter_Js.getInstance(jQuery('.filterContainer', advanceFilterContainer));
thisInstance.getPopUp(advanceFilterContainer);
//Workflows actions
thisInstance.setActionContainer(jQuery('#workflow_action'));
thisInstance.registerEditTaskEvent();
thisInstance.registerTaskStatusChangeEvent();
thisInstance.registerTaskDeleteEvent();
jQuery(".taskStatus").bootstrapSwitch();
app.helper.registerLeavePageWithoutSubmit(jQuery('#workflow_edit'));
});
});
jQuery('#module_name').trigger('change');
},
//Workflow action related api's
registerEditTaskEvent: function () {
var thisInstance = this;
var container = this.getActionContainer();
container.on('click', '[data-url]', function (e) {
var currentElement = jQuery(e.currentTarget);
var url = currentElement.data('url') + '&module_name=' + jQuery('#module_name').val();
app.helper.showProgress();
app.request.get({url:url}).then(function (error, data) {
app.helper.hideProgress();
app.helper.loadPageContentOverlay(data).then(function(container) {
var container = jQuery(container);
var viewPortHeight = $(window).height();
var params = {
setHeight:(viewPortHeight-jQuery('.app-fixed-navbar').height()-container.find('.modal-header').height())+'px'
};
app.helper.showVerticalScroll(container.find('.modal-body.editTaskBody'), params);
thisInstance.registerVTCreateTodoTaskEvents();
var taskType = jQuery('#taskType').val();
var functionName = 'register' + taskType + 'Events';
if (typeof thisInstance[functionName] != 'undefined') {
thisInstance[functionName].apply(thisInstance);
}
thisInstance.registerSaveTaskSubmitEvent(taskType);
thisInstance.registerFillTaskFieldsEvent();
thisInstance.registerCheckSelectDateEvent();
});
});
});
container.on('click', '.editTask', function (e) {
var currentElement = jQuery(e.currentTarget);
var params = {
module: 'Workflows',
parent: 'Settings',
view: 'EditV7Task',
type: currentElement.data('taskType'),
module_name: jQuery('#module_name').val()
}
var parentElement = currentElement.closest('tr');
var taskData = parentElement.find('.taskData').val();
if(taskData) {
params.taskData = taskData;
}
app.helper.showProgress();
app.request.post({data:params}).then(function (error, data) {
app.helper.hideProgress();
app.helper.loadPageContentOverlay(data).then(function(container) {
var overlayPageContent = $('#overlayPageContent');
overlayPageContent.css('margin-left', '230px');
var viewPortHeight = $(window).height();
var params = {
setHeight:(viewPortHeight-jQuery('.app-fixed-navbar').height()-container.find('.modal-header').height())+'px'
};
app.helper.showVerticalScroll(container.find('.modal-body.editTaskBody'), params);
thisInstance.registerVTCreateTodoTaskEvents();
var taskType = jQuery('#taskType').val();
var functionName = 'register' + taskType + 'Events';
if (typeof thisInstance[functionName] != 'undefined') {
thisInstance[functionName].apply(thisInstance);
}
thisInstance.registerSaveTaskSubmitEvent(taskType);
thisInstance.registerFillTaskFieldsEvent();
thisInstance.registerCheckSelectDateEvent();
});
});
});
container.on('click', '.deleteTaskTemplate', function (e) {
var currentElement = jQuery(e.currentTarget);
var parentElement = currentElement.closest('tr');
var tableDiv = jQuery('#table-content');
var table = tableDiv.find('#listview-table');
parentElement.remove();
var visibleRows = table.find('tbody').find('tr:visible');
if(visibleRows.length == 0) {
tableDiv.find('.emptyRecordsDiv').removeClass('hide');
}
});
},
registerCheckSelectDateEvent: function () {
jQuery('[name="check_select_date"]').on('change', function (e) {
if (jQuery(e.currentTarget).is(':checked')) {
jQuery('#checkSelectDateContainer').removeClass('hide').addClass('show');
} else {
jQuery('#checkSelectDateContainer').removeClass('show').addClass('hide');
}
});
},
/**
* Function to add event on signature popover
*/
registerTooltipEventForSignatureField: function () {
jQuery("#signaturePopover").on('mouseover', function (e) {
jQuery('#signaturePopover').popover({
'html': true
});
});
},
registerSaveTaskSubmitEvent: function (taskType) {
var thisInstance = this;
var form = jQuery('#saveTask');
var params = {
submitHandler: function(form) {
var form = jQuery(form);
// to Prevent submit if already submitted
jQuery("button[name='saveButton']", form).attr("disabled","disabled");
var record = jQuery('#record').val();
if(!record) {
var preSaveActionFunctionName = 'preSave' + taskType;
if (typeof thisInstance[preSaveActionFunctionName] != 'undefined') {
thisInstance[preSaveActionFunctionName].apply(thisInstance, [taskType]);
}
var params = form.serializeFormData();
var clonedParams = jQuery.extend({}, params);
clonedParams.action ='ValidateExpression';
clonedParams.mode ='ForTaskEdit';
app.request.post({'data' : clonedParams}).then(function(error, data){
if(error != null) {
app.helper.showErrorNotification({'message' : app.vtranslate('LBL_EXPRESSION_INVALID')});
return;
}
app.helper.hidePageContentOverlay();
if(!params.tmpTaskId) {
params.tmpTaskId = thisInstance.getUniqueNumber();
}
var templateData = $('<input>').attr({
type: 'hidden',
name: 'tasks[]'
}).addClass('taskData').val(JSON.stringify(params));
var tableDiv = jQuery('#table-content');
var table = tableDiv.find('#listview-table');
var tableBody = table.find('tbody');
var taskTemplate = tableBody.find('.taskTemplate').clone(true,true);
taskTemplate.removeClass('hide taskTemplate');
taskTemplate.find('.taskType').text(app.vtranslate(params.taskType));
taskTemplate.find('.taskName').text(params.summary);
taskTemplate.find('.editTask').data('taskType', params.taskType);
taskTemplate.append(templateData);
taskTemplate.addClass('tmpTaskId-'+params.tmpTaskId);
if(params.active == 'false') {
taskTemplate.find('.tmpTaskStatus').val('off').prop('checked', false);
}
taskTemplate.find('.tmpTaskStatus').addClass('taskStatus').bootstrapSwitch();
tableDiv.find('.emptyRecordsDiv').addClass('hide');
if(table.find('.tmpTaskId-'+params.tmpTaskId).length != 0) {
table.find('.tmpTaskId-'+params.tmpTaskId).replaceWith(taskTemplate);
} else {
tableBody.append(taskTemplate);
}
});
} else {
var preSaveActionFunctionName = 'preSave' + taskType;
if (typeof thisInstance[preSaveActionFunctionName] != 'undefined') {
thisInstance[preSaveActionFunctionName].apply(thisInstance, [taskType]);
}
form.find('[name="saveButton"]').attr('disabled', 'disabled');
var params = form.serializeFormData();
app.helper.showProgress();
app.request.post({data:params}).then(function (error, data) {
app.helper.hideProgress();
if (data) {
thisInstance.getTaskList();
app.helper.hidePageContentOverlay();
} else {
app.helper.showErrorNotification({'message' : app.vtranslate('LBL_EXPRESSION_INVALID')});
form.find('[name="saveButton"]').removeAttr('disabled');
}
});
}
},
ignore : ".ignore-validation"
};
form.vtValidate(params);
},
getUniqueNumber : function() {
var date = new Date();
var components = [
date.getYear(),
date.getMonth(),
date.getDate(),
date.getHours(),
date.getMinutes(),
date.getSeconds(),
date.getMilliseconds()
];
var id = components.join("");
return id;
},
VTUpdateFieldsTaskCustomValidation: function () {
return this.checkDuplicateFieldsSelected();
},
VTCreateEntityTaskCustomValidation: function () {
return this.checkDuplicateFieldsSelected();
},
VTCreateEventTaskCustomValidation: function () {
return this.checkStartAndEndDate();
},
checkStartAndEndDate: function () {
var form = jQuery('#saveTask');
var params = form.serializeFormData();
var result = true;
if (params['taskType'] == 'VTCreateEventTask' && params['startDatefield'] == params['endDatefield']) {
if (params['startDirection'] == params['endDirection']) {
if (params['startDays'] > params['endDays'] && params['endDirection'] == 'after') {
result = app.vtranslate('JS_CHECK_START_AND_END_DATE');
return result;
} else if (params['startDays'] < params['endDays'] && params['endDirection'] == 'before') {
result = app.vtranslate('JS_CHECK_START_AND_END_DATE');
return result;
} else if (params['startDays'] == params['endDays'] && params['startDirection'] == params['endDirection'] && params['endTime'] < params['startTime']) {
result = app.vtranslate('JS_CHECK_START_AND_END_DATE');
return result;
}
}
}
return result;
},
checkDuplicateFieldsSelected: function () {
var selectedFieldNames = jQuery('#save_fieldvaluemapping').find('.conditionRow').find('[name="fieldname"]');
var result = true;
var failureMessage = app.vtranslate('JS_SAME_FIELDS_SELECTED_MORE_THAN_ONCE');
jQuery.each(selectedFieldNames, function (i, ele) {
var fieldName = jQuery(ele).attr("value");
var taskType = jQuery('#taskType').val();
if (taskType == "VTUpdateFieldsTask") {
var fields = jQuery('[data-workflow_columnname="' + fieldName + '"]').not(':hidden');
} else {
var fields = jQuery('[name="' + fieldName + '"]').not(':hidden');
}
if (fields.length > 1) {
result = failureMessage;
return false;
}
});
return result;
},
preSaveVTUpdateFieldsTask: function (tasktype) {
var values = this.getValues(tasktype);
jQuery('[name="field_value_mapping"]').val(JSON.stringify(values));
},
preSaveVTCreateEntityTask: function (tasktype) {
var values = this.getValues(tasktype);
jQuery('[name="field_value_mapping"]').val(JSON.stringify(values));
},
preSaveVTEmailTask: function (tasktype) {
var textAreaElement = jQuery('#content');
//To keep the plain text value to the textarea which need to be
//sent to server
textAreaElement.val(CKEDITOR.instances['content'].getData());
},
/**
* Function to check if the field selected is empty field
* @params : select element which represents the field
* @return : boolean true/false
*/
isEmptyFieldSelected: function (fieldSelect) {
var selectedOption = fieldSelect.find('option:selected');
//assumption that empty field will be having value none
if (selectedOption.val() == 'none') {
return true;
}
return false;
},
getVTCreateEntityTaskFieldList: function () {
return new Array('fieldname', 'value', 'valuetype', 'modulename');
},
getVTUpdateFieldsTaskFieldList: function () {
return new Array('fieldname', 'value', 'valuetype');
},
getValues: function (tasktype) {
var thisInstance = this;
var conditionsContainer = jQuery('#save_fieldvaluemapping');
var fieldListFunctionName = 'get' + tasktype + 'FieldList';
if (typeof thisInstance[fieldListFunctionName] != 'undefined') {
var fieldList = thisInstance[fieldListFunctionName].apply()
}
var values = [];
var conditions = jQuery('.conditionRow', conditionsContainer);
conditions.each(function (i, conditionDomElement) {
var rowElement = jQuery(conditionDomElement);
var fieldSelectElement = jQuery('[name="fieldname"]', rowElement);
var valueSelectElement = jQuery('[data-value="value"]', rowElement);
//To not send empty fields to server
if (thisInstance.isEmptyFieldSelected(fieldSelectElement)) {
return true;
}
var fieldDataInfo = fieldSelectElement.find('option:selected').data('fieldinfo');
var fieldType = fieldDataInfo.type;
var rowValues = {};
if (fieldType == 'owner') {
for (var key in fieldList) {
var field = fieldList[key];
if (field == 'value' && valueSelectElement.is('select')) {
rowValues[field] = valueSelectElement.find('option:selected').val();
} else {
rowValues[field] = jQuery('[name="' + field + '"]', rowElement).val();
}
}
} else if (fieldType == 'picklist' || fieldType == 'multipicklist') {
for (var key in fieldList) {
var field = fieldList[key];
if (field == 'value' && valueSelectElement.is('input')) {
var commaSeperatedValues = valueSelectElement.val();
var pickListValues = valueSelectElement.data('picklistvalues');
var valuesArr = commaSeperatedValues.split(',');
var newvaluesArr = [];
for (i = 0; i < valuesArr.length; i++) {
if (typeof pickListValues[valuesArr[i]] != 'undefined') {
newvaluesArr.push(pickListValues[valuesArr[i]]);
} else {
newvaluesArr.push(valuesArr[i]);
}
}
var reconstructedCommaSeperatedValues = newvaluesArr.join(',');
rowValues[field] = reconstructedCommaSeperatedValues;
} else if (field == 'value' && valueSelectElement.is('select') && fieldType == 'picklist') {
rowValues[field] = valueSelectElement.val();
} else if (field == 'value' && valueSelectElement.is('select') && fieldType == 'multipicklist') {
var value = valueSelectElement.val();
if (value == null) {
rowValues[field] = value;
} else {
rowValues[field] = value.join(',');
}
} else {
rowValues[field] = jQuery('[name="' + field + '"]', rowElement).val();
}
}
} else if (fieldType == 'text') {
for (var key in fieldList) {
var field = fieldList[key];
if (field == 'value') {
rowValues[field] = rowElement.find('textarea').val();
} else {
rowValues[field] = jQuery('[name="' + field + '"]', rowElement).val();
}
}
} else {
for (var key in fieldList) {
var field = fieldList[key];
if (field == 'value') {
rowValues[field] = valueSelectElement.val();
} else {
rowValues[field] = jQuery('[name="' + field + '"]', rowElement).val();
}
}
}
if (jQuery('[name="valuetype"]', rowElement).val() == 'false' || (jQuery('[name="valuetype"]', rowElement).length == 0)) {
rowValues['valuetype'] = 'rawtext';
}
values.push(rowValues);
});
return values;
},
getTaskList: function () {
var params = {
module: app.getModuleName(),
parent: app.getParentModuleName(),
view: 'TasksList',
record: jQuery('[name="record"]').val()
}
app.helper.showProgress();
app.request.get({data:params}).then(function (error, data) {
jQuery('#taskListContainer').html(data);
app.helper.hideProgress();
jQuery(".taskStatus").bootstrapSwitch();
});
},
/**
* Function to get ckEditorInstance
*/
getckEditorInstance: function () {
if (this.ckEditorInstance == false) {
this.ckEditorInstance = new Vtiger_CkEditor_Js();
}
return this.ckEditorInstance;
},
registerTaskStatusChangeEvent: function () {
var container = this.getActionContainer();
container.on('change', '.taskStatus', function (e) {
var currentStatusElement = jQuery(e.currentTarget);
var url = currentStatusElement.data('statusurl');
if (currentStatusElement.is(':checked')) {
url = url + '&status=true';
} else {
url = url + '&status=false';
}
app.helper.showProgress();
app.request.post({data:url}).then(function (error, data) {
if (data.result == "ok") {
app.helper.showSuccessNotification({message: 'JS_STATUS_CHANGED_SUCCESSFULLY'})
}
app.helper.hideProgress();
});
e.stopImmediatePropagation();
});
},
registerTaskDeleteEvent: function () {
var thisInstance = this;
var container = this.getActionContainer();
container.on('click', '.deleteTask', function (e) {
var message = app.vtranslate('LBL_DELETE_CONFIRMATION');
app.helper.showConfirmationBox({
'message': message
}).then(
function () {
var currentElement = jQuery(e.currentTarget);
var deleteUrl = currentElement.data('deleteurl');
app.helper.showProgress();
app.request.post({url: deleteUrl}).then(function (error, data) {
app.helper.hideProgress();
if (data == 'ok') {
thisInstance.getTaskList();
app.helper.showSuccessNotification({message: app.vtranslate('JS_TASK_DELETED_SUCCESSFULLY')});
}
});
});
});
},
registerFillTaskFromEmailFieldEvent: function () {
jQuery('#saveTask').on('change', '#fromEmailOption', function (e) {
var currentElement = jQuery(e.currentTarget);
var inputElement = currentElement.closest('.row').find('.fields');
inputElement.val(currentElement.val());
})
},
registerFillTaskFieldsEvent: function () {
jQuery('#saveTask').on('change', '.task-fields', function (e) {
var currentElement = jQuery(e.currentTarget);
var inputElement = currentElement.closest('.row').find('.fields');
if (currentElement.hasClass('overwriteSelection')) {
inputElement.val(currentElement.val());
} else {
var oldValue = inputElement.val();
var newValue = oldValue + currentElement.val();
inputElement.val(newValue);
}
});
},
registerFillMailContentEvent: function () {
jQuery('#task-fieldnames,#task_timefields,#task-templates,#task-emailtemplates').change(function (e) {
var textarea = CKEDITOR.instances.content;
var value = jQuery(e.currentTarget).val();
if (textarea != undefined) {
textarea.insertHtml(value);
} else if (jQuery('textarea[name="content"]')) {
var textArea = jQuery('textarea[name="content"]');
textArea.insertAtCaret(value);
}
});
},
registerVTEmailTaskEvents: function () {
var textAreaElement = jQuery('#content');
var ckEditorInstance = this.getckEditorInstance();
ckEditorInstance.loadCkEditor(textAreaElement);
this.registerFillMailContentEvent();
this.registerTooltipEventForSignatureField();
this.registerFillTaskFromEmailFieldEvent();
this.registerCcAndBccEvents();
},
registerVTCreateTodoTaskEvents: function () {
vtUtils.registerEventForTimeFields(jQuery('#saveTask'));
},
registerVTUpdateFieldsTaskEvents: function () {
var thisInstance = this;
this.registerAddFieldEvent();
this.registerDeleteConditionEvent();
this.registerFieldChange();
this.fieldValueMap = false;
if (jQuery('#fieldValueMapping').val() != '') {
this.fieldValueReMapping();
}
var fields = jQuery('#save_fieldvaluemapping').find('select[name="fieldname"]');
jQuery.each(fields, function (i, field) {
thisInstance.loadFieldSpecificUi(jQuery(field));
});
this.getPopUp(jQuery('#saveTask'));
},
registerVTPushNotificationTaskEvents: function () {
this.registerFillMailContentEvent();
},
registerAddFieldEvent: function () {
jQuery('#addFieldBtn').on('click', function (e) {
var newAddFieldContainer = jQuery('.basicAddFieldContainer').clone(true, true).removeClass('basicAddFieldContainer hide').addClass('conditionRow');
jQuery('select', newAddFieldContainer).addClass('select2');
jQuery('#save_fieldvaluemapping').append(newAddFieldContainer);
vtUtils.showSelect2ElementView(newAddFieldContainer.find('.select2'));
});
},
registerDeleteConditionEvent: function () {
jQuery('#saveTask').on('click', '.deleteCondition', function (e) {
jQuery(e.currentTarget).closest('.conditionRow').remove();
})
},
/**
* Function which will register field change event
*/
registerFieldChange: function () {
var thisInstance = this;
jQuery('#saveTask').on('change', 'select[name="fieldname"]', function (e) {
var selectedElement = jQuery(e.currentTarget);
if (selectedElement.val() != 'none') {
var conditionRow = selectedElement.closest('.conditionRow');
var moduleNameElement = conditionRow.find('[name="modulename"]');
if (moduleNameElement.length > 0) {
var selectedOptionFieldInfo = selectedElement.find('option:selected').data('fieldinfo');
var type = selectedOptionFieldInfo.type;
if (type == 'picklist' || type == 'multipicklist') {
var moduleName = jQuery('#createEntityModule').val();
moduleNameElement.find('option[value="' + moduleName + '"]').attr('selected', true);
moduleNameElement.trigger('change');
moduleNameElement.select2("disable");
}
}
thisInstance.loadFieldSpecificUi(selectedElement);
}
});
},
getModuleName: function () {
return app.getModuleName();
},
getFieldValueMapping: function () {
var fieldValueMap = this.fieldValueMap;
if (fieldValueMap != false) {
return fieldValueMap;
} else {
return '';
}
},
fieldValueReMapping: function () {
var object = JSON.parse(jQuery('#fieldValueMapping').val());
var fieldValueReMap = {};
jQuery.each(object, function (i, array) {
fieldValueReMap[array.fieldname] = {};
var values = {}
jQuery.each(array, function (key, value) {
values[key] = value;
});
fieldValueReMap[array.fieldname] = values
});
this.fieldValueMap = fieldValueReMap;
},
loadFieldSpecificUi: function (fieldSelect) {
var selectedOption = fieldSelect.find('option:selected');
var row = fieldSelect.closest('div.conditionRow');
var fieldUiHolder = row.find('.fieldUiHolder');
var fieldInfo = selectedOption.data('fieldinfo');
var fieldValueMapping = this.getFieldValueMapping();
var fieldValueMappingKey = fieldInfo.name;
var taskType = jQuery('#taskType').val();
if (taskType == "VTUpdateFieldsTask") {
fieldValueMappingKey = fieldInfo.workflow_columnname;
if (fieldValueMappingKey === undefined || fieldValueMappingKey === null){
fieldValueMappingKey = selectedOption.val();
}
}
if (fieldValueMapping != '' && typeof fieldValueMapping[fieldValueMappingKey] != 'undefined') {
fieldInfo.value = fieldValueMapping[fieldValueMappingKey]['value'];
fieldInfo.workflow_valuetype = fieldValueMapping[fieldValueMappingKey]['valuetype'];
} else {
fieldInfo.workflow_valuetype = 'rawtext';
}
if(fieldInfo.type == 'reference' || fieldInfo.type == 'multireference') {
fieldInfo.referenceLabel = fieldUiHolder.find('[name="referenceValueLabel"]').val();
fieldInfo.type = 'string';
}
var moduleName = this.getModuleName();
var fieldModel = Vtiger_Field_Js.getInstance(fieldInfo, moduleName);
this.fieldModelInstance = fieldModel;
var fieldSpecificUi = this.getFieldSpecificUi(fieldSelect);
//remove validation since we dont need validations for all eleements
// Both filter and find is used since we dont know whether the element is enclosed in some conainer like currency
var fieldName = fieldModel.getName();
if (fieldModel.getType() == 'multipicklist') {
fieldName = fieldName + "[]";
}
fieldSpecificUi.filter('[name="' + fieldName + '"]').attr('data-value', 'value').attr('data-workflow_columnname', fieldInfo.workflow_columnname);
fieldSpecificUi.find('[name="' + fieldName + '"]').attr('data-value', 'value').attr('data-workflow_columnname', fieldInfo.workflow_columnname);
fieldSpecificUi.filter('[name="valuetype"]').addClass('ignore-validation');
fieldSpecificUi.find('[name="valuetype"]').addClass('ignore-validation');
//If the workflowValueType is rawtext then only validation should happen
var workflowValueType = fieldSpecificUi.filter('[name="valuetype"]').val();
if (workflowValueType != 'rawtext' && typeof workflowValueType != 'undefined') {
fieldSpecificUi.filter('[name="' + fieldName + '"]').addClass('ignore-validation');
fieldSpecificUi.find('[name="' + fieldName + '"]').addClass('ignore-validation');
}
fieldUiHolder.html(fieldSpecificUi);
if (fieldSpecificUi.is('input.select2')) {
var tagElements = fieldSpecificUi.data('tags');
var params = {tags: tagElements, tokenSeparators: [","]}
vtUtils.showSelect2ElementView(fieldSpecificUi, params)
} else if (fieldSpecificUi.is('select')) {
if (fieldSpecificUi.hasClass('select2')) {
vtUtils.showSelect2ElementView(fieldSpecificUi)
} else {
vtUtils.showSelect2ElementView(fieldSpecificUi);
}
} else if (fieldSpecificUi.is('input.dateField')) {
var calendarType = fieldSpecificUi.data('calendarType');
if (calendarType == 'range') {
var customParams = {
calendars: 3,
mode: 'range',
className: 'rangeCalendar',
onChange: function (formated) {
fieldSpecificUi.val(formated.join(','));
}
}
app.registerEventForDatePickerFields(fieldSpecificUi, false, customParams);
} else {
app.registerEventForDatePickerFields(fieldSpecificUi);
}
}
return this;
},
/**
* Functiont to get the field specific ui for the selected field
* @prarms : fieldSelectElement - select element which will represents field list
* @return : jquery object which represents the ui for the field
*/
getFieldSpecificUi: function (fieldSelectElement) {
var fieldModel = this.fieldModelInstance;
return jQuery(fieldModel.getUiTypeSpecificHtml())
},
registerVTCreateEventTaskEvents: function () {
vtUtils.registerEventForTimeFields(jQuery('#saveTask'));
this.registerRecurrenceFieldCheckBox();
this.repeatMonthOptionsChangeHandling();
this.registerRecurringTypeChangeEvent();
this.registerRepeatMonthActions();
},
registerVTCreateEntityTaskEvents: function () {
this.registerChangeCreateEntityEvent();
this.registerVTUpdateFieldsTaskEvents();
},
registerChangeCreateEntityEvent: function () {
var thisInstance = this;
jQuery('#createEntityModule').on('change', function (e) {
var relatedModule = jQuery(e.currentTarget).val();
var module_name = jQuery('#module_name').val();
if( relatedModule == module_name ) {
jQuery(e.currentTarget).closest('.taskTypeUi').find('.sameModuleError').removeClass('hide');
} else{
jQuery(e.currentTarget).closest('.taskTypeUi').find('.sameModuleError').addClass('hide');
}
var params = {
module: app.getModuleName(),
parent: app.getParentModuleName(),
view: 'CreateEntity',
relatedModule: jQuery(e.currentTarget).val(),
for_workflow: jQuery('[name="for_workflow"]').val(),
module_name: jQuery('#module_name').val()
}
app.helper.showProgress();
app.request.get({data:params}).then(function (error, data) {
app.helper.hideProgress();
var createEntityContainer = jQuery('#addCreateEntityContainer');
createEntityContainer.html(data);
vtUtils.showSelect2ElementView(createEntityContainer.find('.select2'));
thisInstance.registerAddFieldEvent();
thisInstance.fieldValueMap = false;
if (jQuery('#fieldValueMapping').val() != '') {
thisInstance.fieldValueReMapping();
}
var fields = jQuery('#save_fieldvaluemapping').find('select[name="fieldname"]');
jQuery.each(fields, function (i, field) {
thisInstance.loadFieldSpecificUi(jQuery(field));
});
});
});
},
/**
* Function which will register change event on recurrence field checkbox
*/
registerRecurrenceFieldCheckBox: function () {
var thisInstance = this;
jQuery('#saveTask').find('input[name="recurringcheck"]').on('change', function (e) {
var element = jQuery(e.currentTarget);
var repeatUI = jQuery('#repeatUI');
if (element.is(':checked')) {
repeatUI.removeClass('hide');
} else {
repeatUI.addClass('hide');
}
});
},
/**
* Function which will register the change event for recurring type
*/
registerRecurringTypeChangeEvent: function () {
var thisInstance = this;
jQuery('#recurringType').on('change', function (e) {
var currentTarget = jQuery(e.currentTarget);
var recurringType = currentTarget.val();
thisInstance.changeRecurringTypesUIStyles(recurringType);
});
},
/**
* Function which will register the change event for repeatMonth radio buttons
*/
registerRepeatMonthActions: function () {
var thisInstance = this;
jQuery('#saveTask').find('input[name="repeatMonth"]').on('change', function (e) {
//If repeatDay radio button is checked then only select2 elements will be enable
thisInstance.repeatMonthOptionsChangeHandling();
});
},
/**
* Function which will change the UI styles based on recurring type
* @params - recurringType - which recurringtype is selected
*/
changeRecurringTypesUIStyles: function (recurringType) {
var thisInstance = this;
if (recurringType == 'Daily' || recurringType == 'Yearly') {
jQuery('#repeatWeekUI').removeClass('show').addClass('hide');
jQuery('#repeatMonthUI').removeClass('show').addClass('hide');
} else if (recurringType == 'Weekly') {
jQuery('#repeatWeekUI').removeClass('hide').addClass('show');
jQuery('#repeatMonthUI').removeClass('show').addClass('hide');
} else if (recurringType == 'Monthly') {
jQuery('#repeatWeekUI').removeClass('show').addClass('hide');
jQuery('#repeatMonthUI').removeClass('hide').addClass('show');
}
},
/**
* This function will handle the change event for RepeatMonthOptions
*/
repeatMonthOptionsChangeHandling: function () {
//If repeatDay radio button is checked then only select2 elements will be enable
if (jQuery('#repeatDay').is(':checked')) {
jQuery('#repeatMonthDate').attr('disabled', true);
jQuery('#repeatMonthDayType').select2("enable");
jQuery('#repeatMonthDay').select2("enable");
} else {
jQuery('#repeatMonthDate').removeAttr('disabled');
jQuery('#repeatMonthDayType').select2("disable");
jQuery('#repeatMonthDay').select2("disable");
}
},
checkHiddenStatusofCcandBcc: function () {
var ccLink = jQuery('#ccLink');
var bccLink = jQuery('#bccLink');
if (ccLink.is(':hidden') && bccLink.is(':hidden')) {
ccLink.closest('div.row').addClass('hide');
}
},
/*
* Function to register the events for bcc and cc links
*/
registerCcAndBccEvents: function () {
var thisInstance = this;
jQuery('#ccLink').on('click', function (e) {
var ccContainer = jQuery('#ccContainer');
ccContainer.removeClass('hide');
var taskFieldElement = ccContainer.find('select.task-fields');
vtUtils.showSelect2ElementView(taskFieldElement);
jQuery(e.currentTarget).hide();
thisInstance.checkHiddenStatusofCcandBcc();
});
jQuery('#bccLink').on('click', function (e) {
var bccContainer = jQuery('#bccContainer');
bccContainer.removeClass('hide');
var taskFieldElement = bccContainer.find('select.task-fields');
vtUtils.showSelect2ElementView(taskFieldElement);
jQuery(e.currentTarget).hide();
thisInstance.checkHiddenStatusofCcandBcc();
});
},
/**
* Function to register event for scheduled workflows UI
*/
registerEventForScheduledWorkflow : function() {
var thisInstance = this;
jQuery('input[name="workflow_trigger"]').on('click', function(e) {
var element = jQuery(e.currentTarget);
var scheduleBoxContainer = jQuery('#scheduleBox');
var recurrenceBoxContainer = jQuery('.workflowRecurrenceBlock');
if(element.is(':checked') && element.val() == '6') {
scheduleBoxContainer.removeClass('hide');
recurrenceBoxContainer.addClass('hide');
} else if(element.is(':checked') && element.val() == '3') {
recurrenceBoxContainer.removeClass('hide');
recurrenceBoxContainer.find('input[type="radio"]').click();
scheduleBoxContainer.addClass('hide');
} else {
scheduleBoxContainer.addClass('hide');
recurrenceBoxContainer.addClass('hide');
}
});
vtUtils.registerEventForTimeFields('#schtime', true);
vtUtils.registerEventForDateFields(jQuery('#scheduleByDate'));
jQuery(".weekDaySelect").bind("mousedown", function(e) {
e.metaKey = true;
}).selectable();
jQuery( ".weekDaySelect" ).on( "selectableselected selectableunselected", function( event, ui ) {
var inputElement = jQuery('#schdayofweek');
var weekDaySelect = jQuery('.weekDaySelect');
var selectedArray = new Array();
weekDaySelect.find('.ui-selected').each(function(){
var value = jQuery(this).data('value');
selectedArray.push(value);
});
var selected = selectedArray.join(',');
inputElement.val(selected);
});
var currentYear = new Date().getFullYear();
jQuery('#annualDatePicker').datepick({autoSize: true, multiSelect:100,monthsToShow: [1,2],
minDate: '01/01/'+currentYear, maxDate: '12/31/'+currentYear,
yearRange: currentYear+':'+currentYear,
onShow : function() {
//Hack to remove the year
thisInstance.removeYearInAnnualWorkflow();
},
onSelect : function(dates) {
var datesInfo = [];
var values = [];
var html='';
// reset the annual dates
var annualDatesEle = jQuery('#annualDates');
thisInstance.updateAnnualDates(annualDatesEle);
for(index in dates) {
var date = dates[index];
datesInfo.push({
id:thisInstance.DateToYMD(date),
text:thisInstance.DateToYMD(date)
});
values.push(thisInstance.DateToYMD(date));
html += '<option selected value='+thisInstance.DateToYMD(date)+'>'+thisInstance.DateToYMD(date)+'</option>';
}
annualDatesEle.append(html);
annualDatesEle.trigger("change");
}
});
var annualDatesEle = jQuery('#annualDates');
thisInstance.updateAnnualDates(annualDatesEle);
annualDatesEle.trigger("change");
},
removeYearInAnnualWorkflow : function() {
setTimeout(function() {
var year = jQuery('.datepick-month.first').find('.datepick-month-year').get(1);
jQuery(year).hide();
var monthHeaders = $('.datepick-month-header');
jQuery.each(monthHeaders, function( key, ele ) {
var header = jQuery(ele);
var str = header.html().replace(/[\d]+/, '');
header.html(str);
});
},100);
},
updateAnnualDates : function(annualDatesEle) {
annualDatesEle.html('');
var annualDatesJSON = jQuery('#hiddenAnnualDates').val();
if(annualDatesJSON) {
var hiddenDates = '';
var annualDates = JSON.parse(annualDatesJSON);
for(j in annualDates) {
hiddenDates += '<option selected value='+annualDates[j]+'>'+annualDates[j]+'</option>';
}
annualDatesEle.html(hiddenDates);
}
},
DateToYMD : function (date) {
var year, month, day;
year = String(date.getFullYear());
month = String(date.getMonth() + 1);
if (month.length == 1) {
month = "0" + month;
}
day = String(date.getDate());
if (day.length == 1) {
day = "0" + day;
}
return year + "-" + month + "-" + day;
},
registerEventForChangeInScheduledType : function() {
var thisInstance = this;
jQuery('#schtypeid').on('change', function(e){
var element = jQuery(e.currentTarget);
var value = element.val();
thisInstance.showScheduledTime();
thisInstance.hideScheduledWeekList();
thisInstance.hideScheduledMonthByDateList();
thisInstance.hideScheduledSpecificDate();
thisInstance.hideScheduledAnually();
if(value == '1') { //hourly
thisInstance.hideScheduledTime();
} else if(value == '3') { //weekly
thisInstance.showScheduledWeekList();
} else if(value == '4') { //specific date
thisInstance.showScheduledSpecificDate();
} else if(value == '5') { //monthly by day
thisInstance.showScheduledMonthByDateList();
} else if(value == '7') {
thisInstance.showScheduledAnually();
}
});
},
hideScheduledTime : function() {
jQuery('#scheduledTime').addClass('hide');
},
showScheduledTime : function() {
jQuery('#scheduledTime').removeClass('hide');
},
hideScheduledWeekList : function() {
jQuery('#scheduledWeekDay').addClass('hide');
},
showScheduledWeekList : function() {
jQuery('#scheduledWeekDay').removeClass('hide');
},
hideScheduledMonthByDateList : function() {
jQuery('#scheduleMonthByDates').addClass('hide');
},
showScheduledMonthByDateList : function() {
jQuery('#scheduleMonthByDates').removeClass('hide');
},
hideScheduledSpecificDate : function() {
jQuery('#scheduleByDate').addClass('hide');
},
showScheduledSpecificDate : function() {
jQuery('#scheduleByDate').removeClass('hide');
},
hideScheduledAnually : function() {
jQuery('#scheduleAnually').addClass('hide');
},
showScheduledAnually : function() {
jQuery('#scheduleAnually').removeClass('hide');
},
registerEventForChangeWorkflowState: function () {
var editViewContainer = this.getEditViewContainer();
var thisInstance = this;
jQuery(editViewContainer).on('switchChange.bootstrapSwitch', ".taskStatus", function (e) {
var currentElement = jQuery(e.currentTarget);
var status = 'true';
if(currentElement.val() == 'on'){
status = 'false';
currentElement.attr('value','off');
} else {
currentElement.attr('value','on');
}
if(currentElement.data('statusurl')) {
var url = currentElement.data('statusurl') + "&status=" + status;
app.helper.showProgress();
app.request.post({url:url}).then(function(error,data){
app.helper.hideProgress();
if(data){
app.helper.showSuccessNotification({message : app.vtranslate('JS_TASK_STATUS_CHANGED')});
thisInstance.getTaskList();
}
});
} else {
var parent = currentElement.closest('.listViewEntries');
var taskElement = parent.find('.taskData');
var taskData = JSON.parse(taskElement.val());
taskData.active = status;
taskElement.val(JSON.stringify(taskData));
app.helper.showSuccessNotification({message : app.vtranslate('JS_TASK_STATUS_CHANGED')});
}
});
},
registerEnableFilterOption : function() {
var editViewContainer = this.getEditViewContainer();
editViewContainer.on('change','[name="conditionstype"]',function(e) {
var advanceFilterContainer = jQuery('#advanceFilterContainer');
var currentRadioButtonElement = jQuery(e.currentTarget);
if(currentRadioButtonElement.hasClass('recreate')){
if(currentRadioButtonElement.is(':checked')){
advanceFilterContainer.removeClass('zeroOpacity');
advanceFilterContainer.find('.conditionList').find('[name="columnname"]').find('optgroup:first option:first').attr('selected','selected').trigger('change');
}
} else {
advanceFilterContainer.addClass('zeroOpacity');
}
});
},
addComponents : function() {
this._super();
this.addModuleSpecificComponent('Index','Vtiger',app.getParentModuleName());
},
registerEvents: function () {
this.registerEventForShowModuleFilterCondition();
this.registerFormSubmitEvent();
this.registerEnableFilterOption();
this.registerEventForScheduledWorkflow();
this.registerEventForChangeInScheduledType();
this.registerEventForChangeWorkflowState();
}
});
//http://stackoverflow.com/questions/946534/insert-text-into-textarea-with-jquery
jQuery.fn.extend({
insertAtCaret: function(myValue) {
return this.each(function(i) {
if (document.selection) {
//For browsers like Internet Explorer
this.focus();
var sel = document.selection.createRange();
sel.text = myValue;
this.focus();
} else if (this.selectionStart || this.selectionStart == '0') {
//For browsers like Firefox and Webkit based
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
});
}
});