Uncommited changes synced
[Pman.Cms] / Pman.Tab.CmsTranslateTemplates.bjs
1 {
2  "name" : "Pman.Tab.CmsTranslateTemplates",
3  "parent" : "Pman.Tab.Cms",
4  "title" : "Pman.Tab.CmsTranslateTemplates",
5  "path" : "/home/alan/gitlive/Pman.Cms/Pman.Tab.CmsTranslateTemplates.bjs",
6  "permname" : "",
7  "modOrder" : "800",
8  "strings" : {
9   "0a52da7a03a6de3beefe54f8c03ad80d" : "Original",
10   "0b8d92bc19b720bb1065649535463409" : "Translations",
11   "9d1ead73e678fa2f51a70a933b0bf017" : "Not Found",
12   "6dd08874f83507e9c7b23f1a46b7fa7c" : "Translation",
13   "e3d388b2c43e5ba0905702620ae2abc1" : "Search for",
14   "e2f9d206562d8f5ea421ad51100f7151" : "Displaying petition_entry{0} - {1} of {2}",
15   "dc00a593c8be0a664ba934335b093154" : "Translate Templates",
16   "cd6ae20e52d83f601c5fa12b66f0f6d0" : "Rescan",
17   "4d1c8263ba1036754f8db14a98f9f006" : "Reload",
18   "f2a6c498fb90ee345d997f888fce3b18" : "Delete",
19   "03c2e7e41ffc181a4e84080b4710e81e" : "New",
20   "193cfc9be3b995831c6af2fea6650e60" : "Page",
21   "1bc29b36f623ba82aaf6724fd3b16718" : "md5"
22  },
23  "items" : [
24   {
25    "region" : "center",
26    "xtype" : "NestedLayoutPanel",
27    "title" : "Translate Templates",
28    "$ xns" : "Roo",
29    "items" : [
30     {
31      "xtype" : "BorderLayout",
32      "$ xns" : "Roo",
33      "* prop" : "layout",
34      "items" : [
35       {
36        "xtype" : "LayoutRegion",
37        "width" : 300,
38        "$ xns" : "Roo",
39        "split" : true,
40        "* prop" : "west"
41       },
42       {
43        "xtype" : "LayoutRegion",
44        "$ xns" : "Roo",
45        "* prop" : "center"
46       },
47       {
48        "listeners" : {
49         "render" : "function (_self)\n{\n    _this.treepanel = _self;\n}"
50        },
51        "region" : "west",
52        "xtype" : "TreePanel",
53        "$ xns" : "Roo",
54        "items" : [
55         {
56          "xtype" : "Toolbar",
57          "$ xns" : "Roo",
58          "* prop" : "toolbar",
59          "items" : [
60           {
61            "listeners" : {
62             "click" : "function (_self, e)\n{\n    Pman.Dialog.CmsLanguagePick.show( {  }, function(lang) {\n        \n        new Pman.Request({\n            url : baseURL + '/Roo/cms_templatestr',\n            method : 'POST',\n            params : {\n                _rescan : lang\n            }, \n            success : function()\n            {\n                _this.treepanel.tree.getRootNode().reload();\n            }\n        });\n    \n    });\n    \n}"
63            },
64            "text" : "New",
65            "xtype" : "Button",
66            "$ xns" : "Roo.Toolbar"
67           },
68           {
69            "xtype" : "Separator",
70            "$ xns" : "Roo.Toolbar"
71           },
72           {
73            "listeners" : {
74             "click" : "function (_self, e)\n{\n    var tree = _this.treepanel.tree;\n    var sn  = tree.getSelectionModel().getSelectedNode();\n\n    if (!sn || typeof(sn.attributes.language) == 'undefined' || !sn.attributes.language) {\n        Roo.MessageBox.alert(\"Error\", \"Select a language\");\n        return;\n    }\n\n     Roo.MessageBox.confirm(\"Confirm\", \"Are sure you want to delete the language\", function (v){\n            if (v != 'yes') {\n                return;\n            }\n            Roo.MessageBox.alert(\"Not yet\", \"not done yet\");\n            return;\n            Roo.Ajax.request({\n                url : baseURL + '/Roo/cms_language.php',\n                method: 'POST',\n                params : {\n                    _delete : _t.selectedNode.id \n                },\n                success : function()\n                {\n                   _this.treepanel.tree.getRootNode().reload();\n                    //g.getDataSource().reload();\n                },\n                failure : function()\n                {\n                    Roo.MessageBox.alert(\"Error\", \n                        \"There was a problem saving the data - try reloading\");\n                    \n                }\n                \n            });\n            \n            \n            \n            \n        });\n}"
75            },
76            "text" : "Delete",
77            "xtype" : "Button",
78            "$ xns" : "Roo.Toolbar"
79           },
80           {
81            "xtype" : "Separator",
82            "$ xns" : "Roo.Toolbar"
83           },
84           {
85            "listeners" : {
86             "click" : "function (_self, e)\n{\n    var tree = _this.treepanel.tree;\n    Roo.log(tree);\n    var sn  = tree.getSelectionModel().getSelectedNode();\n\n    if (!sn) {\n        Roo.MessageBox.alert(\"Error\", \"Select a node\");\n        return;\n    }\n    \n    var syncTemplate = function(){\n        new Pman.Request({\n            url : baseURL + '/Cms/UpdateBjsTemplates',\n            method : 'GET',\n            mask : 'Processing...',\n            timeout : 9000000,\n            success : function()\n            {\n                _this.treepanel.tree.getRootNode().reload();\n            }\n        });\n    \n    };\n    \n    \n    var syncLanguage = function(){\n        new Pman.Request({\n            url : baseURL + '/Roo/cms_templatestr',\n            method : 'POST',\n            mask : 'Processing...',\n            params : {\n                _rescan : sn.attributes.id\n            }, \n            success : function()\n            {\n                _this.treepanel.tree.getRootNode().reload();\n            }\n        });\n    };\n    \n    if(typeof(sn.isRoot) != 'undefined' && sn.isRoot){\n        syncTemplate();\n        return;\n    }\n    \n    if(typeof(sn.attributes.language) != 'undefined' && sn.attributes.language){\n        syncLanguage();\n        return;\n    }\n    \n    \n    \n    \n    \n}"
87            },
88            "text" : "Rescan",
89            "xtype" : "Button",
90            "$ xns" : "Roo.Toolbar"
91           },
92           {
93            "xtype" : "Fill",
94            "$ xns" : "Roo.Toolbar"
95           },
96           {
97            "listeners" : {
98             "click" : "function (_self, e)\n{\n    _this.treepanel.tree.getRootNode().reload();\n    \n}"
99            },
100            "text" : "Reload",
101            "xtype" : "Button",
102            "$ xns" : "Roo.Toolbar"
103           }
104          ]
105         },
106         {
107          "xtype" : "TreePanel",
108          "rootVisible" : true,
109          "$ xns" : "Roo.tree",
110          "containerScroll" : false,
111          "* prop" : "tree",
112          "items" : [
113           {
114            "listeners" : {
115             "loadexception" : "function (This, node, response)\n{\n    Roo.MessageBox.alert(\"Error\", \"Problem loading tree\");\n}",
116             "beforeload" : "function (This, node, callback)\n{\n    // set some params.\n    Roo.log(node);\n    this.baseParams._tree = 1;\n    \n    //this.baseParams.category = node.attributes.category;\n}"
117            },
118            "$ baseParams" : "{ _tree : 1 }",
119            "xtype" : "TreeLoader",
120            "requestMethod" : "GET",
121            "$ xns" : "Roo.tree",
122            "* prop" : "loader",
123            "$ dataUrl" : "baseURL + '/Roo/cms_templatestr'"
124           },
125           {
126            "id" : "transtree",
127            "text" : "Translations",
128            "xtype" : "AsyncTreeNode",
129            "$ xns" : "Roo.tree",
130            "* prop" : "root"
131           },
132           {
133            "listeners" : {
134             "selectionchange" : "function (_self, node)\n{\n    Roo.log(node);\n    \n    //if (node.id.split('/').length < 2) {\n    //    return;\n   // }\n    (function() {\n        _this.grid.footer.onClick('first');\n    }).defer(100);\n    \n}"
135            },
136            "xtype" : "DefaultSelectionModel",
137            "$ xns" : "Roo.tree",
138            "* prop" : "selModel"
139           }
140          ]
141         }
142        ]
143       },
144       {
145        "listeners" : {
146         "|activate" : "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.footer.onClick('first');\n    }\n}"
147        },
148        "fitToframe" : true,
149        "background" : false,
150        "region" : "center",
151        "title" : "Page",
152        "xtype" : "GridPanel",
153        "fitContainer" : true,
154        "$ xns" : "Roo",
155        "tableName" : "Page",
156        "items" : [
157         {
158          "listeners" : {
159           "beforeedit" : "function (e)\n{   \n    /*if (e.record.data.src_id_txt.indexOf('<') > -1) {\n       // console.log(\"HTML EDITOR!!\");\n        Pman.Dialog.CmsTranslateEditor.show(e.record);\n        return false;\n    }*/\n    \n    var str=e.record.data.src_id_txt;\n    var patt=/{(.*?)}/g;\n    \n    Roo.log(str.length);\n    \n    \n    if(patt.test(str)){\n        e.cancel = true;\n        Pman.Dialog.CmsTranslateTemplates.show(e.record.data, function(v){\n            Roo.log(v);\n            e.value = v.txt;\n            e.record.set('txt', v.txt);\n            e.record.commit();\n        });\n        /*\n        Roo.MessageBox.prompt('WARNING', 'This text is with {TEMPLATE VARIABLE}, PLEASE BE CAREFUL EDITING. What\\'s change? '+str, function(btn, text){\n            if (btn == 'ok'){\n                e.value = text;\n                e.record.set('txt', text);\n                e.record.commit();\n            }\n        });*/\n        return;\n    }\n    \n    if(str.length > 150){\n        e.cancel = true;\n        Pman.Dialog.CmsTranslateTemplates.show(e.record.data, function(v){\n            e.value = v.txt;\n            e.record.set('txt', v.txt);\n            e.record.commit();\n        });\n        /*\n        Roo.MessageBox.prompt('WARNING', 'This text is with {TEMPLATE VARIABLE}, PLEASE BE CAREFUL EDITING. What\\'s change? '+str, function(btn, text){\n            if (btn == 'ok'){\n                e.value = text;\n                e.record.set('txt', text);\n                e.record.commit();\n            }\n        });*/\n        return;\n    }\n    \n\n    if (e.record.data.txt.replace(/\\s+/, '').length) {\n        return true;\n    }\n    \n    var tl = _this.treepanel.tree.getSelectionModel().getSelectedNode().parentNode.attributes.id;\n    // mapping?\n    \n    tl = (tl == 'zh_HK') ? 'zh-TW' : tl;\n    \n    if (tl == 'en' && !e.value.length) {\n\n        e.value = e.record.data.src_id_txt;\n        e.record.set('txt', e.record.data.src_id_txt);\n        return true;\n    }\n    \n    Pman.GoogleTranslate(e.record.data.src_id_txt, \"en\", tl, function(result) {\n       // Roo.log(result);\n        _this.grid.activeEditor.setValue(result);\n        //console.log(result.translation);\n    });\n    \n\n    \n    return true;\n}",
160           "|rowdblclick" : "function (_self, rowIndex, e)\n{\n    if (!_this.dialog) {\n        return;\n    }\n    _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {\n        _this.grid.footer.onClick('first');\n    }); \n}\n",
161           "|render" : "function() \n{\n    _this.grid = this; \n    //_this.dialog = Pman.Dialog.FILL_IN\n    if (_this.panel.active) {\n        this.footer.onClick('first');\n      // this.ds.onc.onClick('first');\n    }\n}",
162           "afteredit" : "function (e)\n{\n    e.record.commit();\n}"
163          },
164          "autoExpandColumn" : "txt",
165          "xtype" : "EditorGrid",
166          "loadMask" : true,
167          "clicksToEdit" : 1,
168          "$ xns" : "Roo.grid",
169          "* prop" : "grid",
170          "items" : [
171           {
172            "xtype" : "Toolbar",
173            "$ xns" : "Roo",
174            "* prop" : "toolbar",
175            "items" : [
176             {
177              "listeners" : {
178               "specialkey" : "function (_self, e)\n{\n_this.grid.footer.onClick('first');\n}",
179               "render" : "function (_self)\n{\n    _this.searchBox = this;\n}"
180              },
181              "xtype" : "TextField",
182              "String emptyText" : "Search for",
183              "$ xns" : "Roo.form"
184             },
185             {
186              "listeners" : {
187               "|click" : "function (_self, e)\n{\n_this.grid.footer.onClick('first');\n}"
188              },
189              "xtype" : "Button",
190              "cls" : "x-btn-icon",
191              "$ icon" : "rootURL + '/Pman/templates/images/search.gif'",
192              "$ xns" : "Roo.Toolbar"
193             },
194             {
195              "listeners" : {
196               "|click" : "function (_self, e)\n{\n    _this.searchBox.setValue('');\n    \n    _this.grid.footer.onClick('first');\n}"
197              },
198              "xtype" : "Button",
199              "cls" : "x-btn-icon",
200              "$ icon" : "rootURL + '/Pman/templates/images/edit-clear.gif'",
201              "$ xns" : "Roo.Toolbar"
202             }
203            ]
204           },
205           {
206            "pageSize" : 100,
207            "xtype" : "PagingToolbar",
208            "emptyMsg" : "Not Found",
209            "$ xns" : "Roo",
210            "displayMsg" : "Displaying petition_entry{0} - {1} of {2}",
211            "displayInfo" : true,
212            "* prop" : "footer"
213           },
214           {
215            "listeners" : {
216             "update" : "function (_self, rec, operation)\n{\n    Roo.log(operation);\n    \n    if (operation != 'commit') {\n        return;\n    }\n    \n\n    _this.grid.getView().el.mask(\"Saving\");\n    new Pman.Request({\n        url : baseURL + '/Roo/cms_templatestr',\n        method: 'POST',\n        params : {\n            id : rec.get('id'),\n            txt : rec.get('txt')\n        },\n        success : function()\n        {\n            _this.grid.getView().el.unmask();\n                //g.getDataSource().reload();\n        },\n        failure : function()\n        {\n            _this.grid.getView().el.unmask();\n            Roo.MessageBox.alert(\"Error\", \"There was a problem saving the data - try reloading\");\n         }\n            \n    });\n    \n}",
217             "beforeload" : "function (_self, o)\n{\n   \n    var sn = _this.treepanel.tree.getSelectionModel().getSelectedNode();\n\n    if (!sn || typeof(sn.attributes) == 'undefined' || typeof(sn.attributes.leaf) == 'undefined' || !sn.attributes.leaf) { \n        _this.grid.ds.removeAll();\n        return false;\n    }\n\n    o.params = o.params || {};\n    \n    //var pn = sn.parentNode.attributes.id.split(':')[1]; // should be view:en:{module}\n    \n    \n    o.params.lang = sn.parentNode.attributes.id;\n    o.params.template_id = sn.attributes.id * 1;\n    o.params.active = 1;\n    o.params['!src_id'] = 0;\n    \n    if (_this.searchBox && _this.searchBox.getValue().length) { \n        o.params['_search_txt'] = _this.searchBox.getValue();\n    }\n    \n    \n    if(sn.attributes.on_table){\n        o.params.on_table = sn.attributes.on_table;\n    }\n    \n}\n\n\n"
218            },
219            "xtype" : "Store",
220            "remoteSort" : true,
221            "$ sortInfo" : "{ field : 'src_id_txt', direction: 'ASC' }",
222            "$ xns" : "Roo.data",
223            "* prop" : "dataSource",
224            "items" : [
225             {
226              "$ url" : "baseURL + '/Roo/cms_templatestr.php'",
227              "xtype" : "HttpProxy",
228              "method" : "GET",
229              "$ xns" : "Roo.data",
230              "* prop" : "proxy"
231             },
232             {
233              "id" : "id",
234              "root" : "data",
235              "xtype" : "JsonReader",
236              "$ fields" : "[\n    {\n        'name': 'id',\n        'type': 'int'\n    },\n    {\n        'name': 'shortname',\n        'type': 'string'\n    }\n   \n]",
237              "$ xns" : "Roo.data",
238              "* prop" : "reader",
239              "totalProperty" : "total"
240             }
241            ]
242           },
243           {
244            "xtype" : "ColumnModel",
245            "width" : 200,
246            "header" : "Original",
247            "$ renderer" : "function(v,x,r) \n{\n    var c = '#666';\n    if (r.data.updated  < r.data.src_id_updated) {\n        c = 'red';\n    }\n    \n    return String.format('<div style=\"color:'+c+'\";>{0}</div>', v)\n\n}",
248            "$ xns" : "Roo.grid",
249            "* prop" : "cm[]",
250            "dataIndex" : "src_id_txt"
251           },
252           {
253            "xtype" : "ColumnModel",
254            "width" : 200,
255            "header" : "Translation",
256            "$ renderer" : "function(v,x,r) \n{ \n\n    var c = '#666';\n    if (r.data.updated  < r.data.src_id_updated) {\n        c = 'red';\n    }\n    \n    return String.format('<div style=\"color:'+c+'\";>{0}</div>', v)\n\n}",
257            "$ xns" : "Roo.grid",
258            "* prop" : "cm[]",
259            "dataIndex" : "txt",
260            "items" : [
261             {
262              "xtype" : "GridEditor",
263              "$ xns" : "Roo.grid",
264              "* prop" : "editor",
265              "items" : [
266               {
267                "xtype" : "TextField",
268                "allowBlank" : false,
269                "$ xns" : "Roo.form",
270                "* prop" : "field"
271               }
272              ]
273             }
274            ]
275           },
276           {
277            "xtype" : "ColumnModel",
278            "width" : 250,
279            "header" : "md5",
280            "$ renderer" : "function(v,x,r) \n{\n    return v ? v : '';\n\n}",
281            "$ xns" : "Roo.grid",
282            "* prop" : "cm[]",
283            "Boolean hidden" : true,
284            "dataIndex" : "src_id_mdsum"
285           }
286          ]
287         }
288        ]
289       }
290      ]
291     }
292    ]
293   }
294  ]
295 }