Pman.on('beforeload', function()
{
Pman.register({
- modKey : '001-Pman.Tab.AdminTranslations',
+ modKey : '950-Pman.Tab.AdminTranslations',
module : Pman.Tab.AdminTranslations,
region : 'center',
- parent : false,
+ parent : Pman.Tab.Admin,
name : "Admin - Translations",
disabled : false,
- permname: ''
+ permname: 'Admin.Translations'
});
});
this.parentLayout = parentLayout;
this.panel = parentLayout.addxtype({
- xtype: 'GridPanel',
+ xtype: 'NestedLayoutPanel',
xns: Roo,
- listeners : {
- activate : function() {
- _this.panel = this;
- if (_this.grid) {
- _this.grid.getDataSource().reload();
- }
- }
- },
- background : true,
- fitContainer : true,
- fitToframe : true,
+ region : 'center',
title : "Translate App",
- grid : {
- xtype: 'EditorGrid',
- xns: Roo.grid,
- autoExpandColumn : 'txt',
- loadMask : true,
- listeners : {
- render : function() {
- _this.grid = this;
- //_this.dialog = Pman.Dialog.FILL_IN
- if (_this.panel.active) {
- _this.grid.getDataSource().reload();
- }
- },
- beforeedit : function(e) {
- console.log('beforeedit');
- //if (e.record.get('origtxt').indexOf('<') > -1) {
- // console.log("HTML EDITOR!!");
-
- // return false;
- //}
- if (e.record.get('txt').replace(/\s+/, '').length) {
- return true;
- }
- if (e.record.get('suggest').length) {
- e.record.set('txt', e.record.get('suggest'));
- // _this.saveRec(e.record);
- return;
- }
-
-
-
-
- var tl = e.record.get('id').split('/')[0];
-
- tl = (tl == 'zh_HK') ? 'zh-TW' : tl;
- tl = tl.replace('_', '-');
- var rec = e.record;
-
-
-
- Pman.gtranslate(e.record.get('origtxt'), 'en', tl, function(result) {
- if (typeof(result) == 'object') { //error
- return;
- }
-
- if (_this.grid.activeEditor) {
- _this.grid.activeEditor.setValue(result);
- } else {
- rec.set('txt',result);
- //_this.saveRec(rec);
+ layout : {
+ xtype: 'BorderLayout',
+ xns: Roo,
+ items : [
+ {
+ xtype: 'GridPanel',
+ xns: Roo,
+ listeners : {
+ activate : function() {
+ _this.panel = this;
+ if (_this.grid) {
+ _this.grid.getDataSource().reload();
+ }
+ }
+ },
+ background : true,
+ fitContainer : true,
+ fitToframe : true,
+ region : 'center',
+ title : "Text in interface",
+ grid : {
+ xtype: 'EditorGrid',
+ xns: Roo.grid,
+ listeners : {
+ render : function() {
+ _this.grid = this;
+ //_this.dialog = Pman.Dialog.FILL_IN
+ if (_this.panel.active) {
+ _this.grid.getDataSource().reload();
+ }
+ },
+ beforeedit : function(e) {
+ console.log('beforeedit');
+ //if (e.record.get('origtxt').indexOf('<') > -1) {
+ // console.log("HTML EDITOR!!");
+
+ // return false;
+ //}
+ if (e.record.get('txt').replace(/\s+/, '').length) {
+ return true;
+ }
+ if (e.record.get('suggest').length) {
+ e.record.set('txt', e.record.get('suggest'));
+ // _this.saveRec(e.record);
+ return;
+ }
+
+
+
+
+ var tl = e.record.get('id').split('/')[0];
+
+ tl = (tl == 'zh_HK') ? 'zh-TW' : tl;
+ tl = tl.replace('_', '-');
+ var rec = e.record;
+
+
+
+ Pman.gtranslate(e.record.get('origtxt'), 'en', tl, function(result) {
+ if (typeof(result) == 'object') { //error
+ return;
+ }
+
+ if (_this.grid.activeEditor) {
+ _this.grid.activeEditor.setValue(result);
+ } else {
+ rec.set('txt',result);
+ //_this.saveRec(rec);
+ }
+
+ //
+
+
+ //console.log(result.translation);
+ });
+
+
+
+ return true;
+ },
+ afteredit : function (e)
+ {
+ var saveRec = function(rec)
+ {
+ var g = _this.grid;
+
+ //g.getView().el.mask('Saving');
+ Ext.Ajax.request({
+ url : baseURL + '/Admin/Translations.php',
+ method: 'POST',
+ params : {
+ id : rec.get('id'),
+ txt : rec.get('txt'),
+ lang : _this.langCombo.getValue(),
+ module : _this.modCombo.getValue()
+ },
+ success : function()
+ {
+ //g.getView().el.unmask();
+ //g.getDataSource().reload();
+ },
+ failure : function()
+ {
+ Ext.Msg.alert("Error", "There was a problem saving the data - try reloading");
+ // g.getView().el.unmask();
}
-
- //
-
- //console.log(result.translation);
- });
-
-
-
- return true;
+ });
+ };
+
+ saveRec.defer(1000, _this, [ e.record ]);
+ }
+ },
+ autoExpandColumn : 'txt',
+ clicksToEdit : 1,
+ loadMask : true,
+ dataSource : {
+ xtype: 'Store',
+ xns: Roo.data,
+ reader : Pman.Readers.Category,
+ 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()
+ };
+ }
+ },
+ proxy : {
+ xtype: 'HttpProxy',
+ xns: Roo.data,
+ method : 'GET',
+ url : baseURL + '/Admin/Translations.php'
+ },
+ reader : {
+ xtype: 'JsonReader',
+ xns: Roo.data,
+ root : 'data',
+ totalProperty : 'total',
+ id : 'id',
+ 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' ]
+ }
+ },
+ toolbar : {
+ xtype: 'Toolbar',
+ xns: Roo,
+ items : [
+ {
+ xtype: 'ComboBox',
+ xns: Roo.form,
+ listeners : {
+ render : function (_self)
+ {
+ _this.modCombo = _self;
+ },
+ select : function (combo, record, index)
+ {
+ _this.grid.getDataSource().reload();
+ }
+ },
+ valueField : 'module',
+ displayField : 'module',
+ width : 200,
+ typeAhead : false,
+ editable : false,
+ mode : 'local',
+ triggerAction : 'all',
+ emptyText : "Select Module",
+ selectOnFocus : true,
+ store : {
+ xtype: 'SimpleStore',
+ 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']
+ }
},
- afteredit : function (e)
- {
- var saveRec = function(rec)
- {
- var g = _this.grid;
-
- //g.getView().el.mask('Saving');
- Ext.Ajax.request({
- url : baseURL + '/Admin/Translations.php',
- method: 'POST',
- params : {
- id : rec.get('id'),
- txt : rec.get('txt'),
- lang : _this.langCombo.getValue(),
- module : _this.modCombo.getValue()
+ {
+ xtype: 'ComboBox',
+ xns: Roo.form,
+ listeners : {
+ select : function (combo, record, index)
+ {
+ _this.grid.getDataSource().reload();
+ },
+ render : function (_self)
+ {
+ _this.langCombo=_self;
+ }
+ },
+ valueField : 'lang',
+ displayField : 'ldisp',
+ width : 200,
+ typeAhead : false,
+ editable : false,
+ mode : 'local',
+ triggerAction : 'all',
+ emptyText : "Select Language",
+ selectOnFocus : true,
+ store : {
+ xtype: 'SimpleStore',
+ xns: Roo.data,
+ fields : ['lang', 'ldisp'],
+ data : [ [ 'zh_HK' , '\u7E41\u4E2D - Trad. Chin. (HK)' ], [ 'zh_CN', '\u7C21\u4E2D - Simp. Chin.' ] ]
+ }
+ }
+ ]
+ },
+ colModel : [
+ {
+ xtype: 'ColumnModel',
+ xns: Roo.grid,
+ header : 'Name',
+ width : 150,
+ dataIndex : 'colname',
+ 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>'; }
},
- success : function()
{
- //g.getView().el.unmask();
- //g.getDataSource().reload();
+ xtype: 'ColumnModel',
+ xns: Roo.grid,
+ header : 'Original',
+ width : 300,
+ dataIndex : 'origtxt',
+ 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>'; }
},
- failure : function()
{
- Ext.Msg.alert("Error", "There was a problem saving the data - try reloading");
- // g.getView().el.unmask();
+ xtype: 'ColumnModel',
+ xns: Roo.grid,
+ dataIndex : 'txt',
+ header : 'Translated (Click to Edit)',
+ width : 150,
+ 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>'; },
+ editor : {
+ xtype: 'GridEditor',
+ xns: Roo.grid,
+ field : {
+ xtype: 'TextField',
+ xns: Roo.form
+ }
+ }
}
-
- });
- };
-
- saveRec.defer(1000, _this, [ e.record ]);
- }
- },
- clicksToEdit : 1,
- dataSource : {
- xtype: 'Store',
- xns: Roo.data,
- reader : Pman.Readers.Category,
- 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()
- };
+ ]
}
},
- proxy : {
- xtype: 'HttpProxy',
- xns: Roo.data,
- method : 'GET',
- url : baseURL + '/Admin/Translations.php'
- },
- reader : {
- xtype: 'JsonReader',
- xns: Roo.data,
- root : 'data',
- totalProperty : 'total',
- id : 'id',
- 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' ]
- }
- },
- toolbar : {
- xtype: 'Toolbar',
- xns: Roo,
- items : [
- {
- xtype: 'ComboBox',
- xns: Roo.form,
+ {
+ xtype: 'GridPanel',
+ xns: Roo,
+ listeners : {
+ activate : function() {
+ _this.langpanel = this;
+ if (_this.langgrid) {
+ _this.langgrid.ds.load({});
+ }
+ }
+ },
+ background : true,
+ fitContainer : true,
+ fitToframe : true,
+ region : 'center',
+ tableName : 'i18n',
+ title : "Languages and Countries",
+ grid : {
+ xtype: 'EditorGrid',
+ xns: Roo.grid,
listeners : {
- render : function (_self)
+ render : function()
{
- _this.modCombo = _self;
+ _this.langgrid = this;
+ //_this.dialog = Pman.Dialog.FILL_IN
+ if (_this.langpanel.active) {
+ this.ds.load({});
+ }
},
- select : function (combo, record, index)
+ afteredit : function (e)
{
- _this.grid.getDataSource().reload();
- }
+ var saveRec = function(rec)
+ {
+ var g = _this.grid;
+
+ //g.getView().el.mask('Saving');
+ Ext.Ajax.request({
+ url : baseURL + '/Roo/I18n.php',
+ method: 'POST',
+ params : {
+ id : rec.get('id'),
+ lval : rec.get('lval')
+ },
+ success : function()
+ {
+ //g.getView().el.unmask();
+ //g.getDataSource().reload();
+ },
+ failure : function()
+ {
+ Ext.Msg.alert("Error", "There was a problem saving the data - try reloading");
+ // g.getView().el.unmask();
+ }
+
+ });
+ };
+
+ saveRec.defer(1000, _this, [ e.record ]);
+ },
+ beforeedit : function(e) {
+ console.log('beforeedit');
+ //if (e.record.get('origtxt').indexOf('<') > -1) {
+ // console.log("HTML EDITOR!!");
+
+ // return false;
+ //}
+ if (e.record.get('lval').replace(/\s+/, '').length) {
+ return true;
+ }
+
+
+ var tl = _this.langgridCombo.getValue();
+
+ tl = (tl == 'zh_HK') ? 'zh-TW' : tl;
+ tl = tl.replace('_', '-');
+ var rec = e.record;
+
+
+
+ Pman.gtranslate(e.record.get('lval_en'), 'en', tl, function(result) {
+ if (typeof(result) == 'object') { //error
+ return;
+ }
+
+ if (_this.grid.activeEditor) {
+ _this.grid.activeEditor.setValue(result);
+ } else {
+ rec.set('lval',result);
+ //_this.saveRec(rec);
+ }
+
+ //
+
+
+ //console.log(result.translation);
+ });
+
+
+
+ return true;
+ }
},
- valueField : 'module',
- displayField : 'module',
- width : 200,
- typeAhead : false,
- editable : false,
- mode : 'local',
- triggerAction : 'all',
- emptyText : "Select Module",
- selectOnFocus : true,
- store : {
- xtype: 'SimpleStore',
+ autoExpandColumn : 'lval',
+ clicksToEdit : 1,
+ loadMask : true,
+ dataSource : {
+ xtype: 'Store',
xns: Roo.data,
- fields : ['module'],
- data : (function() { var modlist = []; Roo.each( AppModules.split(','), function(mod) {
- modlist.push( [ mod ] ); }); return modlist; })()
- }
- },
- {
- xtype: 'ComboBox',
- xns: Roo.form,
- listeners : {
- select : function (combo, record, index)
+ 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;
+
+ }
+ },
+ remoteSort : true,
+ sortInfo : { field : 'lkey', direction: 'ASC' },
+ proxy : {
+ xtype: 'HttpProxy',
+ xns: Roo.data,
+ method : 'GET',
+ url : baseURL + '/Roo/i18n.php'
+ },
+ reader : {
+ xtype: 'JsonReader',
+ xns: Roo.data,
+ totalProperty : 'total',
+ root : 'data',
+ id : 'id',
+ fields : [
+ {
+ 'name': 'id',
+ 'type': 'int'
+ },
+ {
+ 'name': 'ltype',
+ 'type': 'string'
+ },
+ {
+ 'name': 'lkey',
+ 'type': 'string'
+ },
+ {
+ 'name': 'inlang',
+ 'type': 'string'
+ },
+ {
+ 'name': 'lval',
+ 'type': 'string'
+ }
+ ]
+ }
+ },
+ toolbar : {
+ xtype: 'Toolbar',
+ xns: Roo,
+ items : [
+ {
+ xtype: 'ComboBox',
+ xns: Roo.form,
+ listeners : {
+ render : function (_self)
+ {
+ _this.langtypeCombo = _self;
+ },
+ select : function (combo, record, index)
+ {
+ _this.langgrid.getDataSource().reload();
+ }
+ },
+ displayField : 'lval',
+ editable : false,
+ emptyText : "Select Translation of",
+ mode : 'local',
+ selectOnFocus : true,
+ triggerAction : 'all',
+ typeAhead : false,
+ valueField : 'lkey',
+ width : 200,
+ store : {
+ xtype: 'SimpleStore',
+ xns: Roo.data,
+ data : [
+ [ 'l', 'Language Names' ],
+ [ 'c', 'Country Names' ],
+ [ 'm', 'Currency Names' ]
+ ],
+ fields : ['lkey','lval']
+ }
+ },
+ {
+ xtype: 'ComboBox',
+ xns: Roo.form,
+ listeners : {
+ select : function (combo, record, index)
+ {
+ _this.langgrid.getDataSource().reload();
+ },
+ render : function (_self)
+ {
+ _this.langgridCombo=_self;
+ }
+ },
+ displayField : 'ldisp',
+ editable : false,
+ emptyText : "Select Language",
+ mode : 'local',
+ selectOnFocus : true,
+ triggerAction : 'all',
+ typeAhead : false,
+ valueField : 'lang',
+ width : 200,
+ store : {
+ xtype: 'SimpleStore',
+ xns: Roo.data,
+ fields : ['lang', 'ldisp'],
+ data : [ [ 'zh_HK' , '\u7E41\u4E2D - Trad. Chin. (HK)' ], [ 'zh_CN', '\u7C21\u4E2D - Simp. Chin.' ] ]
+ }
+ }
+ ]
+ },
+ colModel : [
+ {
+ xtype: 'ColumnModel',
+ xns: Roo.grid,
+ dataIndex : 'lkey',
+ header : 'Code',
+ width : 50,
+ renderer : function(v) { return String.format('{0}', v); }
+ },
{
- _this.grid.getDataSource().reload();
+ xtype: 'ColumnModel',
+ xns: Roo.grid,
+ dataIndex : 'lval_en',
+ header : 'English',
+ width : 150,
+ renderer : function(v) { return String.format('{0}', v); }
},
- render : function (_self)
{
- _this.langCombo=_self;
+ xtype: 'ColumnModel',
+ xns: Roo.grid,
+ dataIndex : 'lval',
+ header : 'Translation',
+ width : 200,
+ renderer : function(v) { return String.format('{0}', v); },
+ editor : {
+ xtype: 'GridEditor',
+ xns: Roo.grid,
+ field : {
+ xtype: 'TextField',
+ xns: Roo.form
+ }
+ }
}
- },
- valueField : 'lang',
- displayField : 'ldisp',
- width : 200,
- typeAhead : false,
- editable : false,
- mode : 'local',
- triggerAction : 'all',
- emptyText : "Select Language",
- selectOnFocus : true,
- store : {
- xtype: 'SimpleStore',
- xns: Roo.data,
- fields : ['lang', 'ldisp'],
- data : [ [ 'zh_HK' , '\u7E41\u4E2D - Trad. Chin. (HK)' ], [ 'zh_CN', '\u7C21\u4E2D - Simp. Chin.' ] ]
- }
- }
- ]
- },
- colModel : [
- {
- xtype: 'ColumnModel',
- xns: Roo.grid,
- header : 'Name',
- width : 150,
- dataIndex : 'colname',
- 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>'; }
- },
- {
- xtype: 'ColumnModel',
- xns: Roo.grid,
- header : 'Original',
- width : 300,
- dataIndex : 'origtxt',
- 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>'; }
- },
- {
- xtype: 'ColumnModel',
- xns: Roo.grid,
- header : 'Translated (Click to Edit)',
- width : 150,
- dataIndex : 'txt',
- 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>'; },
- editor : {
- xtype: 'GridEditor',
- xns: Roo.grid,
- field : {
- xtype: 'TextField',
- xns: Roo.form
- }
+ ]
}
}
- ]
+ ],
+ center : {
+ xtype: 'LayoutRegion',
+ xns: Roo,
+ alwaysShowTabs : true,
+ tabPosition : 'top'
+ }
}
});
this.layout = this.panel.layout;