Pman.Tab.AdminTranslations.bjs
authoredward <edward@roojs.com>
Mon, 4 Jan 2016 04:27:54 +0000 (12:27 +0800)
committeredward <edward@roojs.com>
Mon, 4 Jan 2016 04:27:54 +0000 (12:27 +0800)
Pman.Tab.AdminTranslations.js

Pman.Tab.AdminTranslations.bjs
Pman.Tab.AdminTranslations.js

index db1c50d..db2ed74 100644 (file)
@@ -25,8 +25,8 @@
  "items" : [
   {
    "region" : "center",
-   "xtype" : "NestedLayoutPanel",
    "title" : "Translate App",
+   "xtype" : "NestedLayoutPanel",
    "$ xns" : "Roo",
    "items" : [
     {
@@ -45,9 +45,9 @@
        "listeners" : {
         "|activate" : "function() {\n    _this.panel = this;\n    if (_this.grid) {\n       _this.grid.getDataSource().reload(); \n    }\n}"
        },
+       "region" : "center",
        "fitToframe" : true,
        "background" : true,
-       "region" : "center",
        "title" : "Text in interface",
        "xtype" : "GridPanel",
        "fitContainer" : true,
@@ -79,8 +79,8 @@
            "items" : [
             {
              "$ url" : "baseURL + '/Admin/Translations.php'",
-             "method" : "GET",
              "xtype" : "HttpProxy",
+             "method" : "GET",
              "$ xns" : "Roo.data",
              "* prop" : "proxy"
             },
           },
           {
            "xtype" : "ColumnModel",
-           "width" : 150,
            "header" : "Name",
+           "width" : 150,
            "$ renderer" : "function(v,x,r) {                         var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                                                  return '<div style=\"color:'+c+'\";>' +r.get('tableid')+ ':' + v + '</div>';                                              }",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
           },
           {
            "xtype" : "ColumnModel",
-           "width" : 300,
            "header" : "Original",
+           "width" : 300,
            "$ renderer" : "function(v,x,r) {                         var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                         return '<div style=\"color:' + c+ '\">' +                                  Ext.util.Format.htmlEncode(v) + '</div>';                                              }",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "Reset",
            "width" : 50,
+           "header" : "Reset",
            "$ renderer" : "function(v,x,r) {    \n    return  '<img src=\"' + rootURL + '/Pman/templates/images/edit-clear.gif' + '\" width=\"16\" height=\"16\">';\n}",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "Translated (Click to Edit)",
            "width" : 150,
+           "header" : "Translated (Click to Edit)",
            "$ renderer" : "function(v,x,r) {                                                   var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                                                  return '<div style=\"color:' + c+ '\">' + Ext.util.Format.htmlEncode(v) + '</div>';                     }",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
        "listeners" : {
         "|activate" : "function() {\n    _this.langpanel = this;\n    if (_this.langgrid) {\n        _this.langgrid.ds.load({});\n    }\n}"
        },
+       "region" : "center",
        "fitToframe" : true,
        "background" : true,
-       "region" : "center",
        "title" : "Languages and Countries",
        "xtype" : "GridPanel",
        "fitContainer" : true,
         {
          "listeners" : {
           "beforeedit" : "function(e) {\n    console.log('beforeedit');\n    //if (e.record.get('origtxt').indexOf('<') > -1) {\n                       // console.log(\"HTML EDITOR!!\");\n             \n            //    return false;\n            //}\n            if (e.record.get('lval').replace(/\\s+/, '').length) {\n                return true;\n            }\n            \n            \n            var tl = _this.langgridCombo.getValue();\n          \n            tl = (tl == 'zh_HK') ? 'zh-TW' : tl; \n            tl = tl.replace('_', '-');\n            var rec = e.record;\n            \n            \n            \n            Pman.gtranslate(e.record.get('lval_en'), 'en', tl, function(result) { \n                if (typeof(result) == 'object') { //error\n                    return; \n                   }\n                \n                if (_this.grid.activeEditor) {\n                    _this.grid.activeEditor.setValue(result);\n                } else {\n                    rec.set('lval',result);\n                    //_this.saveRec(rec);\n                }\n\n                //\n                \n                \n                //console.log(result.translation);\n            });\n            \n           \n            \n            return true;\n        } ",
-          "|render" : "function() \n{\n    _this.langgrid = this; \n    //_this.dialog = Pman.Dialog.FILL_IN\n    if (_this.langpanel.active) {\n       this.ds.load({});\n    }\n}",
           "cellclick" : "function (_self, rowIndex, columnIndex, e)\n{\n    if(_this.langgrid.colModel.getDataIndex(columnIndex) !== 'is_active'){\n        return;\n    }\n    \n    var s = _this.langgrid.ds.getAt(rowIndex);\n    \n    if(!s || s.data.id * 1 < 0){\n        return;\n    }\n    \n    s.set('is_active', s.data.is_active ? 0 : 1);\n    \n    new Pman.Request({\n        url : baseURL+'/Roo/I18n',\n        method : 'POST',\n        params : {\n            id : s.data.id,\n            is_active : s.data.is_active\n        }\n    }); \n    \n}",
+          "|render" : "function() \n{\n    _this.langgrid = this; \n    //_this.dialog = Pman.Dialog.FILL_IN\n    if (_this.langpanel.active) {\n       this.ds.load({});\n    }\n}",
           "afteredit" : "function (e)\n{\n    var saveRec  = function(rec)\n    {\n        var g = _this.grid;\n\n        //g.getView().el.mask('Saving');\n        Ext.Ajax.request({\n            url : baseURL + '/Roo/I18n.php',\n            method: 'POST',\n            params : {\n                id : rec.get('id'),\n                lval : rec.get('lval')\n            },\n            success : function()\n            {\n                //g.getView().el.unmask();\n                //g.getDataSource().reload();\n            },\n            failure : function()\n            {\n                Ext.Msg.alert(\"Error\", \"There was a problem saving the data - try reloading\");\n               // g.getView().el.unmask();\n            }\n            \n    });\n        };\n    \n    saveRec.defer(1000, _this, [ e.record ]);\n}"
          },
          "autoExpandColumn" : "lval",
            "items" : [
             {
              "$ url" : "baseURL + '/Roo/i18n.php'",
-             "method" : "GET",
              "xtype" : "HttpProxy",
+             "method" : "GET",
              "$ xns" : "Roo.data",
              "* prop" : "proxy"
             },
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "Code",
            "width" : 50,
+           "header" : "Code",
            "$ renderer" : "function(v) { return String.format('{0}', v); }",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "English",
            "width" : 150,
+           "header" : "English",
            "$ renderer" : "function(v) { return String.format('{0}', v); }",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "Translation",
            "width" : 200,
+           "header" : "Translation",
            "$ renderer" : "function(v) { return String.format('{0}', v); }",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
           },
           {
            "xtype" : "ColumnModel",
-           "header" : "Active?",
            "width" : 150,
+           "header" : "Active?",
            "$ renderer" : "function(v,x,r) { \n\n    return '<img class=\"x-grid-check-icon' + (v*1 ? '-checked' : '')  + '\" src=\"' + Roo.BLANK_IMAGE_URL + '\"/>';\n                                        \n    \n}",
            "$ xns" : "Roo.grid",
            "* prop" : "colModel[]",
index e3824b3..ae59913 100644 (file)
@@ -36,235 +36,47 @@ Pman.Tab.AdminTranslations = new Roo.XComponent({
    var _this = this;
    var MODULE = this;
    return {
+   region : 'center',
+   title : _this._strings['4e7c16d320ae129cc81b296e05748b3a'] /* Translate App */,
+   xns : Roo,
+   '|xns' : 'Roo',
+   xtype : 'NestedLayoutPanel',
    layout : {
+    xns : Roo,
+    '|xns' : 'Roo',
+    xtype : 'BorderLayout',
     center : {
-     '|xns' : 'Roo',
      alwaysShowTabs : true,
      tabPosition : 'top',
      xns : Roo,
+     '|xns' : 'Roo',
      xtype : 'LayoutRegion'
     },
-    '|xns' : 'Roo',
-    xns : Roo,
-    xtype : 'BorderLayout',
-    items : [
+    items  : [
      {
-      grid : {
-       dataSource : {
-        proxy : {
-         '|xns' : 'Roo.data',
-         method : 'GET',
-         url : baseURL + '/Admin/Translations.php',
-         xns : Roo.data,
-         xtype : 'HttpProxy'
-        },
-        reader : {
-         '|xns' : 'Roo.data',
-         fields : [                    'id',             'tablename',             'tableid',             'colname',             'txt',             'lang',             { name:'updated', type:'date', dateFormat: 'Y-m-d H:i:s' },             { name:'origupdated', type:'date', dateFormat: 'Y-m-d H:i:s' },             'origtxt',             'msum',             'suggest'                  ],
-         id : 'id',
-         root : 'data',
-         totalProperty : 'total',
-         xns : Roo.data,
-         xtype : 'JsonReader'
-        },
-        '|xns' : 'Roo.data',
-        reader : Pman.Readers.Category,
-        xns : Roo.data,
-        xtype : 'Store',
-        listeners : {
-         beforeload : function (_self, opts)
-          {
-          
-                                  if (!_this.langCombo || !_this.langCombo.getValue().length) {
-                                      return false;
-                                  }
-                                  if (!_this.modCombo || !_this.modCombo.getValue().length) {
-                                      return false;
-                                  }
-                                  opts.params = {
-                                      lang :  _this.langCombo.getValue(),
-                                      module :  _this.modCombo.getValue()
-                                  };
-          },
-         loadexception : function (self, ret, load, jsonData)
-          {
-              Roo.MessageBox.alert("Error", jsonData);
-          }
-        },
-        items : [
-
-        ]
-
-       },
-       toolbar : {
-        '|xns' : 'Roo',
-        xns : Roo,
-        xtype : 'Toolbar',
-        items : [
-         {
-          store : {
-           '|xns' : 'Roo.data',
-           data : (function() {             
-                   var modlist = [];             
-                   AppModules = typeof(AppModules) == 'undefined' ? '' : AppModules;
-                   Roo.each( AppModules.split(','), function(mod) {            
-                            modlist.push( [ mod ] );            
-                 });             
-                 return modlist;
-              })(),
-           fields : ['module'],
-           xns : Roo.data,
-           xtype : 'SimpleStore'
-          },
-          '|xns' : 'Roo.form',
-          displayField : 'module',
-          editable : false,
-          emptyText : _this._strings['b51c3fa7e0ae26a1d88bf1279f265bb4'],
-          mode : 'local',
-          selectOnFocus : true,
-          triggerAction : 'all',
-          typeAhead : false,
-          valueField : 'module',
-          width : 200,
-          xns : Roo.form,
-          xtype : 'ComboBox',
-          listeners : {
-           render : function (_self)
-            {
-              _this.modCombo = _self;
-            },
-           select : function (combo, record, index)
-            {
-              _this.grid.getDataSource().reload(); 
-            }
-          },
-          items : [
-
-          ]
-
-         },
-         {
-          store : {
-           '|xns' : 'Roo.data',
-           data : [                                                [ 'zh_HK' , '\u7E41\u4E2D - Trad. Chin. (HK)' ],                         [ 'zh_CN', '\u7C21\u4E2D - Simp. Chin.' ]                     ],
-           fields : ['lang', 'ldisp'],
-           xns : Roo.data,
-           xtype : 'SimpleStore'
-          },
-          '|xns' : 'Roo.form',
-          displayField : 'ldisp',
-          editable : false,
-          emptyText : _this._strings['83dad8107f9459efe2b4fabcf5b63108'],
-          mode : 'local',
-          selectOnFocus : true,
-          triggerAction : 'all',
-          typeAhead : false,
-          valueField : 'lang',
-          width : 200,
-          xns : Roo.form,
-          xtype : 'ComboBox',
-          listeners : {
-           render : function (_self)
-            {
-              _this.langCombo=_self;
-            },
-           select : function (combo, record, index)
-            {
-              _this.grid.getDataSource().reload(); 
-            }
-          },
-          items : [
-
-          ]
-
-         },
-         {
-          '|xns' : 'Roo.Toolbar',
-          xns : Roo.Toolbar,
-          xtype : 'Fill'
-         },
-         {
-          '|xns' : 'Roo.Toolbar',
-          text : _this._strings['801ab24683a4a8c433c6eb40c48bcd9d'],
-          xns : Roo.Toolbar,
-          xtype : 'Button',
-          listeners : {
-           click : function (_self, e)
-            {
-                new Pman.Download({
-                    grid: _this.grid
-                
-                });
+      background : true,
+      fitContainer : true,
+      fitToframe : true,
+      region : 'center',
+      title : _this._strings['a1d1ae170f841c328acdc6052511ed8c'] /* Text in interface */,
+      xns : Roo,
+      '|xns' : 'Roo',
+      xtype : 'GridPanel',
+      listeners : {
+       activate : function() {
+            _this.panel = this;
+            if (_this.grid) {
+               _this.grid.getDataSource().reload(); 
             }
-          }
-         }
-        ]
-
-       },
-       '|xns' : 'Roo.grid',
+        }
+      },
+      grid : {
        autoExpandColumn : 'txt',
        clicksToEdit : 1,
        loadMask : true,
        xns : Roo.grid,
+       '|xns' : 'Roo.grid',
        xtype : 'EditorGrid',
-       colModel : [
-         {
-          '|xns' : 'Roo.grid',
-          dataIndex : 'colname',
-          header : _this._strings['49ee3087348e8d44e1feda1917443987'],
-          renderer : function(v,x,r) {                         var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                                                  return '<div style="color:'+c+'";>' +r.get('tableid')+ ':' + v + '</div>';                                              },
-          width : 150,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          '|xns' : 'Roo.grid',
-          dataIndex : 'origtxt',
-          header : _this._strings['0a52da7a03a6de3beefe54f8c03ad80d'],
-          renderer : function(v,x,r) {                         var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                         return '<div style="color:' + c+ '">' +                                  Ext.util.Format.htmlEncode(v) + '</div>';                                              },
-          width : 300,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          '|xns' : 'Roo.grid',
-          dataIndex : 'reset_tx',
-          header : _this._strings['526d688f37a86d3c3f27d0c5016eb71d'],
-          renderer : function(v,x,r) {    
-              return  '<img src="' + rootURL + '/Pman/templates/images/edit-clear.gif' + '" width="16" height="16">';
-          },
-          width : 50,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          editor : {
-           field : {
-            '|xns' : 'Roo.form',
-            xns : Roo.form,
-            xtype : 'TextField'
-           },
-           '|xns' : 'Roo.grid',
-           xns : Roo.grid,
-           xtype : 'GridEditor',
-           items : [
-
-           ]
-
-          },
-          '|xns' : 'Roo.grid',
-          dataIndex : 'txt',
-          header : _this._strings['e2ade2e0b88406a390f59b5232abb328'],
-          renderer : function(v,x,r) {                                                   var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                                                  return '<div style="color:' + c+ '">' + Ext.util.Format.htmlEncode(v) + '</div>';                     },
-          width : 150,
-          xns : Roo.grid,
-          xtype : 'ColumnModel',
-          items : [
-
-          ]
-
-         }
-       ],
        listeners : {
         afteredit : function (e)
          {
@@ -390,247 +202,221 @@ Pman.Tab.AdminTranslations = new Roo.XComponent({
              }
          }
        },
-       items : [
-
-       ]
-
-      },
-      '|xns' : 'Roo',
-      background : true,
-      fitContainer : true,
-      fitToframe : true,
-      region : 'center',
-      title : _this._strings['a1d1ae170f841c328acdc6052511ed8c'],
-      xns : Roo,
-      xtype : 'GridPanel',
-      listeners : {
-       activate : function() {
-            _this.panel = this;
-            if (_this.grid) {
-               _this.grid.getDataSource().reload(); 
+       toolbar : {
+        xns : Roo,
+        '|xns' : 'Roo',
+        xtype : 'Toolbar',
+        items  : [
+         {
+          displayField : 'module',
+          editable : false,
+          emptyText : _this._strings['b51c3fa7e0ae26a1d88bf1279f265bb4'] /* Select Module */,
+          mode : 'local',
+          selectOnFocus : true,
+          triggerAction : 'all',
+          typeAhead : false,
+          valueField : 'module',
+          width : 200,
+          xns : Roo.form,
+          '|xns' : 'Roo.form',
+          xtype : 'ComboBox',
+          listeners : {
+           render : function (_self)
+            {
+              _this.modCombo = _self;
+            },
+           select : function (combo, record, index)
+            {
+              _this.grid.getDataSource().reload(); 
             }
-        }
-      },
-      items : [
-
-      ]
-
-     },
-     {
-      grid : {
-       dataSource : {
-        proxy : {
-         '|xns' : 'Roo.data',
-         method : 'GET',
-         url : baseURL + '/Roo/i18n.php',
-         xns : Roo.data,
-         xtype : 'HttpProxy'
-        },
-        reader : {
-         '|xns' : 'Roo.data',
-         fields : [
-             {
-                 'name': 'id',
-                 'type': 'int'
-             },
-             {
-                 'name': 'ltype',
-                 'type': 'string'
-             },
-             {
-                 'name': 'lkey',
-                 'type': 'string'
-             },
-             {
-                 'name': 'inlang',
-                 'type': 'string'
-             },
-             {
-                 'name': 'lval',
-                 'type': 'string'
-             }
-         ],
-         id : 'id',
-         root : 'data',
-         totalProperty : 'total',
-         xns : Roo.data,
-         xtype : 'JsonReader'
-        },
-        '|xns' : 'Roo.data',
-        remoteSort : true,
-        sortInfo : { field : 'lkey', direction: 'ASC' },
-        xns : Roo.data,
-        xtype : 'Store',
-        listeners : {
-         beforeload : function (_self, options)
-          {
-             options  =options ||  {};
-             options.params =options.params|| {};
-             options.params.ltype = _this.langtypeCombo.getValue();
-             options.params.inlang = _this.langgridCombo.getValue();
-             options.params['query[_with_en]'] = 1;
-             if (!options.params.ltype.length || !options.params.inlang.length) {
-                 return false;
-             }
-             
-             options.params.limit = 9999;
-             
-          }
-        },
-        items : [
-
-        ]
-
-       },
-       toolbar : {
-        '|xns' : 'Roo',
-        xns : Roo,
-        xtype : 'Toolbar',
-        items : [
-         {
+          },
           store : {
-           '|xns' : 'Roo.data',
-           data : [
-              [ 'l', 'Language Names' ],
-              [ 'c', 'Country Names' ],
-               [ 'm', 'Currency Names' ]
-           ],
-           fields : ['lkey','lval'],
+           data : (function() {             
+                   var modlist = [];             
+                   AppModules = typeof(AppModules) == 'undefined' ? '' : AppModules;
+                   Roo.each( AppModules.split(','), function(mod) {            
+                            modlist.push( [ mod ] );            
+                 });             
+                 return modlist;
+              })(),
+           fields : ['module'],
            xns : Roo.data,
+           '|xns' : 'Roo.data',
            xtype : 'SimpleStore'
-          },
-          '|xns' : 'Roo.form',
-          displayField : 'lval',
+          }
+         },
+         {
+          displayField : 'ldisp',
           editable : false,
-          emptyText : _this._strings['552bcc4e00cd663f09cc4efbaca1cd45'],
+          emptyText : _this._strings['83dad8107f9459efe2b4fabcf5b63108'] /* Select Language */,
           mode : 'local',
           selectOnFocus : true,
           triggerAction : 'all',
           typeAhead : false,
-          valueField : 'lkey',
+          valueField : 'lang',
           width : 200,
           xns : Roo.form,
+          '|xns' : 'Roo.form',
           xtype : 'ComboBox',
           listeners : {
            render : function (_self)
             {
-              _this.langtypeCombo = _self;
+              _this.langCombo=_self;
             },
            select : function (combo, record, index)
             {
-              _this.langgrid.getDataSource().reload(); 
+              _this.grid.getDataSource().reload(); 
             }
           },
-          items : [
-
-          ]
-
-         },
-         {
           store : {
-           '|xns' : 'Roo.data',
            data : [                                                [ 'zh_HK' , '\u7E41\u4E2D - Trad. Chin. (HK)' ],                         [ 'zh_CN', '\u7C21\u4E2D - Simp. Chin.' ]                     ],
            fields : ['lang', 'ldisp'],
            xns : Roo.data,
+           '|xns' : 'Roo.data',
            xtype : 'SimpleStore'
-          },
-          '|xns' : 'Roo.form',
-          displayField : 'ldisp',
-          editable : false,
-          emptyText : _this._strings['83dad8107f9459efe2b4fabcf5b63108'],
-          mode : 'local',
-          selectOnFocus : true,
-          triggerAction : 'all',
-          typeAhead : false,
-          valueField : 'lang',
-          width : 200,
-          xns : Roo.form,
-          xtype : 'ComboBox',
+          }
+         },
+         {
+          xns : Roo.Toolbar,
+          '|xns' : 'Roo.Toolbar',
+          xtype : 'Fill'
+         },
+         {
+          text : _this._strings['801ab24683a4a8c433c6eb40c48bcd9d'] /* Download */,
+          xns : Roo.Toolbar,
+          '|xns' : 'Roo.Toolbar',
+          xtype : 'Button',
           listeners : {
-           render : function (_self)
-            {
-              _this.langgridCombo=_self;
-            },
-           select : function (combo, record, index)
+           click : function (_self, e)
             {
-              _this.langgrid.getDataSource().reload(); 
+                new Pman.Download({
+                    grid: _this.grid
+                
+                });
             }
-          },
-          items : [
-
-          ]
-
+          }
          }
         ]
-
        },
-       '|xns' : 'Roo.grid',
-       autoExpandColumn : 'lval',
-       clicksToEdit : 1,
-       loadMask : true,
-       xns : Roo.grid,
-       xtype : 'EditorGrid',
+       dataSource : {
+        reader : Pman.Readers.Category,
+        xns : Roo.data,
+        '|xns' : 'Roo.data',
+        xtype : 'Store',
+        listeners : {
+         beforeload : function (_self, opts)
+          {
+          
+                                  if (!_this.langCombo || !_this.langCombo.getValue().length) {
+                                      return false;
+                                  }
+                                  if (!_this.modCombo || !_this.modCombo.getValue().length) {
+                                      return false;
+                                  }
+                                  opts.params = {
+                                      lang :  _this.langCombo.getValue(),
+                                      module :  _this.modCombo.getValue()
+                                  };
+          },
+         loadexception : function (self, ret, load, jsonData)
+          {
+              Roo.MessageBox.alert("Error", jsonData);
+          }
+        },
+        proxy : {
+         method : 'GET',
+         url : baseURL + '/Admin/Translations.php',
+         xns : Roo.data,
+         '|xns' : 'Roo.data',
+         xtype : 'HttpProxy'
+        },
+        reader : {
+         fields : [                    'id',             'tablename',             'tableid',             'colname',             'txt',             'lang',             { name:'updated', type:'date', dateFormat: 'Y-m-d H:i:s' },             { name:'origupdated', type:'date', dateFormat: 'Y-m-d H:i:s' },             'origtxt',             'msum',             'suggest'                  ],
+         id : 'id',
+         root : 'data',
+         totalProperty : 'total',
+         xns : Roo.data,
+         '|xns' : 'Roo.data',
+         xtype : 'JsonReader'
+        }
+       },
        colModel : [
-         {
-          '|xns' : 'Roo.grid',
-          dataIndex : 'lkey',
-          header : _this._strings['ca0dbad92a874b2f69b549293387925e'],
-          renderer : function(v) { return String.format('{0}', v); },
-          width : 50,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
-         },
-{
-          '|xns' : 'Roo.grid',
-          dataIndex : 'lval_en',
-          header : _this._strings['78463a384a5aa4fad5fa73e2f506ecfc'],
-          renderer : function(v) { return String.format('{0}', v); },
-          width : 150,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
+        {
+         dataIndex : 'colname',
+         header : _this._strings['49ee3087348e8d44e1feda1917443987'] /* Name */,
+         renderer : function(v,x,r) {                         var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                                                  return '<div style="color:'+c+'";>' +r.get('tableid')+ ':' + v + '</div>';                                              },
+         width : 150,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid',
+         xtype : 'ColumnModel'
+        },
+        {
+         dataIndex : 'origtxt',
+         header : _this._strings['0a52da7a03a6de3beefe54f8c03ad80d'] /* Original */,
+         renderer : function(v,x,r) {                         var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                         return '<div style="color:' + c+ '">' +                                  Ext.util.Format.htmlEncode(v) + '</div>';                                              },
+         width : 300,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid',
+         xtype : 'ColumnModel'
+        },
+        {
+         dataIndex : 'reset_tx',
+         header : _this._strings['526d688f37a86d3c3f27d0c5016eb71d'] /* Reset */,
+         renderer : function(v,x,r) {    
+             return  '<img src="' + rootURL + '/Pman/templates/images/edit-clear.gif' + '" width="16" height="16">';
          },
-{
-          editor : {
-           field : {
-            '|xns' : 'Roo.form',
-            xns : Roo.form,
-            xtype : 'TextField'
-           },
-           '|xns' : 'Roo.grid',
-           xns : Roo.grid,
-           xtype : 'GridEditor',
-           items : [
-
-           ]
-
-          },
-          '|xns' : 'Roo.grid',
-          dataIndex : 'lval',
-          header : _this._strings['6dd08874f83507e9c7b23f1a46b7fa7c'],
-          renderer : function(v) { return String.format('{0}', v); },
-          width : 200,
+         width : 50,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid',
+         xtype : 'ColumnModel'
+        },
+        {
+         dataIndex : 'txt',
+         header : _this._strings['e2ade2e0b88406a390f59b5232abb328'] /* Translated (Click to Edit) */,
+         renderer : function(v,x,r) {                                                   var c = '#666';                         if (r.get('updated') < r.get('origupdated')) {                             c = 'red';                         }                                                  return '<div style="color:' + c+ '">' + Ext.util.Format.htmlEncode(v) + '</div>';                     },
+         width : 150,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid',
+         xtype : 'ColumnModel',
+         editor : {
           xns : Roo.grid,
-          xtype : 'ColumnModel',
-          items : [
-
-          ]
-
-         },
-{
           '|xns' : 'Roo.grid',
-          dataIndex : 'is_active',
-          header : _this._strings['ae739a236065a45c64ad51aacb19498c'],
-          renderer : function(v,x,r) { 
-          
-              return '<img class="x-grid-check-icon' + (v*1 ? '-checked' : '')  + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
-                                                  
-              
-          },
-          width : 150,
-          xns : Roo.grid,
-          xtype : 'ColumnModel'
+          xtype : 'GridEditor',
+          field : {
+           xns : Roo.form,
+           '|xns' : 'Roo.form',
+           xtype : 'TextField'
+          }
          }
-       ],
+        }
+       ]
+      }
+     },
+     {
+      background : true,
+      fitContainer : true,
+      fitToframe : true,
+      region : 'center',
+      tableName : 'i18n',
+      title : _this._strings['0a9e8bd9e8b301dfb2c21c355e0b377d'] /* Languages and Countries */,
+      xns : Roo,
+      '|xns' : 'Roo',
+      xtype : 'GridPanel',
+      listeners : {
+       activate : function() {
+            _this.langpanel = this;
+            if (_this.langgrid) {
+                _this.langgrid.ds.load({});
+            }
+        }
+      },
+      grid : {
+       autoExpandColumn : 'lval',
+       clicksToEdit : 1,
+       loadMask : true,
+       xns : Roo.grid,
+       '|xns' : 'Roo.grid',
+       xtype : 'EditorGrid',
        listeners : {
         afteredit : function (e)
          {
@@ -737,44 +523,195 @@ Pman.Tab.AdminTranslations = new Roo.XComponent({
              }
          }
        },
-       items : [
-
-       ]
-
-      },
-      '|xns' : 'Roo',
-      background : true,
-      fitContainer : true,
-      fitToframe : true,
-      region : 'center',
-      tableName : 'i18n',
-      title : _this._strings['0a9e8bd9e8b301dfb2c21c355e0b377d'],
-      xns : Roo,
-      xtype : 'GridPanel',
-      listeners : {
-       activate : function() {
-            _this.langpanel = this;
-            if (_this.langgrid) {
-                _this.langgrid.ds.load({});
+       toolbar : {
+        xns : Roo,
+        '|xns' : 'Roo',
+        xtype : 'Toolbar',
+        items  : [
+         {
+          displayField : 'lval',
+          editable : false,
+          emptyText : _this._strings['552bcc4e00cd663f09cc4efbaca1cd45'] /* Select Translation of */,
+          mode : 'local',
+          selectOnFocus : true,
+          triggerAction : 'all',
+          typeAhead : false,
+          valueField : 'lkey',
+          width : 200,
+          xns : Roo.form,
+          '|xns' : 'Roo.form',
+          xtype : 'ComboBox',
+          listeners : {
+           render : function (_self)
+            {
+              _this.langtypeCombo = _self;
+            },
+           select : function (combo, record, index)
+            {
+              _this.langgrid.getDataSource().reload(); 
             }
+          },
+          store : {
+           data : [
+              [ 'l', 'Language Names' ],
+              [ 'c', 'Country Names' ],
+               [ 'm', 'Currency Names' ]
+           ],
+           fields : ['lkey','lval'],
+           xns : Roo.data,
+           '|xns' : 'Roo.data',
+           xtype : 'SimpleStore'
+          }
+         },
+         {
+          displayField : 'ldisp',
+          editable : false,
+          emptyText : _this._strings['83dad8107f9459efe2b4fabcf5b63108'] /* Select Language */,
+          mode : 'local',
+          selectOnFocus : true,
+          triggerAction : 'all',
+          typeAhead : false,
+          valueField : 'lang',
+          width : 200,
+          xns : Roo.form,
+          '|xns' : 'Roo.form',
+          xtype : 'ComboBox',
+          listeners : {
+           render : function (_self)
+            {
+              _this.langgridCombo=_self;
+            },
+           select : function (combo, record, index)
+            {
+              _this.langgrid.getDataSource().reload(); 
+            }
+          },
+          store : {
+           data : [                                                [ 'zh_HK' , '\u7E41\u4E2D - Trad. Chin. (HK)' ],                         [ 'zh_CN', '\u7C21\u4E2D - Simp. Chin.' ]                     ],
+           fields : ['lang', 'ldisp'],
+           xns : Roo.data,
+           '|xns' : 'Roo.data',
+           xtype : 'SimpleStore'
+          }
+         }
+        ]
+       },
+       dataSource : {
+        remoteSort : true,
+        sortInfo : { field : 'lkey', direction: 'ASC' },
+        xns : Roo.data,
+        '|xns' : 'Roo.data',
+        xtype : 'Store',
+        listeners : {
+         beforeload : function (_self, options)
+          {
+             options  =options ||  {};
+             options.params =options.params|| {};
+             options.params.ltype = _this.langtypeCombo.getValue();
+             options.params.inlang = _this.langgridCombo.getValue();
+             options.params['query[_with_en]'] = 1;
+             if (!options.params.ltype.length || !options.params.inlang.length) {
+                 return false;
+             }
+             
+             options.params.limit = 9999;
+             
+          }
+        },
+        proxy : {
+         method : 'GET',
+         url : baseURL + '/Roo/i18n.php',
+         xns : Roo.data,
+         '|xns' : 'Roo.data',
+         xtype : 'HttpProxy'
+        },
+        reader : {
+         fields : [
+             {
+                 'name': 'id',
+                 'type': 'int'
+             },
+             {
+                 'name': 'ltype',
+                 'type': 'string'
+             },
+             {
+                 'name': 'lkey',
+                 'type': 'string'
+             },
+             {
+                 'name': 'inlang',
+                 'type': 'string'
+             },
+             {
+                 'name': 'lval',
+                 'type': 'string'
+             }
+         ],
+         id : 'id',
+         root : 'data',
+         totalProperty : 'total',
+         xns : Roo.data,
+         '|xns' : 'Roo.data',
+         xtype : 'JsonReader'
         }
-      },
-      items : [
-
-      ]
-
+       },
+       colModel : [
+        {
+         dataIndex : 'lkey',
+         header : _this._strings['ca0dbad92a874b2f69b549293387925e'] /* Code */,
+         renderer : function(v) { return String.format('{0}', v); },
+         width : 50,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid',
+         xtype : 'ColumnModel'
+        },
+        {
+         dataIndex : 'lval_en',
+         header : _this._strings['78463a384a5aa4fad5fa73e2f506ecfc'] /* English */,
+         renderer : function(v) { return String.format('{0}', v); },
+         width : 150,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid',
+         xtype : 'ColumnModel'
+        },
+        {
+         dataIndex : 'lval',
+         header : _this._strings['6dd08874f83507e9c7b23f1a46b7fa7c'] /* Translation */,
+         renderer : function(v) { return String.format('{0}', v); },
+         width : 200,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid',
+         xtype : 'ColumnModel',
+         editor : {
+          xns : Roo.grid,
+          '|xns' : 'Roo.grid',
+          xtype : 'GridEditor',
+          field : {
+           xns : Roo.form,
+           '|xns' : 'Roo.form',
+           xtype : 'TextField'
+          }
+         }
+        },
+        {
+         dataIndex : 'is_active',
+         header : _this._strings['ae739a236065a45c64ad51aacb19498c'] /* Active? */,
+         renderer : function(v,x,r) { 
+         
+             return '<img class="x-grid-check-icon' + (v*1 ? '-checked' : '')  + '" src="' + Roo.BLANK_IMAGE_URL + '"/>';
+                                                 
+             
+         },
+         width : 150,
+         xns : Roo.grid,
+         '|xns' : 'Roo.grid',
+         xtype : 'ColumnModel'
+        }
+       ]
+      }
      }
     ]
-
-   },
-   '|xns' : 'Roo',
-   region : 'center',
-   title : _this._strings['4e7c16d320ae129cc81b296e05748b3a'],
-   xns : Roo,
-   xtype : 'NestedLayoutPanel',
-   items : [
-
-   ]
-
+   }
   };  }
 });