4 * This is the main Pman class [for bootstrap]
6 * In theory it's lighter than the original, as no BC concerns..
16 Pman = new Roo.Document(
19 // Tab not needed, as that's now our top level UI element..
23 rightNames: { }, /// register right names here - so they can be translated and rendered.
25 * @property {Roo.menu.Menu} pulldownMenu - the 'add menu pulldown, you can use it to add items..
31 buildCompleted : false, // flag to say if we are building interface..
33 'beforeauth' : true, // fired after page ready, before authentication check
34 'beforeload' : true, // fired after page ready, before module building.
35 'load' : true, // fired after module building
36 'authrefreshed' : true // fire on auth updated?? - should be on Login?!?!?
39 onBuildComplete : function ()
41 this.building = false;
42 //this.layout.getRegion('center').showPanel(0);
43 //this.layout.endUpdate();
44 //this.addTopToolbar();
46 this.fireEvent('load',this);
48 if (Pman.Login.authUser) {
50 if (typeof(FS) == 'undefined') {
51 Roo.log("failed to initialize FS");
55 FS.identify(Pman.Login.authUser.id, {
56 displayName: Pman.Login.authUser.firstname + ' ' + Pman.Login.authUser.lastname,
57 email: Pman.Login.authUser.email
69 // kludge to fix firebug debugger
70 if (typeof(console) == 'undefined') {
71 console = { log : function() { } };
75 if (Roo.get('loading')) {
76 Roo.get('loading').remove();
79 Roo.state.Manager.setProvider(new Roo.state.CookieProvider());
80 Roo.bootstrap.Tooltip.init();
82 if(window.location.pathname.substr(baseURL.length).match(/\/PasswordReset\//)){
83 Pman.Dialog.BAdminPasswordReset.show({}, function(){
84 window.location.href = baseURL;
95 if (Roo.get('loading-logo-tile')) {
96 Roo.get('loading-logo-tile').remove();
98 if (Roo.get('loading-logo-tile-top')) {
99 Roo.get('loading-logo-tile-top').remove();
101 if (Roo.get('loading-logo-bottom')) {
102 Roo.get('loading-logo-bottom').remove();
104 if (Roo.get('loading-logo-center')) {
105 Roo.get('loading-logo-center').remove();
110 loadUserInterface : function()
112 if (this.buildCompleted) { // it get's called from auth checking.. no need to build again..
115 // triggers after authentication verified...
117 if(typeof(uiConfig.fullstory) != 'undefined'){
121 if (Roo.get('loading')) {
122 Roo.get('loading').remove();
124 if (Roo.get('loading-mask')) {
125 Roo.get('loading-mask').show();
127 var au = Pman.Login.authUser;
128 document.title = appName + ' v' + AppVersion + ' - ' + au.company_id_name;
136 Pman.building = true;
138 Roo.XComponent.hideProgress = true;
139 Roo.XComponent.on('beforebuild', this.onBeforeBuild, this);
141 Roo.XComponent.on('buildcomplete', this.onBuildComplete, this);
142 Roo.XComponent.build();
147 finalize : function() {
151 window.onbeforeunload = function(e) {
152 e = e || window.event;
153 var r = "Closing this window will loose changes, are you sure you want to do that?";
155 // For IE and Firefox
165 Roo.bootstrap.MessageBox.hide();
167 if (Roo.get('loading-mask')) {
168 Roo.get('loading-mask').remove();
172 this.buildCompleted = true; // now we can force refreshes on everything..
175 // does the URL indicate we want to see a system..
183 genericDelete : function(tab,tbl) {
188 var s = tab.grid.selModel.getSelections();
190 Roo.bootstrap.MessageBox.alert("Error", "Select at least one Row to delete" );
193 //var reader = tab.grid.reader || tab.grid.ds.reader;
194 for(var i = 0; i < s.length; i++) {
195 r.push(s[i].json.id);
198 Roo.bootstrap.MessageBox.confirm("Confirm", "Are you sure you want to delete that?",
204 //tab.grid.mask("Deleting");
206 url: baseURL + '/Roo/'+tbl+'.php',
210 _delete : r.join(',')
212 success: function(response) {
215 tab.paging.onClick('refresh');
216 } else if (tab.grid.footer && tab.grid.footer.onClick) {
217 // new xtype built grids
218 tab.grid.footer.onClick('refresh');
219 } else if (tab.refresh) {
220 tab.refresh(); // this might cause problems as panels have a refresh method?
222 tab.grid.store.load();
228 failure: function(act) {
229 Roo.bootstrap.MessageBox.hide();
236 msg = "Error deleting";
239 Roo.bootstrap.MessageBox.alert("Error", msg);
249 /* fired before building - check permissions on a component.. */
250 onBeforeBuild : function(obj)
252 if (typeof(obj.part) == 'undefined') {
256 if (!obj.part[1].length) {
257 obj.part[1] = obj.part[0];
259 var permname = obj.part.join('.');
261 Roo.log("CHECKING: "+ permname);
263 if (typeof(appDisabled) != 'undefined' && appDisabled.indexOf(permname)> -1) {
266 // we now have permission...
267 // obj.moduleOwner '.' lname
269 if (Pman.Login.hasPermExists(permname) && !Pman.Login.hasPerm(permname,'S')) {
270 // it's a turned off permission...
271 Roo.log(permname + " is Disabled for this user");
276 if (obj.permname && obj.permname.length &&
277 Pman.Login.hasPermExists(obj.permname) && !Pman.Login.hasPerm(obj.permname,'S')) {
278 // it's a turned off permission...
279 Roo.log(obj.permname + " is Disabled for this user");
287 fullstory : function()
289 if(uiConfig.fullstory.domains.indexOf(location.host) < 0){
293 window['_fs_debug'] = false;
294 window['_fs_host'] = 'fullstory.com';
295 window['_fs_org'] = uiConfig.fullstory.account;
296 window['_fs_namespace'] = 'FS';
297 (function(m,n,e,t,l,o,g,y){
298 if (e in m) {if(m.console && m.console.log) { m.console.log('FullStory namespace conflict. Please set window["_fs_namespace"].');} return;}
299 g=m[e]=function(a,b){g.q?g.q.push([a,b]):g._api(a,b);};g.q=[];
300 o=n.createElement(t);o.async=1;o.src='https://'+_fs_host+'/s/fs.js';
301 y=n.getElementsByTagName(t)[0];y.parentNode.insertBefore(o,y);
302 g.identify=function(i,v){g(l,{uid:i});if(v){g(l,v)}};g.setUserVars=function(v){g(l,v)};
303 g.identifyAccount=function(i,v){o='account';v=v||{};v.acctId=i;g(o,v)};
304 g.clearUserCookie=function(c,d,i){if(!c || document.cookie.match('fs_uid=[`;`]*`[`;`]*`[`;`]*`')){
305 d=n.domain;while(1){n.cookie='fs_uid=;domain='+d+
306 ';path=/;expires='+new Date(0).toUTCString();i=d.indexOf('.');if(i<0){break;}d=d.slice(i+1)}}};
307 })(window,document,window['_fs_namespace'],'script','user');