]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | Ext.require([\r |
2 | 'Ext.data.*',\r | |
3 | 'Ext.tip.QuickTipManager',\r | |
4 | 'Ext.form.*',\r | |
5 | 'Ext.grid.Panel'\r | |
6 | ]);\r | |
7 | \r | |
8 | Ext.onReady(function(){\r | |
9 | MultiLangDemo = (function() {\r | |
10 | // get the selected language code parameter from url (if exists)\r | |
11 | var params = Ext.urlDecode(window.location.search.substring(1));\r | |
12 | //Ext.form.Field.prototype.msgTarget = 'side';\r | |
13 | \r | |
14 | return {\r | |
15 | init: function() {\r | |
16 | Ext.tip.QuickTipManager.init();\r | |
17 | \r | |
18 | /* Language chooser combobox */\r | |
19 | var store = Ext.create('Ext.data.ArrayStore', {\r | |
20 | fields: ['code', 'language'],\r | |
21 | data : Ext.exampledata.languages // from languages.js\r | |
22 | });\r | |
23 | \r | |
24 | var combo = Ext.create('Ext.form.field.ComboBox', {\r | |
25 | renderTo: 'languages',\r | |
26 | store: store,\r | |
27 | displayField:'language',\r | |
28 | queryMode: 'local',\r | |
29 | emptyText: 'Select a language...',\r | |
30 | hideLabel: true,\r | |
31 | listeners: {\r | |
32 | select: function(cb, record) {\r | |
33 | var search = location.search,\r | |
34 | index = search.indexOf('&'),\r | |
35 | params = Ext.urlEncode({'lang': record.get('code')});\r | |
36 | \r | |
37 | location.search = (index === -1) ? params : params + search.substr(index);\r | |
38 | }\r | |
39 | }\r | |
40 | });\r | |
41 | \r | |
42 | var record, url;\r | |
43 | \r | |
44 | if (params.lang) {\r | |
45 | // check if there's really a language with that language code\r | |
46 | record = store.findRecord('code', params.lang, null, null, null, true);\r | |
47 | // if language was found in store assign it as current value in combobox\r | |
48 | if (record) {\r | |
49 | combo.setValue(record.data.language);\r | |
50 | }\r | |
51 | \r | |
52 | url = Ext.util.Format.format('../../../' + (Ext.devMode ? 'build/' : '') + 'classic/locale/locale-{0}.js', params.lang);\r | |
53 | \r | |
54 | Ext.Loader.loadScript({\r | |
55 | url: url,\r | |
56 | onLoad: this.onSuccess,\r | |
57 | onError: this.onFailure,\r | |
58 | scope: this\r | |
59 | }\r | |
60 | );\r | |
61 | } else {\r | |
62 | this.setupDemo();\r | |
63 | }\r | |
64 | },\r | |
65 | onSuccess: function() {\r | |
66 | var me = this;\r | |
67 | // Give the locale file onReady a chance to process\r | |
68 | setTimeout(function() {\r | |
69 | me.setupDemo();\r | |
70 | }, 1);\r | |
71 | },\r | |
72 | onFailure: function() {\r | |
73 | Ext.Msg.alert('Failure', 'Failed to load locale file.');\r | |
74 | this.setupDemo();\r | |
75 | },\r | |
76 | setupDemo: function() {\r | |
77 | // Grid needs to be this wide to handle the largest language case for the toolbar.\r | |
78 | // In this case, it's Russian.\r | |
79 | \r | |
80 | var width = 720;\r | |
81 | /* Email field */\r | |
82 | Ext.create('Ext.FormPanel', {\r | |
83 | renderTo: 'emailfield',\r | |
84 | labelWidth: 100, // label settings here cascade unless overridden\r | |
85 | frame: true,\r | |
86 | title: 'Email Field',\r | |
87 | bodyPadding: '5 5 0',\r | |
88 | width: width,\r | |
89 | defaults: {\r | |
90 | msgTarget: 'side',\r | |
91 | width: width - 40\r | |
92 | },\r | |
93 | defaultType: 'textfield',\r | |
94 | items: [{\r | |
95 | fieldLabel: 'Email',\r | |
96 | name: 'email',\r | |
97 | vtype: 'email'\r | |
98 | }]\r | |
99 | });\r | |
100 | \r | |
101 | /* Datepicker */\r | |
102 | Ext.create('Ext.FormPanel', {\r | |
103 | renderTo: 'datefield',\r | |
104 | labelWidth: 100, // label settings here cascade unless overridden\r | |
105 | frame: true,\r | |
106 | title: 'Datepicker',\r | |
107 | bodyPadding: '5 5 0',\r | |
108 | width: width,\r | |
109 | defaults: {\r | |
110 | msgTarget: 'side',\r | |
111 | width: width - 40\r | |
112 | },\r | |
113 | defaultType: 'datefield',\r | |
114 | items: [{\r | |
115 | fieldLabel: 'Date',\r | |
116 | name: 'date'\r | |
117 | }]\r | |
118 | });\r | |
119 | \r | |
120 | // shorthand alias \r | |
121 | var monthArray = Ext.Array.map(Ext.Date.monthNames, function (e) { return [e]; });\r | |
122 | var ds = Ext.create('Ext.data.Store', {\r | |
123 | fields: ['month'],\r | |
124 | remoteSort: true,\r | |
125 | pageSize: 6,\r | |
126 | proxy: {\r | |
127 | type: 'memory',\r | |
128 | enablePaging: true,\r | |
129 | data: monthArray,\r | |
130 | reader: {\r | |
131 | type: 'array'\r | |
132 | }\r | |
133 | }\r | |
134 | });\r | |
135 | \r | |
136 | Ext.create('Ext.grid.Panel', {\r | |
137 | renderTo: 'grid',\r | |
138 | width: width,\r | |
139 | height: 330,\r | |
140 | title:'Month Browser',\r | |
141 | columns:[{\r | |
142 | text: 'Month of the year',\r | |
143 | dataIndex: 'month',\r | |
144 | width: 240\r | |
145 | }],\r | |
146 | store: ds,\r | |
147 | bbar: Ext.create('Ext.toolbar.Paging', {\r | |
148 | pageSize: 6,\r | |
149 | store: ds,\r | |
150 | displayInfo: true\r | |
151 | })\r | |
152 | });\r | |
153 | \r | |
154 | // trigger the data store load\r | |
155 | ds.load();\r | |
156 | }\r | |
157 | };\r | |
158 | \r | |
159 | })();\r | |
160 | MultiLangDemo.init();\r | |
161 | });\r |