knitkit 2.1.11 → 2.1.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/app/controllers/knitkit/erp_app/desktop/theme_controller.rb +1 -1
  2. data/app/models/theme.rb +1 -1
  3. data/app/models/website.rb +4 -1
  4. data/lib/knitkit/version.rb +1 -1
  5. data/spec/dummy/db/data_migrations/20110109173616_create_capability_scope_types.erp_tech_svcs.rb +15 -0
  6. data/spec/dummy/db/data_migrations/20110509223702_add_publisher_role.knitkit.rb +22 -0
  7. data/spec/dummy/db/data_migrations/20110525001935_add_usd_currency.erp_base_erp_svcs.rb +12 -0
  8. data/spec/dummy/db/data_migrations/20110608185830_create_default_dynamic_models_and_forms.erp_forms.rb +33 -0
  9. data/spec/dummy/db/data_migrations/20110609150135_add_iso_codes.erp_base_erp_svcs.rb +19 -0
  10. data/spec/dummy/db/data_migrations/20110728201729_erp_app_setup.erp_app.rb +252 -0
  11. data/spec/dummy/db/data_migrations/20110728201733_update_preferences.erp_app.rb +53 -0
  12. data/spec/dummy/db/data_migrations/20110802200222_schedule_delete_expired_sessions_job.erp_tech_svcs.rb +16 -0
  13. data/spec/dummy/db/data_migrations/20110816153456_add_knitkit_application.knitkit.rb +32 -0
  14. data/spec/dummy/db/data_migrations/20110816161238_create_desktop_app_audit_log_viewer.erp_app.rb +21 -0
  15. data/spec/dummy/db/data_migrations/20110817160743_add_file_manager_application.erp_app.rb +32 -0
  16. data/spec/dummy/db/data_migrations/20110828190913_create_desktop_app_dynamic_forms.erp_forms.rb +19 -0
  17. data/spec/dummy/db/data_migrations/20110913145838_setup_compass_ae_instance.erp_base_erp_svcs.rb +12 -0
  18. data/spec/dummy/db/data_migrations/20111108183739_add_default_capabilities.erp_app.rb +23 -0
  19. data/spec/dummy/db/data_migrations/20111108183740_add_new_contact_widgets.erp_app.rb +42 -0
  20. data/spec/dummy/db/data_migrations/20111111144706_setup_audit_log_types.erp_tech_svcs.rb +22 -0
  21. data/spec/dummy/db/data_migrations/20111118182910_setup_knitkit_capabilities.knitkit.rb +128 -0
  22. data/spec/dummy/db/data_migrations/20120127144444_create_website_role_types.knitkit.rb +14 -0
  23. data/spec/dummy/db/data_migrations/20120127150505_create_website_default_configuration.knitkit.rb +73 -0
  24. data/spec/dummy/db/data_migrations/20120127150506_add_primary_host_to_website_configuration.knitkit.rb +34 -0
  25. data/spec/dummy/db/data_migrations/20120229160222_add_userinfo_widget.erp_app.rb +29 -0
  26. data/spec/dummy/db/data_migrations/20120316150424_add_is_template_to_default_website_config.knitkit.rb +17 -0
  27. data/spec/dummy/db/data_migrations/20120405193721_create_party_and_role_type_for_communication_events.erp_app.rb +11 -0
  28. data/spec/dummy/db/data_migrations/20120411180756_create_user_management_mobile_application.erp_app.rb +19 -0
  29. data/spec/dummy/db/data_migrations/20120418164215_create_configuration_management_desktop_application.erp_app.rb +23 -0
  30. data/spec/dummy/db/data_migrations/20120809020508_update_website_and_configuration.knitkit.rb +78 -0
  31. data/spec/dummy/db/data_migrations/20120824013449_create_ticket_form.erp_forms.rb +67 -0
  32. data/spec/dummy/db/data_migrations/20121026013449_update_ticket_form.erp_forms.rb +65 -0
  33. data/spec/dummy/db/data_migrations/20121026191738_update_contact_form.erp_forms.rb +27 -0
  34. data/spec/dummy/db/data_migrations/20121116155018_create_group_relationship_and_role_types.erp_tech_svcs.rb +20 -0
  35. data/spec/dummy/db/data_migrations/20121129185611_upgrade_website_role_iid.knitkit.rb +21 -0
  36. data/spec/dummy/db/data_migrations/20121130201859_upgrade_remove_system_mgmt_app.erp_app.rb +16 -0
  37. data/spec/dummy/db/data_migrations/20121130212146_note_capabilities.erp_tech_svcs.rb +24 -0
  38. data/spec/dummy/db/data_migrations/20121218175028_create_security_management_desktop_application.erp_app.rb +23 -0
  39. data/spec/dummy/db/data_migrations/20130422154409_upgrade_compass_ae_instances_data.erp_base_erp_svcs.rb +19 -0
  40. data/spec/dummy/db/data_migrations/20130422154410_add_guid_to_instances.erp_base_erp_svcs.rb +10 -0
  41. data/spec/dummy/db/data_migrations/20130422154411_create_job_tracker_desktop_application.erp_app.rb +23 -0
  42. data/spec/dummy/db/data_migrations/20130422154412_created_tracked_jobs.erp_app.rb +15 -0
  43. data/spec/dummy/db/data_migrations/20130422154413_add_job_tracker_mobile_app.erp_app.rb +17 -0
  44. data/spec/dummy/db/migrate/20130107153232_base_erp_services.erp_base_erp_svcs.rb +461 -0
  45. data/spec/dummy/db/migrate/20130107153233_base_tech_services.erp_tech_svcs.rb +271 -0
  46. data/spec/dummy/db/migrate/20130107153234_create_has_attribute_tables.erp_tech_svcs.rb +39 -0
  47. data/spec/dummy/db/migrate/20130107153235_create_groups.erp_tech_svcs.rb +19 -0
  48. data/spec/dummy/db/migrate/20130107153236_upgrade_security.erp_tech_svcs.rb +54 -0
  49. data/spec/dummy/db/migrate/20130107153237_upgrade_security2.erp_tech_svcs.rb +270 -0
  50. data/spec/dummy/db/migrate/20130107153238_base_app_framework.erp_app.rb +276 -0
  51. data/spec/dummy/db/migrate/20130107153239_dynamic_forms.erp_forms.rb +95 -0
  52. data/spec/dummy/db/migrate/20130107153240_create_tickets.erp_forms.rb +19 -0
  53. data/spec/dummy/db/migrate/20130107153241_upgrade_dynamic_forms_table.erp_forms.rb +32 -0
  54. data/spec/dummy/db/migrate/20130107153242_setup_knitkit.knitkit.rb +316 -0
  55. data/spec/dummy/db/migrate/20130422154401_add_txn_status.erp_base_erp_svcs.rb +37 -0
  56. data/spec/dummy/db/migrate/20130422154402_upgrade_compass_ae_instances.erp_base_erp_svcs.rb +34 -0
  57. data/spec/dummy/db/migrate/20130422154403_add_uuid_compass_ae_instance.erp_base_erp_svcs.rb +17 -0
  58. data/spec/dummy/db/migrate/20130422154404_add_long_lat_to_address.erp_base_erp_svcs.rb +16 -0
  59. data/spec/dummy/db/migrate/20130422154405_add_queue_to_delayed_jobs.erp_tech_svcs.rb +14 -0
  60. data/spec/dummy/db/migrate/20130422154406_add_job_tracker.erp_app.rb +20 -0
  61. data/spec/dummy/db/migrate/20130422154407_update_mobile_application.erp_app.rb +28 -0
  62. data/spec/dummy/db/migrate/20130422154408_add_use_markdown_to_section.knitkit.rb +20 -0
  63. data/spec/dummy/db/schema.rb +1248 -0
  64. data/spec/dummy/db/spec.sqlite3 +0 -0
  65. metadata +123 -3
@@ -0,0 +1,16 @@
1
+ # This migration comes from erp_tech_svcs (originally 20110802200222)
2
+ class ScheduleDeleteExpiredSessionsJob
3
+
4
+ def self.up
5
+ #insert data here
6
+ date = Date.tomorrow
7
+ start_time = DateTime.civil(date.year, date.month, date.day, 2, 0, 1, -(5.0/24.0))
8
+
9
+ ErpTechSvcs::Sessions::DeleteExpiredSessionsJob.schedule_job(start_time)
10
+ end
11
+
12
+ def self.down
13
+ #remove data here
14
+ end
15
+
16
+ end
@@ -0,0 +1,32 @@
1
+ # This migration comes from knitkit (originally 20110816153456)
2
+ class AddKnitkitApplication
3
+
4
+ def self.up
5
+ if DesktopApplication.find_by_internal_identifier('knitkit').nil?
6
+ knikit_app = DesktopApplication.create(
7
+ :description => 'KnitKit',
8
+ :icon => 'icon-palette',
9
+ :javascript_class_name => 'Compass.ErpApp.Desktop.Applications.Knitkit',
10
+ :internal_identifier => 'knitkit',
11
+ :shortcut_id => 'knitkit-win'
12
+ )
13
+
14
+ knikit_app.preference_types << PreferenceType.iid('desktop_shortcut')
15
+ knikit_app.preference_types << PreferenceType.iid('autoload_application')
16
+ knikit_app.save
17
+
18
+ admin_user = User.find_by_username('admin')
19
+ admin_user.desktop.applications << knikit_app
20
+ admin_user.save
21
+
22
+ truenorth_user = User.find_by_username('truenorth')
23
+ truenorth_user.desktop.applications << knikit_app
24
+ truenorth_user.save
25
+ end
26
+ end
27
+
28
+ def self.down
29
+ DesktopApplication.find_by_internal_identifier('knitkit').destroy
30
+ end
31
+
32
+ end
@@ -0,0 +1,21 @@
1
+ # This migration comes from erp_app (originally 20110816161238)
2
+ class CreateDesktopAppAuditLogViewer
3
+ def self.up
4
+ app = DesktopApplication.create(
5
+ :description => 'Audit Log Viewer',
6
+ :icon => 'icon-history',
7
+ :javascript_class_name => 'Compass.ErpApp.Desktop.Applications.AuditLogViewer',
8
+ :internal_identifier => 'audit_log_viewer',
9
+ :shortcut_id => 'audit_log_viewer-win'
10
+ )
11
+
12
+ app.preference_types << PreferenceType.iid('desktop_shortcut')
13
+ app.preference_types << PreferenceType.iid('autoload_application')
14
+ app.save
15
+
16
+ end
17
+
18
+ def self.down
19
+ DesktopApplication.destroy_all(['internal_identifier = ?','audit_log_viewer'])
20
+ end
21
+ end
@@ -0,0 +1,32 @@
1
+ # This migration comes from erp_app (originally 20110817160743)
2
+ class AddFileManagerApplication
3
+
4
+ def self.up
5
+ if DesktopApplication.find_by_internal_identifier('file_manager').nil?
6
+ file_manager_app = DesktopApplication.create(
7
+ :description => 'File Manager',
8
+ :icon => 'icon-folders',
9
+ :javascript_class_name => 'Compass.ErpApp.Desktop.Applications.FileManager',
10
+ :internal_identifier => 'file_manager',
11
+ :shortcut_id => 'file_manager-win'
12
+ )
13
+
14
+ file_manager_app.preference_types << PreferenceType.iid('desktop_shortcut')
15
+ file_manager_app.preference_types << PreferenceType.iid('autoload_application')
16
+ file_manager_app.save
17
+
18
+ admin_user = User.find_by_username('admin')
19
+ admin_user.desktop.applications << file_manager_app
20
+ admin_user.save
21
+
22
+ truenorth_user = User.find_by_username('truenorth')
23
+ truenorth_user.desktop.applications << file_manager_app
24
+ truenorth_user.save
25
+ end
26
+ end
27
+
28
+ def self.down
29
+ DesktopApplication.find_by_internal_identifier('file_manager').destroy
30
+ end
31
+
32
+ end
@@ -0,0 +1,19 @@
1
+ # This migration comes from erp_forms (originally 20110828190913)
2
+ class CreateDesktopAppDynamicForms
3
+ def self.up
4
+ app = DesktopApplication.create(
5
+ :description => 'Dynamic Forms',
6
+ :icon => 'icon-document',
7
+ :javascript_class_name => 'Compass.ErpApp.Desktop.Applications.DynamicForms',
8
+ :internal_identifier => 'dynamic_forms',
9
+ :shortcut_id => 'dynamic_forms-win'
10
+ )
11
+ app.preference_types << PreferenceType.iid('desktop_shortcut')
12
+ app.preference_types << PreferenceType.iid('autoload_application')
13
+ app.save #probably redundant
14
+ end
15
+
16
+ def self.down
17
+ DesktopApplication.destroy_all(['internal_identifier = ?','dynamic_forms'])
18
+ end
19
+ end
@@ -0,0 +1,12 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20110913145838)
2
+ class SetupCompassAeInstance
3
+
4
+ def self.up
5
+ CompassAeInstance.create(version: 3.1)
6
+ end
7
+
8
+ def self.down
9
+ #remove data here
10
+ end
11
+
12
+ end
@@ -0,0 +1,23 @@
1
+ # This migration comes from erp_app (originally 20111108183739)
2
+ class AddDefaultCapabilities
3
+
4
+ def self.up
5
+ admin = SecurityRole.find_by_internal_identifier('admin')
6
+ employee = SecurityRole.find_by_internal_identifier('employee')
7
+
8
+ admin.add_capability('create', 'User')
9
+ admin.add_capability('delete', 'User')
10
+
11
+ admin.add_capability('create', 'Note')
12
+ employee.add_capability('create', 'Note')
13
+
14
+ admin.add_capability('view', 'Note')
15
+ employee.add_capability('view', 'Note')
16
+
17
+ admin.add_capability('delete', 'Note')
18
+ end
19
+
20
+ def self.down
21
+ end
22
+
23
+ end
@@ -0,0 +1,42 @@
1
+ # This migration comes from erp_app (originally 20111108183740)
2
+ class AddNewContactWidgets
3
+
4
+ def self.up
5
+ crm_app = OrganizerApplication.find_by_internal_identifier('crm')
6
+
7
+ unless crm_app.nil?
8
+ Widget.find_by_internal_identifier('party_contact_management').destroy
9
+
10
+ phone_number_managementt_widget = ::Widget.create(
11
+ :description => 'Phone Number Management',
12
+ :icon => 'icon-grid',
13
+ :xtype => 'phonenumbergrid',
14
+ :internal_identifier => 'phone_number_management'
15
+ )
16
+
17
+ email_address_management_widget = ::Widget.create(
18
+ :description => 'Email Address Management',
19
+ :icon => 'icon-grid',
20
+ :xtype => 'emailaddressgrid',
21
+ :internal_identifier => 'email_address_management'
22
+ )
23
+
24
+ postal_address_management_widget = ::Widget.create(
25
+ :description => 'Postal Address Management',
26
+ :icon => 'icon-grid',
27
+ :xtype => 'postaladdressgrid',
28
+ :internal_identifier => 'postal_address_management'
29
+ )
30
+
31
+ crm_app.widgets << phone_number_managementt_widget
32
+ crm_app.widgets << email_address_management_widget
33
+ crm_app.widgets << postal_address_management_widget
34
+ crm_app.save
35
+
36
+ end
37
+ end
38
+
39
+ def self.down
40
+ end
41
+
42
+ end
@@ -0,0 +1,22 @@
1
+ # This migration comes from erp_tech_svcs (originally 20111111144706)
2
+ class SetupAuditLogTypes
3
+
4
+ def self.up
5
+ application_alt = AuditLogType.create(:description => 'Application', :internal_identifier => 'application')
6
+
7
+ [
8
+ {:description => 'Custom Message', :internal_identifier => 'custom_message'},
9
+ {:description => 'Successful Logout', :internal_identifier => 'successful_logout'},
10
+ {:description => 'Successful Login', :internal_identifier => 'successful_login'},
11
+ {:description => 'Accessed Area', :internal_identifier => 'accessed_area'},
12
+ {:description => 'Session Timeout', :internal_identifier => 'session_timeout'}
13
+ ].each do |alt_hash|
14
+ AuditLogType.create(alt_hash).move_to_child_of(application_alt)
15
+ end
16
+ end
17
+
18
+ def self.down
19
+ AuditLogType.destroy_all
20
+ end
21
+
22
+ end
@@ -0,0 +1,128 @@
1
+ # This migration comes from knitkit (originally 20111118182910)
2
+ class SetupKnitkitCapabilities
3
+
4
+ def self.up
5
+ admin = SecurityRole.find_by_internal_identifier('admin')
6
+ website_author = SecurityRole.find_by_internal_identifier('website_author')
7
+ layout_author = SecurityRole.find_by_internal_identifier('layout_author')
8
+ content_author = SecurityRole.find_by_internal_identifier('content_author')
9
+ designer = SecurityRole.find_by_internal_identifier('designer')
10
+ publisher = SecurityRole.find_by_internal_identifier('publisher')
11
+
12
+ admin.add_capability('create', 'WebsiteNav')
13
+ admin.add_capability('delete', 'WebsiteNav')
14
+ admin.add_capability('edit', 'WebsiteNav')
15
+
16
+ website_author.add_capability('create', 'WebsiteNav')
17
+ website_author.add_capability('delete', 'WebsiteNav')
18
+ website_author.add_capability('edit', 'WebsiteNav')
19
+
20
+ admin.add_capability('create', 'Website')
21
+ admin.add_capability('delete', 'Website')
22
+ admin.add_capability('edit', 'Website')
23
+ admin.add_capability('import', 'Website')
24
+ admin.add_capability('publish', 'Website')
25
+ admin.add_capability('activate', 'Website')
26
+
27
+ website_author.add_capability('create', 'Website')
28
+ website_author.add_capability('delete', 'Website')
29
+ website_author.add_capability('edit', 'Website')
30
+ website_author.add_capability('import', 'Website')
31
+ publisher.add_capability('publish', 'Website')
32
+ publisher.add_capability('activate', 'Website')
33
+
34
+ admin.add_capability('create', 'WebsiteHost')
35
+ admin.add_capability('delete', 'WebsiteHost')
36
+ admin.add_capability('edit', 'WebsiteHost')
37
+
38
+ website_author.add_capability('create', 'WebsiteHost')
39
+ website_author.add_capability('delete', 'WebsiteHost')
40
+ website_author.add_capability('edit', 'WebsiteHost')
41
+
42
+ admin.add_capability('create', 'WebsiteSection')
43
+ admin.add_capability('delete', 'WebsiteSection')
44
+ admin.add_capability('edit', 'WebsiteSection')
45
+ admin.add_capability('secure', 'WebsiteSection')
46
+ admin.add_capability('unsecure', 'WebsiteSection')
47
+
48
+ website_author.add_capability('create', 'WebsiteSection')
49
+ website_author.add_capability('delete', 'WebsiteSection')
50
+ website_author.add_capability('edit', 'WebsiteSection')
51
+ website_author.add_capability('secure', 'WebsiteSection')
52
+ website_author.add_capability('unsecure', 'WebsiteSection')
53
+
54
+ admin.add_capability('create', 'WebsiteSectionLayout')
55
+ admin.add_capability('edit', 'WebsiteSectionLayout')
56
+
57
+ layout_author.add_capability('create', 'WebsiteSectionLayout')
58
+ layout_author.add_capability('edit', 'WebsiteSectionLayout')
59
+
60
+ admin.add_capability('create', 'Content')
61
+ admin.add_capability('delete', 'Content')
62
+ admin.add_capability('edit', 'Content')
63
+ admin.add_capability('publish', 'Content')
64
+ admin.add_capability('revert_version', 'Content')
65
+ admin.add_capability('add_existing', 'Content')
66
+ admin.add_capability('edit_html', 'Content')
67
+ admin.add_capability('edit_excerpt', 'Content')
68
+
69
+ content_author.add_capability('create', 'Content')
70
+ content_author.add_capability('delete', 'Content')
71
+ content_author.add_capability('edit', 'Content')
72
+ content_author.add_capability('publish', 'Content')
73
+ content_author.add_capability('revert_version', 'Content')
74
+ content_author.add_capability('add_existing', 'Content')
75
+ content_author.add_capability('edit_html', 'Content')
76
+ content_author.add_capability('edit_excerpt', 'Content')
77
+
78
+ admin.add_capability('create', 'WebsiteNavItem')
79
+ admin.add_capability('delete', 'WebsiteNavItem')
80
+ admin.add_capability('edit', 'WebsiteNavItem')
81
+ admin.add_capability('secure', 'WebsiteNavItem')
82
+ admin.add_capability('unsecure', 'WebsiteNavItem')
83
+
84
+ website_author.add_capability('create', 'WebsiteNavItem')
85
+ website_author.add_capability('delete', 'WebsiteNavItem')
86
+ website_author.add_capability('edit', 'WebsiteNavItem')
87
+ website_author.add_capability('secure', 'WebsiteNavItem')
88
+ website_author.add_capability('unsecure', 'WebsiteNavItem')
89
+
90
+ admin.add_capability('view', 'Theme')
91
+ designer.add_capability('view', 'Theme')
92
+
93
+ admin.add_capability('view', 'SiteImageAsset')
94
+ website_author.add_capability('view', 'SiteImageAsset')
95
+ content_author.add_capability('view', 'SiteImageAsset')
96
+
97
+ content_author.add_capability('view', 'GlobalImageAsset')
98
+
99
+ admin.add_capability('view', 'GlobalImageAsset')
100
+ admin.add_capability('upload', 'GlobalImageAsset')
101
+ admin.add_capability('delete', 'GlobalImageAsset')
102
+
103
+ website_author.add_capability('view', 'GlobalImageAsset')
104
+ website_author.add_capability('upload', 'GlobalImageAsset')
105
+ website_author.add_capability('delete', 'GlobalImageAsset')
106
+
107
+ admin.add_capability('view', 'SiteFileAsset')
108
+ website_author.add_capability('view', 'SiteFileAsset')
109
+ content_author.add_capability('view', 'SiteFileAsset')
110
+
111
+ content_author.add_capability('view', 'GlobalFileAsset')
112
+
113
+ admin.add_capability('view', 'GlobalFileAsset')
114
+ admin.add_capability('upload', 'GlobalFileAsset')
115
+ admin.add_capability('delete', 'GlobalFileAsset')
116
+
117
+ website_author.add_capability('view', 'GlobalFileAsset')
118
+ website_author.add_capability('upload', 'GlobalFileAsset')
119
+ website_author.add_capability('delete', 'GlobalFileAsset')
120
+
121
+ admin.add_capability('drag_item', 'WebsiteTree')
122
+ website_author.add_capability('drag_item', 'WebsiteTree')
123
+ end
124
+
125
+ def self.down
126
+ end
127
+
128
+ end
@@ -0,0 +1,14 @@
1
+ # This migration comes from knitkit (originally 20120127144444)
2
+ class CreateWebsiteRoleTypes
3
+
4
+ def self.up
5
+ RoleType.create(:description => 'Website Owner', :internal_identifier => 'website_owner')
6
+ RoleType.create(:description => 'Website Member', :internal_identifier => 'website_member')
7
+ end
8
+
9
+ def self.down
10
+ RoleType.website_owner.destroy
11
+ RoleType.website_member.destroy
12
+ end
13
+
14
+ end
@@ -0,0 +1,73 @@
1
+ # This migration comes from knitkit (originally 20120127150505)
2
+ class CreateWebsiteDefaultConfiguration
3
+
4
+ def self.up
5
+ unless ::Configuration.find_template('default_website_configuration')
6
+ website_setup_category = Category.create(:description => 'Website Setup', :internal_identifier => 'website_setup')
7
+
8
+ #configuration
9
+ configuration = Configuration.create(
10
+ :description => 'Default Website Configuration',
11
+ :internal_identifier => 'default_website_configuration',
12
+ :is_template => true
13
+ )
14
+
15
+ login_url_config_item_type = ConfigurationItemType.create(
16
+ :description => 'Login Url',
17
+ :internal_identifier => 'login_url',
18
+ :allow_user_defined_options => true
19
+ )
20
+ CategoryClassification.create(:category => website_setup_category, :classification => login_url_config_item_type)
21
+ configuration.configuration_item_types << login_url_config_item_type
22
+
23
+ home_page_url_config_item_type = ConfigurationItemType.create(
24
+ :description => 'Homepage Url',
25
+ :internal_identifier => 'homepage_url',
26
+ :allow_user_defined_options => true
27
+ )
28
+ CategoryClassification.create(:category => website_setup_category, :classification => home_page_url_config_item_type)
29
+ configuration.configuration_item_types << home_page_url_config_item_type
30
+
31
+ contact_us_email_address_item_type = ConfigurationItemType.create(
32
+ :description => 'Contact Us Email',
33
+ :internal_identifier => 'contact_us_email_address',
34
+ :allow_user_defined_options => true
35
+ )
36
+ CategoryClassification.create(:category => website_setup_category, :classification => contact_us_email_address_item_type)
37
+ configuration.configuration_item_types << contact_us_email_address_item_type
38
+
39
+ #password strength
40
+ simple_password_option = ConfigurationOption.create(
41
+ :description => 'Simple password',
42
+ :comment => 'must be at least 8 characters long and start and end with a letter',
43
+ :internal_identifier => 'simple_password_regex',
44
+ :value => '^[A-Za-z]\w{6,}[A-Za-z]$'
45
+ )
46
+
47
+ complex_password_option = ConfigurationOption.create(
48
+ :description => 'Complex password',
49
+ :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 @#$%^&+=',
50
+ :internal_identifier => 'complex_password_regex',
51
+ :value => '^.*(?=.{10,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$'
52
+ )
53
+
54
+ password_strength_config_item_type = ConfigurationItemType.create(
55
+ :description => 'Password Strength',
56
+ :internal_identifier => 'password_strength_regex'
57
+ )
58
+ CategoryClassification.create(:category => website_setup_category, :classification => password_strength_config_item_type)
59
+
60
+ password_strength_config_item_type.configuration_options << complex_password_option
61
+ password_strength_config_item_type.add_default_configuration_option(simple_password_option)
62
+ password_strength_config_item_type.save
63
+ configuration.configuration_item_types << password_strength_config_item_type
64
+
65
+ configuration.save
66
+ end
67
+ end
68
+
69
+ def self.down
70
+ #remove data here
71
+ end
72
+
73
+ end