knitkit 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. data/GPL-3-LICENSE +674 -0
  2. data/README.md +6 -0
  3. data/Rakefile +30 -0
  4. data/app/assets/javascripts/knitkit/application.js +9 -0
  5. data/app/assets/stylesheets/knitkit/application.css +7 -0
  6. data/app/controllers/knitkit/articles_controller.rb +7 -0
  7. data/app/controllers/knitkit/base_controller.rb +45 -0
  8. data/app/controllers/knitkit/blogs_controller.rb +27 -0
  9. data/app/controllers/knitkit/comments_controller.rb +18 -0
  10. data/app/controllers/knitkit/erp_app/desktop/app_controller.rb +135 -0
  11. data/app/controllers/knitkit/erp_app/desktop/articles_controller.rb +144 -0
  12. data/app/controllers/knitkit/erp_app/desktop/comments_controller.rb +43 -0
  13. data/app/controllers/knitkit/erp_app/desktop/content_controller.rb +27 -0
  14. data/app/controllers/knitkit/erp_app/desktop/file_assets_controller.rb +145 -0
  15. data/app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb +28 -0
  16. data/app/controllers/knitkit/erp_app/desktop/inquiries_controller.rb +68 -0
  17. data/app/controllers/knitkit/erp_app/desktop/position_controller.rb +20 -0
  18. data/app/controllers/knitkit/erp_app/desktop/theme_controller.rb +272 -0
  19. data/app/controllers/knitkit/erp_app/desktop/versions_controller.rb +135 -0
  20. data/app/controllers/knitkit/erp_app/desktop/website_controller.rb +177 -0
  21. data/app/controllers/knitkit/erp_app/desktop/website_nav_controller.rb +143 -0
  22. data/app/controllers/knitkit/erp_app/desktop/website_section_controller.rb +116 -0
  23. data/app/controllers/knitkit/unauthorized_controller.rb +8 -0
  24. data/app/controllers/knitkit/website_sections_controller.rb +17 -0
  25. data/app/helpers/application_helper.rb +132 -0
  26. data/app/models/article.rb +14 -0
  27. data/app/models/blog.rb +21 -0
  28. data/app/models/comment.rb +24 -0
  29. data/app/models/content.rb +158 -0
  30. data/app/models/extensions/user.rb +5 -0
  31. data/app/models/published_element.rb +9 -0
  32. data/app/models/published_website.rb +118 -0
  33. data/app/models/theme.rb +239 -0
  34. data/app/models/website.rb +457 -0
  35. data/app/models/website_host.rb +3 -0
  36. data/app/models/website_inquiry.rb +11 -0
  37. data/app/models/website_inquiry_mailer.rb +12 -0
  38. data/app/models/website_nav.rb +17 -0
  39. data/app/models/website_nav_item.rb +21 -0
  40. data/app/models/website_section.rb +152 -0
  41. data/app/models/website_section_content.rb +4 -0
  42. data/app/views/knitkit/articles/index.html.erb +3 -0
  43. data/app/views/knitkit/articles/show.html.erb +4 -0
  44. data/app/views/knitkit/blogs/_add_comment.html.erb +28 -0
  45. data/app/views/knitkit/blogs/_comment.html.erb +8 -0
  46. data/app/views/knitkit/blogs/index.html.erb +51 -0
  47. data/app/views/knitkit/blogs/index.rss.builder +23 -0
  48. data/app/views/knitkit/blogs/show.html.erb +22 -0
  49. data/app/views/knitkit/unauthorized/index.html.erb +4 -0
  50. data/app/views/knitkit/website_sections/index.html.erb +6 -0
  51. data/app/views/layouts/knitkit/base.html.erb +59 -0
  52. data/app/views/menus/knitkit/_default_menu.html.erb +23 -0
  53. data/app/views/menus/knitkit/_default_section_menu.html.erb +27 -0
  54. data/app/views/menus/knitkit/_default_sub_menu.html.erb +45 -0
  55. data/app/views/menus/knitkit/_default_sub_section_menu.html.erb +49 -0
  56. data/app/views/shared/knitkit/_bread_crumb.html.erb +7 -0
  57. data/app/views/shared/knitkit/_footer.html.erb +3 -0
  58. data/app/views/website_inquiry_mailer/inquiry.erb +3 -0
  59. data/app/widgets/contact_us/base.rb +86 -0
  60. data/app/widgets/contact_us/javascript/contact_us.js +13 -0
  61. data/app/widgets/contact_us/views/_contact_form.html.erb +36 -0
  62. data/app/widgets/contact_us/views/error.html.erb +10 -0
  63. data/app/widgets/contact_us/views/index.html.erb +1 -0
  64. data/app/widgets/contact_us/views/layouts/base.html.erb +7 -0
  65. data/app/widgets/contact_us/views/success.html.erb +4 -0
  66. data/app/widgets/google_map/base.rb +48 -0
  67. data/app/widgets/google_map/javascript/google_map.js +174 -0
  68. data/app/widgets/google_map/views/index.html.erb +41 -0
  69. data/app/widgets/login/base.rb +61 -0
  70. data/app/widgets/login/javascript/login.js +162 -0
  71. data/app/widgets/login/views/index.html.erb +37 -0
  72. data/app/widgets/login/views/layouts/base.html.erb +14 -0
  73. data/app/widgets/login/views/login_header.html.erb +9 -0
  74. data/app/widgets/login/views/reset_password.html.erb +26 -0
  75. data/app/widgets/manage_profile/base.rb +327 -0
  76. data/app/widgets/manage_profile/javascript/manage_profile.js +11 -0
  77. data/app/widgets/manage_profile/views/_contact_information_form.html.erb +180 -0
  78. data/app/widgets/manage_profile/views/_password_form.html.erb +20 -0
  79. data/app/widgets/manage_profile/views/_user_information_form.html.erb +30 -0
  80. data/app/widgets/manage_profile/views/contact_type_in_use.html.erb +4 -0
  81. data/app/widgets/manage_profile/views/default_type_error.html.erb +5 -0
  82. data/app/widgets/manage_profile/views/error.html.erb +3 -0
  83. data/app/widgets/manage_profile/views/index.html.erb +46 -0
  84. data/app/widgets/manage_profile/views/layouts/base.html.erb +1 -0
  85. data/app/widgets/manage_profile/views/password_blank.html.erb +4 -0
  86. data/app/widgets/manage_profile/views/password_invalid.html.erb +4 -0
  87. data/app/widgets/manage_profile/views/password_success.html.erb +3 -0
  88. data/app/widgets/manage_profile/views/success.html.erb +3 -0
  89. data/app/widgets/reset_password/base.rb +42 -0
  90. data/app/widgets/reset_password/javascript/reset_password.js +13 -0
  91. data/app/widgets/reset_password/views/index.html.erb +31 -0
  92. data/app/widgets/reset_password/views/layouts/base.html.erb +1 -0
  93. data/app/widgets/search/base.rb +80 -0
  94. data/app/widgets/search/javascript/search.js +31 -0
  95. data/app/widgets/search/views/_search.html.erb +39 -0
  96. data/app/widgets/search/views/index.html.erb +3 -0
  97. data/app/widgets/search/views/layouts/base.html.erb +24 -0
  98. data/app/widgets/search/views/show.html.erb +48 -0
  99. data/app/widgets/signup/base.rb +72 -0
  100. data/app/widgets/signup/javascript/signup.js +13 -0
  101. data/app/widgets/signup/views/_signup_form.html.erb +36 -0
  102. data/app/widgets/signup/views/error.html.erb +11 -0
  103. data/app/widgets/signup/views/index.html.erb +1 -0
  104. data/app/widgets/signup/views/layouts/base.html.erb +7 -0
  105. data/app/widgets/signup/views/success.html.erb +4 -0
  106. data/config/environment.rb +0 -0
  107. data/config/routes.rb +41 -0
  108. data/db/data_migrations/20110509223702_add_publisher_role.rb +11 -0
  109. data/db/data_migrations/20110816153456_add_knitkit_application.rb +31 -0
  110. data/db/data_migrations/upgrade/20111011203718_create_paths_for_sections.rb +13 -0
  111. data/db/data_migrations/upgrade/20111216192114_add_secured_models_to_menu_items.rb +18 -0
  112. data/db/data_migrations/upgrade/20111216202819_set_contents_iid_to_permalink_where_null.rb +12 -0
  113. data/db/migrate/20110211002317_setup_knitkit.rb +259 -0
  114. data/db/migrate/upgrade/20111014190442_update_contents.rb +25 -0
  115. data/db/migrate/upgrade/20111014201502_add_published_by_to_published_elements.rb +22 -0
  116. data/db/migrate/upgrade/20111017133851_add_iid_to_section.rb +21 -0
  117. data/db/migrate/upgrade/20111027145006_add_in_menu_to_section.rb +19 -0
  118. data/lib/knitkit.rb +12 -0
  119. data/lib/knitkit/engine.rb +26 -0
  120. data/lib/knitkit/extensions.rb +18 -0
  121. data/lib/knitkit/extensions/action_controller/theme_support/acts_as_themed_controller.rb +88 -0
  122. data/lib/knitkit/extensions/active_record/acts_as_commentable.rb +28 -0
  123. data/lib/knitkit/extensions/active_record/acts_as_publishable.rb +38 -0
  124. data/lib/knitkit/extensions/active_record/theme_support/has_many_themes.rb +34 -0
  125. data/lib/knitkit/extensions/compass/widgets/base.rb +53 -0
  126. data/lib/knitkit/extensions/core/array.rb +5 -0
  127. data/lib/knitkit/extensions/railties/action_view.rb +187 -0
  128. data/lib/knitkit/extensions/railties/theme_support/asset_tag_helper.rb +198 -0
  129. data/lib/knitkit/extensions/railties/theme_support/theme_file_resolver.rb +44 -0
  130. data/lib/knitkit/routing_filter/section_router.rb +55 -0
  131. data/lib/knitkit/syntax_validator.rb +32 -0
  132. data/lib/knitkit/version.rb +3 -0
  133. data/lib/tasks/knitkit_tasks.rake +4 -0
  134. data/public/images/knitkit/bullet.png +0 -0
  135. data/public/images/knitkit/content.png +0 -0
  136. data/public/images/knitkit/footer.png +0 -0
  137. data/public/images/knitkit/graphic.png +0 -0
  138. data/public/images/knitkit/greyFadeDown.png +0 -0
  139. data/public/images/knitkit/link.png +0 -0
  140. data/public/images/knitkit/logo.png +0 -0
  141. data/public/images/knitkit/menu.png +0 -0
  142. data/public/images/knitkit/menu_select.png +0 -0
  143. data/public/images/knitkit/search.png +0 -0
  144. data/public/javascripts/datepicker.js +440 -0
  145. data/public/javascripts/erp_app/desktop/applications/knitkit/articles_grid_panel.js +473 -0
  146. data/public/javascripts/erp_app/desktop/applications/knitkit/center_region.js +576 -0
  147. data/public/javascripts/erp_app/desktop/applications/knitkit/comments_grid_panel.js +217 -0
  148. data/public/javascripts/erp_app/desktop/applications/knitkit/east_region.js +26 -0
  149. data/public/javascripts/erp_app/desktop/applications/knitkit/file_assets_panel.js +109 -0
  150. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_data_view.js +30 -0
  151. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_panel.js +160 -0
  152. data/public/javascripts/erp_app/desktop/applications/knitkit/inquiries_grid_panel.js +46 -0
  153. data/public/javascripts/erp_app/desktop/applications/knitkit/module.js +46 -0
  154. data/public/javascripts/erp_app/desktop/applications/knitkit/publish_window.js +92 -0
  155. data/public/javascripts/erp_app/desktop/applications/knitkit/published_grid_panel.js +220 -0
  156. data/public/javascripts/erp_app/desktop/applications/knitkit/section_articles_grid_panel.js +613 -0
  157. data/public/javascripts/erp_app/desktop/applications/knitkit/themes_tree_panel.js +573 -0
  158. data/public/javascripts/erp_app/desktop/applications/knitkit/versions_grid_panel.js +664 -0
  159. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region.js +2161 -0
  160. data/public/javascripts/erp_app/desktop/applications/knitkit/widgets_panel.js +52 -0
  161. data/public/stylesheets/datepicker.css +121 -0
  162. data/public/stylesheets/erp_app/desktop/applications/knitkit/knitkit.css +114 -0
  163. data/public/stylesheets/extjs/resources/css/knitkit_extjs_4.css +219 -0
  164. data/public/stylesheets/knitkit/style.css +394 -0
  165. metadata +289 -0
@@ -0,0 +1,573 @@
1
+ Ext.define("Compass.ErpApp.Desktop.Applications.ThemesTreePanel",{
2
+ extend:"Compass.ErpApp.Shared.FileManagerTree",
3
+ alias:'widget.knitkit_themestreepanel',
4
+ initComponent: function() {
5
+ this.callParent(arguments);
6
+ },
7
+
8
+ updateThemeActiveStatus : function(themeId, siteId, active){
9
+ var self = this;
10
+ self.initialConfig['centerRegion'].setWindowStatus('Updating Status...');
11
+ var conn = new Ext.data.Connection();
12
+ conn.request({
13
+ url: '/knitkit/erp_app/desktop/theme/change_status',
14
+ method: 'POST',
15
+ params:{
16
+ theme_id:themeId,
17
+ site_id:siteId,
18
+ active:active
19
+ },
20
+ success: function(response) {
21
+ var obj = Ext.decode(response.responseText);
22
+ if(obj.success){
23
+ self.initialConfig['centerRegion'].clearWindowStatus();
24
+ self.getStore().load({
25
+ node:self.getRootNode()
26
+ });
27
+ }
28
+ else{
29
+ Ext.Msg.alert('Error', 'Error updating status');
30
+ self.initialConfig['centerRegion'].clearWindowStatus();
31
+ }
32
+ },
33
+ failure: function(response) {
34
+ self.initialConfig['centerRegion'].clearWindowStatus();
35
+ Ext.Msg.alert('Error', 'Error updating status');
36
+ }
37
+ });
38
+ },
39
+
40
+ deleteTheme : function(themeId){
41
+ var self = this;
42
+ Ext.MessageBox.confirm('Confirm', 'Are you sure you want to delete this theme?', function(btn){
43
+ if(btn == 'no'){
44
+ return false;
45
+ }
46
+ else
47
+ if(btn == 'yes')
48
+ {
49
+ self.initialConfig['centerRegion'].setWindowStatus('Deleting theme...');
50
+ var conn = new Ext.data.Connection();
51
+ conn.request({
52
+ url: '/knitkit/erp_app/desktop/theme/delete',
53
+ method: 'POST',
54
+ params:{
55
+ theme_id:themeId
56
+ },
57
+ success: function(response) {
58
+ var obj = Ext.decode(response.responseText);
59
+ if(obj.success){
60
+ self.initialConfig['centerRegion'].clearWindowStatus();
61
+ self.getStore().load({
62
+ node:self.getRootNode()
63
+ });
64
+ }
65
+ else{
66
+ Ext.Msg.alert('Error', 'Error deleting theme');
67
+ self.initialConfig['centerRegion'].clearWindowStatus();
68
+ }
69
+ },
70
+ failure: function(response) {
71
+ self.initialConfig['centerRegion'].clearWindowStatus();
72
+ Ext.Msg.alert('Error', 'Error deleting theme');
73
+ }
74
+ });
75
+ }
76
+ });
77
+
78
+ },
79
+
80
+ exportTheme : function(themeId){
81
+ var self = this;
82
+ self.initialConfig['centerRegion'].setWindowStatus('Exporting theme...');
83
+ window.open('/knitkit/erp_app/desktop/theme/export?id='+themeId,'mywindow','width=400,height=200');
84
+ self.initialConfig['centerRegion'].clearWindowStatus();
85
+ },
86
+
87
+ themeWidget : function(){
88
+ var self = this;
89
+ self.sitesJsonStore.load();
90
+ var themesJsonStore = Ext.create("Ext.data.Store",{
91
+ autoLoad:true,
92
+ proxy:{
93
+ url:'/knitkit/erp_app/desktop/theme/available_themes',
94
+ type:'ajax',
95
+ reader:{
96
+ type:'json',
97
+ root:'themes'
98
+ }
99
+ },
100
+ fields: [
101
+ {
102
+ name:'name'
103
+ },
104
+ {
105
+ name:'id'
106
+ }
107
+ ]
108
+ });
109
+
110
+ var widgetsJsonStore = Ext.create("Ext.data.Store",{
111
+ proxy:{
112
+ url:'/knitkit/erp_app/desktop/theme/available_widgets',
113
+ type:'ajax',
114
+ reader:{
115
+ type:'json',
116
+ root:'widgets'
117
+ }
118
+ },
119
+ fields: [
120
+ {
121
+ name:'name'
122
+ },
123
+ {
124
+ name:'id'
125
+ }
126
+ ]
127
+ });
128
+
129
+ var widgetThemeWindow = Ext.create("Ext.window.Window",{
130
+ layout:'fit',
131
+ width:375,
132
+ title:'Theme Widget',
133
+ plain: true,
134
+ buttonAlign:'center',
135
+ items: new Ext.FormPanel({
136
+ labelWidth: 110,
137
+ frame:false,
138
+ bodyStyle:'padding:5px 5px 0',
139
+ fileUpload: true,
140
+ url:'/knitkit/erp_app/desktop/theme/theme_widget',
141
+ defaults: {
142
+ width: 225
143
+ },
144
+ items: [
145
+ {
146
+ xtype:'combo',
147
+ hiddenName:'site_id',
148
+ name:'site_id',
149
+ store:self.sitesJsonStore,
150
+ forceSelection:true,
151
+ editable:false,
152
+ fieldLabel:'Website',
153
+ emptyText:'Select Site...',
154
+ typeAhead: false,
155
+ displayField:'name',
156
+ valueField:'id',
157
+ allowBlank:false,
158
+ listeners:{
159
+ 'select':function(combo, records, opts){
160
+ this.next().enable();
161
+ themesJsonStore.setExtraParam("site_id", records[0].get("id"));
162
+ themesJsonStore.load();
163
+ }
164
+ }
165
+ },
166
+ {
167
+ xtype:'combo',
168
+ hiddenName:'theme_id',
169
+ name:'theme_id',
170
+ store:themesJsonStore,
171
+ forceSelection:true,
172
+ editable:false,
173
+ disabled:true,
174
+ fieldLabel:'Theme',
175
+ emptyText:'Select Theme...',
176
+ typeAhead: false,
177
+ mode: 'remote',
178
+ displayField:'name',
179
+ valueField:'id',
180
+ allowBlank:false,
181
+ listeners:{
182
+ 'select':function(combo, records, opts){
183
+ this.next().enable();
184
+ widgetsJsonStore.setExtraParam("theme_id", records[0].get("id"));
185
+ widgetsJsonStore.load();
186
+ }
187
+ }
188
+ },
189
+ {
190
+ xtype:'combo',
191
+ hiddenName:'widget_id',
192
+ name:'widget_id',
193
+ store:widgetsJsonStore,
194
+ forceSelection:true,
195
+ editable:false,
196
+ disabled:true,
197
+ fieldLabel:'Widget',
198
+ emptyText:'Select Widget...',
199
+ typeAhead: false,
200
+ mode: 'remote',
201
+ displayField:'name',
202
+ valueField:'id',
203
+ allowBlank:false
204
+ },
205
+ ]
206
+ }),
207
+ buttons: [{
208
+ text:'Submit',
209
+ listeners:{
210
+ 'click':function(button){
211
+ var form = this.up('window').query('form')[0].getForm();
212
+ if(form.isValid()){
213
+ form.submit({
214
+ waitMsg: 'Generating layout files for widget...',
215
+ success:function(form, action){
216
+ var obj = Ext.decode(action.response.responseText);
217
+ if(obj.success){
218
+ self.getStore().load({
219
+ node:self.getRootNode()
220
+ });
221
+ }
222
+ widgetThemeWindow.close();
223
+ },
224
+ failure:function(form, action){
225
+ Ext.Msg.alert("Error", "Error generating layouts");
226
+ }
227
+ });
228
+ }
229
+ }
230
+ }
231
+ },{
232
+ text: 'Close',
233
+ handler: function(){
234
+ widgetThemeWindow.close();
235
+ }
236
+ }]
237
+ });
238
+ widgetThemeWindow.show();
239
+ },
240
+
241
+ constructor : function(config) {
242
+ this.sitesJsonStore = Ext.create("Ext.data.Store",{
243
+ proxy:{
244
+ url:'/knitkit/erp_app/desktop/site/index',
245
+ type:'ajax',
246
+ reader:{
247
+ type:'json',
248
+ root:'sites'
249
+ }
250
+ },
251
+ fields: [
252
+ {
253
+ name:'name'
254
+ },
255
+ {
256
+ name:'id'
257
+ }
258
+ ]
259
+ });
260
+
261
+ var self = this;
262
+
263
+ config = Ext.apply({
264
+ title:'Themes',
265
+ controllerPath:'/knitkit/erp_app/desktop/theme',
266
+ autoDestroy:true,
267
+ allowDownload:true,
268
+ addViewContentsToContextMenu:true,
269
+ rootVisible:false,
270
+ standardUploadUrl:'/knitkit/erp_app/desktop/theme/upload_file',
271
+ xhrUploadUrl:'/knitkit/erp_app/desktop/theme/upload_file',
272
+ url:'/knitkit/erp_app/desktop/theme/index',
273
+ fields:[
274
+ {
275
+ name:'isTheme'
276
+ },
277
+
278
+ {
279
+ name:'isActive'
280
+ },
281
+
282
+ {
283
+ name:'siteId'
284
+ },
285
+
286
+ {
287
+ name:'text'
288
+ },
289
+
290
+ {
291
+ name:'id'
292
+ },
293
+
294
+ {
295
+ name:'leaf'
296
+ },
297
+
298
+ {
299
+ name:'handleContextMenu'
300
+ },
301
+
302
+ {
303
+ name:'contextMenuDisabled'
304
+ }
305
+ ],
306
+ containerScroll: true,
307
+ listeners:{
308
+ 'contentLoaded':function(fileManager, node, content){
309
+ self.initialConfig['centerRegion'].editTemplateFile(node, content, []);
310
+ },
311
+ 'handleContextMenu':function(fileManager, node, e){
312
+ if(node.data['isTheme']){
313
+ var items = [];
314
+ if(node.data['isActive']){
315
+ items.push({
316
+ text:'Deactivate',
317
+ iconCls:'icon-delete',
318
+ listeners:{
319
+ 'click':function(){
320
+ self.updateThemeActiveStatus(node.data.id, node.data['siteId'], false);
321
+ }
322
+ }
323
+ });
324
+ }
325
+ else{
326
+ items.push({
327
+ text:'Activate',
328
+ iconCls:'icon-add',
329
+ listeners:{
330
+ 'click':function(){
331
+ self.updateThemeActiveStatus(node.data.id, node.data['siteId'], true);
332
+ }
333
+ }
334
+ });
335
+ }
336
+ items.push({
337
+ text:'Delete Theme',
338
+ iconCls:'icon-delete',
339
+ listeners:{
340
+ 'click':function(){
341
+ Ext.MessageBox.confirm('Confirm', 'Are you sure you want to delete this theme?', function(btn){
342
+ if(btn == 'no'){
343
+ return false;
344
+ }
345
+ else
346
+ if(btn == 'yes')
347
+ {
348
+ self.deleteTheme(node.data.id);
349
+ }
350
+ });
351
+ }
352
+ }
353
+ });
354
+ items.push({
355
+ text:'Export',
356
+ iconCls:'icon-document_out',
357
+ listeners:{
358
+ 'click':function(){
359
+ self.exportTheme(node.data.id);
360
+ }
361
+ }
362
+ });
363
+ var contextMenu = new Ext.menu.Menu({
364
+ items:items
365
+ });
366
+ contextMenu.showAt(e.xy);
367
+ return false;
368
+ }
369
+ }
370
+ },
371
+ tbar:{
372
+ items:[
373
+ {
374
+ text:'Add Theme',
375
+ iconCls:'icon-add',
376
+ handler:function(btn){
377
+ self.sitesJsonStore.load();
378
+ var addThemeWindow = Ext.create("Ext.window.Window",{
379
+ layout:'fit',
380
+ width:375,
381
+ title:'New Theme',
382
+ plain: true,
383
+ buttonAlign:'center',
384
+ items: new Ext.FormPanel({
385
+ labelWidth: 110,
386
+ frame:false,
387
+ bodyStyle:'padding:5px 5px 0',
388
+ fileUpload: true,
389
+ url:'/knitkit/erp_app/desktop/theme/new',
390
+ defaults: {
391
+ width: 225
392
+ },
393
+ items: [
394
+ {
395
+ xtype:'combo',
396
+ hiddenName:'site_id',
397
+ name:'site_id',
398
+ store:self.sitesJsonStore,
399
+ forceSelection:true,
400
+ editable:false,
401
+ fieldLabel:'Website',
402
+ emptyText:'Select Site...',
403
+ typeAhead: false,
404
+ displayField:'name',
405
+ valueField:'id',
406
+ allowBlank:false
407
+ },
408
+ {
409
+ xtype:'textfield',
410
+ fieldLabel:'Name',
411
+ allowBlank:false,
412
+ name:'name'
413
+ },
414
+ {
415
+ xtype:'textfield',
416
+ fieldLabel:'Theme ID',
417
+ allowBlank:false,
418
+ name:'theme_id'
419
+ },
420
+ {
421
+ xtype:'textfield',
422
+ fieldLabel:'Version',
423
+ allowBlank:true,
424
+ name:'version'
425
+ },
426
+ {
427
+ xtype:'textfield',
428
+ fieldLabel:'Author',
429
+ allowBlank:true,
430
+ name:'author'
431
+ },
432
+ {
433
+ xtype:'textfield',
434
+ fieldLabel:'HomePage',
435
+ allowBlank:true,
436
+ name:'homepage'
437
+ },
438
+ {
439
+ xtype:'textarea',
440
+ fieldLabel:'Summary',
441
+ allowBlank:true,
442
+ name:'summary'
443
+ }
444
+ ]
445
+ }),
446
+ buttons: [{
447
+ text:'Submit',
448
+ listeners:{
449
+ 'click':function(button){
450
+ var window = button.findParentByType('window');
451
+ var formPanel = window.query('form')[0];
452
+ self.initialConfig['centerRegion'].setWindowStatus('Creating theme...');
453
+ formPanel.getForm().submit({
454
+ reset:true,
455
+ success:function(form, action){
456
+ self.initialConfig['centerRegion'].clearWindowStatus();
457
+ var obj = Ext.decode(action.response.responseText);
458
+ if(obj.success){
459
+ self.getStore().load({
460
+ node:self.getRootNode()
461
+ });
462
+ }
463
+ },
464
+ failure:function(form, action){
465
+ self.initialConfig['centerRegion'].clearWindowStatus();
466
+ Ext.Msg.alert("Error", "Error creating theme");
467
+ }
468
+ });
469
+ }
470
+ }
471
+ },{
472
+ text: 'Close',
473
+ handler: function(){
474
+ addThemeWindow.close();
475
+ }
476
+ }]
477
+ });
478
+ addThemeWindow.show();
479
+ }
480
+ },
481
+ {
482
+ text:'Upload Theme',
483
+ iconCls:'icon-upload',
484
+ handler:function(btn){
485
+ self.sitesJsonStore.load();
486
+ var uploadThemeWindow = Ext.create("Ext.window.Window",{
487
+ layout:'fit',
488
+ width:375,
489
+ title:'New Theme',
490
+ plain: true,
491
+ buttonAlign:'center',
492
+ items: new Ext.FormPanel({
493
+ labelWidth: 110,
494
+ frame:false,
495
+ bodyStyle:'padding:5px 5px 0',
496
+ fileUpload: true,
497
+ url:'/knitkit/erp_app/desktop/theme/new',
498
+ defaults: {
499
+ width: 225
500
+ },
501
+ items: [
502
+ {
503
+ xtype:'combo',
504
+ hiddenName:'site_id',
505
+ name:'site_id',
506
+ store:self.sitesJsonStore,
507
+ forceSelection:true,
508
+ editable:false,
509
+ fieldLabel:'Website',
510
+ emptyText:'Select Site...',
511
+ typeAhead: false,
512
+ displayField:'name',
513
+ valueField:'id',
514
+ allowBlank:false
515
+ },
516
+ {
517
+ xtype:'fileuploadfield',
518
+ fieldLabel:'Upload Theme',
519
+ buttonText:'Upload',
520
+ buttonOnly:false,
521
+ allowBlank:true,
522
+ name:'theme_data'
523
+ }
524
+ ]
525
+ }),
526
+ buttons: [{
527
+ text:'Submit',
528
+ listeners:{
529
+ 'click':function(button){
530
+ var form = this.up('window').query('form')[0].getForm();
531
+ if(form.isValid()){
532
+ form.submit({
533
+ waitMsg: 'Creating theme...',
534
+ success:function(form, action){
535
+ var obj = Ext.decode(action.response.responseText);
536
+ if(obj.success){
537
+ self.getStore().load({
538
+ node:self.getRootNode()
539
+ });
540
+ }
541
+ uploadThemeWindow.close();
542
+ },
543
+ failure:function(form, action){
544
+ Ext.Msg.alert("Error", "Error creating theme");
545
+ }
546
+ });
547
+ }
548
+ }
549
+ }
550
+ },{
551
+ text: 'Close',
552
+ handler: function(){
553
+ uploadThemeWindow.close();
554
+ }
555
+ }]
556
+ });
557
+ uploadThemeWindow.show();
558
+ }
559
+ },
560
+ {
561
+ text:'Theme Widget',
562
+ iconCls:'icon-picture',
563
+ handler:function(btn){
564
+ self.themeWidget();
565
+ }
566
+ }
567
+ ]
568
+ }
569
+ }, config);
570
+
571
+ this.callParent([config]);
572
+ }
573
+ });