晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/vlayout/modules/Vtiger/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.
*************************************************************************************/
jQuery.Class("Vtiger_Header_Js", {
quickCreateModuleCache: {},
self: false,
getInstance: function() {
if (this.self != false) {
return this.self;
}
this.self = new Vtiger_Header_Js();
return this.self;
}
}, {
menuContainer: false,
contentContainer: false,
quickCreateCallBacks: [],
init: function() {
this.setMenuContainer('.navbar-fixed-top').setContentsContainer('.mainContainer');
},
setMenuContainer: function(element) {
if (element instanceof jQuery) {
this.menuContainer = element;
} else {
this.menuContainer = jQuery(element);
}
return this;
},
getMenuContainer: function() {
return this.menuContainer;
},
setContentsContainer: function(element) {
if (element instanceof jQuery) {
this.contentContainer = element;
} else {
this.contentContainer = jQuery(element);
}
return this;
},
getContentsContainer: function() {
return this.contentContainer;
},
getQuickCreateForm: function(url, moduleName, params) {
var thisInstance = this;
var aDeferred = jQuery.Deferred();
var requestParams;
if (typeof params == 'undefined') {
params = {};
}
if ((!params.noCache) || (typeof (params.noCache) == "undefined")) {
if (typeof Vtiger_Header_Js.quickCreateModuleCache[moduleName] != 'undefined') {
aDeferred.resolve(Vtiger_Header_Js.quickCreateModuleCache[moduleName]);
return aDeferred.promise();
}
}
requestParams = url;
if (typeof params.data != "undefined") {
var requestParams = {};
requestParams['data'] = params.data;
requestParams['url'] = url;
}
AppConnector.request(requestParams).then(function(data) {
if ((!params.noCache) || (typeof (params.noCache) == "undefined")) {
Vtiger_Header_Js.quickCreateModuleCache[moduleName] = data;
}
aDeferred.resolve(data);
});
return aDeferred.promise();
},
registerQuickCreateCallBack: function(callBackFunction) {
if (typeof callBackFunction != 'function') {
return false;
}
this.quickCreateCallBacks.push(callBackFunction);
return true;
},
/**
* Function which will align the contents container at specified height depending on the top fixed menu
* It will caliculate the height by following formaula menuContianer.height+1 *
*/
alignContentsContainer: function(topValue,speed, effect) {
if (typeof topValue == 'undefined') {
topValue = '90px';
}
var contentsContainer = this.getContentsContainer();
contentsContainer.animate({'margin-top': topValue}, speed, effect);
return this;
},
/**
* Function to save the quickcreate module
* @param accepts form element as parameter
* @return returns deferred promise
*/
quickCreateSave: function(form) {
var aDeferred = jQuery.Deferred();
var quickCreateSaveUrl = form.serializeFormData();
AppConnector.request(quickCreateSaveUrl).then(
function(data) {
//TODO: App Message should be shown
aDeferred.resolve(data);
},
function(textStatus, errorThrown) {
aDeferred.reject(textStatus, errorThrown);
}
);
return aDeferred.promise();
},
/**
* Function to navigate from quickcreate to editView Fullform
* @param accepts form element as parameter
*/
quickCreateGoToFullForm: function(form, editViewUrl) {
var formData = form.serializeFormData();
//As formData contains information about both view and action removed action and directed to view
delete formData.module;
delete formData.action;
var formDataUrl = jQuery.param(formData);
var completeUrl = editViewUrl + "&" + formDataUrl;
window.location.href = completeUrl;
},
setAnnouncement: function() {
// var announcementoff = app.cacheGet('announcement.turnoff' , false);
// var announcementBtn = jQuery('#announcementBtn');
// var thisInstance = this;
// if(announcementoff === true) {
// jQuery('#announcement').hide();
// announcementBtn.attr('src', app.vimage_path('btnAnnounceOff.png'));
// thisInstance.alignContentsContainer('69px',0,'linear');
// }
// else{
// jQuery('#announcement').show();
// announcementBtn.attr('src', app.vimage_path('btnAnnounce.png'));
// thisInstance.alignContentsContainer('92px',0,'linear');
// }
},
registerAnnouncement: function() {
var thisInstance = this;
var announcementBtn = jQuery('#announcementBtn');
var announcementTurnOffKey = 'announcement.turnoff';
announcementBtn.click(function(e, manual) {
var displayStatus = jQuery('#announcement').css('display');
if (displayStatus == 'none') {
jQuery('#announcement').show();
thisInstance.alignContentsContainer('114px',200,'linear');
announcementBtn.attr('src', app.vimage_path('btnAnnounce.png'));
// Turn-on always
if (!manual) {
app.cacheSet(announcementTurnOffKey, false);
}
} else {
thisInstance.alignContentsContainer('90px',200,'linear');
jQuery('#announcement').hide();
announcementBtn.attr('src', app.vimage_path('btnAnnounceOff.png'));
// Turn-off always
// NOTE: Add preference on server - to reenable on announcement content change.
if (!manual) {
app.cacheSet(announcementTurnOffKey, true);
}
}
});
if (app.cacheGet(announcementTurnOffKey, false)) {
announcementBtn.trigger('click', true);
}
},
registerCalendarButtonClickEvent: function() {
var element = jQuery('#calendarBtn');
var dateFormat = element.data('dateFormat');
var currentDate = element.data('date');
var vtigerDateFormat = app.convertToDatePickerFormat(dateFormat);
element.on('click', function(e) {
e.stopImmediatePropagation();
element.closest('div.nav').find('div.open').removeClass('open');
var calendar = jQuery('#' + element.data('datepickerId'));
if (jQuery(calendar).is(':visible')) {
element.DatePickerHide();
} else {
element.DatePickerShow();
}
})
element.DatePicker({
format: vtigerDateFormat,
date: currentDate,
calendars: 1,
starts: 1,
className: 'globalCalendar'
});
},
handleQuickCreateData: function(data, params) {
if (typeof params == 'undefined') {
params = {};
}
var thisInstance = this;
app.showModalWindow(data, function(data) {
var quickCreateForm = data.find('form[name="QuickCreate"]');
var moduleName = quickCreateForm.find('[name="module"]').val();
var editViewInstance = Vtiger_Edit_Js.getInstanceByModuleName(moduleName);
editViewInstance.registerBasicEvents(quickCreateForm);
quickCreateForm.validationEngine(app.validationEngineOptions);
if (typeof params.callbackPostShown != "undefined") {
params.callbackPostShown(quickCreateForm);
}
thisInstance.registerQuickCreatePostLoadEvents(quickCreateForm, params);
app.registerEventForDatePickerFields(quickCreateForm);
var quickCreateContent = quickCreateForm.find('.quickCreateContent');
var quickCreateContentHeight = quickCreateContent.height();
var contentHeight = parseInt(quickCreateContentHeight);
if (contentHeight > 300) {
app.showScrollBar(jQuery('.quickCreateContent'), {
'height': '300px'
});
}
});
},
registerQuickCreatePostLoadEvents: function(form, params) {
var thisInstance = this;
var submitSuccessCallbackFunction = params.callbackFunction;
var goToFullFormCallBack = params.goToFullFormcallback;
if (typeof submitSuccessCallbackFunction == 'undefined') {
submitSuccessCallbackFunction = function() {
};
}
form.on('submit', function(e) {
var form = jQuery(e.currentTarget);
var module = form.find('[name="module"]').val();
//Form should submit only once for multiple clicks also
if (typeof form.data('submit') != "undefined") {
return false;
} else {
var invalidFields = form.data('jqv').InvalidFields;
if (invalidFields.length > 0) {
//If validation fails, form should submit again
form.removeData('submit');
form.closest('#globalmodal').find('.modal-header h3').progressIndicator({
'mode': 'hide'
});
e.preventDefault();
return;
} else {
//Once the form is submiting add data attribute to that form element
form.data('submit', 'true');
form.closest('#globalmodal').find('.modal-header h3').progressIndicator({
smallLoadingImage: true,
imageContainerCss: {
display: 'inline',
'margin-left': '18%',
position: 'absolute'
}
});
}
var recordPreSaveEvent = jQuery.Event(Vtiger_Edit_Js.recordPreSave);
form.trigger(recordPreSaveEvent, {
'value': 'edit',
'module': module
});
if (!(recordPreSaveEvent.isDefaultPrevented())) {
var targetInstance = thisInstance;
var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName(module);
if(typeof(moduleInstance.quickCreateSave) === 'function'){
targetInstance = moduleInstance;
}
targetInstance.quickCreateSave(form).then(
function(data) {
app.hideModalWindow();
//fix for Refresh list view after Quick create
var parentModule=app.getModuleName();
var viewname=app.getViewName();
if((module == parentModule) && (viewname=="List")){
var listinstance = new Vtiger_List_Js();
listinstance.getListViewRecords();
}
submitSuccessCallbackFunction(data);
var registeredCallBackList = thisInstance.quickCreateCallBacks;
for (var index = 0; index < registeredCallBackList.length; index++) {
var callBack = registeredCallBackList[index];
callBack({
'data': data,
'name': form.find('[name="module"]').val()
});
}
},
function(error, err) {
}
);
} else {
//If validation fails in recordPreSaveEvent, form should submit again
form.removeData('submit');
form.closest('#globalmodal').find('.modal-header h3').progressIndicator({
'mode': 'hide'
});
}
e.preventDefault();
}
});
form.find('#goToFullForm').on('click', function(e) {
var form = jQuery(e.currentTarget).closest('form');
var editViewUrl = jQuery(e.currentTarget).data('editViewUrl');
if (typeof goToFullFormCallBack != "undefined") {
goToFullFormCallBack(form);
}
thisInstance.quickCreateGoToFullForm(form, editViewUrl);
});
this.registerTabEventsInQuickCreate(form);
},
registerTabEventsInQuickCreate: function(form) {
var tabElements = form.find('.nav.nav-pills , .nav.nav-tabs').find('a');
//This will remove the name attributes and assign it to data-element-name . We are doing this to avoid
//Multiple element to send as in calendar
var quickCreateTabOnHide = function(tabElement) {
var container = jQuery(tabElement.attr('data-target'));
container.find('[name]').each(function(index, element) {
element = jQuery(element);
element.attr('data-element-name', element.attr('name')).removeAttr('name');
});
}
//This will add the name attributes and get value from data-element-name . We are doing this to avoid
//Multiple element to send as in calendar
var quickCreateTabOnShow = function(tabElement) {
var container = jQuery(tabElement.attr('data-target'));
container.find('[data-element-name]').each(function(index, element) {
element = jQuery(element);
element.attr('name', element.attr('data-element-name')).removeAttr('data-element-name');
});
}
tabElements.on('shown', function(e) {
var previousTab = jQuery(e.relatedTarget);
var currentTab = jQuery(e.currentTarget);
quickCreateTabOnHide(previousTab);
quickCreateTabOnShow(currentTab);
//while switching tabs we have to clear the invalid fields list
form.data('jqv').InvalidFields = [];
});
//To show aleady non active element , this we are doing so that on load we can remove name attributes for other fields
quickCreateTabOnHide(tabElements.closest('li').filter(':not(.active)').find('a'));
},
basicSearch: function() {
var thisInstance = this;
jQuery('#globalSearchValue').keypress(function(e) {
var currentTarget = jQuery(e.currentTarget)
if (e.which == 13) {
thisInstance.labelSearch(currentTarget);
}
});
},
labelSearch: function(currentTarget) {
var val = currentTarget.val();
if (val == '') {
alert(app.vtranslate('JS_PLEASE_ENTER_SOME_VALUE'));
currentTarget.focus();
return false;
}
var basicSearch = new Vtiger_BasicSearch_Js();
var progress = jQuery.progressIndicator();
basicSearch.search(val).then(function(data) {
basicSearch.showSearchResults(data);
progress.progressIndicator({
'mode': 'hide'
});
});
},
adjustContentHeight: function(){
if(app.getViewName() === 'Detail' || app.getViewName() === 'Calendar' || app.getViewName() === 'ExtensionImport'){
if(jQuery('div.detailViewInfo > .related').outerHeight() > jQuery('div.detailViewInfo > div.details ').outerHeight()){
jQuery('div.detailViewInfo > div.details').css('min-height',jQuery('.detailViewInfo > .related').outerHeight());
}
bodyHeight = jQuery('div.detailViewContainer').outerHeight();
}else{
bodyHeight = jQuery(".bodyContents").outerHeight();
}
jQuery(".mainContainer").css('min-height', bodyHeight);
jQuery(".mainContainer > .span2 ").css('min-height', bodyHeight);
jQuery(".contentsDiv").css('min-height', bodyHeight);
},
registerEvents: function() {
var thisInstance = this;
//Show Alert if user is on a unsupported browser (IE7, IE8, ..etc)
if(jQuery.browser.msie && jQuery.browser.version < 9.0) {
if(app.getCookie('oldbrowser') != 'true') {
app.setCookie("oldbrowser",true, 365);
window.location.href = 'layouts/vlayout/modules/Vtiger/browsercompatibility/Browser_compatibility.html';
}
}
jQuery('#globalSearch').click(function() {
var advanceSearchInstance = new Vtiger_AdvanceSearch_Js();
advanceSearchInstance.initiateSearch().then(function() {
advanceSearchInstance.selectBasicSearchValue();
});
});
jQuery('#searchIcon').on('click', function(e) {
var currentTarget = jQuery('#globalSearchValue');
var pressEvent = jQuery.Event("keypress");
pressEvent.which = 13;
currentTarget.trigger(pressEvent);
});
thisInstance.registerAnnouncement();
//this.setAnnouncement();
jQuery('#announcementBtn').trigger('click');
this.registerCalendarButtonClickEvent();
jQuery('#moreMenu').click(function(e) {
var moreElem = jQuery(e.currentTarget);
var moreMenu = jQuery('.moreMenus', moreElem)
var index = jQuery(".modulesList > li", thisInstance.getMenuContainer()).length;
// for left aligning the more menus dropdown if the modules list is below 5
if (index < 5) {
moreMenu.css('left', 0).addClass('leftAligned');
}
});
//After selecting the global search module, focus the input element to type
jQuery('#basicSearchModulesList').change(function() {
jQuery('#globalSearchValue').focus();
});
thisInstance.basicSearch();
jQuery('#quickCreateModules,#compactquickCreate').on("click", ".quickCreateModule", function(e, params) {
if (typeof params == 'undefined') {
params = {};
}
if (typeof params.callbackFunction == 'undefined') {
params.callbackFunction = function() {
};
}
var quickCreateElem = jQuery(e.currentTarget);
var quickCreateUrl = quickCreateElem.data('url');
var quickCreateModuleName = quickCreateElem.data('name');
var progress = jQuery.progressIndicator();
thisInstance.getQuickCreateForm(quickCreateUrl, quickCreateModuleName, params).then(function(data) {
thisInstance.handleQuickCreateData(data, params);
progress.progressIndicator({
'mode': 'hide'
});
});
});
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ){
jQuery('#basicSearchModulesList_chzn').find('.chzn-results').css({'max-height':'350px','overflow-y':'scroll'});
}
else{
app.showScrollBar(jQuery('#basicSearchModulesList_chzn').find('.chzn-results'),
{
height: '450px',
railVisible: true,
alwaysVisible: true,
size: '6px'
});
//Added to support standard resolution 1024x768
if (window.outerWidth <= 1024) {
$('.headerLinksContainer').css('margin-right', '8px');
}
// setting sidebar Height wrt Content
$(document).ajaxComplete(function() {
Vtiger_Header_Js.getInstance().adjustContentHeight();
});
$(document).load(function() {
Vtiger_Header_Js.getInstance().adjustContentHeight();
});
}
}
});
jQuery(document).ready(function() {
Vtiger_Header_Js.getInstance().registerEvents();
});