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.
- data/app/controllers/erp_forms/erp_app/desktop/dynamic_forms/base_controller.rb +4 -37
- data/app/controllers/erp_forms/erp_app/desktop/dynamic_forms/data_controller.rb +348 -82
- data/app/controllers/erp_forms/erp_app/desktop/dynamic_forms/forms_controller.rb +110 -15
- data/app/controllers/erp_forms/erp_app/desktop/dynamic_forms/models_controller.rb +19 -3
- data/app/mailers/dynamic_form_mailer.rb +35 -0
- data/app/models/dynamic_datum.rb +97 -22
- data/app/models/dynamic_form.rb +172 -98
- data/app/models/dynamic_form_document.rb +4 -11
- data/app/models/dynamic_form_model.rb +46 -22
- data/app/models/ticket.rb +4 -0
- data/app/views/dynamic_form_mailer/widget_email_with_attachments.html.erb +3 -0
- data/app/views/dynamic_form_mailer/widget_email_with_attachments.text.erb +3 -0
- data/app/widgets/dynamic_forms/base.rb +101 -19
- data/app/widgets/dynamic_forms/javascript/dynamic_forms.js +40 -38
- data/app/widgets/dynamic_forms/views/error.html.erb +1 -0
- data/db/data_migrations/20110608185830_create_default_dynamic_models_and_forms.rb +2 -0
- data/db/data_migrations/20120824013449_create_ticket_form.rb +1 -0
- data/db/data_migrations/20121026013449_update_ticket_form.rb +64 -0
- data/db/data_migrations/{20120904191738_update_contact_form.rb → 20121026191738_update_contact_form.rb} +4 -0
- data/db/migrate/20110530193446_dynamic_forms.rb +12 -0
- data/db/migrate/20121007022323_upgrade_dynamic_forms_table.rb +31 -0
- data/lib/erp_forms.rb +4 -0
- data/lib/erp_forms/dynamic_form_field.rb +31 -28
- data/lib/erp_forms/dynamic_grid_column.rb +2 -2
- data/lib/erp_forms/engine.rb +5 -0
- data/lib/erp_forms/extensions/active_record/acts_as_commentable.rb +33 -0
- data/lib/erp_forms/extensions/active_record/acts_as_dynamic_form_model.rb +80 -0
- data/lib/erp_forms/extensions/active_record/has_dynamic_forms.rb +4 -4
- data/lib/erp_forms/extensions/extensions.rb +2 -0
- data/lib/erp_forms/extensions/railties/action_view.rb +2 -2
- data/lib/erp_forms/version.rb +2 -2
- data/public/javascripts/erp_app/desktop/applications/dynamic_forms/center_region.js +2 -1
- data/public/javascripts/erp_app/desktop/applications/dynamic_forms/dynamic_data_grid.js +264 -82
- data/public/javascripts/erp_app/desktop/applications/dynamic_forms/form_builder.js +1476 -58
- data/public/javascripts/erp_app/desktop/applications/dynamic_forms/module.js +24 -1
- data/public/javascripts/erp_app/desktop/applications/dynamic_forms/west_region.js +493 -210
- data/public/javascripts/erp_app/shared/dynamic_forms/dynamic_form_fields.js +82 -20
- data/public/javascripts/erp_app/shared/dynamic_forms/dynamic_forms_validation.js +23 -3
- data/spec/dummy/config/application.rb +6 -2
- data/spec/dummy/config/environments/spec.rb +3 -0
- data/spec/dummy/db/data_migrations/20110109173616_create_capability_scope_types.erp_tech_svcs.rb +15 -0
- data/spec/dummy/db/data_migrations/20110525001935_add_usd_currency.erp_base_erp_svcs.rb +12 -0
- data/spec/dummy/db/data_migrations/20110608185830_create_default_dynamic_models_and_forms.erp_forms.rb +33 -0
- data/spec/dummy/db/data_migrations/20110609150135_add_iso_codes.erp_base_erp_svcs.rb +19 -0
- data/spec/dummy/db/data_migrations/20110728201729_erp_app_setup.erp_app.rb +252 -0
- data/spec/dummy/db/data_migrations/20110728201733_update_preferences.erp_app.rb +53 -0
- data/spec/dummy/db/data_migrations/20110802200222_schedule_delete_expired_sessions_job.erp_tech_svcs.rb +16 -0
- data/spec/dummy/db/data_migrations/20110816161238_create_desktop_app_audit_log_viewer.erp_app.rb +21 -0
- data/spec/dummy/db/data_migrations/20110817160743_add_file_manager_application.erp_app.rb +32 -0
- data/spec/dummy/db/data_migrations/20110828190913_create_desktop_app_dynamic_forms.erp_forms.rb +19 -0
- data/spec/dummy/db/data_migrations/20110913145838_setup_compass_ae_instance.erp_base_erp_svcs.rb +12 -0
- data/spec/dummy/db/data_migrations/20111108183739_add_default_capabilities.erp_app.rb +23 -0
- data/spec/dummy/db/data_migrations/20111108183740_add_new_contact_widgets.erp_app.rb +42 -0
- data/spec/dummy/db/data_migrations/20111111144706_setup_audit_log_types.erp_tech_svcs.rb +22 -0
- data/spec/dummy/db/data_migrations/20120109173616_create_download_capability_type.erp_tech_svcs.rb +14 -0
- data/spec/dummy/db/data_migrations/20120229160222_add_userinfo_widget.erp_app.rb +29 -0
- data/spec/dummy/db/data_migrations/20120405193721_create_party_and_role_type_for_communication_events.erp_app.rb +11 -0
- data/spec/dummy/db/data_migrations/20120411180756_create_user_management_mobile_application.erp_app.rb +19 -0
- data/spec/dummy/db/data_migrations/20120418164215_create_configuration_management_desktop_application.erp_app.rb +23 -0
- data/spec/dummy/db/data_migrations/20120824013449_create_ticket_form.erp_forms.rb +67 -0
- data/spec/dummy/db/data_migrations/20121026013449_update_ticket_form.erp_forms.rb +65 -0
- data/spec/dummy/db/data_migrations/20121026191738_update_contact_form.erp_forms.rb +27 -0
- data/spec/dummy/db/data_migrations/20121116155018_create_group_relationship_and_role_types.erp_tech_svcs.rb +20 -0
- data/spec/dummy/db/data_migrations/20121130201859_upgrade_remove_system_mgmt_app.erp_app.rb +16 -0
- data/spec/dummy/db/data_migrations/20121130212146_note_capabilities.erp_tech_svcs.rb +24 -0
- data/spec/dummy/db/data_migrations/20121218175028_create_security_management_desktop_application.erp_app.rb +23 -0
- data/spec/dummy/db/migrate/20121213234847_base_erp_services.erp_base_erp_svcs.rb +461 -0
- data/spec/dummy/db/migrate/20121213234848_base_tech_services.erp_tech_svcs.rb +255 -0
- data/spec/dummy/db/migrate/20121213234849_create_has_attribute_tables.erp_tech_svcs.rb +39 -0
- data/spec/dummy/db/migrate/20121213234850_base_app_framework.erp_app.rb +276 -0
- data/spec/dummy/db/migrate/20121213234851_dynamic_forms.erp_forms.rb +95 -0
- data/spec/dummy/db/migrate/20121213234852_create_tickets.erp_forms.rb +19 -0
- data/spec/dummy/db/migrate/20121213234853_upgrade_dynamic_forms_table.erp_forms.rb +32 -0
- data/spec/dummy/db/migrate/20130107181041_create_groups.erp_tech_svcs.rb +19 -0
- data/spec/dummy/db/migrate/20130107181042_upgrade_security.erp_tech_svcs.rb +54 -0
- data/spec/dummy/db/migrate/20130107181043_upgrade_security2.erp_tech_svcs.rb +270 -0
- data/spec/dummy/db/schema.rb +879 -0
- data/spec/dummy/db/spec.sqlite3 +0 -0
- data/spec/dummy/log/spec.log +13580 -0
- data/spec/models/dynamic_form_model_spec.rb +1 -1
- data/spec/spec_helper.rb +11 -3
- metadata +136 -14
|
@@ -1,34 +1,96 @@
|
|
|
1
|
-
Ext.define("Compass.
|
|
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
|
|
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['
|
|
20
|
-
//remoteSort:config['remoteSort'],
|
|
14
|
+
fields: (config.fields || [{ name: 'id' }]),
|
|
21
15
|
proxy: {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
},
|
|
27
|
-
extraParams: config['extraParams'],
|
|
28
|
-
url: config['url']
|
|
16
|
+
type:'ajax',
|
|
17
|
+
reader:{
|
|
18
|
+
type:'json',
|
|
19
|
+
root:'data'
|
|
29
20
|
},
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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.
|
data/spec/dummy/db/data_migrations/20110109173616_create_capability_scope_types.erp_tech_svcs.rb
ADDED
|
@@ -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
|