2015-08-26 16 views
15

Abbiamo un cms quindi non ho accesso all'intestazione della pagina HTML che ottiene il rendering per la nostra implementazione di extjs. Così ho dovuto fare una wich workround è come questo:Minima ExtJ Viene ignorato

Ext.local = {}; 
    var lang = { 
     initLang: function (revisionNr) { 
      var local = localStorage.getItem('localLang') 
      if (!local) { 
       AjaxHandlerByClass('ajax/lang/webuser/init', {}, this.loadLangRemote); 
      } else { 
       local = JSON.parse(local); 
       if (local.revisionNr == config.revisionNr && local.lang == config.lang) { 
        console.log('loading local lang variables'); 
        if (local.date < new Date().getTime() - (24 * 60 * 60 * 1000) * 2) {//2 day caching time before retry 
         delete window.localStorage.localLangBackup; 
        } 
        this.loadLangLocal(local); 
       } else { 
        delete window.localStorage.localLang; 
        AjaxHandlerByClass('ajax/lang/webuser/init', {}, this.loadLangRemote); 
       } 
      } 
     }, 
     loadLangRemote: function (data) { 
      data.revisionNr = config.revisionNr; 
      data.lang = config.lang; 
      data.date = new Date().getTime(); 
      lang.loadLangLocal(data); 
      localStorage.setItem('localLang', JSON.stringify(data)); 
     }, 
     loadLangLocal: function (data) { 
      var jsElm = document.createElement("script"); 
      jsElm.type = "application/javascript"; 
      jsElm.src = 'js/freetext-deploy.min.js?rev={/literal}{$revisionNr}{literal}'; 

      document.getElementsByTagName('head')[0].appendChild(jsElm); 

      Ext.Date.defaultFormat = 'd-m-Y'; 
      if (!debug) { 
       Ext.Loader.config.disableCaching = true; 
      } 


      Ext.application({ 
       name: 'freetextOrder', 
       appFolder: 'modules/extjs/freetextOrder/app', 
       controllers: [ 
        'Main' 
       ], 
       launch: function() { 

        var freetextOrder = Ext.create('Ext.container.Container', { 
         renderTo: Ext.get('freetextOrderDiv'), 
         layout: 'fit', 
         id: 'catalogAdministrationDiv_ext', 
         height: 800, 
         cls: 'x-dig-override', 
         items: [Ext.create('freetextOrder.view.base.MainView', {})], 
         layout:'fit' 
        }); 
       } 
      }); 
      Ext.local = data; 
     } 
    }; 
    lang.initLang(); 

Il problema im avendo è che la versione minified viene ignorato completamente. lo vedo caricare sulla richiesta http ma gli extjs li ignorano .... anche se non riesco a vedere gli oggetti vengono creati dopo includi (tramite il log della console)

Qualcuno ha idea di come posso farcela?

risposta

4

come vedo nessuno ha trovato la risposta così ho postato il mio qui con cui sono venuto con.

Dal momento che potevo per amore di dio non caricare quella dannata cosa ho rifatto il caricatore e l'ho esportato in un Js. file. che ho richiesto e chiamato più tardi nel codice.

lang.js esportati File:

Ext.define('Lang', { 
    singleton: true, 
    ApplicationConf: null, 
    Launch: function (launchConfig) { 

     this.ApplicationConf = launchConfig; 

     var local = localStorage.getItem('localLang'); 
     var me = this; 

     this.loadLangRemote = function (data) { 
      debugger; 
      data.revisionNr = config.revisionNr; 
      data.lang = config.lang; 
      data.date = new Date().getTime(); 
      me.loadLangLocal(data); 
      localStorage.setItem('localLang', JSON.stringify(data)); 
     }; 
     this.loadLangLocal = function (data) { 
      Ext.local = data; 
      Ext.lang = function (langId) { 
       if (Ext.local[langId]) { 
        return Ext.local[langId]; 
       } 

       delete window.localStorage.localLang; 
       localStorage.setItem('localLangBackup', true); 
       return langId; 
      } 
      Ext.application(me.ApplicationConf); 
     }; 

     if (!local) { 
      Ext.Ajax.request({ 
       url: 'ajax/lang/webuser/init', 
       params: { 
        sid: sid, 
       }, 
       success: function (data) { 
        debugger; 
        me.loadLangRemote(Ext.JSON.decode(data.responseText)); 
       } 

      }) 
     } else { 
      local = JSON.parse(local); 
      if (local.revisionNr == config.revisionNr && local.lang == config.lang) { 
       console.log('loading local lang variables'); 
       if (local.date < new Date().getTime() - (24 * 60 * 60 * 1000) * 2) {//2 day caching time before retry 
        delete window.localStorage.localLangBackup; 
       } 
       debugger; 
       me.loadLangLocal(local); 
      } else { 
       delete window.localStorage.localLang; 
       Ext.Ajax.request({ 
        url: 'ajax/lang/webuser/init', 
        params: { 
         sid: sid, 
        }, 
        success: function (data) { 
         me.loadLangRemote(Ext.JSON.decode(data.responseText)); 
        } 
       }) 
      } 
     } 

    }, 
}) 

ed importante è stato quello di aggiungere il

Ext.onReady(function() { 
      Lang.Launch({ 
       name: 'catalogAdministration', 
       appFold.... 

alla chiamata della funzione Launch nel codice, bacause sarebbe non sono stati definiti in fase di esecuzione . ho prima aggiunto il file al file minificato e chiamato il Lang.Launch invece Ext.Application.

Spero che qualcuno abbia usato la mia soluzione :)

Problemi correlati