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,6 +1,9 @@
|
|
|
1
1
|
class UpdateContactForm
|
|
2
2
|
|
|
3
3
|
def self.up
|
|
4
|
+
model = DynamicFormModel.find_by_model_name('WebsiteInquiry')
|
|
5
|
+
model.create_role
|
|
6
|
+
|
|
4
7
|
fields = []
|
|
5
8
|
|
|
6
9
|
fields << DynamicFormField.textfield({:fieldLabel => 'First Name', :name => 'first_name', :width => 250, :allowBlank => false })
|
|
@@ -11,6 +14,7 @@ class UpdateContactForm
|
|
|
11
14
|
d = DynamicForm.find_by_internal_identifier('contact_us')
|
|
12
15
|
unless d.nil?
|
|
13
16
|
d.definition = fields.to_json
|
|
17
|
+
d.msg_target = 'qtip'
|
|
14
18
|
d.save
|
|
15
19
|
end
|
|
16
20
|
end
|
|
@@ -3,6 +3,10 @@ class DynamicForms < ActiveRecord::Migration
|
|
|
3
3
|
unless table_exists?(:dynamic_form_models)
|
|
4
4
|
create_table :dynamic_form_models do |t|
|
|
5
5
|
t.string :model_name
|
|
6
|
+
t.boolean :show_in_multitask, :default => false
|
|
7
|
+
t.boolean :allow_comments, :default => true
|
|
8
|
+
t.boolean :allow_files, :default => true
|
|
9
|
+
t.string :file_security_default, :default => 'private'
|
|
6
10
|
|
|
7
11
|
t.timestamps
|
|
8
12
|
end
|
|
@@ -28,6 +32,14 @@ class DynamicForms < ActiveRecord::Migration
|
|
|
28
32
|
t.string :model_name
|
|
29
33
|
t.string :internal_identifier
|
|
30
34
|
t.boolean :default
|
|
35
|
+
t.string :widget_action, :default => 'save'
|
|
36
|
+
t.string :widget_email_recipients
|
|
37
|
+
t.boolean :focus_first_field, :default => true
|
|
38
|
+
t.boolean :submit_empty_text, :default => false
|
|
39
|
+
t.string :msg_target, :default => 'qtip'
|
|
40
|
+
t.string :submit_button_label, :default => 'Submit'
|
|
41
|
+
t.string :cancel_button_label, :default => 'Cancel'
|
|
42
|
+
t.text :comment
|
|
31
43
|
|
|
32
44
|
t.integer :created_by_id
|
|
33
45
|
t.integer :updated_by_id
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class UpgradeDynamicFormsTable < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
add_column :dynamic_form_models, :show_in_multitask, :boolean, :default => false unless columns(:dynamic_form_models).collect {|c| c.name}.include?('show_in_multitask')
|
|
4
|
+
add_column :dynamic_form_models, :allow_comments, :boolean, :default => true unless columns(:dynamic_form_models).collect {|c| c.name}.include?('allow_comments')
|
|
5
|
+
add_column :dynamic_form_models, :allow_files, :boolean, :default => true unless columns(:dynamic_form_models).collect {|c| c.name}.include?('allow_files')
|
|
6
|
+
add_column :dynamic_form_models, :file_security_default, :string, :default => 'private' unless columns(:dynamic_form_models).collect {|c| c.name}.include?('file_security_default')
|
|
7
|
+
add_column :dynamic_forms, :widget_action, :string, :default => 'save' unless columns(:dynamic_forms).collect {|c| c.name}.include?('widget_action')
|
|
8
|
+
add_column :dynamic_forms, :widget_email_recipients, :string unless columns(:dynamic_forms).collect {|c| c.name}.include?('widget_email_recipients')
|
|
9
|
+
add_column :dynamic_forms, :focus_first_field, :boolean, :default => true unless columns(:dynamic_forms).collect {|c| c.name}.include?('focus_first_field')
|
|
10
|
+
add_column :dynamic_forms, :submit_empty_text, :boolean, :default => false unless columns(:dynamic_forms).collect {|c| c.name}.include?('submit_empty_text')
|
|
11
|
+
add_column :dynamic_forms, :msg_target, :string, :default => 'qtip' unless columns(:dynamic_forms).collect {|c| c.name}.include?('msg_target')
|
|
12
|
+
add_column :dynamic_forms, :submit_button_label, :string, :default => 'Submit' unless columns(:dynamic_forms).collect {|c| c.name}.include?('submit_button_label')
|
|
13
|
+
add_column :dynamic_forms, :cancel_button_label, :string, :default => 'Cancel' unless columns(:dynamic_forms).collect {|c| c.name}.include?('cancel_button_label')
|
|
14
|
+
add_column :dynamic_forms, :comment, :text unless columns(:dynamic_forms).collect {|c| c.name}.include?('comment')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.down
|
|
18
|
+
remove_column :dynamic_form_models, :show_in_multitask if columns(:dynamic_form_models).collect {|c| c.name}.include?('show_in_multitask')
|
|
19
|
+
remove_column :dynamic_form_models, :file_security_default if columns(:dynamic_form_models).collect {|c| c.name}.include?('file_security_default')
|
|
20
|
+
remove_column :dynamic_form_models, :allow_files if columns(:dynamic_form_models).collect {|c| c.name}.include?('allow_files')
|
|
21
|
+
remove_column :dynamic_form_models, :allow_comments if columns(:dynamic_form_models).collect {|c| c.name}.include?('allow_comments')
|
|
22
|
+
remove_column :dynamic_forms, :widget_action if columns(:dynamic_forms).collect {|c| c.name}.include?('widget_action')
|
|
23
|
+
remove_column :dynamic_forms, :widget_email_recipients if columns(:dynamic_forms).collect {|c| c.name}.include?('widget_email_recipients')
|
|
24
|
+
remove_column :dynamic_forms, :focus_first_field if columns(:dynamic_forms).collect {|c| c.name}.include?('focus_first_field')
|
|
25
|
+
remove_column :dynamic_forms, :submit_empty_text if columns(:dynamic_forms).collect {|c| c.name}.include?('submit_empty_text')
|
|
26
|
+
remove_column :dynamic_forms, :msg_target if columns(:dynamic_forms).collect {|c| c.name}.include?('msg_target')
|
|
27
|
+
remove_column :dynamic_forms, :submit_button_label if columns(:dynamic_forms).collect {|c| c.name}.include?('submit_button_label')
|
|
28
|
+
remove_column :dynamic_forms, :cancel_button_label if columns(:dynamic_forms).collect {|c| c.name}.include?('cancel_button_label')
|
|
29
|
+
remove_column :dynamic_forms, :comment if columns(:dynamic_forms).collect {|c| c.name}.include?('comment')
|
|
30
|
+
end
|
|
31
|
+
end
|
data/lib/erp_forms.rb
CHANGED
|
@@ -6,7 +6,6 @@ class DynamicFormField
|
|
|
6
6
|
Field Types TODO
|
|
7
7
|
special:
|
|
8
8
|
codemirror
|
|
9
|
-
file upload - use has_file_assets and plupload
|
|
10
9
|
test password field
|
|
11
10
|
|
|
12
11
|
complex (for future implementation):
|
|
@@ -23,14 +22,13 @@ class DynamicFormField
|
|
|
23
22
|
# :readOnly => disabled true or false
|
|
24
23
|
# :maxLength => maxLength integer
|
|
25
24
|
# :width => size integer
|
|
26
|
-
# :validation_regex => regex string
|
|
27
25
|
# }
|
|
28
26
|
|
|
29
27
|
##################
|
|
30
28
|
# SPECIAL FIELDS #
|
|
31
29
|
##################
|
|
32
30
|
def self.email(options={})
|
|
33
|
-
options[:
|
|
31
|
+
options[:validator_function] = 'validateEmail(v)'
|
|
34
32
|
DynamicFormField.basic_field('textfield', options)
|
|
35
33
|
end
|
|
36
34
|
|
|
@@ -71,8 +69,6 @@ class DynamicFormField
|
|
|
71
69
|
{ :name => displayField }
|
|
72
70
|
]
|
|
73
71
|
|
|
74
|
-
options[:url] = '/erp_forms/erp_app/desktop/dynamic_forms/forms/related_field' if options[:url].blank?
|
|
75
|
-
|
|
76
72
|
DynamicFormField.basic_field('related_combobox', options)
|
|
77
73
|
end
|
|
78
74
|
|
|
@@ -137,10 +133,19 @@ class DynamicFormField
|
|
|
137
133
|
DynamicFormField.basic_field('checkbox', options)
|
|
138
134
|
end
|
|
139
135
|
|
|
136
|
+
def self.filefield(options={})
|
|
137
|
+
DynamicFormField.basic_field('filefield', options)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def self.hiddenfield(options={})
|
|
141
|
+
DynamicFormField.basic_field('hiddenfield', options)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# alias
|
|
140
145
|
def self.hidden(options={})
|
|
141
|
-
DynamicFormField.
|
|
146
|
+
DynamicFormField.hiddenfield(options={})
|
|
142
147
|
end
|
|
143
|
-
|
|
148
|
+
|
|
144
149
|
def self.basic_field(xtype, options={}, selections=[])
|
|
145
150
|
options = DynamicFormField.set_default_field_options(options)
|
|
146
151
|
|
|
@@ -154,53 +159,51 @@ class DynamicFormField
|
|
|
154
159
|
:width =>options[:width],
|
|
155
160
|
:height => options[:height],
|
|
156
161
|
:labelWidth => options[:labelWidth],
|
|
157
|
-
:display_in_grid => options[:display_in_grid]
|
|
162
|
+
:display_in_grid => options[:display_in_grid],
|
|
163
|
+
:searchable => options[:display_in_grid]
|
|
158
164
|
}
|
|
159
165
|
|
|
166
|
+
field[:buttonText] = options[:buttonText] unless options[:buttonText].blank?
|
|
160
167
|
field[:displayField] = options[:displayField] unless options[:displayField].blank?
|
|
168
|
+
field[:disabled] = options[:disabled] unless options[:disabled].nil?
|
|
169
|
+
field[:editable] = options[:editable] unless options[:editable].nil?
|
|
170
|
+
field[:emptyText] = options[:emptyText] unless options[:emptyText].blank?
|
|
161
171
|
field[:extraParams] = options[:extraParams] unless options[:extraParams].blank?
|
|
162
|
-
field[:url] = options[:url] unless options[:url].blank?
|
|
163
172
|
field[:fields] = options[:fields] unless options[:fields].blank?
|
|
173
|
+
field[:forceSelection] = options[:forceSelection] unless options[:forceSelection].nil?
|
|
174
|
+
field[:hidden] = options[:hidden] unless options[:hidden].nil?
|
|
175
|
+
field[:hideTrigger] = options[:hideTrigger] unless options[:hideTrigger].nil?
|
|
176
|
+
field[:hideMode] = options[:hideMode] unless options[:hideMode].blank?
|
|
177
|
+
field[:labelAlign] = options[:labelAlign] unless options[:labelAlign].blank?
|
|
164
178
|
field[:mapping] = options[:mapping] unless options[:mapping].blank?
|
|
165
179
|
field[:minLength] = options[:minLength] unless options[:minLength].nil?
|
|
166
180
|
field[:maxLength] = options[:maxLength] unless options[:maxLength].nil?
|
|
167
181
|
field[:minValue] = options[:minValue] unless options[:minValue].nil?
|
|
168
182
|
field[:maxValue] = options[:maxValue] unless options[:maxValue].nil?
|
|
169
|
-
field[:
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
if !options[:validation_regex].blank? or !options[:validator_function].blank?
|
|
176
|
-
field[:validateOnBlur] = true
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
if options[:validation_regex] and options[:validation_regex] != ''
|
|
180
|
-
field[:validation_regex] = options[:validation_regex]
|
|
181
|
-
end
|
|
183
|
+
field[:msgTarget] = options[:msgTarget] unless options[:msgTarget].blank?
|
|
184
|
+
field[:regexText] = options[:regexText] unless options[:regexText].blank?
|
|
185
|
+
field[:url] = options[:url] unless options[:url].blank?
|
|
186
|
+
field[:vtype] = options[:vtype] unless options[:vtype].blank?
|
|
187
|
+
field[:validation_regex] = options[:validation_regex] unless options[:validation_regex].blank?
|
|
188
|
+
field[:validator_function] = options[:validator_function] unless options[:validator_function].blank?
|
|
182
189
|
|
|
183
|
-
|
|
184
|
-
field[:validator_function] = options[:validator_function]
|
|
185
|
-
end
|
|
190
|
+
field[:store] = selections if selections and selections != []
|
|
186
191
|
|
|
187
192
|
field
|
|
188
193
|
end
|
|
189
194
|
|
|
190
195
|
def self.set_default_field_options(options={})
|
|
191
|
-
|
|
192
196
|
options[:fieldLabel] = '' if options[:fieldLabel].nil?
|
|
193
197
|
options[:name] = '' if options[:name].nil?
|
|
194
198
|
options[:allowBlank] = true if options[:allowBlank].nil?
|
|
195
|
-
options[:value] = '' if options[:value].nil?
|
|
196
199
|
options[:readOnly] = false if options[:readOnly].nil?
|
|
197
200
|
options[:minLength] = nil if options[:minLength].nil?
|
|
198
201
|
options[:maxLength] = nil if options[:maxLength].nil?
|
|
199
202
|
options[:width] = 200 if options[:width].nil?
|
|
200
203
|
options[:height] = nil if options[:height].nil?
|
|
201
|
-
options[:validation_regex] = '' if options[:validation_regex].nil?
|
|
202
204
|
options[:labelWidth] = 75 if options[:labelWidth].nil?
|
|
203
205
|
options[:display_in_grid] = true if options[:display_in_grid].nil?
|
|
206
|
+
options[:searchable] = true if options[:searchable].nil?
|
|
204
207
|
|
|
205
208
|
options
|
|
206
209
|
end
|
|
@@ -14,8 +14,8 @@ class DynamicGridColumn
|
|
|
14
14
|
:dataIndex => data_index,
|
|
15
15
|
:sortable => sortable
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
col[:width] = field_hash[:width]
|
|
17
|
+
|
|
18
|
+
col[:width] = field_hash[:width] unless field_hash[:width].nil?
|
|
19
19
|
col[:renderer] = renderer unless renderer.blank?
|
|
20
20
|
|
|
21
21
|
if field_hash[:editor]
|
data/lib/erp_forms/engine.rb
CHANGED
|
@@ -9,8 +9,10 @@ module ErpForms
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
ActiveSupport.on_load(:active_record) do
|
|
12
|
+
include ErpForms::Extensions::ActiveRecord::ActsAsDynamicFormModel
|
|
12
13
|
include ErpForms::Extensions::ActiveRecord::HasDynamicData
|
|
13
14
|
include ErpForms::Extensions::ActiveRecord::HasDynamicForms
|
|
15
|
+
include ErpForms::Extensions::ActiveRecord::ActsAsCommentable
|
|
14
16
|
end
|
|
15
17
|
|
|
16
18
|
ErpBaseErpSvcs.register_as_compass_ae_engine(config, self)
|
|
@@ -19,6 +21,9 @@ module ErpForms
|
|
|
19
21
|
config.to_prepare do
|
|
20
22
|
#dynamic_attributes patch
|
|
21
23
|
require "erp_forms/dynamic_attributes_patch"
|
|
24
|
+
|
|
25
|
+
# setup sunspot for all dynamic form models if we're using solr
|
|
26
|
+
DynamicFormModel.sunspot_setup_all if ($USE_SOLR_FOR_DYNAMIC_FORM_MODELS && ActiveRecord::Base.connection.table_exists?('dynamic_form_models'))
|
|
22
27
|
end
|
|
23
28
|
|
|
24
29
|
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module ErpForms
|
|
2
|
+
module Extensions
|
|
3
|
+
module ActiveRecord
|
|
4
|
+
module ActsAsCommentable
|
|
5
|
+
def self.included(base)
|
|
6
|
+
base.extend(ClassMethods)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
module ClassMethods
|
|
10
|
+
|
|
11
|
+
def acts_as_commentable
|
|
12
|
+
has_many :comments, :as => :commented_record, :dependent => :destroy
|
|
13
|
+
|
|
14
|
+
extend ActsAsCommentable::SingletonMethods
|
|
15
|
+
include ActsAsCommentable::InstanceMethods
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
module SingletonMethods
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
module InstanceMethods
|
|
24
|
+
|
|
25
|
+
def add_comment(options={})
|
|
26
|
+
self.comments.create(options)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end #ActsAsCommentable
|
|
31
|
+
end #ActiveRecord
|
|
32
|
+
end #Extensions
|
|
33
|
+
end #Knitkit
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
module ErpForms
|
|
2
|
+
module Extensions
|
|
3
|
+
module ActiveRecord
|
|
4
|
+
module ActsAsDynamicFormModel
|
|
5
|
+
|
|
6
|
+
def self.included(base)
|
|
7
|
+
base.extend(ClassMethods)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
module ClassMethods
|
|
11
|
+
|
|
12
|
+
def acts_as_dynamic_form_model
|
|
13
|
+
include ActsAsDynamicFormModel::InstanceMethods
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
module InstanceMethods
|
|
19
|
+
|
|
20
|
+
def dynamic_model
|
|
21
|
+
self.respond_to?(:dynamic_form_model) ? dynamic_form_model : DynamicFormModel.find_by_model_name(self.class.name)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def role_iid
|
|
25
|
+
dynamic_model.role_iid
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def role
|
|
29
|
+
dynamic_model.role
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def allow_comments?
|
|
33
|
+
dynamic_model.allow_comments
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def allow_files?
|
|
37
|
+
dynamic_model.allow_files
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def file_security_default
|
|
41
|
+
dynamic_model.file_security_default
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def show_in_multitask
|
|
45
|
+
dynamic_model.show_in_multitask
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# handles both static and dynamic attributes
|
|
49
|
+
def assign_all_attributes(params, ignored_params=[])
|
|
50
|
+
params.each do |k,v|
|
|
51
|
+
k = k.to_s
|
|
52
|
+
unless ignored_params.include?(k) or k == '' or k == '_'
|
|
53
|
+
if self.attributes.include?(k)
|
|
54
|
+
self.send(k + '=', v)
|
|
55
|
+
else
|
|
56
|
+
if ['created_by','updated_by','created_at','updated_at','created_with_form_id','updated_with_form_id'].include?(k)
|
|
57
|
+
key = k + '='
|
|
58
|
+
else
|
|
59
|
+
key = DynamicDatum::DYNAMIC_ATTRIBUTE_PREFIX + k + '='
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
self.data.send(key, v)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
self
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# handles both static and dynamic attributes
|
|
71
|
+
def save_all_attributes(params, ignored_params=[])
|
|
72
|
+
self.assign_all_attributes(params, ignored_params)
|
|
73
|
+
(self.valid? and self.save) ? self : nil
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -15,8 +15,8 @@ module ErpForms
|
|
|
15
15
|
include HasDynamicForms::InstanceMethods
|
|
16
16
|
|
|
17
17
|
def set_default(form_id)
|
|
18
|
-
DynamicForm.update_all({ :default => false },
|
|
19
|
-
DynamicForm.update_all({ :default => true },
|
|
18
|
+
DynamicForm.update_all({ :default => false }, { :model_name => self.name })
|
|
19
|
+
DynamicForm.update_all({ :default => true }, { :id => form_id })
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
@@ -59,8 +59,8 @@ module ErpForms
|
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def set_default(internal_identifier)
|
|
62
|
-
DynamicForm.update_all(
|
|
63
|
-
DynamicForm.update_all(
|
|
62
|
+
DynamicForm.update_all({:default => false}, "model_name=#{self.class.to_s}")
|
|
63
|
+
DynamicForm.update_all({:default => true}, "model_name=#{self.class.to_s} AND internal_identifier=#{internal_identifier}")
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
end
|
|
@@ -2,5 +2,7 @@
|
|
|
2
2
|
require 'erp_forms/extensions/railties/action_view'
|
|
3
3
|
|
|
4
4
|
#active_record extensions
|
|
5
|
+
require 'erp_forms/extensions/active_record/acts_as_commentable'
|
|
6
|
+
require 'erp_forms/extensions/active_record/acts_as_dynamic_form_model'
|
|
5
7
|
require 'erp_forms/extensions/active_record/has_dynamic_data'
|
|
6
8
|
require 'erp_forms/extensions/active_record/has_dynamic_forms'
|
|
@@ -7,7 +7,7 @@ ActionView::Base.class_eval do
|
|
|
7
7
|
# :width => 'width of form in pixels'
|
|
8
8
|
# }
|
|
9
9
|
def render_dynamic_form(name, options={})
|
|
10
|
-
output = raw ' <script type="text/javascript">'
|
|
10
|
+
output = raw ' <script type="text/javascript">Ext.onReady(function() {'
|
|
11
11
|
output += raw "Compass.ErpApp.Utility.JsLoader.load(['/javascripts/erp_app/shared/dynamic_forms/dynamic_form_fields.js'], function(){"
|
|
12
12
|
|
|
13
13
|
output += raw DynamicForm.get_form(name.to_s, options[:internal_identifier]).to_extjs_widget(
|
|
@@ -16,7 +16,7 @@ ActionView::Base.class_eval do
|
|
|
16
16
|
:width => options[:width]
|
|
17
17
|
})
|
|
18
18
|
|
|
19
|
-
output += raw '});</script>'
|
|
19
|
+
output += raw '}); });</script>'
|
|
20
20
|
output
|
|
21
21
|
end
|
|
22
22
|
|
data/lib/erp_forms/version.rb
CHANGED
|
@@ -3,7 +3,8 @@ Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.CenterRegion",{
|
|
|
3
3
|
alias:'widget.dynamic_forms_centerregion',
|
|
4
4
|
|
|
5
5
|
constructor : function(config) {
|
|
6
|
-
this.workArea =
|
|
6
|
+
this.workArea = Ext.create('Ext.tab.Panel',{
|
|
7
|
+
id: 'dynamic_formsTabPanel',
|
|
7
8
|
autoDestroy:true,
|
|
8
9
|
region:'center'
|
|
9
10
|
});
|
|
@@ -1,3 +1,110 @@
|
|
|
1
|
+
Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.FileTree",{
|
|
2
|
+
extend: "Compass.ErpApp.Shared.FileManagerTree",
|
|
3
|
+
alias: 'widget.dynamic_forms_DynamicFormsFileTree',
|
|
4
|
+
loadMask: true,
|
|
5
|
+
autoLoadRoot:false,
|
|
6
|
+
collapsible:false,
|
|
7
|
+
title:'Files',
|
|
8
|
+
rootText:'Files',
|
|
9
|
+
allowDownload:true,
|
|
10
|
+
addViewContentsToContextMenu:false,
|
|
11
|
+
rootVisible:true,
|
|
12
|
+
multiSelect:true,
|
|
13
|
+
containerScroll: true,
|
|
14
|
+
listeners:{
|
|
15
|
+
'load':function(store){
|
|
16
|
+
store.getRootNode().expand();
|
|
17
|
+
},
|
|
18
|
+
'allowdelete':function(){
|
|
19
|
+
return true;
|
|
20
|
+
},
|
|
21
|
+
'allowupload':function(){
|
|
22
|
+
return true;
|
|
23
|
+
},
|
|
24
|
+
'itemclick':function(view, record, item, index, e){
|
|
25
|
+
e.stopEvent();
|
|
26
|
+
return false;
|
|
27
|
+
},
|
|
28
|
+
'fileDeleted':function(fileTreePanel, node){},
|
|
29
|
+
'fileUploaded':function(fileTreePanel, node){},
|
|
30
|
+
'downloadfile':function(fileTreePanel, node){
|
|
31
|
+
window.open("/download/"+node.data.text+"?path=" + node.data.downloadPath,'mywindow','width=400,height=200');
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
changeSecurityOnFile : function(node, secure, fileTree){
|
|
37
|
+
var msg = secure ? 'Securing file...' : 'Unsecuring file...';
|
|
38
|
+
var waitMsg = Ext.Msg.wait("Please Wait", msg);
|
|
39
|
+
Ext.Ajax.request({
|
|
40
|
+
url: '/erp_forms/erp_app/desktop/dynamic_forms/data/update_file_security',
|
|
41
|
+
method: 'POST',
|
|
42
|
+
params:{
|
|
43
|
+
path: node.get('id'),
|
|
44
|
+
secure: secure,
|
|
45
|
+
model_name: fileTree.extraPostData.model_name,
|
|
46
|
+
id: fileTree.extraPostData.id
|
|
47
|
+
},
|
|
48
|
+
success: function(response) {
|
|
49
|
+
var obj = Ext.decode(response.responseText);
|
|
50
|
+
if(obj.success){
|
|
51
|
+
waitMsg.hide();
|
|
52
|
+
if(secure){
|
|
53
|
+
node.set('iconCls', 'icon-document_lock');
|
|
54
|
+
}
|
|
55
|
+
else{
|
|
56
|
+
node.set('iconCls', 'icon-document');
|
|
57
|
+
}
|
|
58
|
+
node.set('isSecured',secure);
|
|
59
|
+
node.commit();
|
|
60
|
+
}
|
|
61
|
+
else{
|
|
62
|
+
Ext.Msg.alert('Error', 'Error securing file.');
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
failure: function(response) {
|
|
66
|
+
waitMsg.hide();
|
|
67
|
+
Ext.Msg.alert('Error', 'Error securing file.');
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
constructor:function (config) {
|
|
73
|
+
var self = this;
|
|
74
|
+
|
|
75
|
+
config = Ext.apply({
|
|
76
|
+
autoDestroy:true,
|
|
77
|
+
title: 'Files',
|
|
78
|
+
itemId: config.itemId,
|
|
79
|
+
region: config.region,
|
|
80
|
+
margins: 0,
|
|
81
|
+
autoScroll: true,
|
|
82
|
+
autoLoadRoot:false,
|
|
83
|
+
showNewFileMenuItem:false,
|
|
84
|
+
showNewFolderMenuItem:false,
|
|
85
|
+
showRenameMenuItem:false,
|
|
86
|
+
enableViewContents:false,
|
|
87
|
+
additionalContextMenuItems:[{
|
|
88
|
+
nodeType:'leaf',
|
|
89
|
+
text:'Update Security',
|
|
90
|
+
iconCls:'icon-document_lock',
|
|
91
|
+
listeners:{
|
|
92
|
+
scope:self,
|
|
93
|
+
'click':function(){
|
|
94
|
+
var node = self.selectedNode;
|
|
95
|
+
self.changeSecurityOnFile(node, !node.get('isSecured'), self);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}],
|
|
99
|
+
controllerPath:'/erp_forms/erp_app/desktop/dynamic_forms/data',
|
|
100
|
+
standardUploadUrl:'/erp_forms/erp_app/desktop/dynamic_forms/data/upload_file',
|
|
101
|
+
url:'/erp_forms/erp_app/desktop/dynamic_forms/data/get_files'
|
|
102
|
+
}, config);
|
|
103
|
+
|
|
104
|
+
this.callParent([config]);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
1
108
|
Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.DynamicDataGridPanel",{
|
|
2
109
|
extend:"Compass.ErpApp.Shared.DynamicEditableGridLoaderPanel",
|
|
3
110
|
alias:'widget.dynamic_forms_DynamicDataGridPanel',
|
|
@@ -17,7 +124,6 @@ Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.DynamicDataGridPane
|
|
|
17
124
|
listeners:{
|
|
18
125
|
'click':function(button){
|
|
19
126
|
var formPanel = button.findParentByType('form');
|
|
20
|
-
//self.setWindowStatus('Adding Comment ...');
|
|
21
127
|
formPanel.getForm().submit({
|
|
22
128
|
params:{
|
|
23
129
|
id:record_id,
|
|
@@ -25,25 +131,24 @@ Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.DynamicDataGridPane
|
|
|
25
131
|
},
|
|
26
132
|
reset:false,
|
|
27
133
|
success:function(form, action){
|
|
28
|
-
//self.clearWindowStatus();
|
|
29
134
|
var obj = Ext.decode(action.response.responseText);
|
|
30
135
|
if(obj.success){
|
|
31
|
-
var randomnumber=Math.floor(Math.random()*1024)
|
|
136
|
+
var randomnumber = Math.floor(Math.random()*1024);
|
|
32
137
|
var target_div = 'new-comment-'+randomnumber;
|
|
33
138
|
string = '<div id="'+target_div+'" class="comment">';
|
|
34
139
|
string += '<i>by you, just now</i><br />';
|
|
35
140
|
string += formPanel.getForm().findField('comment').getValue();
|
|
36
141
|
string += '</div>';
|
|
37
142
|
document.getElementById(comment_div_id).innerHTML += string;
|
|
38
|
-
|
|
143
|
+
button.findParentByType('window').close();
|
|
39
144
|
codemirrorHighlight(target_div);
|
|
145
|
+
Ext.getCmp('commentsPanel'+model_name+record_id).doLayout();
|
|
40
146
|
}
|
|
41
147
|
else{
|
|
42
148
|
Ext.Msg.alert("Error", obj.msg);
|
|
43
149
|
}
|
|
44
150
|
},
|
|
45
151
|
failure:function(form, action){
|
|
46
|
-
//self.clearWindowStatus();
|
|
47
152
|
var obj = Ext.decode(action.response.responseText);
|
|
48
153
|
if(Compass.ErpApp.Utility.isBlank(obj.message)){
|
|
49
154
|
Ext.Msg.alert("Error", 'Error adding comment.');
|
|
@@ -56,7 +161,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.DynamicDataGridPane
|
|
|
56
161
|
}
|
|
57
162
|
}
|
|
58
163
|
}]
|
|
59
|
-
}
|
|
164
|
+
};
|
|
60
165
|
|
|
61
166
|
var commentWindow = Ext.create('Ext.window.Window',{
|
|
62
167
|
id: 'commentWindow_'+model_name+record_id,
|
|
@@ -65,145 +170,224 @@ Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.DynamicDataGridPane
|
|
|
65
170
|
autoDestroy:true
|
|
66
171
|
});
|
|
67
172
|
|
|
68
|
-
commentWindow.show();
|
|
69
|
-
|
|
173
|
+
commentWindow.show();
|
|
70
174
|
},
|
|
71
175
|
|
|
72
|
-
viewRecord : function(rec,
|
|
176
|
+
viewRecord : function(rec, formPanel){
|
|
73
177
|
var self = this;
|
|
74
|
-
|
|
178
|
+
var gridpanel_id = self.id;
|
|
179
|
+
var record_id = (Ext.isEmpty(rec.model_name) ? rec.get("id") : rec.id);
|
|
180
|
+
var model_name = (Ext.isEmpty(rec.model_name) ? rec.get("model_name") : rec.model_name);
|
|
181
|
+
|
|
182
|
+
// check and see if tab already open
|
|
183
|
+
var center_region = self.findParentByType('dynamic_forms_centerregion');
|
|
184
|
+
var tab = center_region.workArea.query('#'+model_name+'-'+record_id).first();
|
|
185
|
+
if (tab){
|
|
186
|
+
center_region.workArea.setActiveTab(center_region.workArea.items.length - 1);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
Ext.getCmp('dynamic_forms_westregion').setWindowStatus('Getting data ...');
|
|
75
191
|
Ext.Ajax.request({
|
|
76
192
|
url: '/erp_forms/erp_app/desktop/dynamic_forms/data/get',
|
|
77
193
|
method: 'POST',
|
|
78
194
|
params:{
|
|
79
|
-
id:
|
|
80
|
-
model_name:
|
|
195
|
+
id:record_id,
|
|
196
|
+
model_name:model_name
|
|
81
197
|
},
|
|
82
198
|
success: function(response) {
|
|
83
|
-
Ext.getCmp('
|
|
199
|
+
Ext.getCmp('dynamic_forms_westregion').clearWindowStatus();
|
|
84
200
|
var response_text = Ext.decode(response.responseText);
|
|
85
201
|
var center_region = self.findParentByType('dynamic_forms_centerregion');
|
|
86
|
-
|
|
87
202
|
var ticket_div_id = gridpanel_id+'_ticket';
|
|
88
203
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
204
|
+
var leftPanelItems = [formPanel];
|
|
205
|
+
|
|
206
|
+
//comments
|
|
207
|
+
if (response_text.comments){
|
|
208
|
+
var comment_div_id = gridpanel_id+'_comments';
|
|
209
|
+
comments_string = '<div id="'+comment_div_id+'" class="comments">';
|
|
210
|
+
Ext.each(response_text.comments, function(comment){
|
|
211
|
+
comments_string += '<div class="comment">';
|
|
212
|
+
comments_string += '<i>by '+comment.commentor_name+ ', '+comment.created_at+'</i><br />';
|
|
213
|
+
comments_string += comment.comment;
|
|
214
|
+
comments_string += '</div>';
|
|
215
|
+
});
|
|
216
|
+
comments_string += '</div>';
|
|
217
|
+
|
|
218
|
+
var commentsPanel = {
|
|
219
|
+
id: 'commentsPanel'+model_name+record_id,
|
|
220
|
+
xtype: 'panel',
|
|
221
|
+
title: 'Comments',
|
|
222
|
+
html: comments_string,
|
|
223
|
+
tbar: [{
|
|
224
|
+
xtype: 'button',
|
|
225
|
+
text: 'Add Comment',
|
|
226
|
+
iconCls: 'icon-add',
|
|
227
|
+
listeners:{
|
|
228
|
+
click: function(button){
|
|
229
|
+
Ext.getCmp(gridpanel_id).addCommentWindow(record_id, model_name, comment_div_id);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}]
|
|
233
|
+
};
|
|
234
|
+
leftPanelItems.push(commentsPanel);
|
|
102
235
|
}
|
|
103
|
-
string += '</div>';
|
|
104
236
|
|
|
105
|
-
var
|
|
237
|
+
var leftPanel = {
|
|
238
|
+
xtype: 'panel',
|
|
239
|
+
autoScroll: true,
|
|
240
|
+
items: leftPanelItems,
|
|
241
|
+
region: 'center'
|
|
242
|
+
};
|
|
106
243
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
244
|
+
var metaDataPanel = {
|
|
245
|
+
xtype: 'form',
|
|
246
|
+
title: 'MetaData',
|
|
247
|
+
bodyPadding: 10,
|
|
248
|
+
items:[
|
|
249
|
+
{
|
|
250
|
+
xtype: 'displayfield',
|
|
251
|
+
fieldLabel: 'Created By',
|
|
252
|
+
value: response_text.metadata.created_username
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
xtype: 'displayfield',
|
|
256
|
+
fieldLabel: 'Created At',
|
|
257
|
+
value: response_text.metadata.created_at
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
xtype: 'displayfield',
|
|
261
|
+
fieldLabel: 'Updated By',
|
|
262
|
+
value: response_text.metadata.updated_username
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
xtype: 'displayfield',
|
|
266
|
+
fieldLabel: 'Updated At',
|
|
267
|
+
value: response_text.metadata.updated_at
|
|
268
|
+
}
|
|
269
|
+
]
|
|
270
|
+
};
|
|
110
271
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
272
|
+
var rightPanelItems = [metaDataPanel];
|
|
273
|
+
|
|
274
|
+
if (response_text.has_file_assets){
|
|
275
|
+
var fileTree = Ext.create('Compass.ErpApp.Desktop.Applications.DynamicForms.FileTree', {
|
|
276
|
+
width: 250,
|
|
277
|
+
minHeight: 800,
|
|
278
|
+
listeners:{
|
|
279
|
+
'beforeload':function(store){
|
|
280
|
+
store.getProxy().extraParams.id = record_id;
|
|
281
|
+
store.getProxy().extraParams.model_name = model_name;
|
|
282
|
+
},
|
|
283
|
+
'load':function(store){
|
|
284
|
+
store.getRootNode().expand();
|
|
285
|
+
},
|
|
286
|
+
'afterrender':function(panel){
|
|
287
|
+
setTimeout(function(){
|
|
288
|
+
panel.getStore().load();
|
|
289
|
+
},100);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
116
292
|
});
|
|
117
|
-
|
|
118
|
-
|
|
293
|
+
fileTree.extraPostData = {
|
|
294
|
+
id: record_id,
|
|
295
|
+
model_name: model_name
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
rightPanelItems.push(fileTree);
|
|
119
299
|
}
|
|
120
300
|
|
|
121
|
-
var
|
|
301
|
+
var rightPanel = {
|
|
122
302
|
xtype: 'panel',
|
|
123
|
-
|
|
303
|
+
items: rightPanelItems,
|
|
304
|
+
region: 'east',
|
|
305
|
+
width: 250
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
var viewPanel = Ext.create('Ext.panel.Panel',{
|
|
309
|
+
itemId: model_name+'-'+record_id,
|
|
310
|
+
layout: 'border',
|
|
311
|
+
title: model_name+' '+record_id,
|
|
124
312
|
closable: true,
|
|
125
313
|
autoScroll: true,
|
|
126
|
-
record: rec,
|
|
127
|
-
|
|
128
|
-
items: [],
|
|
314
|
+
record: rec,
|
|
315
|
+
items: [leftPanel, rightPanel],
|
|
129
316
|
listeners:{
|
|
130
|
-
'afterrender':function(){
|
|
317
|
+
'afterrender':function(panel){
|
|
131
318
|
codemirrorHighlight(ticket_div_id);
|
|
132
319
|
codemirrorHighlight(comment_div_id);
|
|
133
|
-
|
|
320
|
+
panel.query('dynamic_form_panel').first().addListener('afterupdate', function(){
|
|
321
|
+
// update status bar with save message
|
|
322
|
+
// reload grid
|
|
323
|
+
var tabPanel = panel.findParentByType('tabpanel');
|
|
324
|
+
tabPanel.query('#'+model_name).first().query('shared_dynamiceditablegrid').first().getStore().load({});
|
|
325
|
+
});
|
|
326
|
+
}
|
|
134
327
|
}
|
|
135
|
-
}
|
|
136
|
-
|
|
328
|
+
});
|
|
137
329
|
center_region.workArea.add(viewPanel);
|
|
330
|
+
viewPanel.query('form').first().getForm().loadRecord(response_text);
|
|
138
331
|
center_region.workArea.setActiveTab(center_region.workArea.items.length - 1);
|
|
139
332
|
},
|
|
140
333
|
failure: function(response) {
|
|
141
|
-
Ext.getCmp('
|
|
334
|
+
Ext.getCmp('dynamic_forms_westregion').clearWindowStatus();
|
|
142
335
|
Ext.Msg.alert('Error', 'Error getting data');
|
|
143
336
|
}
|
|
144
337
|
});
|
|
145
338
|
},
|
|
146
|
-
|
|
147
|
-
editRecord : function(rec
|
|
339
|
+
|
|
340
|
+
editRecord : function(rec){
|
|
148
341
|
var self = this;
|
|
149
|
-
Ext.getCmp('
|
|
342
|
+
Ext.getCmp('dynamic_forms_westregion').setWindowStatus('Getting update form...');
|
|
150
343
|
Ext.Ajax.request({
|
|
151
344
|
url: '/erp_forms/erp_app/desktop/dynamic_forms/forms/get',
|
|
152
345
|
method: 'POST',
|
|
153
|
-
params:{
|
|
154
|
-
id:rec.get("form_id"),
|
|
155
|
-
record_id:rec.get("id"),
|
|
156
|
-
model_name:model_name,
|
|
346
|
+
params:{ // params can come from create response or grid store
|
|
347
|
+
id:(Ext.isEmpty(rec.model_name) ? rec.get("form_id") : rec.form_id),
|
|
348
|
+
record_id:(Ext.isEmpty(rec.model_name) ? rec.get("id") : rec.id),
|
|
349
|
+
model_name:(Ext.isEmpty(rec.model_name) ? rec.get("model_name") : rec.model_name),
|
|
157
350
|
form_action: 'update'
|
|
158
351
|
},
|
|
159
|
-
success: function(response)
|
|
160
|
-
Ext.getCmp('
|
|
161
|
-
|
|
162
|
-
if (
|
|
163
|
-
Ext.Msg.alert('Error',
|
|
352
|
+
success: function(response, options){
|
|
353
|
+
Ext.getCmp('dynamic_forms_westregion').clearWindowStatus();
|
|
354
|
+
formPanel = Ext.decode(response.responseText);
|
|
355
|
+
if (formPanel.success === false){
|
|
356
|
+
Ext.Msg.alert('Error', formPanel.error);
|
|
164
357
|
}else{
|
|
165
|
-
|
|
166
|
-
layout:'fit',
|
|
167
|
-
title:'Update Record',
|
|
168
|
-
y: 100, // this fixes chrome and safari rendering the window at the bottom of the screen
|
|
169
|
-
plain: true,
|
|
170
|
-
buttonAlign:'center',
|
|
171
|
-
items: form_definition
|
|
172
|
-
});
|
|
173
|
-
Ext.getCmp('dynamic_form_panel_'+model_name).getForm().loadRecord(rec);
|
|
174
|
-
editRecordWindow.show();
|
|
358
|
+
self.viewRecord(rec, formPanel);
|
|
175
359
|
}
|
|
176
360
|
},
|
|
177
|
-
failure: function(response)
|
|
178
|
-
Ext.getCmp('
|
|
361
|
+
failure: function(response, options){
|
|
362
|
+
Ext.getCmp('dynamic_forms_westregion').clearWindowStatus();
|
|
179
363
|
Ext.Msg.alert('Error', 'Error getting form');
|
|
180
364
|
}
|
|
181
365
|
});
|
|
182
|
-
},
|
|
366
|
+
},
|
|
183
367
|
|
|
184
368
|
deleteRecord : function(rec, model_name){
|
|
185
369
|
var self = this;
|
|
186
|
-
Ext.getCmp('
|
|
370
|
+
Ext.getCmp('dynamic_forms_westregion').setWindowStatus('Deleting record...');
|
|
187
371
|
Ext.Ajax.request({
|
|
188
372
|
url: '/erp_forms/erp_app/desktop/dynamic_forms/data/delete',
|
|
189
373
|
method: 'POST',
|
|
190
374
|
params:{
|
|
191
375
|
id:rec.get("id"),
|
|
192
|
-
model_name:model_name
|
|
376
|
+
model_name:rec.get("model_name")
|
|
193
377
|
},
|
|
194
378
|
success: function(response) {
|
|
195
379
|
var obj = Ext.decode(response.responseText);
|
|
196
380
|
if(obj.success){
|
|
197
|
-
Ext.getCmp('
|
|
381
|
+
Ext.getCmp('dynamic_forms_westregion').clearWindowStatus();
|
|
198
382
|
self.query('shared_dynamiceditablegrid')[0].store.load();
|
|
199
383
|
}
|
|
200
384
|
else{
|
|
201
385
|
Ext.Msg.alert('Error', 'Error deleting record');
|
|
202
|
-
Ext.getCmp('
|
|
386
|
+
Ext.getCmp('dynamic_forms_westregion').clearWindowStatus();
|
|
203
387
|
}
|
|
204
388
|
},
|
|
205
389
|
failure: function(response) {
|
|
206
|
-
Ext.getCmp('
|
|
390
|
+
Ext.getCmp('dynamic_forms_westregion').clearWindowStatus();
|
|
207
391
|
Ext.Msg.alert('Error', 'Error deleting record');
|
|
208
392
|
}
|
|
209
393
|
});
|
|
@@ -212,7 +396,6 @@ Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.DynamicDataGridPane
|
|
|
212
396
|
constructor : function(config) {
|
|
213
397
|
config = Ext.apply({
|
|
214
398
|
id:config.id,
|
|
215
|
-
//title:'Dynamic Data',
|
|
216
399
|
editable:false,
|
|
217
400
|
page:true,
|
|
218
401
|
pageSize: 20,
|
|
@@ -220,7 +403,7 @@ Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.DynamicDataGridPane
|
|
|
220
403
|
emptyMsg:'Empty',
|
|
221
404
|
grid_listeners:{
|
|
222
405
|
'itemdblclick':function(view, record){
|
|
223
|
-
Ext.getCmp(config.id).
|
|
406
|
+
Ext.getCmp(config.id).editRecord(record);
|
|
224
407
|
}
|
|
225
408
|
}
|
|
226
409
|
}, config);
|
|
@@ -228,4 +411,3 @@ Ext.define("Compass.ErpApp.Desktop.Applications.DynamicForms.DynamicDataGridPane
|
|
|
228
411
|
this.callParent([config]);
|
|
229
412
|
}
|
|
230
413
|
});
|
|
231
|
-
|