knitkit 2.0.0 → 2.0.1

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 (185) hide show
  1. data/README.md +22 -0
  2. data/app/controllers/knitkit/base_controller.rb +15 -2
  3. data/app/controllers/knitkit/blogs_controller.rb +4 -4
  4. data/app/controllers/knitkit/erp_app/desktop/app_controller.rb +16 -2
  5. data/app/controllers/knitkit/erp_app/desktop/articles_controller.rb +198 -57
  6. data/app/controllers/knitkit/erp_app/desktop/content_controller.rb +25 -11
  7. data/app/controllers/knitkit/erp_app/desktop/file_assets_controller.rb +123 -44
  8. data/app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb +83 -9
  9. data/app/controllers/knitkit/erp_app/desktop/online_document_sections_controller.rb +38 -0
  10. data/app/controllers/knitkit/erp_app/desktop/position_controller.rb +15 -6
  11. data/app/controllers/knitkit/erp_app/desktop/theme_controller.rb +185 -98
  12. data/app/controllers/knitkit/erp_app/desktop/versions_controller.rb +38 -16
  13. data/app/controllers/knitkit/erp_app/desktop/website_controller.rb +126 -68
  14. data/app/controllers/knitkit/erp_app/desktop/website_nav_controller.rb +154 -107
  15. data/app/controllers/knitkit/erp_app/desktop/website_section_controller.rb +113 -54
  16. data/app/controllers/knitkit/online_document_sections_controller.rb +45 -0
  17. data/app/controllers/knitkit/unauthorized_controller.rb +5 -0
  18. data/app/controllers/knitkit/website_sections_controller.rb +8 -9
  19. data/app/mailers/document_mailer.rb +10 -0
  20. data/app/models/article.rb +1 -1
  21. data/app/models/content.rb +35 -3
  22. data/app/models/document.rb +8 -0
  23. data/app/models/document_type.rb +3 -0
  24. data/app/models/documented_content.rb +29 -0
  25. data/app/models/documented_item.rb +31 -0
  26. data/app/models/extensions/configuration.rb +5 -0
  27. data/app/models/extensions/party.rb +13 -0
  28. data/app/models/online_document_section.rb +40 -0
  29. data/app/models/theme.rb +22 -26
  30. data/app/models/valid_document.rb +4 -0
  31. data/app/models/website.rb +158 -119
  32. data/app/models/website_inquiry.rb +7 -2
  33. data/app/models/website_inquiry_mailer.rb +4 -3
  34. data/app/models/website_party_role.rb +5 -0
  35. data/app/models/website_section.rb +76 -38
  36. data/app/views/document_mailer/email_document.html.erb +12 -0
  37. data/app/views/knitkit/blogs/_add_comment.html.erb +2 -2
  38. data/app/views/knitkit/online_document_sections/index.html.erb +149 -0
  39. data/app/views/knitkit/website_sections/index.html.erb +0 -1
  40. data/app/views/layouts/knitkit/base.html.erb +4 -2
  41. data/app/views/layouts/knitkit/online_document_sections.html.erb +59 -0
  42. data/app/views/menus/knitkit/_default_menu.html.erb +1 -1
  43. data/app/views/menus/knitkit/_default_section_menu.html.erb +1 -1
  44. data/app/views/menus/knitkit/_default_sub_menu.html.erb +2 -2
  45. data/app/views/menus/knitkit/_default_sub_section_menu.html.erb +1 -1
  46. data/app/widgets/contact_us/base.rb +5 -5
  47. data/app/widgets/contact_us/javascript/contact_us.js +2 -1
  48. data/app/widgets/google_map/base.rb +0 -4
  49. data/app/widgets/google_map/javascript/google_map.js +4 -3
  50. data/app/widgets/login/base.rb +0 -5
  51. data/app/widgets/login/javascript/login.js +155 -153
  52. data/app/widgets/login/views/index.html.erb +3 -3
  53. data/app/widgets/login/views/reset_password.html.erb +2 -2
  54. data/app/widgets/manage_profile/base.rb +46 -67
  55. data/app/widgets/manage_profile/javascript/manage_profile.js +2 -1
  56. data/app/widgets/manage_profile/views/_user_information_form.html.erb +5 -1
  57. data/app/widgets/reset_password/base.rb +4 -6
  58. data/app/widgets/reset_password/javascript/reset_password.js +2 -1
  59. data/app/widgets/reset_password/views/index.html.erb +4 -3
  60. data/app/widgets/search/base.rb +1 -5
  61. data/app/widgets/search/javascript/search.js +2 -1
  62. data/app/widgets/search/views/show.html.erb +2 -2
  63. data/app/widgets/signup/base.rb +7 -6
  64. data/app/widgets/signup/javascript/signup.js +2 -1
  65. data/app/widgets/signup/views/error.html.erb +1 -1
  66. data/config/routes.rb +6 -2
  67. data/db/data_migrations/20110509223702_add_publisher_role.rb +10 -0
  68. data/db/data_migrations/20111118182910_setup_knitkit_capabilities.rb +84 -0
  69. data/db/data_migrations/20120127144444_create_website_role_types.rb +13 -0
  70. data/db/data_migrations/20120127150505_create_website_default_configuration.rb +72 -0
  71. data/db/data_migrations/20120127150506_add_primary_host_to_website_configuration.rb +33 -0
  72. data/db/data_migrations/20120316150424_add_is_template_to_default_website_config.rb +16 -0
  73. data/db/data_migrations/upgrade/20120210195616_add_website_configs.rb +19 -0
  74. data/db/data_migrations/upgrade/20120213205519_populate_website_iids.rb +17 -0
  75. data/db/migrate/20110211002317_setup_knitkit.rb +22 -5
  76. data/db/migrate/20111207161928_create_documented_items_table.rb +13 -0
  77. data/db/migrate/20111208180539_add_document_id_to_documented_item.rb +9 -0
  78. data/db/migrate/20120315163736_add_document.rb +32 -0
  79. data/db/migrate/20120503183431_create_valid_documents.rb +16 -0
  80. data/db/migrate/upgrade/20120116201510_add_render_base_layout_flag.rb +13 -0
  81. data/db/migrate/upgrade/20120127143745_create_website_party_roles.rb +24 -0
  82. data/db/migrate/upgrade/20120213184509_add_iid_to_websites.rb +14 -0
  83. data/lib/knitkit.rb +2 -0
  84. data/lib/knitkit/config.rb +31 -0
  85. data/lib/knitkit/engine.rb +12 -3
  86. data/lib/knitkit/extensions.rb +1 -3
  87. data/lib/knitkit/extensions/action_controller/theme_support/acts_as_themed_controller.rb +2 -3
  88. data/lib/knitkit/extensions/active_record/acts_as_document.rb +63 -0
  89. data/lib/knitkit/extensions/active_record/acts_as_publishable.rb +5 -4
  90. data/lib/knitkit/extensions/compass_ae/widgets/base.rb +70 -0
  91. data/lib/knitkit/extensions/railties/action_view.rb +22 -10
  92. data/lib/knitkit/extensions/railties/theme_support/asset_tag_helper.rb +3 -3
  93. data/lib/knitkit/extensions/railties/theme_support/theme_file_resolver.rb +8 -3
  94. data/lib/knitkit/routing_filter/section_router.rb +16 -6
  95. data/lib/knitkit/version.rb +7 -1
  96. data/public/images/check.png +0 -0
  97. data/public/images/credit_card.png +0 -0
  98. data/public/images/knitkit/tooltip.gif +0 -0
  99. data/public/javascripts/ajax_pagination.js +33 -0
  100. data/public/javascripts/datepicker.js +6 -1
  101. data/public/javascripts/erp_app/desktop/applications/knitkit/articles_grid_panel.js +731 -258
  102. data/public/javascripts/erp_app/desktop/applications/knitkit/center_region.js +289 -238
  103. data/public/javascripts/erp_app/desktop/applications/knitkit/comments_grid_panel.js +2 -4
  104. data/public/javascripts/erp_app/desktop/applications/knitkit/east_region.js +29 -3
  105. data/public/javascripts/erp_app/desktop/applications/knitkit/file_assets_panel.js +193 -21
  106. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_data_view.js +27 -26
  107. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_panel.js +167 -20
  108. data/public/javascripts/erp_app/desktop/applications/knitkit/inquiries_grid_panel.js +1 -2
  109. data/public/javascripts/erp_app/desktop/applications/knitkit/module.js +5 -1
  110. data/public/javascripts/erp_app/desktop/applications/knitkit/publish_window.js +2 -2
  111. data/public/javascripts/erp_app/desktop/applications/knitkit/published_grid_panel.js +20 -11
  112. data/public/javascripts/erp_app/desktop/applications/knitkit/section_articles_grid_panel.js +279 -228
  113. data/public/javascripts/erp_app/desktop/applications/knitkit/themes_tree_panel.js +40 -40
  114. data/public/javascripts/erp_app/desktop/applications/knitkit/versions_grid_panel.js +83 -76
  115. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region.js +1961 -1397
  116. data/public/javascripts/erp_app/desktop/applications/knitkit/widgets_panel.js +47 -43
  117. data/public/javascripts/knitkit/helpers.js +26 -0
  118. data/public/stylesheets/erp_app/desktop/applications/knitkit/knitkit.css +1 -2
  119. data/public/stylesheets/knitkit/documentation.css +50 -0
  120. data/public/stylesheets/knitkit/style.css +23 -1
  121. data/spec/controllers/knitkit/erp_app/desktop/articles_controller_spec.rb +8 -0
  122. data/spec/controllers/knitkit/erp_app/desktop/website_controller_spec.rb +396 -0
  123. data/spec/controllers/knitkit/erp_app/desktop/website_nav_controller_spec.rb +260 -0
  124. data/spec/controllers/knitkit/erp_app/desktop/website_section_controller_spec.rb +222 -0
  125. data/spec/dummy/Rakefile +7 -0
  126. data/spec/dummy/app/assets/javascripts/application.js +9 -0
  127. data/spec/dummy/app/assets/stylesheets/application.css +7 -0
  128. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  129. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  130. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  131. data/spec/dummy/config.ru +4 -0
  132. data/spec/dummy/config/application.rb +43 -0
  133. data/spec/dummy/config/boot.rb +10 -0
  134. data/spec/dummy/config/database.yml +8 -0
  135. data/spec/dummy/config/environment.rb +5 -0
  136. data/spec/dummy/config/environments/spec.rb +27 -0
  137. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  138. data/spec/dummy/config/initializers/inflections.rb +10 -0
  139. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  140. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  141. data/spec/dummy/config/initializers/session_store.rb +8 -0
  142. data/spec/dummy/config/initializers/wrap_parameters.rb +12 -0
  143. data/spec/dummy/config/locales/en.yml +5 -0
  144. data/spec/dummy/config/routes.rb +4 -0
  145. data/spec/dummy/config/workflow.yml +1 -0
  146. data/spec/dummy/public/404.html +26 -0
  147. data/spec/dummy/public/422.html +26 -0
  148. data/spec/dummy/public/500.html +26 -0
  149. data/spec/dummy/public/favicon.ico +0 -0
  150. data/spec/dummy/script/rails +6 -0
  151. data/spec/factories/article.rb +4 -0
  152. data/spec/factories/basic.rb +3 -0
  153. data/spec/factories/blog.rb +5 -0
  154. data/spec/factories/documented_content.rb +4 -0
  155. data/spec/factories/documented_item.rb +4 -0
  156. data/spec/factories/online_document_section.rb +6 -0
  157. data/spec/factories/published_website.rb +4 -0
  158. data/spec/factories/theme.rb +6 -0
  159. data/spec/factories/website.rb +5 -0
  160. data/spec/factories/website_host.rb +4 -0
  161. data/spec/factories/website_nav.rb +5 -0
  162. data/spec/factories/website_nav_item.rb +4 -0
  163. data/spec/factories/website_section.rb +5 -0
  164. data/spec/models/article_spec.rb +35 -0
  165. data/spec/models/attribute_type_spec.rb +55 -0
  166. data/spec/models/attribute_value_spec.rb +114 -0
  167. data/spec/models/blog_spec.rb +16 -0
  168. data/spec/models/comment_spec.rb +11 -0
  169. data/spec/models/content_spec.rb +187 -0
  170. data/spec/models/documented_item_spec.rb +29 -0
  171. data/spec/models/online_document_section_spec.rb +34 -0
  172. data/spec/models/published_element_spec.rb +11 -0
  173. data/spec/models/published_website_spec.rb +11 -0
  174. data/spec/models/theme_spec.rb +12 -0
  175. data/spec/models/website_host_spec.rb +11 -0
  176. data/spec/models/website_inquiry_spec.rb +24 -0
  177. data/spec/models/website_nav_item_spec.rb +11 -0
  178. data/spec/models/website_nav_spec.rb +11 -0
  179. data/spec/models/website_section_content_spec.rb +11 -0
  180. data/spec/models/website_section_spec.rb +49 -0
  181. data/spec/models/website_spec.rb +146 -0
  182. data/spec/spec_helper.rb +61 -0
  183. metadata +391 -154
  184. data/app/controllers/knitkit/articles_controller.rb +0 -7
  185. data/lib/knitkit/extensions/compass/widgets/base.rb +0 -53
@@ -9,6 +9,10 @@ module Widgets
9
9
 
10
10
  def new
11
11
  @website = Website.find_by_host(request.host_with_port)
12
+ @configuration = @website.configurations.first
13
+ password_config_option = @configuration.get_item(ConfigurationItemType.find_by_internal_identifier('password_strength_regex')).options.first
14
+ primary_host = @configuration.get_item(ConfigurationItemType.find_by_internal_identifier('primary_host')).options.first
15
+
12
16
  @email = params[:email]
13
17
  @user = User.new(
14
18
  :email => @email,
@@ -16,9 +20,11 @@ module Widgets
16
20
  :password => params[:password],
17
21
  :password_confirmation => params[:password_confirmation]
18
22
  )
23
+ @user.password_validator = {:regex => password_config_option.value, :error_message => password_config_option.comment}
19
24
  #set this to tell activation where to redirect_to for login and temp password
20
25
  @user.add_instance_attribute(:login_url,params[:login_url])
21
- @user.add_instance_attribute(:temp_password, params[:password]);
26
+ @user.add_instance_attribute(:temp_password, params[:password])
27
+ @user.add_instance_attribute(:domain, primary_host.value)
22
28
  begin
23
29
  if @user.save
24
30
  @user.roles << @website.role
@@ -29,7 +35,6 @@ module Widgets
29
35
  else
30
36
  render :update => {:id => "#{@uuid}_result", :view => :error}
31
37
  end
32
- render :json => {:success => success, :message => message}
33
38
  rescue Exception=>ex
34
39
  logger.error ex.message
35
40
  logger.error ex.backtrace
@@ -47,10 +52,6 @@ module Widgets
47
52
  def title
48
53
  "Sign Up"
49
54
  end
50
-
51
- def views_location
52
- File.join(File.dirname(__FILE__),"/views")
53
- end
54
55
 
55
56
  def widget_name
56
57
  File.basename(File.dirname(__FILE__))
@@ -7,7 +7,8 @@ Compass.ErpApp.Widgets.Signup = {
7
7
  Compass.ErpApp.Widgets.AvailableWidgets.push({
8
8
  name:'Signup',
9
9
  iconUrl:'/images/icons/user/user_48x48.png',
10
- onClick:Compass.ErpApp.Widgets.Signup.addSignup
10
+ onClick:Compass.ErpApp.Widgets.Signup.addSignup,
11
+ about:'This widget allows new users of a website to sign up.'
11
12
  });
12
13
 
13
14
 
@@ -3,7 +3,7 @@
3
3
  <%if !@user.errors.empty?%>
4
4
  <h3>Please address the following issues</h3>
5
5
  <ul>
6
- <% @user.errors.full_messages.each do |msg| %>
6
+ <% @user.errors.messages.collect{|k,v| v}.flatten.each do |msg| %>
7
7
  <li><%=msg%></li>
8
8
  <% end %>
9
9
  </ul>
data/config/routes.rb CHANGED
@@ -2,14 +2,16 @@ Rails.application.routes.draw do
2
2
  filter :section_router
3
3
 
4
4
  get 'pages/:section_id' => 'knitkit/website_sections#index', :as => 'page'
5
- get 'pages/:section_id/:id' => 'knitkit/articles#show', :as => 'page_article'
5
+ get 'onlinedocumentsections/:section_id' => 'knitkit/online_document_sections#index', :as => 'document'
6
+ #get 'onlinedocumentsections/:section_id/:id' => 'knitkit/online_document_sections#show', :as => 'document'
6
7
  get 'blogs/:section_id(.:format)' => 'knitkit/blogs#index', :as => 'blogs'
7
8
  get 'blogs/:section_id/:id' => 'knitkit/blogs#show', :as => 'blog_article'
8
9
  get 'blogs/:section_id/tag/:tag_id(.:format)' => 'knitkit/blogs#tag', :as => 'blog_tag'
9
10
 
10
11
  match '/comments/add/:section_id/:content_id' => 'knitkit/comments#add', :as => 'comments'
11
- match '/unauthorized' => 'unauthorized#index', :as => 'knitkit/unauthorized'
12
+ match '/unauthorized' => 'knitkit/unauthorized#index', :as => 'knitkit/unauthorized'
12
13
  match '/view_current_publication' => 'knitkit/base#view_current_publication'
14
+ match '/online_document_sections/build_tree' => 'knitkit/online_document_sections#build_tree'
13
15
  end
14
16
 
15
17
  Knitkit::Engine.routes.draw do
@@ -26,6 +28,8 @@ Knitkit::Engine.routes.draw do
26
28
  match '/erp_app/desktop/site(/:action)' => 'erp_app/desktop/website'
27
29
  #section
28
30
  match '/erp_app/desktop/section/:action' => 'erp_app/desktop/website_section'
31
+ #document
32
+ match '/erp_app/desktop/online_document_sections/:action' => 'erp_app/desktop/online_document_sections'
29
33
  #theme
30
34
  match '/erp_app/desktop/theme/:action' => 'erp_app/desktop/theme'
31
35
  #versions
@@ -2,10 +2,20 @@ class AddPublisherRole
2
2
 
3
3
  def self.up
4
4
  Role.create(:internal_identifier => 'publisher', :description => 'Publisher')
5
+ Role.create(:internal_identifier => 'content_author', :description => 'Content Author')
6
+ Role.create(:internal_identifier => 'layout_author', :description => 'Layout Author')
7
+ Role.create(:internal_identifier => 'editor', :description => 'Editor')
8
+ Role.create(:internal_identifier => 'designer', :description => 'Designer')
9
+ Role.create(:internal_identifier => 'website_author', :description => 'Website Author')
5
10
  end
6
11
 
7
12
  def self.down
8
13
  Role.iid('publisher').destroy
14
+ Role.iid('content_author').destroy
15
+ Role.iid('layout_author').destroy
16
+ Role.iid('editor').destroy
17
+ Role.iid('designer').destroy
18
+ Role.iid('website_author').destroy
9
19
  end
10
20
 
11
21
  end
@@ -0,0 +1,84 @@
1
+ class SetupKnitkitCapabilities
2
+
3
+ def self.up
4
+ Role.create(:internal_identifier => 'content_author', :description => 'Content Author') unless Role.find_by_internal_identifier("content_author")
5
+ Role.create(:internal_identifier => 'layout_author', :description => 'Layout Author') unless Role.find_by_internal_identifier("layout_author")
6
+ Role.create(:internal_identifier => 'editor', :description => 'Editor') unless Role.find_by_internal_identifier("editor")
7
+ Role.create(:internal_identifier => 'designer', :description => 'Designer') unless Role.find_by_internal_identifier("designer")
8
+ Role.create(:internal_identifier => 'website_author', :description => 'Website Author') unless Role.find_by_internal_identifier("website_author")
9
+
10
+ CapabilityType.create(:internal_identifier => 'import', :description => 'Import')
11
+ CapabilityType.create(:internal_identifier => 'publish', :description => 'Publish')
12
+ CapabilityType.create(:internal_identifier => 'activate', :description => 'Activate')
13
+ CapabilityType.create(:internal_identifier => 'secure', :description => 'Secure')
14
+ CapabilityType.create(:internal_identifier => 'unsecure', :description => 'Unsecure')
15
+ CapabilityType.create(:internal_identifier => 'revert_version', :description => 'Revert Version')
16
+ CapabilityType.create(:internal_identifier => 'add_existing', :description => 'Add Existing')
17
+ CapabilityType.create(:internal_identifier => 'upload', :description => 'Upload')
18
+ CapabilityType.create(:internal_identifier => 'edit_html', :description => 'Edit Html')
19
+ CapabilityType.create(:internal_identifier => 'edit_excerpt', :description => 'Edit Excerpt')
20
+ CapabilityType.create(:internal_identifier => 'drag_item', :description => 'Drag Item')
21
+
22
+ knitkit_application = DesktopApplication.find_by_internal_identifier('knitkit')
23
+ knitkit_application.add_capability('create', 'Menu', 'admin', 'website_author')
24
+ knitkit_application.add_capability('delete', 'Menu', 'admin', 'website_author')
25
+ knitkit_application.add_capability('edit', 'Menu', 'admin', 'website_author')
26
+
27
+ knitkit_application.add_capability('create', 'Website', 'admin', 'website_author')
28
+ knitkit_application.add_capability('delete', 'Website', 'admin', 'website_author')
29
+ knitkit_application.add_capability('edit', 'Website', 'admin', 'website_author')
30
+ knitkit_application.add_capability('import', 'Website', 'admin', 'website_author')
31
+ knitkit_application.add_capability('publish', 'Website', 'admin', 'publisher')
32
+ knitkit_application.add_capability('activate', 'Website', 'admin', 'publisher')
33
+
34
+ knitkit_application.add_capability('create', 'Host', 'admin', 'website_author')
35
+ knitkit_application.add_capability('delete', 'Host', 'admin', 'website_author')
36
+ knitkit_application.add_capability('edit', 'Host', 'admin', 'website_author')
37
+
38
+ knitkit_application.add_capability('create', 'Section', 'admin', 'website_author')
39
+ knitkit_application.add_capability('delete', 'Section', 'admin', 'website_author')
40
+ knitkit_application.add_capability('edit', 'Section', 'admin', 'website_author')
41
+ knitkit_application.add_capability('secure', 'Section', 'admin', 'website_author')
42
+ knitkit_application.add_capability('unsecure', 'Section', 'admin', 'website_author')
43
+
44
+ knitkit_application.add_capability('create', 'Layout', 'admin', 'layout_author')
45
+ knitkit_application.add_capability('edit', 'Layout', 'admin', 'layout_author')
46
+
47
+ knitkit_application.add_capability('create', 'Article', 'admin', 'content_author')
48
+ knitkit_application.add_capability('delete', 'Article', 'admin', 'content_author')
49
+ knitkit_application.add_capability('edit', 'Article', 'admin', 'content_author')
50
+ knitkit_application.add_capability('publish', 'Article', 'admin', 'content_author')
51
+ knitkit_application.add_capability('revert_version', 'Article', 'admin', 'content_author')
52
+ knitkit_application.add_capability('add_existing', 'Article', 'admin', 'content_author')
53
+ knitkit_application.add_capability('edit_html', 'Article', 'admin', 'content_author')
54
+ knitkit_application.add_capability('edit_excerpt', 'Article', 'admin', 'content_author')
55
+
56
+ knitkit_application.add_capability('create', 'MenuItem', 'admin', 'website_author')
57
+ knitkit_application.add_capability('delete', 'MenuItem', 'admin', 'website_author')
58
+ knitkit_application.add_capability('edit', 'MenuItem', 'admin', 'website_author')
59
+ knitkit_application.add_capability('secure', 'MenuItem', 'admin', 'website_author')
60
+ knitkit_application.add_capability('unsecure', 'MenuItem', 'admin', 'website_author')
61
+
62
+ knitkit_application.add_capability('view', 'Theme', 'admin', 'designer')
63
+
64
+ knitkit_application.add_capability('view', 'SiteImageAsset', 'admin', 'website_author', 'content_author')
65
+
66
+ knitkit_application.add_capability('view', 'GlobalImageAsset', 'admin', 'website_author', 'content_author')
67
+ knitkit_application.add_capability('upload', 'GlobalImageAsset', 'admin', 'website_author')
68
+ knitkit_application.add_capability('delete', 'GlobalImageAsset', 'admin', 'website_author')
69
+
70
+ knitkit_application.add_capability('view', 'SiteFileAsset', 'admin', 'website_author', 'content_author')
71
+
72
+ knitkit_application.add_capability('view', 'GlobalFileAsset', 'admin', 'website_author', 'content_author')
73
+ knitkit_application.add_capability('upload', 'GlobalFileAsset', 'admin', 'website_author')
74
+ knitkit_application.add_capability('delete', 'GlobalFileAsset', 'admin', 'website_author')
75
+
76
+ knitkit_application.add_capability('drag_item', 'WebsiteTree', 'admin', 'website_author')
77
+ end
78
+
79
+ def self.down
80
+ knitkit_application = DesktopApplication.find_by_internal_identifier('knitkit')
81
+ knitkit_application.remove_all_capabilities
82
+ end
83
+
84
+ end
@@ -0,0 +1,13 @@
1
+ class CreateWebsiteRoleTypes
2
+
3
+ def self.up
4
+ RoleType.create(:description => 'Website Owner', :internal_identifier => 'website_owner')
5
+ RoleType.create(:description => 'Website Member', :internal_identifier => 'website_member')
6
+ end
7
+
8
+ def self.down
9
+ RoleType.website_owner.destroy
10
+ RoleType.website_member.destroy
11
+ end
12
+
13
+ end
@@ -0,0 +1,72 @@
1
+ class CreateWebsiteDefaultConfiguration
2
+
3
+ def self.up
4
+ unless ::Configuration.find_template('default_website_configuration')
5
+ website_setup_category = Category.create(:description => 'Website Setup', :internal_identifier => 'website_setup')
6
+
7
+ #configuration
8
+ configuration = Configuration.create(
9
+ :description => 'Default Website Configuration',
10
+ :internal_identifier => 'default_website_configuration',
11
+ :is_template => true
12
+ )
13
+
14
+ login_url_config_item_type = ConfigurationItemType.create(
15
+ :description => 'Login Url',
16
+ :internal_identifier => 'login_url',
17
+ :allow_user_defined_options => true
18
+ )
19
+ CategoryClassification.create(:category => website_setup_category, :classification => login_url_config_item_type)
20
+ configuration.configuration_item_types << login_url_config_item_type
21
+
22
+ home_page_url_config_item_type = ConfigurationItemType.create(
23
+ :description => 'Homepage Url',
24
+ :internal_identifier => 'homepage_url',
25
+ :allow_user_defined_options => true
26
+ )
27
+ CategoryClassification.create(:category => website_setup_category, :classification => home_page_url_config_item_type)
28
+ configuration.configuration_item_types << home_page_url_config_item_type
29
+
30
+ contact_us_email_address_item_type = ConfigurationItemType.create(
31
+ :description => 'Contact Us Email',
32
+ :internal_identifier => 'contact_us_email_address',
33
+ :allow_user_defined_options => true
34
+ )
35
+ CategoryClassification.create(:category => website_setup_category, :classification => contact_us_email_address_item_type)
36
+ configuration.configuration_item_types << contact_us_email_address_item_type
37
+
38
+ #password strength
39
+ simple_password_option = ConfigurationOption.create(
40
+ :description => 'Simple password',
41
+ :comment => 'must be at least 8 characters long and start and end with a letter',
42
+ :internal_identifier => 'simple_password_regex',
43
+ :value => '^[A-Za-z]\w{6,}[A-Za-z]$'
44
+ )
45
+
46
+ complex_password_option = ConfigurationOption.create(
47
+ :description => 'Complex password',
48
+ :comment => 'must be at least 10 characters, must contain at least one lower case letter, one upper case letter, one digit and one special character, valid special characters are @#$%^&+=',
49
+ :internal_identifier => 'complex_password_regex',
50
+ :value => '^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$'
51
+ )
52
+
53
+ password_strength_config_item_type = ConfigurationItemType.create(
54
+ :description => 'Password Strength',
55
+ :internal_identifier => 'password_strength_regex'
56
+ )
57
+ CategoryClassification.create(:category => website_setup_category, :classification => password_strength_config_item_type)
58
+
59
+ password_strength_config_item_type.configuration_options << complex_password_option
60
+ password_strength_config_item_type.add_default_configuration_option(simple_password_option)
61
+ password_strength_config_item_type.save
62
+ configuration.configuration_item_types << password_strength_config_item_type
63
+
64
+ configuration.save
65
+ end
66
+ end
67
+
68
+ def self.down
69
+ #remove data here
70
+ end
71
+
72
+ end
@@ -0,0 +1,33 @@
1
+ class AddPrimaryHostToWebsiteConfiguration
2
+
3
+ def self.up
4
+ unless ConfigurationItemType.find_by_internal_identifier('primary_host')
5
+ website_setup_category = Category.find_by_internal_identifier('website_setup')
6
+ configuration = ::Configuration.find_template('default_website_configuration')
7
+
8
+ primary_host_config_item_type = ConfigurationItemType.create(
9
+ :description => 'Primary Host',
10
+ :internal_identifier => 'primary_host',
11
+ :allow_user_defined_options => true
12
+ )
13
+ CategoryClassification.create(:category => website_setup_category, :classification => primary_host_config_item_type)
14
+ configuration.configuration_item_types << primary_host_config_item_type
15
+ configuration.save
16
+
17
+ #update existing websites
18
+ Website.all.each do |website|
19
+ website_config = website.configurations.first
20
+ if(website_config.internal_identifier == 'default_website_configuration')
21
+ website_config.configuration_item_types << primary_host_config_item_type
22
+ website_config.add_configuration_item(primary_host_config_item_type, website.hosts.first.host)
23
+ website_config.save
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ def self.down
30
+ #remove data here
31
+ end
32
+
33
+ end
@@ -0,0 +1,16 @@
1
+ class AddIsTemplateToDefaultWebsiteConfig
2
+
3
+ def self.up
4
+ default_website_config = Configuration.where('internal_identifier = ?', 'default_website_configuration').all
5
+ unless default_website_config.empty?
6
+ config = default_website_config.find{|config| config.websites.empty?}
7
+ config.is_template = true
8
+ config.save
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ #remove data here
14
+ end
15
+
16
+ end
@@ -0,0 +1,19 @@
1
+ class AddWebsiteConfigs
2
+
3
+ def self.up
4
+ #insert data here
5
+ Website.all.each do |w|
6
+ if w.configurations.empty?
7
+ config = Configuration.find_by_internal_identifier('default_website_configuration').clone(true)
8
+ config.update_configuration_item(ConfigurationItemType.find_by_internal_identifier('contact_us_email_address'), w.email)
9
+ w.configurations << config
10
+ w.save
11
+ end
12
+ end
13
+ end
14
+
15
+ def self.down
16
+ #remove data here
17
+ end
18
+
19
+ end
@@ -0,0 +1,17 @@
1
+ class PopulateWebsiteIids
2
+
3
+ def self.up
4
+ #insert data here
5
+ Website.all.each do |w|
6
+ if w.internal_identifier.blank?
7
+ w.internal_identifier = "site-#{w.id}"
8
+ w.save
9
+ end
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ #remove data here
15
+ end
16
+
17
+ end
@@ -6,6 +6,7 @@ class SetupKnitkit < ActiveRecord::Migration
6
6
  t.string :name
7
7
  t.string :title
8
8
  t.string :subtitle
9
+ t.string :internal_identifier
9
10
  t.string :email
10
11
  t.boolean :auto_activate_publication
11
12
  t.boolean :email_inquiries
@@ -47,6 +48,7 @@ class SetupKnitkit < ActiveRecord::Migration
47
48
  t.integer :position, :default => 0
48
49
  t.string :internal_identifier
49
50
  t.integer :version
51
+ t.boolean :render_base_layout, :default => true
50
52
 
51
53
  #better nested set columns
52
54
  t.integer :parent_id
@@ -132,7 +134,7 @@ class SetupKnitkit < ActiveRecord::Migration
132
134
  create_table :published_websites do |t|
133
135
  t.references :website
134
136
  t.text :comment
135
- t.decimal :version
137
+ t.decimal :version, :precision => 18, :scale => 6
136
138
  t.boolean :active
137
139
  t.integer :published_by_id
138
140
 
@@ -215,7 +217,7 @@ class SetupKnitkit < ActiveRecord::Migration
215
217
 
216
218
  add_index :website_navs, :website_id
217
219
  end
218
-
220
+
219
221
  unless table_exists?(:tags)
220
222
  create_table :tags do |t|
221
223
  t.column :name, :string
@@ -228,12 +230,12 @@ class SetupKnitkit < ActiveRecord::Migration
228
230
  t.column :taggable_id, :integer
229
231
  t.column :tagger_id, :integer
230
232
  t.column :tagger_type, :string
231
-
233
+
232
234
  # You should make sure that the column created is
233
235
  # long enough to store the required class names.
234
236
  t.column :taggable_type, :string
235
237
  t.column :context, :string
236
-
238
+
237
239
  t.column :created_at, :datetime
238
240
  end
239
241
 
@@ -241,6 +243,21 @@ class SetupKnitkit < ActiveRecord::Migration
241
243
  add_index :taggings, [:taggable_id, :taggable_type, :context], :name => 'taggable_poly_idx'
242
244
  end
243
245
 
246
+ unless table_exists? :website_party_roles
247
+ create_table :website_party_roles do |t|
248
+ #foreign keys
249
+ t.references :website
250
+ t.references :role_type
251
+ t.references :party
252
+
253
+ t.timestamps
254
+ end
255
+
256
+ add_index :website_party_roles, :website_id
257
+ add_index :website_party_roles, :role_type_id
258
+ add_index :website_party_roles, :party_id
259
+ end
260
+
244
261
  end
245
262
 
246
263
  def self.down
@@ -249,7 +266,7 @@ class SetupKnitkit < ActiveRecord::Migration
249
266
 
250
267
  # check that each table exists before trying to delete it.
251
268
  [:websites, :website_sections, :contents, :website_section_contents,
252
- :themes, :theme_files, :published_websites, :published_elements,
269
+ :themes, :theme_files, :published_websites, :published_elements, :website_party_roles,
253
270
  :comments,:website_hosts,:website_nav_items, :website_navs, :tags, :taggings].each do |tbl|
254
271
  if table_exists?(tbl)
255
272
  drop_table tbl