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
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 35f3ceea0007821006cbca76128f3c66aea5eff0
4
+ data.tar.gz: 391fe91b89b348a7700d28f9764c959a8028d8d0
5
+ SHA512:
6
+ metadata.gz: 21e28ca0baca8b9f90e040a47ffa9a68f6279b3b3970b3c50463894933aaa830b622140c7146175f5b9369aee14b526778b1e5fd9e6c2b8414d3316b04140ffc
7
+ data.tar.gz: 73a2a52a625f305e5382ed4131e471839e81ce5fd844e1cc7ea8aad4b9fbb5e5d0e3dea631f298e5f870f3e01231c4ddf9eb6457a9c3d5a54a3519090f5fc8f3
@@ -41,7 +41,7 @@ module Knitkit
41
41
  end
42
42
  end
43
43
  else
44
- raise "No Id set"
44
+ raise ActionController::RoutingError.new('Not Found')
45
45
  end
46
46
  end
47
47
 
@@ -7,12 +7,17 @@ module Knitkit
7
7
 
8
8
  @comment = content.add_comment({:commentor_name => user.party.description, :email => user.email, :comment => comment})
9
9
 
10
- render :text => (@comment.valid? ? '<div class="sexynotice">Comment pending approval.</div>' : '<div class="sexynotice">Error. Comment cannot be blank.</div>')
10
+ if @comment.valid?
11
+ render :json => {:success => true, :message => 'Comment pending approval'}
12
+ else
13
+ render :json => {:success => false, :message => 'Error. Comment cannot be blank'}
14
+ end
11
15
  end
12
16
 
13
17
  #no section to set
14
18
  def set_section
15
- return false
19
+ false
16
20
  end
21
+
17
22
  end
18
23
  end
@@ -5,66 +5,18 @@ module Knitkit
5
5
  KNIT_KIT_ROOT = Knitkit::Engine.root.to_s
6
6
 
7
7
  def available_roles
8
- render :json => {:success => true, :availableRoles => SecurityRole.order('description ASC').all.collect{|role| role.to_hash(:only => [:internal_identifier, :description])}}
8
+ render :json => {:success => true, :availableRoles => SecurityRole.order('description ASC').all.collect { |role| role.to_hash(:only => [:internal_identifier, :description]) }}
9
9
  end
10
10
 
11
- def websites
12
- websites = Website.order('name ASC').all
13
-
14
- tree = []
15
- websites.each do |website|
16
- @website_primary_host = website.config_value('primary_host')
17
-
18
- website_hash = {
19
- :text => website.name,
20
- :configurationId => website.configurations.first.id,
21
- :iconCls => 'icon-globe_disconnected',
22
- :id => "website_#{website.id}",
23
- :leaf => false,
24
- :url => "http://#{@website_primary_host}",
25
- :name => website.name,
26
- :title => website.title,
27
- :subtitle => website.subtitle,
28
- :isWebsite => true,
29
- :siteName => website.name,
30
- :children => []
31
- }
32
-
33
- #handle hosts
34
- hosts_hash = {:text => 'Hosts', :iconCls => 'icon-gear', :isHostRoot => true, :websiteId => website.id, :leaf => false, :children => []}
35
- website.hosts.each do |website_host|
36
- hosts_hash[:children] << {:text => website_host.attributes['host'], :websiteHostId => website_host.id, :host => website_host.attributes['host'], :iconCls => 'icon-globe', :url => "http://#{website_host.attributes['host']}", :isHost => true, :leaf => true, :children => []}
37
- end
38
-
39
- website_hash[:children] << hosts_hash
40
-
41
- #handle sections
42
- sections_hash = {:text => 'Sections', :isSectionRoot => true, :websiteId => website.id, :iconCls => 'icon-content', :leaf => false, :children => []}
43
- website.website_sections.positioned.each do |website_section|
44
- sections_hash[:children] << build_section_hash(website_section, website)
45
- end
46
-
47
- website_hash[:children] << sections_hash
48
-
49
- #handle menus
50
- menus_hash = {:text => 'Menus', :iconCls => 'icon-content', :isMenuRoot => true, :websiteId => website.id, :leaf => false, :children => []}
51
- website.website_navs.each do |website_nav|
52
- menu_hash = {:text => website_nav.name, :websiteNavId => website_nav.id, :websiteId => website.id, :canAddMenuItems => true, :iconCls => 'icon-index', :isWebsiteNav => true, :leaf => false, :children => []}
53
- menu_hash[:children] = website_nav.website_nav_items.positioned.map{|item|build_menu_item_hash(website, item)}
54
- menus_hash[:children] << menu_hash
55
- end
56
-
57
- website_hash[:children] << menus_hash
11
+ protected
58
12
 
59
- #added website to main tree
60
- tree << website_hash
13
+ def set_website
14
+ if params[:website_id]
15
+ @website = Website.find(params[:website_id])
16
+ @website_primary_host = @website.nil? ? nil : @website.config_value('primary_host')
61
17
  end
62
-
63
- render :json => tree
64
18
  end
65
19
 
66
- protected
67
-
68
20
  def page
69
21
  offset = params[:start].to_f
70
22
  offset > 0 ? ((offset / params[:limit].to_f).to_i + 1) : 1
@@ -74,7 +26,7 @@ module Knitkit
74
26
  params[:limit].nil? ? 20 : params[:limit].to_i
75
27
  end
76
28
 
77
- def build_menu_item_hash(website, item)
29
+ def build_menu_item_hash(item)
78
30
  url = item.url
79
31
  linked_to_item_id = nil
80
32
  link_to_type = 'url'
@@ -85,69 +37,97 @@ module Knitkit
85
37
  end
86
38
 
87
39
  menu_item_hash = {
88
- :text => item.title,
89
- :linkToType => link_to_type,
90
- :canAddMenuItems => true,
91
- :websiteId => website.id,
92
- :isSecured => item.is_secured?,
93
- :roles => item.roles.collect{|item| item.internal_identifier},
94
- :linkedToId => linked_to_item_id,
95
- :websiteNavItemId => item.id,
96
- :url => url,
97
- :iconCls => item.is_secured? ? 'icon-document_lock' : 'icon-document',
98
- :isWebsiteNavItem => true,
99
- :leaf => false
40
+ :text => item.title,
41
+ :linkToType => link_to_type,
42
+ :canAddMenuItems => true,
43
+ :isSecured => item.is_secured?,
44
+ :roles => item.roles.collect { |item| item.internal_identifier },
45
+ :linkedToId => linked_to_item_id,
46
+ :websiteNavItemId => item.id,
47
+ :url => url,
48
+ :iconCls => item.is_secured? ? 'icon-document_lock' : 'icon-document',
49
+ :isWebsiteNavItem => true,
50
+ :leaf => false
100
51
  }
101
52
 
102
- menu_item_hash[:children] = item.positioned_children.map{ |child| build_menu_item_hash(website, child)}
53
+ menu_item_hash[:children] = item.positioned_children.map { |child| build_menu_item_hash(child) }
103
54
 
104
55
  menu_item_hash
105
56
  end
106
57
 
107
- def build_section_hash(website_section, website)
58
+ def build_section_hash(website_section)
108
59
  website_section_hash = {
109
- :text => website_section.title,
110
- :path => website_section.path,
111
- :siteName => website.name,
112
- :siteId => website.id,
113
- :type => website_section.type,
114
- :isSecured => website_section.is_secured?,
115
- :roles => website_section.roles.collect{|item| item.internal_identifier},
116
- :isSection => website_section.is_section?,
117
- :isDocument => website_section.is_document_section?,
118
- :useMarkdown => website_section.use_markdown,
119
- :inMenu => website_section.in_menu,
120
- :renderWithBaseLayout => website_section.render_base_layout?,
121
- :hasLayout => !website_section.layout.blank?,
122
- :id => "section_#{website_section.id}",
123
- :url => "http://#{@website_primary_host}#{website_section.path}",
124
- :internal_identifier => website_section.internal_identifier
60
+ recordType: 'WebsiteSection',
61
+ recordId: website_section.id,
62
+ :text => website_section.title,
63
+ :path => website_section.path,
64
+ :siteName => @website.name,
65
+ :siteId => @website.id,
66
+ :type => website_section.type,
67
+ :isSecured => website_section.is_secured?,
68
+ :roles => website_section.roles.collect { |item| item.internal_identifier },
69
+ :isSection => website_section.is_section?,
70
+ :isDocument => website_section.is_document_section?,
71
+ :useMarkdown => website_section.use_markdown,
72
+ :inMenu => website_section.in_menu,
73
+ :renderWithBaseLayout => website_section.render_base_layout?,
74
+ :hasLayout => !website_section.layout.blank?,
75
+ :id => "section_#{website_section.id}",
76
+ :url => "http://#{@website_primary_host}#{website_section.path}",
77
+ :internal_identifier => website_section.internal_identifier
78
+
125
79
  }
126
- if (website_section.is_a?(OnlineDocumentSection) || website_section.type == 'OnlineDocumentSection')
80
+
81
+ if website_section.is_a?(OnlineDocumentSection) || website_section.type == 'OnlineDocumentSection'
127
82
  document_section = OnlineDocumentSection.find(website_section.id)
128
83
  if document_section.documented_item and document_section.documented_item_content
129
84
  website_section_hash[:contentInfo] = document_section.documented_item_content.content_hash
130
85
  end
131
- end
86
+ end
132
87
 
133
- if website_section.is_a?(Blog) || website_section.type == 'Blog'
88
+ if website_section.is_blog?
89
+ website_section_hash[:objectType] = 'Blog'
134
90
  website_section_hash[:isBlog] = true
135
91
  website_section_hash[:iconCls] = 'icon-blog'
136
- website_section_hash[:leaf] = true
92
+ website_section_hash[:leaf] = false
137
93
  else
138
94
  website_section_hash[:leaf] = false
139
- website_section_hash[:children] = website_section.positioned_children.map {|child| build_section_hash(child, website)}
140
- website_section_hash[:isSecured] ? website_section_hash[:iconCls] = 'icon-document_lock' : website_section_hash[:iconCls] = 'icon-document'
95
+ website_section_hash[:isSecured] ? website_section_hash[:iconCls] = 'icon-section_lock' : website_section_hash[:iconCls] = 'icon-section'
141
96
  end
142
-
143
- if (website_section.is_a?(OnlineDocumentSection) || website_section.type == 'OnlineDocumentSection')
97
+
98
+ if website_section.is_a?(OnlineDocumentSection) || website_section.type == 'OnlineDocumentSection'
144
99
  website_section_hash[:iconCls] = 'icon-document_info'
145
100
  end
146
101
 
147
102
  website_section_hash
148
103
  end
149
-
150
- end#AppController
151
- end#Desktop
152
- end#ErpApp
153
- end#Knitkit
104
+
105
+ def build_article_hash(website_section_content, website, can_edit_excerpt=false)
106
+ website_section = website_section_content.website_section
107
+ content = website_section_content.content
108
+
109
+ {
110
+ recordType: 'Article',
111
+ recordId: website_section_content.id,
112
+ :objectType => "Article",
113
+ :id => content.id,
114
+ :siteId => website.id,
115
+ :content_area => website_section_content.content_area,
116
+ :parentItemId => website_section.id,
117
+ :canEditExcerpt => can_edit_excerpt,
118
+ :tag_list => content.tags.join(', '),
119
+ :text => content.title,
120
+ :position => content.position(website_section.id),
121
+ :display_title => content.display_title,
122
+ :internal_identifier => content.internal_identifier,
123
+ :iconCls => 'icon-article',
124
+ :created_at => content.created_at,
125
+ :updated_at => content.updated_at,
126
+ :leaf => true
127
+ }
128
+ end
129
+
130
+ end #AppController
131
+ end #Desktop
132
+ end #ErpApp
133
+ end #Knitkit
@@ -5,34 +5,47 @@ module Knitkit
5
5
  @@datetime_format = "%m/%d/%Y %l:%M%P"
6
6
 
7
7
  def new
8
- begin
9
- current_user.with_capability('create', 'Content') do
10
- result = {}
11
- website_section_id = params[:section_id]
12
- article = Article.new
13
-
14
- article.tag_list = params[:tags].split(',').collect{|t| t.strip() } unless params[:tags].blank?
15
- article.title = params[:title]
16
- article.internal_identifier = params[:internal_identifier]
17
- article.display_title = params[:display_title] == 'yes'
18
- article.created_by = current_user
19
-
20
- if article.save
21
- unless website_section_id.blank?
22
- website_section = WebsiteSection.find(website_section_id)
23
- article.website_sections << website_section
24
- article.update_content_area_and_position_by_section(website_section, params['content_area'], params['position'])
8
+ ActiveRecord::Base.transaction do
9
+ begin
10
+ current_user.with_capability('create', 'Content') do
11
+ result = {}
12
+ website_section_id = params[:section_id]
13
+ article = Article.new
14
+
15
+ article.tag_list = params[:tags].split(',').collect { |t| t.strip } unless params[:tags].blank?
16
+ article.title = params[:title]
17
+ article.internal_identifier = params[:internal_identifier]
18
+ article.display_title = params[:display_title] == 'yes'
19
+ article.created_by = current_user
20
+
21
+ if article.save
22
+ result[:node] = if website_section_id.blank?
23
+ {:text => params[:title],
24
+ :id => article.id,
25
+ :objectType => 'Article',
26
+ :parentItemId => params[:section_id],
27
+ :siteId => nil,
28
+ :iconCls => 'x-column-header-wysiwyg',
29
+ :leaf => true
30
+ }
31
+ else
32
+ website_section = WebsiteSection.find(website_section_id)
33
+ article.website_sections << website_section
34
+ website_section_content = article.update_content_area_and_position_by_section(website_section, params['content_area'], params['position'])
35
+
36
+ build_article_hash(website_section_content, website_section.website, website_section.is_blog?)
37
+ end
38
+
39
+ result[:success] = true
40
+ else
41
+ result[:success] = false
25
42
  end
26
43
 
27
- result[:success] = true
28
- else
29
- result[:success] = false
44
+ render :json => result
30
45
  end
31
-
32
- render :json => result
46
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
47
+ render :json => {:success => false, :message => ex.message}
33
48
  end
34
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
35
- render :json => {:success => false, :message => ex.message}
36
49
  end
37
50
  end
38
51
 
@@ -43,7 +56,7 @@ module Knitkit
43
56
  website_section_id = params[:section_id]
44
57
  article = Article.find(params[:id])
45
58
 
46
- article.tag_list = params[:tags].split(',').collect{|t| t.strip() } unless params[:tags].blank?
59
+ article.tag_list = params[:tags].split(',').collect { |t| t.strip } unless params[:tags].blank?
47
60
  article.title = params[:title]
48
61
  article.internal_identifier = params[:internal_identifier]
49
62
  article.display_title = params[:display_title] == 'yes'
@@ -62,7 +75,7 @@ module Knitkit
62
75
 
63
76
  render :json => result
64
77
  end
65
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
78
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
66
79
  render :json => {:success => false, :message => ex.message}
67
80
  end
68
81
  end
@@ -72,7 +85,7 @@ module Knitkit
72
85
  current_user.with_capability('delete', 'Content') do
73
86
  render :json => Article.destroy(params[:id]) ? {:success => true} : {:success => false}
74
87
  end
75
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
88
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
76
89
  render :json => {:success => false, :message => ex.message}
77
90
  end
78
91
  end
@@ -82,10 +95,13 @@ module Knitkit
82
95
  current_user.with_capability('add_existing', 'Content') do
83
96
  website_section = WebsiteSection.find(params[:section_id])
84
97
  website_section.contents << Article.find(params[:article_id])
98
+ website_section.save
85
99
 
86
- render :json => {:success => true}
100
+ website_section_content = website_section.website_section_contents.where('content_id = ?', params[:article_id]).first
101
+
102
+ render :json => {:success => true, :article => build_article_hash(website_section_content, website_section.website, website_section.is_blog?)}
87
103
  end
88
- rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability=>ex
104
+ rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
89
105
  render :json => {:success => false, :message => ex.message}
90
106
  end
91
107
  end
@@ -94,6 +110,11 @@ module Knitkit
94
110
  render :inline => Article.all.to_json(:only => [:internal_identifier, :id])
95
111
  end
96
112
 
113
+ def show
114
+ article = Article.find(params[:section_id])
115
+ render :json => article.to_json
116
+ end
117
+
97
118
  def get
98
119
  website_section_id = params[:section_id]
99
120
  section = WebsiteSection.find(website_section_id)
@@ -108,7 +129,7 @@ module Knitkit
108
129
 
109
130
  sort_hash = params[:sort].blank? ? {} : Hash.symbolize_keys(JSON.parse(params[:sort]).first)
110
131
  sort = sort_hash[:property] || sort_default
111
- dir = sort_hash[:direction] || dir_default
132
+ dir = sort_hash[:direction] || dir_default
112
133
  limit = params[:limit] || 10
113
134
  start = params[:start] || 0
114
135
 
@@ -118,6 +139,7 @@ module Knitkit
118
139
 
119
140
  Article.class_exec(website_section_id) do
120
141
  @@website_section_id = website_section_id
142
+
121
143
  def website_section_position
122
144
  self.website_section_contents.find_by_website_section_id(@@website_section_id).position
123
145
  end
@@ -130,8 +152,6 @@ module Knitkit
130
152
  articles_hash[:id] = a.id
131
153
  articles_hash[:title] = a.title
132
154
  articles_hash[:tag_list] = a.tag_list.join(', ')
133
- articles_hash[:body_html] = a.body_html
134
- articles_hash[:excerpt_html] = a.excerpt_html
135
155
  articles_hash[:internal_identifier] = a.internal_identifier
136
156
  articles_hash[:display_title] = a.display_title
137
157
  articles_hash[:position] = a.position(website_section_id)
@@ -147,12 +167,12 @@ module Knitkit
147
167
  Article.include_root_in_json = false
148
168
  sort_hash = params[:sort].blank? ? {} : Hash.symbolize_keys(JSON.parse(params[:sort]).first)
149
169
  sort = sort_hash[:property] || 'title'
150
- dir = sort_hash[:direction] || 'ASC'
170
+ dir = sort_hash[:direction] || 'ASC'
151
171
  limit = params[:limit] || 20
152
172
  start = params[:start] || 0
153
173
 
154
- articles = Article.includes(:website_section_contents)
155
- articles = articles.where( :website_section_contents => { :content_id => nil } ) if params[:show_orphaned] == 'true'
174
+ articles = Article.includes(:website_section_contents)
175
+ articles = articles.where(:website_section_contents => {:content_id => nil}) if params[:show_orphaned] == 'true'
156
176
  articles = articles.where("UPPER(contents.internal_identifier) LIKE UPPER('%#{params[:iid]}%')") unless params[:iid].blank?
157
177
  articles = articles.where("UPPER(contents.title) LIKE UPPER('%#{params[:title]}%')") unless params[:title].blank?
158
178
  articles = articles.where("UPPER(contents.body_html) LIKE UPPER('%#{params[:content]}%')
@@ -165,7 +185,7 @@ module Knitkit
165
185
  articles.each do |a|
166
186
  articles_hash = {}
167
187
  articles_hash[:id] = a.id
168
- articles_hash[:sections] = a.website_sections.collect{|section| section.title}.join(',')
188
+ articles_hash[:sections] = a.website_sections.collect { |section| section.title }.join(',')
169
189
  articles_hash[:title] = a.title
170
190
  articles_hash[:tag_list] = a.tag_list.join(', ')
171
191
  articles_hash[:body_html] = a.body_html
@@ -187,7 +207,7 @@ module Knitkit
187
207
  def article_attributes
188
208
  sort_hash = params[:sort].blank? ? {} : Hash.symbolize_keys(JSON.parse(params[:sort]).first)
189
209
  sort = sort_hash[:property] || 'created_at'
190
- dir = sort_hash[:direction] || 'DESC'
210
+ dir = sort_hash[:direction] || 'DESC'
191
211
  limit = params[:limit] || 40
192
212
  start = params[:start] || 0
193
213
 
@@ -197,15 +217,15 @@ module Knitkit
197
217
 
198
218
  if dir == "DESC"
199
219
  if sort == "data_type" or sort == "description"
200
- attributes = attributes.sort {|x,y| x.attribute_type.send(sort) <=> y.attribute_type.send(sort)}
220
+ attributes = attributes.sort { |x, y| x.attribute_type.send(sort) <=> y.attribute_type.send(sort) }
201
221
  else
202
- attributes = attributes.sort {|x,y| x.send(sort) <=> y.send(sort)}
222
+ attributes = attributes.sort { |x, y| x.send(sort) <=> y.send(sort) }
203
223
  end
204
224
  else
205
225
  if sort == "data_type" or sort == "description"
206
- attributes = attributes.sort {|x,y| y.attribute_type.send(sort) <=> x.attribute_type.send(sort)}
226
+ attributes = attributes.sort { |x, y| y.attribute_type.send(sort) <=> x.attribute_type.send(sort) }
207
227
  else
208
- attributes = attributes.sort {|x,y| y.send(sort) <=> x.send(sort)}
228
+ attributes = attributes.sort { |x, y| y.send(sort) <=> x.send(sort) }
209
229
  end
210
230
  end
211
231
 
@@ -277,8 +297,8 @@ module Knitkit
277
297
  render :json => result
278
298
  end
279
299
 
280
- end#ArticlesController
281
- end#Desktop
282
- end#ErpApp
283
- end#Knitkit
300
+ end #ArticlesController
301
+ end #Desktop
302
+ end #ErpApp
303
+ end #Knitkit
284
304