erp_forms 2.0.6 → 2.1.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 (82) hide show
  1. data/app/controllers/erp_forms/erp_app/desktop/dynamic_forms/base_controller.rb +4 -37
  2. data/app/controllers/erp_forms/erp_app/desktop/dynamic_forms/data_controller.rb +348 -82
  3. data/app/controllers/erp_forms/erp_app/desktop/dynamic_forms/forms_controller.rb +110 -15
  4. data/app/controllers/erp_forms/erp_app/desktop/dynamic_forms/models_controller.rb +19 -3
  5. data/app/mailers/dynamic_form_mailer.rb +35 -0
  6. data/app/models/dynamic_datum.rb +97 -22
  7. data/app/models/dynamic_form.rb +172 -98
  8. data/app/models/dynamic_form_document.rb +4 -11
  9. data/app/models/dynamic_form_model.rb +46 -22
  10. data/app/models/ticket.rb +4 -0
  11. data/app/views/dynamic_form_mailer/widget_email_with_attachments.html.erb +3 -0
  12. data/app/views/dynamic_form_mailer/widget_email_with_attachments.text.erb +3 -0
  13. data/app/widgets/dynamic_forms/base.rb +101 -19
  14. data/app/widgets/dynamic_forms/javascript/dynamic_forms.js +40 -38
  15. data/app/widgets/dynamic_forms/views/error.html.erb +1 -0
  16. data/db/data_migrations/20110608185830_create_default_dynamic_models_and_forms.rb +2 -0
  17. data/db/data_migrations/20120824013449_create_ticket_form.rb +1 -0
  18. data/db/data_migrations/20121026013449_update_ticket_form.rb +64 -0
  19. data/db/data_migrations/{20120904191738_update_contact_form.rb → 20121026191738_update_contact_form.rb} +4 -0
  20. data/db/migrate/20110530193446_dynamic_forms.rb +12 -0
  21. data/db/migrate/20121007022323_upgrade_dynamic_forms_table.rb +31 -0
  22. data/lib/erp_forms.rb +4 -0
  23. data/lib/erp_forms/dynamic_form_field.rb +31 -28
  24. data/lib/erp_forms/dynamic_grid_column.rb +2 -2
  25. data/lib/erp_forms/engine.rb +5 -0
  26. data/lib/erp_forms/extensions/active_record/acts_as_commentable.rb +33 -0
  27. data/lib/erp_forms/extensions/active_record/acts_as_dynamic_form_model.rb +80 -0
  28. data/lib/erp_forms/extensions/active_record/has_dynamic_forms.rb +4 -4
  29. data/lib/erp_forms/extensions/extensions.rb +2 -0
  30. data/lib/erp_forms/extensions/railties/action_view.rb +2 -2
  31. data/lib/erp_forms/version.rb +2 -2
  32. data/public/javascripts/erp_app/desktop/applications/dynamic_forms/center_region.js +2 -1
  33. data/public/javascripts/erp_app/desktop/applications/dynamic_forms/dynamic_data_grid.js +264 -82
  34. data/public/javascripts/erp_app/desktop/applications/dynamic_forms/form_builder.js +1476 -58
  35. data/public/javascripts/erp_app/desktop/applications/dynamic_forms/module.js +24 -1
  36. data/public/javascripts/erp_app/desktop/applications/dynamic_forms/west_region.js +493 -210
  37. data/public/javascripts/erp_app/shared/dynamic_forms/dynamic_form_fields.js +82 -20
  38. data/public/javascripts/erp_app/shared/dynamic_forms/dynamic_forms_validation.js +23 -3
  39. data/spec/dummy/config/application.rb +6 -2
  40. data/spec/dummy/config/environments/spec.rb +3 -0
  41. data/spec/dummy/db/data_migrations/20110109173616_create_capability_scope_types.erp_tech_svcs.rb +15 -0
  42. data/spec/dummy/db/data_migrations/20110525001935_add_usd_currency.erp_base_erp_svcs.rb +12 -0
  43. data/spec/dummy/db/data_migrations/20110608185830_create_default_dynamic_models_and_forms.erp_forms.rb +33 -0
  44. data/spec/dummy/db/data_migrations/20110609150135_add_iso_codes.erp_base_erp_svcs.rb +19 -0
  45. data/spec/dummy/db/data_migrations/20110728201729_erp_app_setup.erp_app.rb +252 -0
  46. data/spec/dummy/db/data_migrations/20110728201733_update_preferences.erp_app.rb +53 -0
  47. data/spec/dummy/db/data_migrations/20110802200222_schedule_delete_expired_sessions_job.erp_tech_svcs.rb +16 -0
  48. data/spec/dummy/db/data_migrations/20110816161238_create_desktop_app_audit_log_viewer.erp_app.rb +21 -0
  49. data/spec/dummy/db/data_migrations/20110817160743_add_file_manager_application.erp_app.rb +32 -0
  50. data/spec/dummy/db/data_migrations/20110828190913_create_desktop_app_dynamic_forms.erp_forms.rb +19 -0
  51. data/spec/dummy/db/data_migrations/20110913145838_setup_compass_ae_instance.erp_base_erp_svcs.rb +12 -0
  52. data/spec/dummy/db/data_migrations/20111108183739_add_default_capabilities.erp_app.rb +23 -0
  53. data/spec/dummy/db/data_migrations/20111108183740_add_new_contact_widgets.erp_app.rb +42 -0
  54. data/spec/dummy/db/data_migrations/20111111144706_setup_audit_log_types.erp_tech_svcs.rb +22 -0
  55. data/spec/dummy/db/data_migrations/20120109173616_create_download_capability_type.erp_tech_svcs.rb +14 -0
  56. data/spec/dummy/db/data_migrations/20120229160222_add_userinfo_widget.erp_app.rb +29 -0
  57. data/spec/dummy/db/data_migrations/20120405193721_create_party_and_role_type_for_communication_events.erp_app.rb +11 -0
  58. data/spec/dummy/db/data_migrations/20120411180756_create_user_management_mobile_application.erp_app.rb +19 -0
  59. data/spec/dummy/db/data_migrations/20120418164215_create_configuration_management_desktop_application.erp_app.rb +23 -0
  60. data/spec/dummy/db/data_migrations/20120824013449_create_ticket_form.erp_forms.rb +67 -0
  61. data/spec/dummy/db/data_migrations/20121026013449_update_ticket_form.erp_forms.rb +65 -0
  62. data/spec/dummy/db/data_migrations/20121026191738_update_contact_form.erp_forms.rb +27 -0
  63. data/spec/dummy/db/data_migrations/20121116155018_create_group_relationship_and_role_types.erp_tech_svcs.rb +20 -0
  64. data/spec/dummy/db/data_migrations/20121130201859_upgrade_remove_system_mgmt_app.erp_app.rb +16 -0
  65. data/spec/dummy/db/data_migrations/20121130212146_note_capabilities.erp_tech_svcs.rb +24 -0
  66. data/spec/dummy/db/data_migrations/20121218175028_create_security_management_desktop_application.erp_app.rb +23 -0
  67. data/spec/dummy/db/migrate/20121213234847_base_erp_services.erp_base_erp_svcs.rb +461 -0
  68. data/spec/dummy/db/migrate/20121213234848_base_tech_services.erp_tech_svcs.rb +255 -0
  69. data/spec/dummy/db/migrate/20121213234849_create_has_attribute_tables.erp_tech_svcs.rb +39 -0
  70. data/spec/dummy/db/migrate/20121213234850_base_app_framework.erp_app.rb +276 -0
  71. data/spec/dummy/db/migrate/20121213234851_dynamic_forms.erp_forms.rb +95 -0
  72. data/spec/dummy/db/migrate/20121213234852_create_tickets.erp_forms.rb +19 -0
  73. data/spec/dummy/db/migrate/20121213234853_upgrade_dynamic_forms_table.erp_forms.rb +32 -0
  74. data/spec/dummy/db/migrate/20130107181041_create_groups.erp_tech_svcs.rb +19 -0
  75. data/spec/dummy/db/migrate/20130107181042_upgrade_security.erp_tech_svcs.rb +54 -0
  76. data/spec/dummy/db/migrate/20130107181043_upgrade_security2.erp_tech_svcs.rb +270 -0
  77. data/spec/dummy/db/schema.rb +879 -0
  78. data/spec/dummy/db/spec.sqlite3 +0 -0
  79. data/spec/dummy/log/spec.log +13580 -0
  80. data/spec/models/dynamic_form_model_spec.rb +1 -1
  81. data/spec/spec_helper.rb +11 -3
  82. metadata +136 -14
@@ -1,34 +1,96 @@
1
- Ext.define("Compass.ErpApp.Shared.DynamicRelatedComboBox",{
1
+ Ext.define("Compass.ErpForms.DynamicForms.DynamicRelatedComboBox",{
2
2
  extend:"Ext.form.field.ComboBox",
3
3
  alias:'widget.related_combobox',
4
- initComponent: function() {
5
- //var config = this.initialConfig;
6
- this.callParent(arguments);
7
- },
8
4
 
9
5
  constructor : function(config) {
6
+ var self = this;
10
7
 
11
8
  config = Ext.apply({
12
- width: config['width'],
13
9
  loadingText:'Retrieving Options...',
14
- displayField: config['displayField'],
15
- valueField:'id',
10
+ displayField: config.displayField,
11
+ valueField: 'id',
16
12
  triggerAction: 'all',
17
- allowBlank: config['allowBlank'],
18
13
  store: Ext.create('Ext.data.Store', {
19
- fields:config['fields'],
20
- //remoteSort:config['remoteSort'],
14
+ fields: (config.fields || [{ name: 'id' }]),
21
15
  proxy: {
22
- type:'ajax',
23
- reader:{
24
- type:'json',
25
- root:'data'
26
- },
27
- extraParams: config['extraParams'],
28
- url: config['url']
16
+ type:'ajax',
17
+ reader:{
18
+ type:'json',
19
+ root:'data'
29
20
  },
30
- //storeId: config['storeId'],
31
- autoLoad: true
21
+ extraParams: config.extraParams,
22
+ url: (config.url || '/erp_forms/erp_app/desktop/dynamic_forms/forms/related_field')
23
+ },
24
+ autoLoad: true,
25
+ listeners:{
26
+ load: function(store, records, options){
27
+ try { var record_value = self.ownerCt.getRecord().data[self.name]; }catch(e){}
28
+ if (!Ext.isEmpty(record_value)){
29
+ self.setValue(record_value);
30
+ }else if (!Ext.isEmpty(self.default_value)){
31
+ // self.value did not want to work for selecting default value so we use custom self.default_value
32
+ self.setValue(self.default_value);
33
+ }
34
+ }
35
+ }
36
+ })
37
+ }, config);
38
+
39
+ this.callParent([config]);
40
+ }
41
+ });
42
+
43
+ Ext.define("Compass.ErpForms.DynamicForms.DynamicRelatedSearchBox",{
44
+ extend:"Ext.form.field.ComboBox",
45
+ alias:'widget.related_searchbox',
46
+
47
+ constructor : function(config) {
48
+ var self = this;
49
+
50
+ config = Ext.apply({
51
+ emptyText: (config.emptyText || 'Search'),
52
+ valueField: 'id',
53
+ triggerAction: 'all',
54
+ listConfig: {
55
+ loadingText: 'Searching...',
56
+ emptyText: 'No matching results found.',
57
+ // Custom rendering template for each item
58
+ getInnerTpl: function() {
59
+ return config.display_template;
60
+ }
61
+ },
62
+ displayTpl : Ext.create('Ext.XTemplate',
63
+ '<tpl for=".">' +
64
+ config.display_template +
65
+ '</tpl>'
66
+ ),
67
+ hideTrigger:true,
68
+ typeAhead: (config.typeAhead || true),
69
+ pageSize: (config.pageSize || 10),
70
+ store: Ext.create('Ext.data.Store', {
71
+ pageSize: (config.pageSize || 10),
72
+ fields: (config.fields || [{ name: 'id' }]),
73
+ proxy: {
74
+ type:'ajax',
75
+ reader:{
76
+ type:'json',
77
+ root:'data'
78
+ },
79
+ extraParams: config.extraParams,
80
+ url: (config.url || '/erp_forms/erp_app/desktop/dynamic_forms/forms/related_field')
81
+ },
82
+ autoLoad: true,
83
+ listeners:{
84
+ load: function(store, records, options){
85
+ try { var record_value = self.ownerCt.getRecord().data[self.name]; }catch(e){}
86
+ if (!Ext.isEmpty(record_value)){
87
+ self.setValue(record_value);
88
+ }else if (!Ext.isEmpty(self.default_value)){
89
+ // self.value did not want to work for selecting default value so we use custom self.default_value
90
+ self.setValue(self.default_value);
91
+ }
92
+ }
93
+ }
32
94
  })
33
95
  }, config);
34
96
 
@@ -1,4 +1,24 @@
1
- function validate_regex(v, pattern){
2
- var regex = new RegExp(pattern);
3
- return regex.test(v);
1
+ // we load vtypes here not because these methods are dependent on vtypes but rather because we want to load vtypes when validation loads
2
+ // we can't load vtypes when extjs loads because the vtypes depend on ErpTechSvcs.Config
3
+ // we want vtypes available to both knitkit and desktop and this file is already loaded both places
4
+ Compass.ErpApp.Utility.JsLoader.load(["/javascripts/extjs/vtypes.js"], function() {});
5
+
6
+ function initRegex(pattern){
7
+ var regex_style = /^\//;
8
+ return (regex_style.test(pattern) ? eval(pattern) : new RegExp(pattern));
4
9
  }
10
+
11
+ function validateRegex(v, pattern) {
12
+ return initRegex(pattern).test(v);
13
+ }
14
+
15
+ function validateEmail(v) {
16
+ return validateRegex(v, ErpTechSvcs.Config.email_regex);
17
+ }
18
+
19
+ // fix for clearing emptyText in FF and Chrome
20
+ try {
21
+ Ext.onReady(function() {
22
+ if(Ext.isGecko || Ext.isWebkit) Ext.supports.Placeholder = false;
23
+ });
24
+ } catch(e) {}
@@ -6,8 +6,6 @@ Bundler.require(:default)
6
6
  require 'erp_forms'
7
7
  require 'erp_app'
8
8
 
9
-
10
-
11
9
  module Dummy
12
10
  class Application < Rails::Application
13
11
  # Settings in config/environments/* take precedence over those specified here.
@@ -40,6 +38,12 @@ module Dummy
40
38
 
41
39
  # Enable the asset pipeline
42
40
  config.assets.enabled = true
41
+
42
+ # Enforce whitelist mode for mass assignment.
43
+ # This will create an empty whitelist of attributes available for mass-assignment for all models
44
+ # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
45
+ # parameters by using an attr_accessible or attr_protected declaration.
46
+ config.active_record.whitelist_attributes = true
43
47
  end
44
48
  end
45
49
 
@@ -1,6 +1,9 @@
1
1
  Dummy::Application.configure do
2
2
  # Settings specified here will take precedence over those in config/application.rb
3
3
 
4
+ # Raise exception on mass assignment protection for Active Record models
5
+ config.active_record.mass_assignment_sanitizer = :strict
6
+
4
7
  # In the development environment your application's code is reloaded on
5
8
  # every request. This slows down response time but is perfect for development
6
9
  # since you don't have to restart the web server when you make code changes.
@@ -0,0 +1,15 @@
1
+ # This migration comes from erp_tech_svcs (originally 20110109173616)
2
+ class CreateCapabilityScopeTypes
3
+
4
+ def self.up
5
+ CapabilityType.create(:internal_identifier => 'download', :description => 'Download') if CapabilityType.where("internal_identifier = 'download'").first.nil?
6
+
7
+ ScopeType.create(:description => 'Instance', :internal_identifier => 'instance') if ScopeType.where("internal_identifier = 'instance'").first.nil?
8
+ ScopeType.create(:description => 'Class', :internal_identifier => 'class') if ScopeType.where("internal_identifier = 'class'").first.nil?
9
+ ScopeType.create(:description => 'Query', :internal_identifier => 'query') if ScopeType.where("internal_identifier = 'query'").first.nil?
10
+ end
11
+
12
+ def self.down
13
+ end
14
+
15
+ end
@@ -0,0 +1,12 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20110525001935)
2
+ class AddUsdCurrency
3
+
4
+ def self.up
5
+ Currency.create(:name => 'US Dollar', :internal_identifier => 'USD', :major_unit_symbol => "$")
6
+ end
7
+
8
+ def self.down
9
+ Currency.usd.destroy
10
+ end
11
+
12
+ end
@@ -0,0 +1,33 @@
1
+ # This migration comes from erp_forms (originally 20110608185830)
2
+ class CreateDefaultDynamicModelsAndForms
3
+
4
+ def self.up
5
+ #insert data here
6
+ DynamicFormModel.create(:model_name => 'DynamicFormDocument')
7
+
8
+ fields = []
9
+
10
+ fields << DynamicFormField.textfield({:fieldLabel => 'First Name', :name => 'first_name', :width => 250, :allowBlank => false })
11
+ fields << DynamicFormField.textfield({:fieldLabel => 'Last Name', :name => 'last_name', :width => 250, :allowBlank => false })
12
+ fields << DynamicFormField.email({:fieldLabel => 'Email', :name => 'email', :width => 250, :allowBlank => false })
13
+ fields << DynamicFormField.textarea({:fieldLabel => 'Message', :name => 'message', :width => 400, :height => 200, :allowBlank => false })
14
+
15
+ d = DynamicForm.new
16
+ d.description = 'Contact Form'
17
+ d.definition = fields.to_json
18
+ d.model_name = 'WebsiteInquiry'
19
+ d.internal_identifier = 'contact_us'
20
+ d.default = true
21
+ d.dynamic_form_model = DynamicFormModel.create(:model_name => 'WebsiteInquiry')
22
+ d.comment = "This is the default form used by Knitkit's Contact Us Widget for Website Inquiries. NOTE: The Contact Us Widget uses Knitkit's website configuration options for email behavior & not the Dynamic Forms Widget Action setting."
23
+ d.msg_target = 'qtip'
24
+ d.save
25
+ end
26
+
27
+ def self.down
28
+ #remove data here
29
+ DynamicFormModel.delete_all
30
+ DynamicForm.delete_all
31
+ end
32
+
33
+ end
@@ -0,0 +1,19 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20110609150135)
2
+ require 'yaml'
3
+
4
+ class AddIsoCodes
5
+
6
+ def self.up
7
+ #find the erp_base_erp_svcs engine
8
+ engine_path = Rails::Application::Railties.engines.find{|item| item.engine_name == 'erp_base_erp_svcs'}.config.root.to_s
9
+
10
+ GeoCountry.load_from_file(File.join(engine_path,'db/data_sets/geo_countries.yml'))
11
+ GeoZone.load_from_file(File.join(engine_path,'db/data_sets/geo_zones.yml'))
12
+ end
13
+
14
+ def self.down
15
+ GeoCountry.delete_all
16
+ GeoZone.delete_all
17
+ end
18
+
19
+ end
@@ -0,0 +1,252 @@
1
+ # This migration comes from erp_app (originally 20110728201729)
2
+ class ErpAppSetup
3
+
4
+ def self.up
5
+ if(ContactPurpose.find_by_internal_identifier('default').nil?)
6
+
7
+ #######################################
8
+ #contact purposes
9
+ #######################################
10
+ [
11
+ {:description => 'Default', :internal_identifier => 'default'},
12
+ {:description => 'Home', :internal_identifier => 'home'},
13
+ {:description => 'Work', :internal_identifier => 'work'},
14
+ {:description => 'Billing', :internal_identifier => 'billing'},
15
+ {:description => 'Temporary', :internal_identifier => 'temporary'},
16
+ {:description => 'Tax Reporting', :internal_identifier => 'tax_reporting'},
17
+ {:description => 'Recruiting', :internal_identifier => 'recruiting'},
18
+ {:description => 'Employment Offer', :internal_identifier => 'employment_offer'},
19
+ {:description => 'Business', :internal_identifier => 'business'},
20
+ {:description => 'Personal', :internal_identifier => 'personal'},
21
+ {:description => 'Fax', :internal_identifier => 'fax'},
22
+ {:description => 'Mobile', :internal_identifier => 'mobile'},
23
+ {:description => 'Emergency', :internal_identifier => 'emergency'},
24
+ {:description => 'Shipping', :internal_identifier => 'shipping'},
25
+ {:description => 'Other', :internal_identifier => 'other'},
26
+ ].each do |item|
27
+ contact_purpose = ContactPurpose.find_by_internal_identifier(item[:internal_identifier])
28
+ ContactPurpose.create(:description => item[:description], :internal_identifier => item[:internal_identifier]) if contact_purpose.nil?
29
+ end
30
+
31
+ #######################################
32
+ #roles
33
+ #######################################
34
+ SecurityRole.create(:description => 'Admin', :internal_identifier => 'admin')
35
+ SecurityRole.create(:description => 'Employee', :internal_identifier => 'employee')
36
+
37
+ #######################################
38
+ #desktop setup
39
+ #######################################
40
+ #create preference types
41
+ desktop_backgroud_pt = PreferenceType.create(:description => 'Desktop Background', :internal_identifier => 'desktop_background')
42
+ extjs_theme_pt = PreferenceType.create(:description => 'Theme', :internal_identifier => 'extjs_theme')
43
+ desktop_shortcut_pt = PreferenceType.create(:description => 'Desktop Shortcut', :internal_identifier => 'desktop_shortcut')
44
+ auto_load_app_pt = PreferenceType.create(:description => 'Autoload Application', :internal_identifier => 'autoload_application')
45
+
46
+ #create preference options
47
+ #yes no options
48
+ yes_po = PreferenceOption.create(:description => 'Yes', :internal_identifier => 'yes', :value => 'yes')
49
+ no_po = PreferenceOption.create(:description => 'No', :internal_identifier => 'no', :value => 'no')
50
+
51
+ #desktop background options
52
+ truenorth_background_po = PreferenceOption.create(:description => 'TrueNorth Logo', :internal_identifier => 'truenorth_logo_background', :value => 'truenorth.png')
53
+ blue_background_po = PreferenceOption.create(:description => 'Blue', :internal_identifier => 'blue_desktop_background', :value => 'blue.gif')
54
+ gradient_background_po = PreferenceOption.create(:description => 'Grey Gradient', :internal_identifier => 'grey_gradient_desktop_background', :value => 'gradient.png')
55
+ purple_background_po = PreferenceOption.create(:description => 'Purple', :internal_identifier => 'purple_desktop_background', :value => 'purple.jpg')
56
+ planet_background_po = PreferenceOption.create(:description => 'Planet', :internal_identifier => 'planet_desktop_background', :value => 'planet.jpg')
57
+ portablemind_background_po = PreferenceOption.create(:description => 'Portablemind', :internal_identifier => 'portablemind_desktop_background', :value => 'portablemind.png')
58
+
59
+ #desktop theme options
60
+ access_extjs_theme_po = PreferenceOption.create(:description => 'Access', :internal_identifier => 'access_extjs_theme', :value => 'ext-all-access.css')
61
+ gray_extjs_theme_po = PreferenceOption.create(:description => 'Gray', :internal_identifier => 'gray_extjs_theme', :value => 'ext-all-gray.css')
62
+ blue_extjs_theme_po = PreferenceOption.create(:description => 'Blue', :internal_identifier => 'blue_extjs_theme', :value => 'ext-all.css')
63
+
64
+ #associate options
65
+ desktop_shortcut_pt.preference_options << yes_po
66
+ desktop_shortcut_pt.preference_options << no_po
67
+ desktop_shortcut_pt.default_preference_option = no_po
68
+ desktop_shortcut_pt.save
69
+
70
+ auto_load_app_pt.preference_options << yes_po
71
+ auto_load_app_pt.preference_options << no_po
72
+ auto_load_app_pt.default_preference_option = no_po
73
+ auto_load_app_pt.save
74
+
75
+ desktop_backgroud_pt.preference_options << blue_background_po
76
+ desktop_backgroud_pt.preference_options << truenorth_background_po
77
+ desktop_backgroud_pt.preference_options << gradient_background_po
78
+ desktop_backgroud_pt.preference_options << purple_background_po
79
+ desktop_backgroud_pt.preference_options << planet_background_po
80
+ desktop_backgroud_pt.preference_options << portablemind_background_po
81
+ desktop_backgroud_pt.default_preference_option = truenorth_background_po
82
+ desktop_backgroud_pt.save
83
+
84
+ extjs_theme_pt.preference_options << access_extjs_theme_po
85
+ extjs_theme_pt.preference_options << gray_extjs_theme_po
86
+ extjs_theme_pt.preference_options << blue_extjs_theme_po
87
+ extjs_theme_pt.default_preference_option = blue_extjs_theme_po
88
+ extjs_theme_pt.save
89
+
90
+ #######################################
91
+ #notes widget
92
+ #######################################
93
+ NoteType.create(:description => 'Basic Note', :internal_identifier => 'basic_note')
94
+
95
+ notes_grid = ::Widget.create(
96
+ :description => 'Notes',
97
+ :icon => 'icon-documents',
98
+ :xtype => 'shared_notesgrid',
99
+ :internal_identifier => 'shared_notes_grid'
100
+ )
101
+ notes_grid.save
102
+
103
+ #######################################
104
+ #user management app
105
+ #######################################
106
+ app_mgr = ::Widget.create(
107
+ :description => 'Application Management',
108
+ :icon => 'icon-user',
109
+ :xtype => 'controlpanel_userapplicationmgtpanel',
110
+ :internal_identifier => 'application_management'
111
+ )
112
+ app_mgr.save
113
+
114
+ role_mgr = ::Widget.create(
115
+ :description => 'Role Management',
116
+ :icon => 'icon-user',
117
+ :xtype => 'usermanagement_rolemanagementpanel',
118
+ :internal_identifier => 'role_management'
119
+ )
120
+ role_mgr.save
121
+
122
+ personal_info = ::Widget.create(
123
+ :description => 'User Personal Info',
124
+ :icon => 'icon-user',
125
+ :xtype => 'usermanagement_personalinfopanel',
126
+ :internal_identifier => 'user_personal_info'
127
+ )
128
+ personal_info.save
129
+
130
+ #create application and assign widgets
131
+ user_mgr_app = DesktopApplication.create(
132
+ :description => 'User Management',
133
+ :icon => 'icon-user',
134
+ :javascript_class_name => 'Compass.ErpApp.Desktop.Applications.UserManagement',
135
+ :internal_identifier => 'user_management',
136
+ :shortcut_id => 'user-management-win'
137
+ )
138
+
139
+ user_mgr_app.preference_types << desktop_shortcut_pt
140
+ user_mgr_app.preference_types << auto_load_app_pt
141
+
142
+ user_mgr_app.widgets << role_mgr
143
+ user_mgr_app.widgets << personal_info
144
+ user_mgr_app.widgets << app_mgr
145
+ user_mgr_app.widgets << notes_grid
146
+ user_mgr_app.save
147
+
148
+ #######################################
149
+ #scaffold app
150
+ #######################################
151
+ scaffold_app = DesktopApplication.create(
152
+ :description => 'Scaffold',
153
+ :icon => 'icon-data',
154
+ :javascript_class_name => 'Compass.ErpApp.Desktop.Applications.Scaffold',
155
+ :internal_identifier => 'scaffold',
156
+ :shortcut_id => 'scaffold-win'
157
+ )
158
+
159
+ scaffold_app.preference_types << PreferenceType.iid('desktop_shortcut')
160
+ scaffold_app.preference_types << PreferenceType.iid('autoload_application')
161
+ scaffold_app.save
162
+
163
+ #######################################
164
+ #organizer setup
165
+ #######################################
166
+
167
+ party_contact_mgm_widget = ::Widget.create(
168
+ :description => 'Party Contact Management',
169
+ :icon => 'icon-grid',
170
+ :xtype => 'contactmechanismgrid',
171
+ :internal_identifier => 'party_contact_management'
172
+ )
173
+ party_contact_mgm_widget.save
174
+
175
+ party_mgm_widget = ::Widget.create(
176
+ :description => 'Party Management',
177
+ :icon => 'icon-grid',
178
+ :xtype => 'partygrid',
179
+ :internal_identifier => 'party_management_widget'
180
+ )
181
+ party_mgm_widget.save
182
+
183
+ #create application
184
+ crm_app = OrganizerApplication.create(
185
+ :description => 'CRM',
186
+ :icon => 'icon-user',
187
+ :internal_identifier => 'crm'
188
+ )
189
+
190
+ crm_app.widgets << party_contact_mgm_widget
191
+ crm_app.widgets << party_mgm_widget
192
+ crm_app.widgets << notes_grid
193
+ crm_app.save
194
+
195
+ #######################################
196
+ #parties
197
+ #######################################
198
+
199
+ #Admins
200
+ Individual.create(:current_first_name => 'Admin',:current_last_name => 'Istrator',:gender => 'm')
201
+
202
+ #Organization
203
+ Organization.create(:description => 'TrueNorth')
204
+
205
+ #######################################
206
+ #users
207
+ #######################################
208
+ admin_indvidual = Individual.where('current_first_name = ?',"Admin").first
209
+ admin_user = User.create(
210
+ :username => "admin",
211
+ :email => "admin@portablemind.com"
212
+ )
213
+ admin_user.password = 'password'
214
+ admin_user.password_confirmation = 'password'
215
+ admin_user.party = admin_indvidual.party
216
+ admin_user.activate!
217
+ admin_user.save
218
+ admin_user.add_role('admin')
219
+ admin_user.save
220
+
221
+ truenorth = Organization.where('description = ?', 'TrueNorth').first
222
+ truenorth_user = User.create(
223
+ :username => truenorth.description.downcase,
224
+ :email => "#{truenorth.description.downcase}@gmail.com"
225
+ )
226
+ truenorth_user.password = 'password'
227
+ truenorth_user.password_confirmation = 'password'
228
+ truenorth_user.party = truenorth.party
229
+ truenorth_user.save
230
+ truenorth_user.activate!
231
+ truenorth_user.add_role('admin')
232
+ truenorth_user.save
233
+
234
+ admin_user.desktop.applications << user_mgr_app
235
+ admin_user.desktop.applications << scaffold_app
236
+ admin_user.desktop.save
237
+ admin_user.organizer.applications << crm_app
238
+ admin_user.organizer.save
239
+
240
+ truenorth_user.desktop.applications << user_mgr_app
241
+ truenorth_user.desktop.applications << scaffold_app
242
+ truenorth_user.desktop.save
243
+ truenorth_user.organizer.applications << crm_app
244
+ truenorth_user.organizer.save
245
+ end
246
+ end
247
+
248
+ def self.down
249
+ #remove data here
250
+ end
251
+
252
+ end