knitkit 2.1.15 → 3.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 (209) hide show
  1. checksums.yaml +7 -0
  2. data/app/controllers/knitkit/base_controller.rb +1 -1
  3. data/app/controllers/knitkit/comments_controller.rb +7 -2
  4. data/app/controllers/knitkit/erp_app/desktop/app_controller.rb +78 -98
  5. data/app/controllers/knitkit/erp_app/desktop/articles_controller.rb +65 -45
  6. data/app/controllers/knitkit/erp_app/desktop/content_controller.rb +22 -12
  7. data/app/controllers/knitkit/erp_app/desktop/file_assets_controller.rb +1 -1
  8. data/app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb +28 -16
  9. data/app/controllers/knitkit/erp_app/desktop/inquiries_controller.rb +15 -49
  10. data/app/controllers/knitkit/erp_app/desktop/online_document_sections_controller.rb +4 -3
  11. data/app/controllers/knitkit/erp_app/desktop/position_controller.rb +69 -11
  12. data/app/controllers/knitkit/erp_app/desktop/theme_controller.rb +63 -60
  13. data/app/controllers/knitkit/erp_app/desktop/website_controller.rb +98 -82
  14. data/app/controllers/knitkit/erp_app/desktop/website_host_controller.rb +77 -0
  15. data/app/controllers/knitkit/erp_app/desktop/website_nav_controller.rb +64 -44
  16. data/app/controllers/knitkit/erp_app/desktop/website_nav_item_controller.rb +147 -0
  17. data/app/controllers/knitkit/erp_app/desktop/website_section_controller.rb +81 -45
  18. data/app/controllers/knitkit/mobile_controller.rb +15 -0
  19. data/app/controllers/knitkit/online_document_sections_controller.rb +2 -1
  20. data/app/controllers/knitkit/unauthorized_controller.rb +0 -1
  21. data/app/controllers/knitkit/website_sections_controller.rb +7 -4
  22. data/app/mailers/website_inquiry_mailer.rb +8 -7
  23. data/app/models/content.rb +11 -2
  24. data/app/models/document.rb +2 -17
  25. data/app/models/published_website.rb +96 -59
  26. data/app/models/theme.rb +100 -14
  27. data/app/models/website.rb +260 -28
  28. data/app/models/website_inquiry.rb +5 -12
  29. data/app/models/website_section.rb +9 -1
  30. data/app/views/knitkit/blogs/_add_comment.html.erb +44 -23
  31. data/app/views/knitkit/blogs/_comment.html.erb +4 -6
  32. data/app/views/knitkit/blogs/index.html.erb +63 -49
  33. data/app/views/knitkit/blogs/show.html.erb +17 -12
  34. data/app/views/knitkit/mobile/index.html.erb +162 -0
  35. data/app/views/knitkit/online_document_sections/index.html.erb +7 -5
  36. data/app/views/knitkit/unauthorized/index.html.erb +8 -4
  37. data/app/views/knitkit/website_sections/index.html.erb +8 -4
  38. data/app/views/layouts/knitkit/base.html.erb +79 -63
  39. data/app/views/layouts/knitkit/online_document_sections.html.erb +74 -52
  40. data/app/views/menus/knitkit/_default_menu.html.erb +4 -4
  41. data/app/views/menus/knitkit/_default_section_menu.html.erb +22 -23
  42. data/app/views/shared/knitkit/_bread_crumb.html.erb +10 -7
  43. data/app/views/shared/knitkit/_footer.html.erb +2 -2
  44. data/app/views/website_inquiry_mailer/inquiry.erb +23 -2
  45. data/app/widgets/contact_us/base.rb +25 -50
  46. data/app/widgets/contact_us/javascript/contact_us.js +7 -7
  47. data/app/widgets/contact_us/views/error.html.erb +6 -8
  48. data/app/widgets/contact_us/views/index.html.erb +28 -1
  49. data/app/widgets/contact_us/views/layouts/base.html.erb +9 -6
  50. data/app/widgets/contact_us/views/success.html.erb +3 -3
  51. data/app/widgets/google_map/views/index.html.erb +36 -36
  52. data/app/widgets/login/base.rb +1 -0
  53. data/app/widgets/login/javascript/login.js +3 -3
  54. data/app/widgets/login/views/index.html.erb +46 -26
  55. data/app/widgets/login/views/layouts/base.html.erb +15 -13
  56. data/app/widgets/login/views/login_header.html.erb +7 -9
  57. data/app/widgets/manage_profile/base.rb +116 -164
  58. data/app/widgets/manage_profile/views/_address.html.erb +184 -0
  59. data/app/widgets/manage_profile/views/_contact_information_form.html.erb +23 -192
  60. data/app/widgets/manage_profile/views/_email_address.html.erb +163 -0
  61. data/app/widgets/manage_profile/views/_password_form.html.erb +23 -20
  62. data/app/widgets/manage_profile/views/_phone_number.html.erb +165 -0
  63. data/app/widgets/manage_profile/views/_user_information_form.html.erb +49 -33
  64. data/app/widgets/manage_profile/views/error.html.erb +6 -0
  65. data/app/widgets/manage_profile/views/index.html.erb +44 -46
  66. data/app/widgets/manage_profile/views/layouts/base.html.erb +3 -1
  67. data/app/widgets/manage_profile/views/success.html.erb +5 -0
  68. data/app/widgets/reset_password/views/index.html.erb +33 -28
  69. data/app/widgets/reset_password/views/layouts/base.html.erb +10 -1
  70. data/app/widgets/search/base.rb +37 -25
  71. data/app/widgets/search/views/_inline_search_form.html.erb +12 -0
  72. data/app/widgets/search/views/_search_form.html.erb +41 -0
  73. data/app/widgets/search/views/index.html.erb +5 -3
  74. data/app/widgets/search/views/layouts/base.html.erb +13 -23
  75. data/app/widgets/search/views/show.html.erb +32 -47
  76. data/app/widgets/signup/base.rb +1 -1
  77. data/app/widgets/signup/javascript/signup.js +7 -9
  78. data/app/widgets/signup/views/_signup_form.html.erb +34 -29
  79. data/app/widgets/signup/views/error.html.erb +11 -11
  80. data/app/widgets/signup/views/index.html.erb +3 -2
  81. data/app/widgets/signup/views/layouts/base.html.erb +8 -5
  82. data/app/widgets/signup/views/success.html.erb +5 -4
  83. data/config/routes.rb +39 -28
  84. data/db/data_migrations/20120809020508_update_website_and_configuration.rb +3 -0
  85. data/db/migrate/20110211002317_setup_knitkit.rb +0 -1
  86. data/db/migrate/20131112013052_add_knitkit_missing_indexes.rb +33 -0
  87. data/db/migrate/20140622212723_update_website_inquiries.rb +22 -0
  88. data/db/migrate/20140911185022_add_publishing_to_website.rb +5 -0
  89. data/db/migrate/20141013073349_add_custom_fields_to_documents.rb +12 -0
  90. data/db/migrate/20141016101936_upgrade_remove_dynamic_attributes.rb +13 -0
  91. data/lib/knitkit.rb +0 -1
  92. data/lib/knitkit/engine.rb +1 -0
  93. data/lib/knitkit/extensions.rb +4 -0
  94. data/lib/knitkit/extensions/active_record/acts_as_commentable.rb +33 -0
  95. data/lib/knitkit/extensions/active_record/acts_as_document.rb +0 -12
  96. data/lib/knitkit/extensions/active_record/acts_as_publishable.rb +7 -10
  97. data/lib/knitkit/extensions/compass_ae/widgets/base.rb +2 -4
  98. data/lib/knitkit/extensions/compass_ae/widgets/widget_proxy_controller.rb +4 -1
  99. data/lib/knitkit/extensions/railties/action_view/helpers/blog_helper.rb +16 -13
  100. data/lib/knitkit/extensions/railties/action_view/helpers/content_helper.rb +10 -8
  101. data/lib/knitkit/extensions/railties/theme_support/asset_tag_helper.rb +123 -108
  102. data/lib/knitkit/extensions/will_paginate/link_renderer.rb +67 -0
  103. data/lib/knitkit/routing_filter/section_router.rb +10 -8
  104. data/lib/knitkit/syntax_validator.rb +2 -2
  105. data/lib/knitkit/version.rb +7 -3
  106. data/public/images/inline_edit/close.png +0 -0
  107. data/public/images/knitkit/close_window.png +0 -0
  108. data/public/images/knitkit/logo.png +0 -0
  109. data/public/images/knitkit/splash/images/add-site.png +0 -0
  110. data/public/images/knitkit/splash/images/adjust-site.png +0 -0
  111. data/public/images/knitkit/splash/images/browse-site.png +0 -0
  112. data/public/images/knitkit/splash/images/find-themes.png +0 -0
  113. data/public/images/knitkit/splash/images/settings.png +0 -0
  114. data/public/images/knitkit/splash/images/tutorials.png +0 -0
  115. data/public/images/knitkit/splash/splash.png +0 -0
  116. data/public/javascripts/erp_app/desktop/applications/knitkit/articles_grid_panel.js +656 -627
  117. data/public/javascripts/erp_app/desktop/applications/knitkit/center_region.js +444 -333
  118. data/public/javascripts/erp_app/desktop/applications/knitkit/{east_region.js → east_region/east_region.js} +33 -33
  119. data/public/javascripts/erp_app/desktop/applications/knitkit/east_region/file_assets_panel.js +332 -0
  120. data/public/javascripts/erp_app/desktop/applications/knitkit/east_region/image_assets_data_view.js +144 -0
  121. data/public/javascripts/erp_app/desktop/applications/knitkit/east_region/image_assets_panel.js +335 -0
  122. data/public/javascripts/erp_app/desktop/applications/knitkit/{widgets_panel.js → east_region/widgets_panel.js} +55 -55
  123. data/public/javascripts/erp_app/desktop/applications/knitkit/inquiries_grid_panel.js +150 -37
  124. data/public/javascripts/erp_app/desktop/applications/knitkit/module.js +228 -96
  125. data/public/javascripts/erp_app/desktop/applications/knitkit/publish_window.js +89 -85
  126. data/public/javascripts/erp_app/desktop/applications/knitkit/published_grid_panel.js +238 -217
  127. data/public/javascripts/erp_app/desktop/applications/knitkit/select_roles_window.js +59 -54
  128. data/public/javascripts/erp_app/desktop/applications/knitkit/splash_screen.js +170 -0
  129. data/public/javascripts/erp_app/desktop/applications/knitkit/top_menu/main_menu.js +1168 -0
  130. data/public/javascripts/erp_app/desktop/applications/knitkit/top_menu/websites_combo.js +71 -0
  131. data/public/javascripts/erp_app/desktop/applications/knitkit/versions_grid_panel.js +301 -306
  132. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/article.js +216 -0
  133. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/document.js +182 -153
  134. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/host.js +48 -65
  135. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/menu.js +93 -94
  136. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/section.js +523 -197
  137. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/website_nav_items.js +20 -34
  138. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/hosts_tree_panel.js +74 -0
  139. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/menu_tree_panel.js +245 -0
  140. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/site_contents_tree_panel.js +360 -0
  141. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/themes_tree_panel.js +348 -0
  142. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/west_region.js +106 -1132
  143. data/public/javascripts/knitkit/bootstrap-datepicker.js +474 -0
  144. data/public/javascripts/knitkit/bootstrap.min.js +7 -0
  145. data/public/javascripts/knitkit/confirm-bootstrap.js +110 -0
  146. data/public/javascripts/knitkit/inline_editing.js +73 -50
  147. data/public/javascripts/knitkit/jquery.maskedinput.min.js +7 -0
  148. data/public/javascripts/knitkit/mobile/app/view/Main.js +108 -0
  149. data/public/javascripts/knitkit/mobile/ux/slidenavigation/View.js +734 -0
  150. data/public/javascripts/knitkit/theme.js +76 -0
  151. data/public/stylesheets/erp_app/desktop/applications/knitkit/knitkit.css +95 -35
  152. data/public/stylesheets/knitkit/bootstrap-responsive.min.css +10 -0
  153. data/public/stylesheets/knitkit/bootstrap.min.css +7 -0
  154. data/public/stylesheets/knitkit/custom.css +122 -0
  155. data/public/stylesheets/knitkit/datepicker.css +182 -0
  156. data/public/stylesheets/knitkit/inline_editing.css +58 -58
  157. data/spec/controllers/knitkit/erp_app/desktop/website_section_controller_spec.rb +1 -1
  158. data/spec/dummy/config/application.rb +1 -1
  159. data/spec/models/article_spec.rb +3 -3
  160. data/spec/models/content_spec.rb +9 -9
  161. data/spec/models/website_spec.rb +1 -1
  162. metadata +100 -114
  163. data/app/helpers/application_helper.rb +0 -134
  164. data/app/views/knitkit/articles/index.html.erb +0 -3
  165. data/app/views/knitkit/articles/show.html.erb +0 -4
  166. data/app/views/menus/knitkit/_default_sub_menu.html.erb +0 -43
  167. data/app/views/menus/knitkit/_default_sub_section_menu.html.erb +0 -47
  168. data/app/widgets/contact_us/views/_contact_form.html.erb +0 -36
  169. data/app/widgets/dynamic_forms/base.rb +0 -139
  170. data/app/widgets/dynamic_forms/javascript/dynamic_forms.js +0 -110
  171. data/app/widgets/dynamic_forms/views/error.html.erb +0 -5
  172. data/app/widgets/dynamic_forms/views/index.html.erb +0 -8
  173. data/app/widgets/dynamic_forms/views/success.html.erb +0 -4
  174. data/app/widgets/dynamic_grid/base.rb +0 -130
  175. data/app/widgets/dynamic_grid/helpers/controller/dynamic_grid_controller_helper.rb +0 -3
  176. data/app/widgets/dynamic_grid/helpers/view/dynamic_grid_view_helper.rb +0 -3
  177. data/app/widgets/dynamic_grid/javascript/dynamic_grid.js +0 -177
  178. data/app/widgets/dynamic_grid/views/index.html.erb +0 -14
  179. data/app/widgets/login/views/reset_password.html.erb +0 -26
  180. data/app/widgets/manage_profile/views/default_type_error.html.erb +0 -5
  181. data/app/widgets/scaffold/base.rb +0 -87
  182. data/app/widgets/scaffold/helpers/controller/scaffold_controller_helper.rb +0 -3
  183. data/app/widgets/scaffold/helpers/view/scaffold_view_helper.rb +0 -3
  184. data/app/widgets/scaffold/javascript/scaffold.js +0 -337
  185. data/app/widgets/scaffold/views/index.html.erb +0 -15
  186. data/app/widgets/search/views/_search.html.erb +0 -39
  187. data/public/images/knitkit/bullet.png +0 -0
  188. data/public/images/knitkit/close.png +0 -0
  189. data/public/images/knitkit/content.png +0 -0
  190. data/public/images/knitkit/footer.png +0 -0
  191. data/public/images/knitkit/graphic.png +0 -0
  192. data/public/images/knitkit/greyFadeDown.png +0 -0
  193. data/public/images/knitkit/link.png +0 -0
  194. data/public/images/knitkit/menu.png +0 -0
  195. data/public/images/knitkit/menu_select.png +0 -0
  196. data/public/images/knitkit/search.png +0 -0
  197. data/public/images/knitkit/tooltip.gif +0 -0
  198. data/public/javascripts/ajax_pagination.js +0 -33
  199. data/public/javascripts/datepicker.js +0 -445
  200. data/public/javascripts/erp_app/desktop/applications/knitkit/file_assets_panel.js +0 -341
  201. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_data_view.js +0 -31
  202. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_panel.js +0 -263
  203. data/public/javascripts/erp_app/desktop/applications/knitkit/section_articles_grid_panel.js +0 -722
  204. data/public/javascripts/erp_app/desktop/applications/knitkit/themes_tree_panel.js +0 -585
  205. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/website.js +0 -155
  206. data/public/javascripts/knitkit/helpers.js +0 -26
  207. data/public/stylesheets/datepicker.css +0 -121
  208. data/public/stylesheets/extjs/resources/css/knitkit_extjs_4.css +0 -233
  209. data/public/stylesheets/knitkit/style.css +0 -426
@@ -4,31 +4,65 @@ module Knitkit
4
4
  class WebsiteController < Knitkit::ErpApp::Desktop::AppController
5
5
  IGNORED_PARAMS = %w{action controller id}
6
6
 
7
- before_filter :set_website, :only => [:export, :website_publications, :set_viewing_version, :activate_publication, :publish, :update, :delete]
8
-
7
+ before_filter :set_website, :only => [:build_content_tree, :export, :exporttemplate, :website_publications, :set_viewing_version,
8
+ :build_host_hash, :activate_publication, :publish, :update, :delete]
9
+
9
10
  def index
10
- render :json => {:sites => Website.all}
11
+ render :json => {:sites => Website.all.collect { |item| item.to_hash(:only => [:id, :name, :title, :subtitle],
12
+ :configuration_id => item.configurations.first.id,
13
+ :url => "http://#{item.config_value('primary_host')}") }}
14
+ end
15
+
16
+ def build_content_tree
17
+ nodes = []
18
+
19
+ if @website
20
+ if params[:record_type].blank?
21
+ @website.website_sections.positioned.each do |website_section|
22
+ nodes << build_section_hash(website_section)
23
+ end
24
+ else
25
+ case params[:record_type]
26
+ when 'WebsiteSection'
27
+ website_section = WebsiteSection.find(params[:record_id])
28
+
29
+ # get child sections
30
+ nodes = website_section.positioned_children.map { |child| build_section_hash(child) }
31
+
32
+ # get child articles
33
+ website_section.website_section_contents.order('position').each do |website_section_content|
34
+ nodes << build_article_hash(website_section_content, @website, website_section.is_blog?)
35
+ end
36
+
37
+ else
38
+ raise 'Unknown Node Type'
39
+ end
40
+ end
41
+ end
42
+
43
+ render :json => nodes
11
44
  end
12
45
 
13
46
  def website_publications
14
47
  sort_hash = params[:sort].blank? ? {} : Hash.symbolize_keys(JSON.parse(params[:sort]).first)
15
48
  sort = sort_hash[:property] || 'version'
16
- dir = sort_hash[:direction] || 'DESC'
49
+ dir = sort_hash[:direction] || 'DESC'
17
50
  limit = params[:limit] || 9
18
51
  start = params[:start] || 0
19
-
52
+
20
53
  published_websites = @website.published_websites.order("#{sort} #{dir}").limit(limit).offset(start)
21
-
54
+
22
55
  #set site_version. User can view different versions. Check if they are viewing another version
23
56
  site_version = @website.active_publication.version
24
57
  if !session[:website_version].blank? && !session[:website_version].empty?
25
- site_version_hash = session[:website_version].find{|item| item[:website_id] == @website.id}
58
+ site_version_hash = session[:website_version].find { |item| item[:website_id] == @website.id }
26
59
  site_version = site_version_hash[:version].to_f unless site_version_hash.nil?
27
60
  end
28
61
 
29
62
  PublishedWebsite.class_exec(site_version) do
30
63
  cattr_accessor :site_version
31
64
  self.site_version = site_version
65
+
32
66
  def viewing
33
67
  self.version == self.site_version
34
68
  end
@@ -37,8 +71,8 @@ module Knitkit
37
71
  render :inline => "{\"success\":true, \"results\":#{published_websites.count},
38
72
  \"totalCount\":#{@website.published_websites.count},
39
73
  \"data\":#{published_websites.to_json(
40
- :only => [:comment, :id, :version, :created_at, :active],
41
- :methods => [:viewing, :published_by_username])} }"
74
+ :only => [:comment, :id, :version, :created_at, :active],
75
+ :methods => [:viewing, :published_by_username])} }"
42
76
  end
43
77
 
44
78
  def activate_publication
@@ -48,7 +82,7 @@ module Knitkit
48
82
 
49
83
  render :json => {:success => true}
50
84
  end
51
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
85
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
52
86
  render :json => {:success => false, :message => ex.message}
53
87
  end
54
88
  end
@@ -58,7 +92,7 @@ module Knitkit
58
92
  session[:website_version] = []
59
93
  session[:website_version] << {:website_id => @website.id, :version => params[:version]}
60
94
  else
61
- session[:website_version].delete_if{|item| item[:website_id] == @website.id}
95
+ session[:website_version].delete_if { |item| item[:website_id] == @website.id }
62
96
  session[:website_version] << {:website_id => @website.id, :version => params[:version]}
63
97
  end
64
98
 
@@ -72,7 +106,7 @@ module Knitkit
72
106
 
73
107
  render :json => {:success => true}
74
108
  end
75
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
109
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
76
110
  render :json => {:success => false, :message => ex.message}
77
111
  end
78
112
  end
@@ -82,9 +116,9 @@ module Knitkit
82
116
  Website.transaction do
83
117
  current_user.with_capability('create', 'Website') do
84
118
  website = Website.new
85
- website.subtitle = params[:subtitle]
86
- website.title = params[:title]
87
- website.name = params[:name]
119
+ website.subtitle = params[:subtitle]
120
+ website.title = params[:title]
121
+ website.name = params[:name]
88
122
 
89
123
  # create homepage
90
124
  website_section = WebsiteSection.new
@@ -108,10 +142,12 @@ module Knitkit
108
142
 
109
143
  PublishedWebsite.activate(website, 1, current_user)
110
144
 
111
- render :json => {:success => true}
145
+ render :json => {:success => true, :website => website.to_hash(:only => [:id, :name],
146
+ :configuration_id => website.configurations.first.id,
147
+ :url => "http://#{website.config_value('primary_host')}")}
112
148
  end
113
149
  end
114
- rescue Exception => ex
150
+ rescue => ex
115
151
  Rails.logger.error("#{ex.message} + #{ex.backtrace.join("\n")}")
116
152
  render :json => {:success => false, :message => ex.message}
117
153
  end
@@ -121,100 +157,80 @@ module Knitkit
121
157
  def update
122
158
  begin
123
159
  current_user.with_capability('edit', 'Website') do
124
- @website.name = params[:name]
125
- @website.title = params[:title]
126
- @website.subtitle = params[:subtitle]
160
+ @website.name = params[:name]
161
+ @website.title = params[:title]
162
+ @website.subtitle = params[:subtitle]
127
163
 
128
164
  render :json => @website.save ? {:success => true} : {:success => false}
129
165
  end
130
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
166
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
131
167
  render :json => {:success => false, :message => ex.message}
132
168
  end
133
169
  end
134
-
135
-
170
+
136
171
  def delete
137
172
  begin
138
173
  current_user.with_capability('delete', 'Website') do
139
174
  render :json => @website.destroy ? {:success => true} : {:success => false}
140
175
  end
141
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
176
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
142
177
  render :json => {:success => false, :message => ex.message}
143
178
  end
144
179
  end
145
180
 
146
181
  def export
147
182
  zip_path = @website.export
148
- send_file(zip_path.to_s, :stream => false) rescue raise "Error sending #{zip_path} file"
149
- end
150
-
151
- # TODO add role restriction to this
152
- def import
153
- result, message = Website.import(params[:website_data], current_user)
154
-
155
- render :inline => {:success => result, :message => message}.to_json
156
- ensure
157
- FileUtils.rm_r File.dirname(zip_path) rescue nil
183
+ begin
184
+ send_file(zip_path.to_s, :stream => false)
185
+ rescue Exception => ex
186
+ raise "Error sending #{zip_path} file"
187
+ end
158
188
  end
159
189
 
160
- def add_host
161
- begin
162
- current_user.with_capability('create', 'WebsiteHost') do
163
- website = Website.find(params[:id])
164
- website_host = WebsiteHost.create(:host => params[:host])
165
- website.hosts << website_host
166
- website.save
167
-
168
- render :json => {
169
- :success => true,
170
- :node => {
171
- :text => website_host.attributes['host'],
172
- :websiteHostId => website_host.id,
173
- :host => website_host.attributes['host'],
174
- :iconCls => 'icon-globe',
175
- :url => "http://#{website_host.attributes['host']}",
176
- :isHost => true,
177
- :leaf => true,
178
- :children => []}
179
- }
190
+ def exporttemplate
191
+ zip_path = @website.export_template
192
+ if zip_path
193
+ begin
194
+ send_file(zip_path, :stream => false)
195
+ rescue Exception => ex
196
+ raise "Error sending file. Make sure you have a website and an active theme."
180
197
  end
181
- rescue Exception => ex
182
- Rails.logger.error("#{ex.message} + #{ex.backtrace}")
183
- render :json => {:success => false, :message => ex.message}
198
+ else
199
+ render :inline => {:success => false, :message => 'test'}.to_json
184
200
  end
185
201
  end
186
202
 
187
- def update_host
188
- begin
189
- current_user.with_capability('edit', 'WebsiteHost') do
190
- website_host = WebsiteHost.find(params[:id])
191
- website_host.host = params[:host]
192
- website_host.save
203
+ # TODO add role restriction to this
204
+ def import
205
+ website, message = Website.import(params[:website_data], current_user)
193
206
 
194
- render :json => {:success => true}
195
- end
196
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
197
- render :json => {:success => false, :message => ex.message}
207
+ if website
208
+ render :inline => {:success => true, :website => website.to_hash(:only => [:id, :name])}.to_json
209
+ else
210
+ render :inline => {:success => false, :message => message}.to_json
198
211
  end
212
+ ensure
213
+ FileUtils.rm_r File.dirname(zip_path) rescue nil
199
214
  end
200
215
 
201
- def delete_host
202
- begin
203
- current_user.with_capability('delete', 'WebsiteHost') do
204
- render :json => WebsiteHost.destroy(params[:id]) ? {:success => true} : {:success => false}
205
- end
206
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
207
- render :json => {:success => false, :message => ex.message}
216
+ def importtemplate
217
+ website, message = Website.import_template_director(params[:website_data], User.first)
218
+
219
+ if website
220
+ render :inline => {:success => true, :website => website.to_hash(:only => [:id, :name])}.to_json
221
+ else
222
+ render :inline => {:success => false, :message => message}.to_json
208
223
  end
209
224
  end
210
225
 
211
- protected
226
+ def has_active_theme
227
+ !!Website.find_by_id(params[:website_id]).themes.active.first ? response = 'true' : response = 'false'
228
+ render :json => {:success => true, :message => response}
212
229
 
213
- def set_website
214
- @website = Website.find(params[:id])
230
+ # example found in knitkit module.js
215
231
  end
216
-
217
- end#WebsiteController
218
- end#Desktop
219
- end#ErpApp
220
- end#Knitkit
232
+
233
+ end # WebsiteController
234
+ end # Desktop
235
+ end # ErpApp
236
+ end # Knitkit
@@ -0,0 +1,77 @@
1
+ module Knitkit
2
+ module ErpApp
3
+ module Desktop
4
+ class WebsiteHostController < Knitkit::ErpApp::Desktop::AppController
5
+
6
+ before_filter :set_website, :only => [:index]
7
+
8
+ def index
9
+ tree = []
10
+
11
+ if @website
12
+ @website.hosts.each do |website_host|
13
+
14
+ tree << {:text => website_host.attributes['host'], :websiteHostId => website_host.id,
15
+ :host => website_host.attributes['host'], :iconCls => 'icon-globe',
16
+ :url => "http://#{website_host.attributes['host']}", :leaf => true}
17
+
18
+
19
+ end
20
+ end
21
+
22
+ render :json => tree
23
+ end
24
+
25
+ def create
26
+ begin
27
+ current_user.with_capability('create', 'WebsiteHost') do
28
+ website = Website.find(params[:website_id])
29
+ website_host = WebsiteHost.create(:host => params[:host])
30
+ website.hosts << website_host
31
+ website.save
32
+
33
+ render :json => {
34
+ :success => true,
35
+ :node => {
36
+ :text => website_host.attributes['host'],
37
+ :websiteHostId => website_host.id,
38
+ :host => website_host.attributes['host'],
39
+ :iconCls => 'icon-globe',
40
+ :url => "http://#{website_host.attributes['host']}",
41
+ :leaf => true}
42
+ }
43
+ end
44
+ rescue => ex
45
+ Rails.logger.error("#{ex.message} + #{ex.backtrace}")
46
+ render :json => {:success => false, :message => ex.message}
47
+ end
48
+ end
49
+
50
+ def update
51
+ begin
52
+ current_user.with_capability('edit', 'WebsiteHost') do
53
+ website_host = WebsiteHost.find(params[:id])
54
+ website_host.host = params[:host]
55
+ website_host.save
56
+
57
+ render :json => {:success => true}
58
+ end
59
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
60
+ render :json => {:success => false, :message => ex.message}
61
+ end
62
+ end
63
+
64
+ def destroy
65
+ begin
66
+ current_user.with_capability('delete', 'WebsiteHost') do
67
+ render :json => WebsiteHost.destroy(params[:id]) ? {:success => true} : {:success => false}
68
+ end
69
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
70
+ render :json => {:success => false, :message => ex.message}
71
+ end
72
+ end
73
+
74
+ end # WebsiteHostController
75
+ end # Desktop
76
+ end # ErpApp
77
+ end # Knitkit
@@ -2,10 +2,31 @@ module Knitkit
2
2
  module ErpApp
3
3
  module Desktop
4
4
  class WebsiteNavController < Knitkit::ErpApp::Desktop::AppController
5
- def new
5
+
6
+ before_filter :set_website, :only => [:index]
7
+
8
+ def index
9
+ tree = []
10
+
11
+ if @website
12
+ @website.website_navs.each do |website_nav|
13
+ menu_hash = {:text => website_nav.name, :websiteNavId => website_nav.id, :canAddMenuItems => true,
14
+ :iconCls => 'icon-index', :isWebsiteNav => true, :leaf => false, :children => []}
15
+
16
+ menu_hash[:children] = website_nav.website_nav_items.positioned.map { |item| build_menu_item_hash(item) }
17
+
18
+ tree << menu_hash
19
+ end
20
+ end
21
+
22
+ render :json => tree
23
+ end
24
+
25
+ def create
6
26
  begin
7
27
  current_user.with_capability('create', 'WebsiteNavItem') do
8
28
  result = {}
29
+
9
30
  website = Website.find(params[:website_id])
10
31
  website_nav = WebsiteNav.new(:name => params[:name])
11
32
  website.website_navs << website_nav
@@ -13,20 +34,19 @@ module Knitkit
13
34
  if website_nav.save
14
35
  result[:success] = true
15
36
  result[:node] = {:text => params[:name],
16
- :websiteNavId => website_nav.id,
17
- :websiteId => website.id,
18
- :iconCls => 'icon-index',
19
- :canAddMenuItems => true,
20
- :isWebsiteNav => true,
21
- :leaf => false,
22
- :children => []}
37
+ :websiteNavId => website_nav.id,
38
+ :iconCls => 'icon-index',
39
+ :canAddMenuItems => true,
40
+ :isWebsiteNav => true,
41
+ :leaf => false,
42
+ :children => []}
23
43
  else
24
44
  result[:success] = false
25
45
  end
26
46
 
27
47
  render :json => result
28
48
  end
29
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
49
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
30
50
  render :json => {:success => false, :message => ex.message}
31
51
  end
32
52
  end
@@ -34,22 +54,22 @@ module Knitkit
34
54
  def update
35
55
  begin
36
56
  current_user.with_capability('edit', 'WebsiteNavItem') do
37
- website_nav = WebsiteNav.find(params[:website_nav_id])
57
+ website_nav = WebsiteNav.find(params[:id])
38
58
  website_nav.name = params[:name]
39
59
 
40
60
  render :json => (website_nav.save ? {:success => true} : {:success => false})
41
61
  end
42
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
62
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
43
63
  render :json => {:success => false, :message => ex.message}
44
64
  end
45
65
  end
46
66
 
47
- def delete
67
+ def destroy
48
68
  begin
49
69
  current_user.with_capability('delete', 'WebsiteNavItem') do
50
70
  render :json => (WebsiteNav.destroy(params[:id]) ? {:success => true} : {:success => false})
51
71
  end
52
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
72
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
53
73
  render :json => {:success => false, :message => ex.message}
54
74
  end
55
75
  end
@@ -64,7 +84,7 @@ module Knitkit
64
84
  website_nav_item = WebsiteNavItem.new(:title => params[:title])
65
85
 
66
86
  url = params[:url]
67
- if(params[:link_to] != 'url')
87
+ if (params[:link_to] != 'url')
68
88
  #user wants to see Section so this is needed
69
89
  params[:link_to] = 'WebsiteSection' if params[:link_to] == 'website_section'
70
90
 
@@ -88,25 +108,25 @@ module Knitkit
88
108
 
89
109
  result[:success] = true
90
110
  result[:node] = {:text => params[:title],
91
- :linkToType => params[:link_to].underscore,
92
- :linkedToId => linked_to_id,
93
- :websiteId => website_nav.website.id,
94
- :url => url,
95
- :isSecure => false,
96
- :roles => [],
97
- :canAddMenuItems => true,
98
- :websiteNavItemId => website_nav_item.id,
99
- :iconCls => 'icon-document',
100
- :isWebsiteNavItem => true,
101
- :leaf => false,
102
- :children => []}
111
+ :linkToType => params[:link_to].underscore,
112
+ :linkedToId => linked_to_id,
113
+ :websiteNavId => website_nav.id,
114
+ :url => url,
115
+ :isSecure => false,
116
+ :roles => [],
117
+ :canAddMenuItems => true,
118
+ :websiteNavItemId => website_nav_item.id,
119
+ :iconCls => 'icon-document',
120
+ :isWebsiteNavItem => true,
121
+ :leaf => false,
122
+ :children => []}
103
123
  else
104
124
  result[:success] = false
105
125
  end
106
126
 
107
127
  render :json => result
108
128
  end
109
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
129
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
110
130
  render :json => {:success => false, :message => ex.message}
111
131
  end
112
132
  end
@@ -120,7 +140,7 @@ module Knitkit
120
140
 
121
141
  url = params[:url]
122
142
  linked_to_id = nil
123
- if(params[:link_to] != 'url')
143
+ if (params[:link_to] != 'url')
124
144
  #user wants to see Section so this is needed
125
145
  params[:link_to] = 'WebsiteSection' if params[:link_to] == 'website_section'
126
146
 
@@ -147,7 +167,17 @@ module Knitkit
147
167
 
148
168
  render :json => result
149
169
  end
150
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
170
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
171
+ render :json => {:success => false, :message => ex.message}
172
+ end
173
+ end
174
+
175
+ def delete_menu_item
176
+ begin
177
+ current_user.with_capability('delete', 'WebsiteNavItem') do
178
+ render :json => (WebsiteNavItem.destroy(params[:id]) ? {:success => true} : {:success => false})
179
+ end
180
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
151
181
  render :json => {:success => false, :message => ex.message}
152
182
  end
153
183
  end
@@ -176,23 +206,13 @@ module Knitkit
176
206
  end
177
207
  end
178
208
 
179
- render :json => {:success => true, :secured => website_nav_item.is_secured?, :roles => website_nav_item.roles.collect{|item| item.internal_identifier}}
209
+ render :json => {:success => true, :secured => website_nav_item.is_secured?, :roles => website_nav_item.roles.collect { |item| item.internal_identifier }}
180
210
  else
181
211
  render :json => {:success => false, :message => "User does not have capability."}
182
212
  end
183
213
  end
184
214
 
185
- def delete_menu_item
186
- begin
187
- current_user.with_capability('delete', 'WebsiteNavItem') do
188
- render :json => (WebsiteNavItem.destroy(params[:id]) ? {:success => true} : {:success => false})
189
- end
190
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
191
- render :json => {:success => false, :message => ex.message}
192
- end
193
- end
194
-
195
- end#WebsiteNavController
196
- end#Desktop
197
- end#ErpApp
198
- end#Knitkit
215
+ end #WebsiteNavController
216
+ end #Desktop
217
+ end #ErpApp
218
+ end #Knitkit