looking for wrong seperator
[Pman.Core] / Pman.js
diff --git a/Pman.js b/Pman.js
index 64519b8..618ddda 100644 (file)
--- a/Pman.js
+++ b/Pman.js
@@ -1,26 +1,41 @@
-//<script type="text/javascript">
-
 /**
  * 
- * >>> Pman.layout.getRegion('center').tabs.stripWrap
- * ==> tab.???
- * var tbh = Pman.layout.getRegion('center').tabs.stripWrap.child('div').createChild(
- * 
- * {tag: 'div', style: 'display:block;position:absolute;top:2;left:300;width:100%;height:25px'});
- * 
- * 
- *  CHANGES
- *  - gtranslate moved to Pman.GoogleTranslate
- * 
- * 
+ *  
+ *  This is the main Pman class
+ *  - it's a bit too heavy at present - needs to go on a diet....
  */
  
+// translation..
 if (typeof(_T) == 'undefined') { _T={};}
 
 
-Roo.XComponent.on('register', function(e) { return Pman.xregister(e); });
 
+Roo.XComponent.on('register', function(e) {
+    if (typeof(Pman) != 'undefined') { return Pman.xregister(e); } return true;
+});
+Roo.XComponent.on('beforebuild', function(e) {
+    if (typeof(Pman) != 'undefined') { return Pman.xbeforebuild(e); } return true;
+});
+
+Roo.XComponent.on('buildcomplete',  
+    function() {
+        Pman.building = false;   
+        Pman.layout.getRegion('center').showPanel(0);
+        Pman.layout.endUpdate(); 
+        Pman.addTopToolbar();  
+        Pman.finalize();
+        Pman.fireEvent('load',this);
+        
+        if (!Pman.layout.getRegion('south').panels.length) {
+            Pman.layout.getRegion('south').hide();
+        }
+    
+    
+    }
+);
+
+//Roo.debug = 1;
   
 
 Pman = new Roo.Document(
@@ -100,7 +115,7 @@ Pman = new Roo.Document(
         
     },
    
-    fakeRoot :  {
+    fakeRoot :  new Roo.XComponent( {
         modKey : '000',
         module : 'Pman',
         region : 'center',
@@ -108,8 +123,9 @@ Pman = new Roo.Document(
         isTop : true,
         name : "Pman Base",
         disabled : false, 
-        permname: '' 
-    },
+        permname: '' ,
+        render : function (el) { this.el = this.layout; }
+    }),
     
     layout: false,
     
@@ -157,13 +173,14 @@ Pman = new Roo.Document(
             }
             
         });
-        
-        
+        this.fakeRoot.layout = this.layout;
+        /*
         Pman.register( Roo.apply(this.fakeRoot, {
             layout : this.layout      
                 
                                  
         } ) );
+        */
         
         // creates all the modules ready to load..
         
@@ -203,23 +220,8 @@ Pman = new Roo.Document(
         this.layout.beginUpdate();
         
         Pman.building = true;
-        
-        this.buildModules(this, 
-            function() {
-                
-                _this.layout.getRegion('center').showPanel(0);
-                _this.layout.endUpdate(); 
-                _this.addTopToolbar();  
-                _this.finalize();
-                _this.fireEvent('load',this);
-                
-                if (!_this.layout.getRegion('south').panels.length) {
-                    _this.layout.getRegion('south').hide();
-                }
-                
-                
-            }
-        );
+        Roo.XComponent.build();
+         
         
         
      
@@ -233,6 +235,11 @@ Pman = new Roo.Document(
         
        
         //console.log( "t7:" + ((new Date())-stime));
+        if (!Pman.layout.getRegion('center').tabs) {
+                Roo.log("Error could not find tabs? - not adding toolbar?");
+                return;
+        }
+        
         var se = Pman.layout.getRegion('center').tabs.stripEl;
         var tbh = se.createChild( 
                 { tag: 'td', style: 'width:100%;'  });
@@ -243,20 +250,23 @@ Pman = new Roo.Document(
             var tbl = se.child('table', true);
             tbl.setAttribute('width', '100%');
         }
-        lotb.add(
-            new Roo.Toolbar.Fill(), 
-     
-            {
-                text: "Change Password",
-                cls: 'x-btn-text-icon',
-                icon: rootURL + '/Pman/templates/images/change-password.gif',
-                handler : function(){
-                    Pman.PasswordChange.show({});
-                }
-            }, '-'
-        );
-         
         
+        if (Pman.hasPerm('Core.ChangePassword','S')) {
+            
+            lotb.add(
+                new Roo.Toolbar.Fill(), 
+         
+                {
+                    text: "Change Password",
+                    cls: 'x-btn-text-icon',
+                    icon: rootURL + '/Pman/templates/images/change-password.gif',
+                    handler : function(){
+                        Pman.PasswordChange.show({});
+                    }
+                }, '-'
+            );
+        }     
+            
         if (this.topMenuItems.length) {
             
             Roo.each(this.topMenuItems, function (mi) {
@@ -348,7 +358,7 @@ Pman = new Roo.Document(
                 Pman.Dialog.PersonStaff.show( 
                     { 
                         id : 0, 
-                        company_id : Pman.Login.authUser.company_id_id * 1, 
+                        company_id : Pman.Login.authUser.company_id * 1, 
                         company_id_name : Pman.Login.authUser.company_id_name
                     }, function(data) {
                         forceAdmin(data);
@@ -356,6 +366,7 @@ Pman = new Roo.Document(
                 );
                 return;
             }
+            
             Roo.state.Manager.set('Pman.Login.username', data.email),
             window.onbeforeunload = false;
             document.location = baseURL + '?ts=' + Math.random();
@@ -367,7 +378,9 @@ Pman = new Roo.Document(
                 return;
             }
             if (!data || !data.id) {
-                Pman.Dialog.Companies.show( { id : 0, isOwner : 1, comptype: 'OWNER' }, function(data) {
+                Pman.Dialog.CoreCompanies.show( { id : 0, comptype: 'OWNER' }, function(data) {
+                    Roo.log("company dialog returned");
+                    Roo.log(data);
                     forceCompany(data);
                 });
                 return;
@@ -375,12 +388,13 @@ Pman = new Roo.Document(
             Pman.Login.authUser.company_id_id  = data.id;
             Pman.Login.authUser.company_id  = data.id;
             Pman.Login.authUser.company_id_name  = data.name;
+            Roo.log("forcing admin");
             forceAdmin();
         }
         
         if (Pman.Login.authUser.id < 0) {
             // admin company has been created - create the user..
-            if (Pman.Login.authUser.company_id_id* 1 > 0) {
+            if (Pman.Login.authUser.company_id* 1 > 0) {
                 forceAdmin();
                 return;
             }
@@ -412,13 +426,14 @@ Pman = new Roo.Document(
     onLoadTrackCall : function(id,cb, cls) {
         Roo.get(document.body).mask("Loading Document details");
 
-        Pman.request({
+        new Pman.Request({
             url: baseURL + '/Roo/Documents.html',  
             params: {
                 _id: id
             },  
             method: 'GET',  
-            success : function(data) {
+            success : function(res) {
+                var data = res.data;
                 Roo.get(document.body).unmask();
              
                 
@@ -536,16 +551,16 @@ Pman = new Roo.Document(
     genericDelete : function(tab,tbl) {
         
         var r = [];
-        
             
         var s = tab.grid.getSelectionModel().getSelections();
         if (!s.length)  {
             Roo.MessageBox.alert("Error", "Select at least one Row to delete" );
             return '';
         }
-        
+        var reader = tab.grid.reader || tab.grid.ds.reader;
         for(var i = 0; i < s.length; i++) {
-            r.push(s[i].data.id);
+            r.push(reader.getId(s[i].json));
         }
     
         Roo.MessageBox.confirm("Confirm", "Are you sure you want to delete that?",
@@ -555,9 +570,9 @@ Pman = new Roo.Document(
                 }
                 // what about the toolbar??
                 tab.grid.getView().mainWrap.mask("Deleting");
-                Pman.request({
+                new Pman.Request({
                     url: baseURL + '/Roo/'+tbl+'.php',
-                    method: 'GET',
+                    method: 'POST',
                     params: {
                         _delete : r.join(',')
                     },
@@ -565,11 +580,11 @@ Pman = new Roo.Document(
                         tab.grid.getView().mainWrap.unmask();
                         if ( tab.paging ) {
                             tab.paging.onClick('refresh');   
-                        } else if (tab.refresh) {
-                            tab.refresh();
                         } else if (tab.grid.footer && tab.grid.footer.onClick) {
                             // new xtype built grids
                             tab.grid.footer.onClick('refresh');   
+                        } else if (tab.refresh) {
+                            tab.refresh(); // this might cause problems as panels have a refresh method?
                         } else {
                             tab.grid.getDataSource().load();
                         }
@@ -578,8 +593,16 @@ Pman = new Roo.Document(
                         
                     },
                     failure: function(act) {
+                        
+                        Roo.log(act);
+                        var msg = '';
+                        try {
+                            msg = act.errorMsg;
+                        } catch(e) {
+                            msg = "Error deleting";
+                        }
                         tab.grid.getView().mainWrap.unmask();
-                        Roo.MessageBox.alert("Error", "Error Deleting");
+                        Roo.MessageBox.alert("Error",  msg);
                     }
                     
                 });
@@ -614,52 +637,13 @@ Pman = new Roo.Document(
     },
     /**
      * Depreciated - USE new Pman.Request
-    * 
+    *  We need to replace all the uses with this, however the api is slightly different,
+    *  the success argument is res.data, not res..
      * 
      */
     request : function(c) {
-        var r= new Roo.data.Connection({
-            timeout : typeof(c.timeout) == 'undefined' ?  30000 : c.timeout
-        });
-        r.request({
-            url: c.url,
-            method : c.method,
-            params: c.params,
-            xmlData : c.xmlData,
-            success:  function(response, opts)  {  // check successfull...
-               
-                var res = Pman.processResponse(response);
-                
-                if (!res.success) { // error!
-                    if (c.failure) {
-                        if (true === c.failure.call(this,response, opts)) {
-                            return;
-                        }
-                    }
-                    Roo.MessageBox.hide();
-                    Roo.MessageBox.alert("Error", res.errorMsg ? res.errorMsg : "Error Sending");
-                    return;
-                }
-                
-                c.success.call(this, res.data);
-                
-                return; 
-            },
-            failure :  function(response, opts)  {  // check successfull...
-                
-                if (c.failure) {
-                    if (true === c.failure.call(this,response, opts)) {
-                        return;
-                    }
-                }
-                Roo.MessageBox.hide();
-                Roo.MessageBox.alert("Error", "Connection timed out sending");
-                Roo.log(response);
-                
-            },
-            scope: this
-            
-        });
+        return new Pman.Request(c);
+          
     },
     
     
@@ -791,8 +775,8 @@ Pman = new Roo.Document(
     {
         
         // work out owner..
-        if (!this.appModules === false) {
-            this.appModules = typeof(AppModules ) == 'undefined'? [] :
+        if (!Pman.appModules === false) {
+            Pman.appModules = typeof(AppModules ) == 'undefined'? [] :
                 AppModules.split(',');
         }
         
@@ -807,20 +791,13 @@ Pman = new Roo.Document(
         // previously we did not a good naming policy for module and parts
         // most things that are called module here, really are 'parts'
         // new versions should have 'part' as [ module : part ]
-        
-        
-        if (typeof(obj.part) != 'undefined')  {
-            
+         if (typeof(obj.part) != 'undefined')  {
+           
             var permname = obj.part.join('.');
                 // we now have permission...
                 // obj.moduleOwner '.' lname
-                
-            if (this.hasPermExists(permname) && !this.hasPerm(permname,'S')) {
-                // it's a turned off permission...
-                Roo.log(permname + " is Disabled for this user");
-                obj.disabled = true;
-                return;
-            }
+           
+           
             if (appDisabled.indexOf(permname) > -1)  {
                 Roo.log(permname + " is Disabled for this site");
                 obj.disabled = true;
@@ -830,19 +807,22 @@ Pman = new Roo.Document(
             
         }
         
+       
+        
         if ( obj.isTop) {
             // false parent... use it..
             return;
         }
         
         
-        if (obj.parent === Pman) {
+        if (obj.parent === Pman || obj.parent  == 'Pman') {
+            // Roo.log("PARENT OF : " + obj.name + " replacing with fake");
             obj.parent = Pman.fakeRoot;
         }
         
         if (typeof(obj.parent) == 'undefined') {
-            console.log("Parent is undefined");
-            console.log(obj);
+            Roo.log("Parent is undefined");
+            Roo.log(obj);
             obj.disabled = true;
             return;
         }
@@ -850,8 +830,8 @@ Pman = new Roo.Document(
             
         if (obj.parent === false) {
             obj.disabled = true;
-            console.log('ignoring top level object (as parent===false found)');
-            console.log(obj);
+            Roo.log('ignoring top level object (as parent===false found)');
+            Roo.log(obj);
             return;
         }
         // this is an error condition - the parent does not exist..
@@ -865,6 +845,44 @@ Pman = new Roo.Document(
        
         
     },
+    /**
+     * fired before building on each compoenent
+     * used to apply permissions.
+     */
+    
+    xbeforebuild : function(obj)
+    {
+        if (typeof(obj.part) != 'undefined')  {
+           
+            if (!obj.part[1].length) {
+                obj.part[1] = obj.part[0];
+            }
+            var permname = obj.part.join('.');
+            
+            Roo.log("CHECKING: "+ permname);
+            
+                // we now have permission...
+                // obj.moduleOwner '.' lname
+            
+            if (Pman.hasPermExists(permname) && !Pman.hasPerm(permname,'S')) {
+                // it's a turned off permission...
+                Roo.log(permname + " is Disabled for this user");
+                obj.disabled = true;
+                return;
+            }
+            
+            if (obj.permname && obj.permname.length && Pman.hasPermExists(obj.permname) && !Pman.hasPerm(obj.permname,'S')) {
+                // it's a turned off permission...
+                Roo.log(obj.permname + " is Disabled for this user");
+                obj.disabled = true;
+                return;
+            }
+            
+        }
+        
+        
+    },
+    
     /**
      * DEPRICATED : use Roo.XComponents now..
      * 
@@ -903,13 +921,13 @@ Pman = new Roo.Document(
                 return;
             }
             if (this.module.disabled) {
-                Roo.log("Module disabled, should not rendering")
+                Roo.log("Module disabled, should not rendering");
                 Roo.log(this);
                 return;
             }
-            
+             
             if (!this.parent.layout) {
-                Roo.log("Module parent does not have property layout.")
+                Roo.log("Module parent does not have property layout.");
                 Roo.log(this);
                 return;
             }
@@ -917,135 +935,33 @@ Pman = new Roo.Document(
            // honour DEPRICATED permname setings..
            // new code should use PART name, and matching permissions.
             if (this.permname && this.permname.length) {
-                if (Pman.hasPerm(this.permname, 'S')) {
-                   this.module.add(this.parent.layout, this.region);    
+                if (!Pman.hasPerm(this.permname, 'S')) {
+                    return;
                 }
-                return;
+                
             }
-            this.module.add(this.parent.layout, this.region);    
+            this.add(this.parent.layout, this.region);
+            this.el = this.layout;
+            
+            
               
         };
+        // map some of the standard properties..
+        obj.order = obj.modKey;
         
+        // a bit risky...
         
-        Roo.log("CALLING XComponent register with : " + obj.name);
-        
-        // this will call xregister as it's the on.register handler..
-        Roo.XComponent.register(obj);
-        /*
         
         
-        if (obj.disabled) {
-            return;
-        }
+        // the other issue we have is that
          
-        if (!obj.parent.modules) {
-            obj.parent.modules = new Roo.util.MixedCollection(false, function(o) { return o.modKey });
-        }
-        
-        obj.parent.modules.add(obj);
-        */
-    },
-    
-    
-    buildModules : function(parent, onComplete) 
-    {
-        Roo.XComponent.build();
-        /*
-        var _this = this;
-        var cmp = function(a,b) {   
-            return String(a).toUpperCase() > String(b).toUpperCase() ? 1 : -1;
-            
-        };
-        if (!parent.modules) {
-            return;
-        }
-        parent.modules.keySort('ASC',  cmp );
-        var mods = [];
-        
-        
-        // add modules to their parents..
-        var addMod = function(m) {
-           // console.log(m.modKey);
-            
-            mods.push(m);
-            if (m.module.modules) {
-                m.module.modules.keySort('ASC',  cmp );
-                m.module.modules.each(addMod);
-            }
-            if (m.finalize) {
-                m.finalize.name = m.name + " (clean up) ";
-                mods.push(m.finalize);
-            }
-            
-        }
-        parent.modules.each(addMod);
-        //this.allmods = mods;
-        //console.log(mods);
-        //return;
-        if (!mods.length) {
-            if (onComplete) onComplete();
-            return;
-        }
-        // flash it up as modal - so we store the mask!?
-        Roo.MessageBox.show({ title: 'loading' });
-        Roo.MessageBox.show({
-           title: "Please wait...",
-           msg: "Building Interface...",
-           width:450,
-           progress:true,
-           closable:false,
-           modal: false
-          
-        });
-        var n = 0;
-        var progressRun = function() {
-            
-            var mod = mods[n];
-            
-            
-            Roo.MessageBox.updateProgress(
-                (n+1)/mods.length,  "Building Interface " + (n+1) + 
-                    " of " + mods.length + 
-                    (mod.name ? (' - ' + mod.name) : '')
-                    );
-            
-            
-            
-            if (typeof(mod) == 'function') {
-                mod();
-                
-            } else  if (typeof(mod.region) == 'undefined') {
-                Roo.log("Module does not have region defined, skipping");
-                Roo.log(mod);
-                
-            } else  if (mod.parent.layout && !mod.module.disabled) {
-                // honour permname setings..
-                if (mod.permname && mod.permname.length) {
-                    if (Pman.hasPerm(mod.permname, 'S')) {
-                        mod.module.add(mod.parent.layout, mod.region);    
-                    }
-                } else {
-                    mod.module.add(mod.parent.layout, mod.region);    
-                } 
-            }
-            
-            
-            n++;
-            if (n >= mods.length) {
-                onComplete();  
-                return;
-            }
-                
-            
-            progressRun.defer(10, Pman);    
-        }
-        progressRun.defer(1, Pman);
-        */
         
-        
-    },
-    
+        // Roo.log("CALLING XComponent register with : " + obj.name);
+        Roo.log(obj);
+        // this will call xregister as it's the on.register handler..
+        Roo.XComponent.register(obj.isTop ? obj : Roo.apply(obj.module, obj));
+         
+    } ,
     invertColor : function(c)
     {
         // read..