2015-08-26 15 views
15

Mamy cms, więc nie mam dostępu do nagłówka strony HTML, która dostaje rendert dla naszej implementacji extjs. Tak więc musiałem zrobić coś takiego:ExtJs minify Zignorowane

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(); 

Problem polega na tym, że wersja minified zostanie całkowicie zignorowana. widzę, że ładuje się na żądanie http, ale program extreak je ignoruje ... nawet trudne i nie widzę obiektów są tworzone po uwzględnieniu (za pośrednictwem dziennika konsoli)

Czy ktoś ma pojęcie, jak mogę to osiągnąć?

Odpowiedz

4

jak widzę, nikt nie znalazł odpowiedzi, więc zamieszczam tutaj własne, które wymyśliłem.

Ponieważ mogłem z miłości do Boga nie ładować tego cholerstwa, naprawiłem ładowarkę i wyeksportowałem ją do Js. plik. które są wymagane i później wywoływane w kodzie. Plik

eksportowane lang.js:

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)); 
        } 
       }) 
      } 
     } 

    }, 
}) 

i ważne było, aby dodać

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

do wywołania funkcji uruchomienia w kodzie bacause byłoby nie zostały zdefiniowane w czasie wykonywania . Najpierw dodałem plik do minifikowanego pliku i zadzwonię do Lang.Launch zamiast Ext.Application.

Mam nadzieję, że ktoś skorzysta z mojego rozwiązania :)