Pman.Tab.CmsTranslateTemplates.bjs
[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/edward/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   "e2f9d206562d8f5ea421ad51100f7151" : "Displaying petition_entry{0} - {1} of {2}",
14   "dc00a593c8be0a664ba934335b093154" : "Translate Templates",
15   "cd6ae20e52d83f601c5fa12b66f0f6d0" : "Rescan",
16   "4d1c8263ba1036754f8db14a98f9f006" : "Reload",
17   "f2a6c498fb90ee345d997f888fce3b18" : "Delete",
18   "03c2e7e41ffc181a4e84080b4710e81e" : "New",
19   "193cfc9be3b995831c6af2fea6650e60" : "Page"
20  },
21  "items" : [
22   {
23    "region" : "center",
24    "xtype" : "NestedLayoutPanel",
25    "title" : "Translate Templates",
26    "$ xns" : "Roo",
27    "items" : [
28     {
29      "xtype" : "BorderLayout",
30      "$ xns" : "Roo",
31      "* prop" : "layout",
32      "items" : [
33       {
34        "xtype" : "LayoutRegion",
35        "width" : 300,
36        "$ xns" : "Roo",
37        "split" : true,
38        "* prop" : "west"
39       },
40       {
41        "xtype" : "LayoutRegion",
42        "$ xns" : "Roo",
43        "* prop" : "center"
44       },
45       {
46        "listeners" : {
47         "render" : "function (_self)\n{\n    _this.treepanel = _self;\n}"
48        },
49        "region" : "west",
50        "xtype" : "TreePanel",
51        "$ xns" : "Roo",
52        "items" : [
53         {
54          "xtype" : "Toolbar",
55          "$ xns" : "Roo",
56          "* prop" : "toolbar",
57          "items" : [
58           {
59            "listeners" : {
60             "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}"
61            },
62            "text" : "New",
63            "xtype" : "Button",
64            "$ xns" : "Roo.Toolbar"
65           },
66           {
67            "xtype" : "Separator",
68            "$ xns" : "Roo.Toolbar"
69           },
70           {
71            "listeners" : {
72             "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}"
73            },
74            "text" : "Delete",
75            "xtype" : "Button",
76            "$ xns" : "Roo.Toolbar"
77           },
78           {
79            "xtype" : "Separator",
80            "$ xns" : "Roo.Toolbar"
81           },
82           {
83            "listeners" : {
84             "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}"
85            },
86            "text" : "Rescan",
87            "xtype" : "Button",
88            "$ xns" : "Roo.Toolbar"
89           },
90           {
91            "xtype" : "Fill",
92            "$ xns" : "Roo.Toolbar"
93           },
94           {
95            "listeners" : {
96             "click" : "function (_self, e)\n{\n    _this.treepanel.tree.getRootNode().reload();\n    \n}"
97            },
98            "text" : "Reload",
99            "xtype" : "Button",
100            "$ xns" : "Roo.Toolbar"
101           }
102          ]
103         },
104         {
105          "xtype" : "TreePanel",
106          "rootVisible" : true,
107          "$ xns" : "Roo.tree",
108          "containerScroll" : false,
109          "* prop" : "tree",
110          "items" : [
111           {
112            "listeners" : {
113             "loadexception" : "function (This, node, response)\n{\n    Roo.MessageBox.alert(\"Error\", \"Problem loading tree\");\n}",
114             "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}"
115            },
116            "$ baseParams" : "{ _tree : 1 }",
117            "xtype" : "TreeLoader",
118            "requestMethod" : "GET",
119            "$ xns" : "Roo.tree",
120            "* prop" : "loader",
121            "$ dataUrl" : "baseURL + '/Roo/cms_templatestr'"
122           },
123           {
124            "id" : "transtree",
125            "text" : "Translations",
126            "xtype" : "AsyncTreeNode",
127            "$ xns" : "Roo.tree",
128            "* prop" : "root"
129           },
130           {
131            "listeners" : {
132             "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}"
133            },
134            "xtype" : "DefaultSelectionModel",
135            "$ xns" : "Roo.tree",
136            "* prop" : "selModel"
137           }
138          ]
139         }
140        ]
141       },
142       {
143        "listeners" : {
144         "|activate" : "function() {\n    _this.panel = this;\n    if (_this.grid) {\n        _this.grid.footer.onClick('first');\n    }\n}"
145        },
146        "background" : false,
147        "region" : "center",
148        "fitToframe" : true,
149        "title" : "Page",
150        "xtype" : "GridPanel",
151        "fitContainer" : true,
152        "$ xns" : "Roo",
153        "tableName" : "Page",
154        "items" : [
155         {
156          "listeners" : {
157           "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}",
158           "|rowdblclick" : "function (_self, rowIndex, e)\n{\n    if (!_this.dialog) return;\n    _this.dialog.show( this.getDataSource().getAt(rowIndex).data, function() {\n        _this.grid.footer.onClick('first');\n    }); \n}\n",
159           "|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}",
160           "afteredit" : "function (e)\n{\n    e.record.commit();\n}"
161          },
162          "autoExpandColumn" : "txt",
163          "xtype" : "EditorGrid",
164          "loadMask" : true,
165          "clicksToEdit" : 1,
166          "$ xns" : "Roo.grid",
167          "* prop" : "grid",
168          "items" : [
169           {
170            "pageSize" : 100,
171            "xtype" : "PagingToolbar",
172            "emptyMsg" : "Not Found",
173            "$ xns" : "Roo",
174            "displayMsg" : "Displaying petition_entry{0} - {1} of {2}",
175            "displayInfo" : true,
176            "* prop" : "footer"
177           },
178           {
179            "listeners" : {
180             "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}",
181             "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    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(sn.attributes.on_table){\n        o.params.on_table = sn.attributes.on_table;\n    }\n    \n}"
182            },
183            "xtype" : "Store",
184            "remoteSort" : true,
185            "$ sortInfo" : "{ field : 'src_id_txt', direction: 'ASC' }",
186            "$ xns" : "Roo.data",
187            "* prop" : "dataSource",
188            "items" : [
189             {
190              "$ url" : "baseURL + '/Roo/cms_templatestr.php'",
191              "xtype" : "HttpProxy",
192              "method" : "GET",
193              "$ xns" : "Roo.data",
194              "* prop" : "proxy"
195             },
196             {
197              "id" : "id",
198              "root" : "data",
199              "xtype" : "JsonReader",
200              "$ fields" : "[\n    {\n        'name': 'id',\n        'type': 'int'\n    },\n    {\n        'name': 'shortname',\n        'type': 'string'\n    },\n   \n]",
201              "$ xns" : "Roo.data",
202              "* prop" : "reader",
203              "totalProperty" : "total"
204             }
205            ]
206           },
207           {
208            "xtype" : "ColumnModel",
209            "width" : 200,
210            "header" : "Original",
211            "$ 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}",
212            "$ xns" : "Roo.grid",
213            "* prop" : "cm[]",
214            "dataIndex" : "src_id_txt"
215           },
216           {
217            "xtype" : "ColumnModel",
218            "width" : 200,
219            "header" : "Translation",
220            "$ 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}",
221            "$ xns" : "Roo.grid",
222            "* prop" : "cm[]",
223            "dataIndex" : "txt",
224            "items" : [
225             {
226              "xtype" : "GridEditor",
227              "$ xns" : "Roo.grid",
228              "* prop" : "editor",
229              "items" : [
230               {
231                "xtype" : "TextField",
232                "allowBlank" : false,
233                "$ xns" : "Roo.form",
234                "* prop" : "field"
235               }
236              ]
237             }
238            ]
239           },
240           {
241            "xtype" : "ColumnModel",
242            "width" : 200,
243            "header" : "Original",
244            "$ 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}",
245            "$ xns" : "Roo.grid",
246            "* prop" : "cm[]",
247            "dataIndex" : "src_id_txt"
248           }
249          ]
250         }
251        ]
252       }
253      ]
254     }
255    ]
256   }
257  ]
258 }