Skip to content
Snippets Groups Projects
Detail.js 106 KiB
Newer Older
Prasad's avatar
Prasad committed
/*+***********************************************************************************
 * 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.
 *************************************************************************************/

Vtiger.Class("Vtiger_Detail_Js",{

	detailInstance : false,
	PreAjaxSaveEvent : 'PreAjaxSaveEvent',
	PostAjaxSaveEvent : 'PostAjaxSaveEvent',
Prasad's avatar
Prasad committed
	getInstance: function(){
		if( Vtiger_Detail_Js.detailInstance == false ){
			var module = app.getModuleName();
			var view = app.view;
			var moduleClassName = module+"_"+view+"_Js";
			var fallbackClassName = Vtiger_Detail_Js;
			if(typeof window[moduleClassName] != 'undefined'){
				var instance = new window[moduleClassName]();
			}else{
				var instance = new fallbackClassName();
			}
			Vtiger_Detail_Js.detailInstance = instance;
		}
		return Vtiger_Detail_Js.detailInstance;
	},

		getInstanceByModuleName : function(moduleName){
		if(typeof moduleName == "undefined"){
			moduleName = app.getModuleName();
		}
		var parentModule = app.getParentModuleName();
		if(parentModule == 'Settings'){
			var moduleClassName = parentModule+"_"+moduleName+"_Detail_Js";
			if(typeof window[moduleClassName] == 'undefined'){
				moduleClassName = moduleName+"_Detail_Js";
			}
			var fallbackClassName = parentModule+"_Vtiger_Detail_Js";
			if(typeof window[fallbackClassName] == 'undefined') {
				fallbackClassName = "Vtiger_Detail_Js";
			}
		} else {
			moduleClassName = moduleName+"_Detail_Js";
			fallbackClassName = "Vtiger_Detail_Js";
		}
		if(typeof window[moduleClassName] != 'undefined'){
			var instance = new window[moduleClassName]();
		}else{
			var instance = new window[fallbackClassName]();
		}
		return instance;
	},

	triggerSendSms: function(detailActionUrl, module) {
		var self = this.getInstance();
		self.sendSMS(detailActionUrl,module);
	},

	 deleteRelatedActivity : function(e) {
		 var thisInstance = this;
		  var currentElement = jQuery(e.currentTarget);
		  var id = currentElement.data('id');
Prasad's avatar
Prasad committed
		var recurringEnabled = currentElement.data('recurringEnabled');
		var postData = {'related_record_list' : [id]};
		if(recurringEnabled) {
			app.helper.showConfirmationForRepeatEvents().then(function(params) {
				jQuery.extend(postData, params);
				thisInstance.deleteActivityRelation(postData);
			},
			function(error, err) {
			});
		} else {
			var message = app.vtranslate('JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_DELETE');
			app.helper.showConfirmationBox({'message' : message}).then(function(data) {
				thisInstance.deleteActivityRelation(postData);
			},
			function(error,err) {
			});	
		}
Prasad's avatar
Prasad committed
	deleteActivityRelation : function(customParams) {
		var params = {
			'module'			: app.getModuleName(),
			'related_module'	: 'Calendar',
			'action'			: 'RelationAjax',
			'mode'				: 'deleteRelation',
			'src_record'		: jQuery('#recordId').val()
Prasad's avatar
Prasad committed
		};
		params = jQuery.extend(params, customParams);
Prasad's avatar
Prasad committed
		app.request.post({data: params}).then(function(err, data) {
			if(data) {
				params = {
					'record'	: jQuery('#recordId').val(),
					'view'		: 'Detail',
					'module'	: app.getModuleName(),
					'mode'		: 'getActivities'
Prasad's avatar
Prasad committed
				};
				app.request.get({data: params}).then(function(err, result) {
					jQuery('#relatedActivities').html(result);
					Vtiger_Detail_Js.getInstance().registerEventForActivityWidget();
				});
			}
		});
	},


	showUpdates : function(element){
		jQuery(".historyButtons").find("button").removeAttr("disabled").removeClass("btn-success");
		var currentElement = jQuery(element);
		currentElement.attr("disabled","disabled").addClass("btn-success");

		var params = [];
		var recordId = jQuery('#recordId').val();
		params.url = "index.php?view=Detail&module="+app.getModuleName()+"&mode=showRecentActivities&record="+recordId;

		app.helper.showProgress();
		app.request.get(params).then(function(error,response){
			app.helper.hideProgress();
			jQuery(".HistoryContainer").find(".data-body").html(response);
		});
	},


	checkSMSStatus: function(url) {
		app.request.post({url: url}).then(
				function(err, data) {
					var status = data['status'];
					if(status == 'Failed'){
						var message = data['message'];
						app.helper.showErrorNotification({title: status, message: message});
					}
					else if (status == null) {
						app.helper.showErrorNotification({title: 'Error', message: 'Failed to send SMS.'});
					}
					else {
						var message = data['message'];
						app.helper.showErrorNotification({title:status, message:message});
					}
				});
	},

	/*
Prasad's avatar
Prasad committed
	 * function to trigger delete record action
	 * @params: delete record url.
	 */
	deleteRecord : function(deleteRecordActionUrl) {
		var detailInstance = window.app.controller();
		detailInstance.remove(deleteRecordActionUrl);
	},


	/**
	 * Function to trigger Transfer Ownership
	 * @param {type} massActionUrl
	 * @returns {undefined}
	 */
	triggerTransferOwnership : function(massActionUrl){
Prasad's avatar
Prasad committed
		var thisInstance = this;
		var params = app.convertUrlToDataParams(massActionUrl);
		app.helper.showProgress();
Prasad's avatar
Prasad committed
		app.request.post({data:params}).then(
			function(error, data) {
				app.helper.hideProgress();
				app.helper.showModal(data);
				var form = jQuery('form#changeOwner');
				var isFormExists = form.length;
				if(isFormExists){
					thisInstance.transferOwnershipSave(form);
				}
Prasad's avatar
Prasad committed
			}
		);
	},

	/**
	 * Saving transfer ownership 
	 * @param {type} form
	 * @returns {undefined}
	 */
	transferOwnershipSave : function (form){
		 form.on("click","button[name='saveButton']",function(e){
			e.preventDefault();
			var rules = {};
			rules["related_modules"] = {'required' : true};
			rules["transferOwnerId"] = {'required' : true};
			var params = {
				rules : rules,
				submitHandler: function(form) {
					// to Prevent submit if already submitted
					jQuery(form).find("button[name='saveButton']").attr("disabled","disabled");
					if(this.numberOfInvalids() > 0) {
						return false;
					}
					var transferOwner = jQuery('#transferOwnerId').val();
					var relatedModules = jQuery('#related_modules').val();
					var recordId = jQuery('#recordId').val();
Loading
Loading full blame...