erp_forms 2.0.6 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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,6 +1,10 @@
1
1
  class DynamicFormDocument < ActiveRecord::Base
2
+ attr_protected :created_at, :updated_at
3
+
2
4
  belongs_to :dynamic_form_model
3
5
 
6
+ acts_as_dynamic_form_model
7
+ has_file_assets
4
8
  has_dynamic_forms
5
9
  has_dynamic_data
6
10
 
@@ -20,15 +24,4 @@ class DynamicFormDocument < ActiveRecord::Base
20
24
  end
21
25
  end
22
26
 
23
- def self.class_exists?(class_name)
24
- result = nil
25
- begin
26
- klass = Module.const_get(class_name)
27
- result = klass.is_a?(Class) ? ((klass.superclass == ActiveRecord::Base or klass.superclass == DynamicModel) ? true : nil) : nil
28
- rescue NameError
29
- result = nil
30
- end
31
- result
32
- end
33
-
34
27
  end
@@ -1,42 +1,66 @@
1
1
  class DynamicFormModel < ActiveRecord::Base
2
+ attr_protected :created_at, :updated_at
3
+
2
4
  has_many :dynamic_form_documents
3
5
  has_many :dynamic_forms, :dependent => :destroy
6
+ after_create :create_role
7
+
8
+ validates_uniqueness_of :model_name
9
+
10
+ def create_role
11
+ SecurityRole.create(:description => self.model_name.titleize.pluralize, :internal_identifier => role_iid) if self.role.nil?
12
+ end
13
+
14
+ def role_iid
15
+ "dynamic_form_model_#{self.model_name}"
16
+ end
17
+
18
+ def role
19
+ SecurityRole.iid(role_iid)
20
+ end
21
+
22
+ def self.sunspot_setup_all
23
+ DynamicFormModel.all.each do |m|
24
+ next if m.model_name == 'DynamicFormDocument'
25
+ next unless ActiveRecord::Base.connection.table_exists? m.get_constant.table_name
26
+ m.get_constant.sunspot_setup unless DynamicFormModel.class_exists?(m.model_name)
27
+ end
28
+ end
4
29
 
5
30
  def self.get_constant(klass_name)
6
- result = nil
7
- begin
31
+ result = nil
32
+ begin
8
33
  result = klass_name.constantize
9
34
  rescue
10
35
  DynamicFormDocument.declare(klass_name)
11
36
  result = klass_name.constantize
12
37
  end
13
- result
38
+ result
39
+ end
40
+
41
+ # checks to see if class name exists as a static model or has already been declared
42
+ # used with sunspot_setup_all
43
+ def self.class_exists?(class_name)
44
+ result = nil
45
+ begin
46
+ klass = Module.const_get(class_name)
47
+ result = (klass.is_a?(Class) ? ((klass.superclass == ActiveRecord::Base or klass.superclass == DynamicFormModel) ? true : nil) : nil)
48
+ rescue NameError
49
+ result = nil
50
+ end
51
+ result
14
52
  end
15
53
 
16
54
  def self.get_instance(klass_name)
17
55
  DynamicFormModel.get_constant(klass_name).new
18
56
  end
19
57
 
20
- # handles both static and dynamic attributes
21
- def self.save_all_attributes(dynamicObject, params, ignored_params=[])
22
-
23
- params.each do |k,v|
24
- unless ignored_params.include?(k.to_s) or k == '' or k == '_'
25
- if dynamicObject.attributes.include?(k)
26
- dynamicObject.send(k + '=', v)
27
- else
28
- if ['created_by','updated_by','created_at','updated_at','created_with_form_id','updated_with_form_id'].include?(k)
29
- key = k + '='
30
- else
31
- key = DynamicDatum::DYNAMIC_ATTRIBUTE_PREFIX + k + '='
32
- end
33
-
34
- dynamicObject.data.send(key, v)
35
- end
36
- end
37
- end
58
+ def get_constant
59
+ DynamicFormModel.get_constant(self.model_name)
60
+ end
38
61
 
39
- (dynamicObject.valid? and dynamicObject.save) ? dynamicObject : nil
62
+ def get_instance
63
+ DynamicFormModel.get_instance(self.model_name)
40
64
  end
41
65
 
42
66
  end
@@ -1,6 +1,10 @@
1
1
  class Ticket < ActiveRecord::Base
2
+ attr_protected :created_at, :updated_at
3
+
2
4
  belongs_to :user, :foreign_key => 'assigned_to_id'
3
5
 
6
+ acts_as_dynamic_form_model
7
+ has_file_assets
4
8
  has_dynamic_forms
5
9
  has_dynamic_data
6
10
  acts_as_commentable
@@ -0,0 +1,3 @@
1
+ <% @dynamicData.each do |k,v| -%>
2
+ <b><%=k %>:</b> <%=v %><br />
3
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% @dynamicData.each do |k,v| -%>
2
+ <%=k %>: <%=v %>
3
+ <% end %>
@@ -6,28 +6,110 @@ module Widgets
6
6
  end
7
7
 
8
8
  def new
9
- @website = Website.find_by_host(request.host_with_port)
10
-
11
- @myDynamicObject = DynamicFormModel.get_instance(params[:model_name])
12
-
13
- params[:created_by] = current_user unless current_user.nil?
14
- params[:created_with_form_id] = params[:dynamic_form_id] if params[:dynamic_form_id] and params[:is_html_form].blank?
15
- params[:website_id] = @website.id
16
- @myDynamicObject = DynamicFormModel.save_all_attributes(@myDynamicObject, params, ErpApp::Widgets::Base::IGNORED_PARAMS)
17
-
18
- if @myDynamicObject
19
- render :json => {
20
- :success => true,
21
- :response => render_to_string(:template => "success", :layout => false)
22
- }
23
- else
24
- render :json => {
9
+ begin
10
+ unless params[:file].nil?
11
+ # size check
12
+ if params[:file].tempfile.size > ErpTechSvcs::Config.max_file_size_in_mb.megabytes
13
+ raise "File cannot be larger than #{ErpTechSvcs::Config.max_file_size_in_mb}MB"
14
+ end
15
+ end
16
+ form_data = JSON.parse(params[:form_data_json])
17
+ form_data[:dynamic_form_id] = params[:dynamic_form_id]
18
+ form_data[:model_name] = params[:model_name]
19
+ form_data.symbolize_keys!
20
+ @website = Website.find_by_host(request.host_with_port)
21
+
22
+ if form_data[:email_subject].blank?
23
+ subject = "#{form_data[:model_name]} Submission from #{@website.title}"
24
+ else
25
+ subject = strip_tags(form_data[:email_subject])
26
+ form_data.delete(:email_subject)
27
+ end
28
+
29
+ @myDynamicObject = DynamicFormModel.get_instance(form_data[:model_name])
30
+
31
+ form_data[:created_by] = current_user unless current_user.nil?
32
+ form_data[:created_with_form_id] = form_data[:dynamic_form_id] if form_data[:dynamic_form_id] and params[:is_html_form].blank?
33
+ form_data[:website] = @website.title
34
+
35
+ @myDynamicObject = @myDynamicObject.assign_all_attributes(form_data, ErpApp::Widgets::Base::IGNORED_PARAMS)
36
+
37
+ # get dynamic for from form_data[:created_with_form_id]
38
+ form = DynamicForm.find(form_data[:created_with_form_id])
39
+
40
+ # check widget_action from dynamic form
41
+ if !form.nil? and ['email', 'both'].include?(form.widget_action)
42
+ # email data
43
+ attachments = (params[:file].nil? ? [] : [params[:file]])
44
+ send_email(form, @myDynamicObject, subject, attachments)
45
+ end
46
+
47
+ if form.nil? or (!form.nil? and ['save', 'both'].include?(form.widget_action))
48
+ #save data
49
+ @myDynamicObject.save
50
+ save_file_asset(form_data) unless params[:file].nil?
51
+ end
52
+
53
+ output = render_to_string(:template => "success", :layout => false)
54
+ render :inline => {
55
+ :success => true,
56
+ :response => (file_upload_request? ? ERB::Util.html_escape(output) : output)
57
+ }.to_json
58
+ rescue Exception => e
59
+ Rails.logger.error e.message
60
+ Rails.logger.error e.backtrace.join("\n")
61
+ output = render_to_string(:template => "error", :layout => false, :locals => {:message => e.message})
62
+ render :inline => {
25
63
  :success => false,
26
- :response => render_to_string(:template => "error", :layout => false)
27
- }
28
- end
64
+ :response => (file_upload_request? ? ERB::Util.html_escape(output) : output)
65
+ }.to_json
66
+ end
29
67
  end
30
68
 
69
+ protected
70
+ def file_upload_request?
71
+ request.env['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest'
72
+ end
73
+
74
+ def save_file_asset(form_data)
75
+ result = {}
76
+ name = params[:file].original_filename
77
+ data = params[:file].tempfile
78
+ set_file_support
79
+
80
+ begin
81
+ @root_node = File.join(ErpTechSvcs::Config.file_assets_location, form_data[:model_name], @myDynamicObject.id.to_s)
82
+ file = @myDynamicObject.add_file(data, File.join(@file_support.root, base_path, name))
83
+
84
+ roles = ['admin', @myDynamicObject.role_iid]
85
+ (@myDynamicObject.file_security_default == 'private') ? file.add_capability(:download, 'FileAsset', roles) : file.remove_all_capabilities
86
+
87
+ return {:success => true}
88
+ rescue Exception => e
89
+ Rails.logger.error e.message
90
+ Rails.logger.error e.backtrace
91
+ raise "Error uploading file. #{e.message}"
92
+ end
93
+ end
94
+
95
+ def base_path
96
+ @base_path = (@root_node.nil? ? nil : File.join(@file_support.root, @root_node))
97
+ end
98
+
99
+ def set_file_support
100
+ @file_support = ErpTechSvcs::FileSupport::Base.new(:storage => ErpTechSvcs::Config.file_storage)
101
+ end
102
+
103
+ def send_email(form, dynamicObject, subject='', attachments=[])
104
+ begin
105
+ DynamicFormMailer.widget_email_with_attachments(form, dynamicObject, subject, attachments).deliver
106
+ rescue Exception => e
107
+ Rails.logger.error e.message
108
+ Rails.logger.error e.backtrace
109
+ raise "Error sending email. #{e.message}"
110
+ end
111
+ end
112
+
31
113
  #should not be modified
32
114
  #modify at your own risk
33
115
  def locate
@@ -4,7 +4,6 @@ Compass.ErpApp.Widgets.DynamicForms = {
4
4
  layout:'fit',
5
5
  width:375,
6
6
  title:'Add DynamicForm Widget',
7
- height:190,
8
7
  plain: true,
9
8
  buttonAlign:'center',
10
9
  items: Ext.create("Ext.form.Panel",{
@@ -17,7 +16,6 @@ Compass.ErpApp.Widgets.DynamicForms = {
17
16
  items: [
18
17
  {
19
18
  xtype:'combo',
20
- id:'WidgetDynamicFormModelName',
21
19
  value:'',
22
20
  loadingText:'Retrieving Dynamic Form Models ...',
23
21
  store:Ext.create('Ext.data.Store',{
@@ -30,32 +28,32 @@ Compass.ErpApp.Widgets.DynamicForms = {
30
28
  url:'/erp_forms/erp_app/desktop/dynamic_forms/models/index'
31
29
  },
32
30
  fields:[
33
- {
34
- name:'id'
35
- },
36
- {
37
- name:'model_name'
38
-
39
- }
31
+ {
32
+ name:'id'
33
+ },
34
+ {
35
+ name:'model_name'
36
+ }
40
37
  ]
41
38
  }),
42
39
  forceSelection:true,
43
40
  editable:true,
44
- fieldLabel:'Dynamic Form Model Name (Class)',
41
+ fieldLabel:'Model Name',
45
42
  autoSelect:true,
46
- typeAhead: true,
47
43
  mode: 'remote',
44
+ name: 'model_name',
48
45
  displayField:'model_name',
49
46
  valueField:'model_name',
50
47
  triggerAction: 'all',
51
- allowBlank:false
48
+ allowBlank:false,
49
+ plugins: [new helpQtip("Dynamic Form Model Name (Class)")]
52
50
  },
53
51
  {
54
52
  xtype:'textfield',
55
- fieldLabel:'Form Width in Pixels',
56
- allowBlank:false,
57
- value:'410',
58
- id:'WidgetDynamicFormWidth'
53
+ fieldLabel:'Form Width',
54
+ name: 'form_width',
55
+ allowBlank:true,
56
+ plugins: [new helpQtip("Form Width in Pixels. Leave blank for auto width.")]
59
57
  }
60
58
  ]
61
59
  }),
@@ -65,30 +63,34 @@ Compass.ErpApp.Widgets.DynamicForms = {
65
63
  'click':function(button){
66
64
  var tpl = null;
67
65
  var content = null;
68
- var window = button.findParentByType('window');
69
- var formPanel = window.query('form')[0];
66
+ var formPanel = button.findParentByType('window').query('form').first();
70
67
  var basicForm = formPanel.getForm();
68
+ var WidgetDynamicFormModelName = basicForm.findField('model_name');
69
+ var WidgetDynamicFormWidth = basicForm.findField('form_width');
70
+ if (basicForm.isValid()){
71
+ var data = {
72
+ WidgetDynamicFormModelName: WidgetDynamicFormModelName.getValue(),
73
+ WidgetDynamicFormWidth: WidgetDynamicFormWidth.getValue()
74
+ };
71
75
 
72
- var WidgetDynamicFormModelName = basicForm.findField('WidgetDynamicFormModelName');
73
- var data = {};
74
- data.WidgetDynamicFormModelName = WidgetDynamicFormModelName.getValue();
75
-
76
- var WidgetDynamicFormWidth = basicForm.findField('WidgetDynamicFormWidth');
77
- data.WidgetDynamicFormWidth = WidgetDynamicFormWidth.getValue();
78
- tpl = new Ext.XTemplate(
79
- "<% # Optional Parameters:\n",
80
- " # internal_identifier: Models can have multiple forms\n",
81
- " # Leave blank if you want to use the default form\n",
82
- " # Specify internal_identifier to choose a specific form %>\n",
83
- "<%= render_widget :dynamic_forms,\n",
84
- " :params => {:model_name => '{WidgetDynamicFormModelName}',\n",
85
- " :internal_identifier => '',\n",
86
- " :width => {WidgetDynamicFormWidth}} %>");
87
- content = tpl.apply(data);
76
+ tpl = new Ext.XTemplate(
77
+ "<% # Optional Parameters:\n",
78
+ " # internal_identifier: Models can have multiple forms\n",
79
+ " # Leave blank if you want to use the default form\n",
80
+ " # Specify internal_identifier to choose a specific form %>\n",
81
+ "<%= render_widget :dynamic_forms,\n",
82
+ " :params => {:model_name => '{WidgetDynamicFormModelName}',\n",
83
+ " :internal_identifier => ''",
84
+ '<tpl if="WidgetDynamicFormWidth">',
85
+ ",\n :width => {WidgetDynamicFormWidth} ",
86
+ '</tpl>',
87
+ "} %>");
88
+ content = tpl.apply(data);
88
89
 
89
- //add rendered template to center region editor
90
- Ext.getCmp('knitkitCenterRegion').addContentToActiveCodeMirror(content);
91
- addDynamicFormWidgetWindow.close();
90
+ //add rendered template to center region editor
91
+ Ext.getCmp('knitkitCenterRegion').addContentToActiveCodeMirror(content);
92
+ addDynamicFormWidgetWindow.close();
93
+ }
92
94
  }
93
95
  }
94
96
  },{
@@ -100,7 +102,7 @@ Compass.ErpApp.Widgets.DynamicForms = {
100
102
  });
101
103
  addDynamicFormWidgetWindow.show();
102
104
  }
103
- }
105
+ };
104
106
 
105
107
  Compass.ErpApp.Widgets.AvailableWidgets.push({
106
108
  name:'Dynamic Forms',
@@ -1,4 +1,5 @@
1
1
  <div>
2
2
  <h1>An Error Occurred</h1>
3
+ <%= message unless message.nil? %>
3
4
 
4
5
  </div>
@@ -18,6 +18,8 @@ class CreateDefaultDynamicModelsAndForms
18
18
  d.internal_identifier = 'contact_us'
19
19
  d.default = true
20
20
  d.dynamic_form_model = DynamicFormModel.create(:model_name => 'WebsiteInquiry')
21
+ 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."
22
+ d.msg_target = 'qtip'
21
23
  d.save
22
24
  end
23
25
 
@@ -53,6 +53,7 @@ class CreateTicketForm
53
53
  d.internal_identifier = 'ticket'
54
54
  d.default = true
55
55
  d.dynamic_form_model = DynamicFormModel.create(:model_name => 'Ticket')
56
+ d.msg_target = 'qtip'
56
57
  d.save
57
58
  end
58
59
 
@@ -0,0 +1,64 @@
1
+ class UpdateTicketForm
2
+
3
+ def self.up
4
+ model = DynamicFormModel.find_by_model_name('Ticket')
5
+ model.create_role
6
+
7
+ #insert data here
8
+ fields = []
9
+
10
+ fields << DynamicFormField.textfield({:fieldLabel => 'Title', :name => 'title', :width => 250, :allowBlank => false })
11
+ fields << DynamicFormField.combobox([['Open', 'Open'],['Closed', 'Closed']],{:fieldLabel => 'Status', :name => 'status', :width => 175, :allowBlank => false })
12
+ fields << DynamicFormField.combobox([ ['Defect', 'Defect'],
13
+ ['Feature', 'Feature'],
14
+ ['Issue', 'Issue'],
15
+ ['Task', 'Task'],
16
+ ],{:fieldLabel => 'Type', :name => 'type', :width => 175, :allowBlank => false })
17
+ fields << DynamicFormField.combobox([['High', 'High'],['Medium', 'Medium'],['Low', 'Low']],{:fieldLabel => 'Priority', :name => 'priority', :width => 175, :allowBlank => false })
18
+ fields << DynamicFormField.combobox([ ['compass_ae_console', 'compass_ae_console'],
19
+ ['compass_ae_starter_kit', 'compass_ae_starter_kit'],
20
+ ['data_migrator', 'data_migrator'],
21
+ ['erp_agreements', 'erp_agreements'],
22
+ ['erp_app', 'erp_app'],
23
+ ['erp_base_erp_svcs', 'erp_base_erp_svcs'],
24
+ ['erp_commerce', 'erp_commerce'],
25
+ ['erp_communication_events', 'erp_communication_events'],
26
+ ['erp_dev_svcs', 'erp_dev_svcs'],
27
+ ['erp_financial_accounting', 'erp_financial_accounting'],
28
+ ['erp_forms', 'erp_forms'],
29
+ ['erp_inventory', 'erp_inventory'],
30
+ ['erp_invoicing', 'erp_invoicing'],
31
+ ['erp_offers', 'erp_offers'],
32
+ ['erp_orders', 'erp_orders'],
33
+ ['erp_products', 'erp_products'],
34
+ ['erp_rules', 'erp_rules'],
35
+ ['erp_search', 'erp_search'],
36
+ ['erp_tech_svcs', 'erp_tech_svcs'],
37
+ ['erp_txns_and_accts', 'erp_txns_and_accts'],
38
+ ['erp_work_effort', 'erp_work_effort'],
39
+ ['erp_workflow', 'erp_workflow'],
40
+ ['knitkit', 'knitkit'],
41
+ ['master_data_management', 'master_data_management'],
42
+ ['prismpay', 'prismpay'],
43
+ ['rails_db_admin', 'rails_db_admin'],
44
+ ['tenancy', 'tenancy'],
45
+ ['timeshare', 'timeshare']
46
+ ],
47
+ {:fieldLabel => 'Product', :name => 'product', :width => 270, :allowBlank => true })
48
+ fields << DynamicFormField.combobox([['None', 'None']],{:fieldLabel => 'Project', :name => 'project', :width => 175, :allowBlank => true })
49
+ fields << DynamicFormField.related_combobox('User','username',{:fieldLabel => 'Assigned To', :name => 'assigned_to_id', :width => 175, :allowBlank => true })
50
+ fields << DynamicFormField.textarea({:fieldLabel => 'Body', :name => 'body', :width => 400, :height => 300, :allowBlank => false, :display_in_grid => false })
51
+
52
+ d = DynamicForm.find_by_internal_identifier('ticket')
53
+ unless d.nil?
54
+ d.definition = fields.to_json
55
+ d.msg_target = 'qtip'
56
+ d.save
57
+ end
58
+ end
59
+
60
+ def self.down
61
+ #remove data here
62
+ end
63
+
64
+ end