modules/admin/models/data.js
function(urlparam, parent, callback, auth) {
    
    if(!parent.server.modelsAll) parent.server.modelsAll = {}
    
    var config = parent.server.config
       
    var fn = urlparam.split('.')
    
    fn[0] = config.ADMIN_MODULES_DIR
    fn = fn.join("/")
    
    // doesn't get a model from cache in debug mode
    if(!config.DEBUG && parent.server.modelsAll[fn]) {
         callback(parent.server.modelsAll[fn]);
         return;
    }
    
    var fName = parent.server.dir + '/' + fn + '.js'
    
    if(fs.existsSync(fName)) {
        var model = null        
        try { 
            model = require(fName)
        } catch(e) {
            
            callback(null)
            return;
        }
    } else {
        fName = parent.server.serverDir + '/'+fn+'.js'
    
        if(fs.existsSync(fName)) {
            try { 
                model = require(parent.server.serverDir + '/'+fn)
            } catch(e) {
                callback(null)
                return;
            }
        }
    }
    // проверим текущие индексы,
    // добавим недостающие на все фильтруемые поля
    var checkIndexes = function(mdl) {
        
        callback(mdl)
        
        if(!config.DEBUG) return; // индексы настраиваем только в дебаг-режиме
        for(var i in model.fields) {
            if(model.fields[i].filterable) {
                 parent.db.collection(mdl.collection).ensureIndex(model.fields[i].name, function(e, r) {})   
            }
        }            
    }
    
    if(model) {
        parent.server.modelsAll[urlparam] = model
        if(!!parent.server.modelsAll[urlparam].init) {
       
            parent.server.modelsAll[urlparam].init(parent, function() {
                checkIndexes(parent.server.modelsAll[urlparam])
            }, auth)
        
        } else        
            checkIndexes(parent.server.modelsAll[urlparam])
    } else 
        callback(null)
}
function(urlparam, parent, callback, auth) {
    
    if(!parent.server.modelsAll) parent.server.modelsAll = {}
    
    var config = parent.server.config
       
    var fn = urlparam.split('.')
    
    fn[0] = config.ADMIN_MODULES_DIR
    fn = fn.join("/")
    
    // doesn't get a model from cache in debug mode
    if(!config.DEBUG && parent.server.modelsAll[fn]) {
         callback(parent.server.modelsAll[fn]);
         return;
    }
    
    var fName = parent.server.dir + '/' + fn + '.js'
    
    if(fs.existsSync(fName)) {
        var model = null        
        try { 
            model = require(fName)
        } catch(e) {
            
            callback(null)
            return;
        }
    } else {
        fName = parent.server.serverDir + '/'+fn+'.js'
    
        if(fs.existsSync(fName)) {
            try { 
                model = require(parent.server.serverDir + '/'+fn)
            } catch(e) {
                callback(null)
                return;
            }
        }
    }
    // проверим текущие индексы,
    // добавим недостающие на все фильтруемые поля
    var checkIndexes = function(mdl) {
        
        callback(mdl)
        
        if(!config.DEBUG) return; // индексы настраиваем только в дебаг-режиме
        for(var i in model.fields) {
            if(model.fields[i].filterable) {
                 parent.db.collection(mdl.collection).ensureIndex(model.fields[i].name, function(e, r) {})   
            }
        }            
    }
    
    if(model) {
        parent.server.modelsAll[urlparam] = model
        if(!!parent.server.modelsAll[urlparam].init) {
       
            parent.server.modelsAll[urlparam].init(parent, function() {
                checkIndexes(parent.server.modelsAll[urlparam])
            }, auth)
        
        } else        
            checkIndexes(parent.server.modelsAll[urlparam])
    } else 
        callback(null)
}
function ( urlparam , parent , callback , auth ) { if ( ! parent . server . modelsAll ) parent . server . modelsAll = { } var config = parent . server . config var fn = urlparam . split ( '.' ) fn [ 0 ] = config . ADMIN_MODULES_DIR fn = fn . join ( "/" ) // doesn't get a model from cache in debug mode if ( ! config . DEBUG && parent . server . modelsAll [ fn ] ) { callback ( parent . server . modelsAll [ fn ] ) ; return ; } var fName = parent . server . dir + '/' + fn + '.js' if ( fs . existsSync ( fName ) ) { var model = null try { model = require ( fName ) } catch ( e ) { callback ( null ) return ; } } else { fName = parent . server . serverDir + '/' + fn + '.js' if ( fs . existsSync ( fName ) ) { try { model = require ( parent . server . serverDir + '/' + fn ) } catch ( e ) { callback ( null ) return ; } } } // проверим текущие индексы, // добавим недостающие на все фильтруемые поля var checkIndexes = function ( mdl ) { callback ( mdl ) if ( ! config . DEBUG ) return ; // индексы настраиваем только в дебаг-режиме for ( var i in model . fields ) { if ( model . fields [ i ] . filterable ) { parent . db . collection ( mdl . collection ) . ensureIndex ( model . fields [ i ] . name , function ( e , r ) { } ) } } } if ( model ) { parent . server . modelsAll [ urlparam ] = model if ( ! ! parent . server . modelsAll [ urlparam ] . init ) { parent . server . modelsAll [ urlparam ] . init ( parent , function ( ) { checkIndexes ( parent . server . modelsAll [ urlparam ] ) } , auth ) } else checkIndexes ( parent . server . modelsAll [ urlparam ] ) } else callback ( null ) }
/*

private function. Requires model file, saves it to cache and returns the model
/ *