knitkit 2.1.15 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. checksums.yaml +7 -0
  2. data/app/controllers/knitkit/base_controller.rb +1 -1
  3. data/app/controllers/knitkit/comments_controller.rb +7 -2
  4. data/app/controllers/knitkit/erp_app/desktop/app_controller.rb +78 -98
  5. data/app/controllers/knitkit/erp_app/desktop/articles_controller.rb +65 -45
  6. data/app/controllers/knitkit/erp_app/desktop/content_controller.rb +22 -12
  7. data/app/controllers/knitkit/erp_app/desktop/file_assets_controller.rb +1 -1
  8. data/app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb +28 -16
  9. data/app/controllers/knitkit/erp_app/desktop/inquiries_controller.rb +15 -49
  10. data/app/controllers/knitkit/erp_app/desktop/online_document_sections_controller.rb +4 -3
  11. data/app/controllers/knitkit/erp_app/desktop/position_controller.rb +69 -11
  12. data/app/controllers/knitkit/erp_app/desktop/theme_controller.rb +63 -60
  13. data/app/controllers/knitkit/erp_app/desktop/website_controller.rb +98 -82
  14. data/app/controllers/knitkit/erp_app/desktop/website_host_controller.rb +77 -0
  15. data/app/controllers/knitkit/erp_app/desktop/website_nav_controller.rb +64 -44
  16. data/app/controllers/knitkit/erp_app/desktop/website_nav_item_controller.rb +147 -0
  17. data/app/controllers/knitkit/erp_app/desktop/website_section_controller.rb +81 -45
  18. data/app/controllers/knitkit/mobile_controller.rb +15 -0
  19. data/app/controllers/knitkit/online_document_sections_controller.rb +2 -1
  20. data/app/controllers/knitkit/unauthorized_controller.rb +0 -1
  21. data/app/controllers/knitkit/website_sections_controller.rb +7 -4
  22. data/app/mailers/website_inquiry_mailer.rb +8 -7
  23. data/app/models/content.rb +11 -2
  24. data/app/models/document.rb +2 -17
  25. data/app/models/published_website.rb +96 -59
  26. data/app/models/theme.rb +100 -14
  27. data/app/models/website.rb +260 -28
  28. data/app/models/website_inquiry.rb +5 -12
  29. data/app/models/website_section.rb +9 -1
  30. data/app/views/knitkit/blogs/_add_comment.html.erb +44 -23
  31. data/app/views/knitkit/blogs/_comment.html.erb +4 -6
  32. data/app/views/knitkit/blogs/index.html.erb +63 -49
  33. data/app/views/knitkit/blogs/show.html.erb +17 -12
  34. data/app/views/knitkit/mobile/index.html.erb +162 -0
  35. data/app/views/knitkit/online_document_sections/index.html.erb +7 -5
  36. data/app/views/knitkit/unauthorized/index.html.erb +8 -4
  37. data/app/views/knitkit/website_sections/index.html.erb +8 -4
  38. data/app/views/layouts/knitkit/base.html.erb +79 -63
  39. data/app/views/layouts/knitkit/online_document_sections.html.erb +74 -52
  40. data/app/views/menus/knitkit/_default_menu.html.erb +4 -4
  41. data/app/views/menus/knitkit/_default_section_menu.html.erb +22 -23
  42. data/app/views/shared/knitkit/_bread_crumb.html.erb +10 -7
  43. data/app/views/shared/knitkit/_footer.html.erb +2 -2
  44. data/app/views/website_inquiry_mailer/inquiry.erb +23 -2
  45. data/app/widgets/contact_us/base.rb +25 -50
  46. data/app/widgets/contact_us/javascript/contact_us.js +7 -7
  47. data/app/widgets/contact_us/views/error.html.erb +6 -8
  48. data/app/widgets/contact_us/views/index.html.erb +28 -1
  49. data/app/widgets/contact_us/views/layouts/base.html.erb +9 -6
  50. data/app/widgets/contact_us/views/success.html.erb +3 -3
  51. data/app/widgets/google_map/views/index.html.erb +36 -36
  52. data/app/widgets/login/base.rb +1 -0
  53. data/app/widgets/login/javascript/login.js +3 -3
  54. data/app/widgets/login/views/index.html.erb +46 -26
  55. data/app/widgets/login/views/layouts/base.html.erb +15 -13
  56. data/app/widgets/login/views/login_header.html.erb +7 -9
  57. data/app/widgets/manage_profile/base.rb +116 -164
  58. data/app/widgets/manage_profile/views/_address.html.erb +184 -0
  59. data/app/widgets/manage_profile/views/_contact_information_form.html.erb +23 -192
  60. data/app/widgets/manage_profile/views/_email_address.html.erb +163 -0
  61. data/app/widgets/manage_profile/views/_password_form.html.erb +23 -20
  62. data/app/widgets/manage_profile/views/_phone_number.html.erb +165 -0
  63. data/app/widgets/manage_profile/views/_user_information_form.html.erb +49 -33
  64. data/app/widgets/manage_profile/views/error.html.erb +6 -0
  65. data/app/widgets/manage_profile/views/index.html.erb +44 -46
  66. data/app/widgets/manage_profile/views/layouts/base.html.erb +3 -1
  67. data/app/widgets/manage_profile/views/success.html.erb +5 -0
  68. data/app/widgets/reset_password/views/index.html.erb +33 -28
  69. data/app/widgets/reset_password/views/layouts/base.html.erb +10 -1
  70. data/app/widgets/search/base.rb +37 -25
  71. data/app/widgets/search/views/_inline_search_form.html.erb +12 -0
  72. data/app/widgets/search/views/_search_form.html.erb +41 -0
  73. data/app/widgets/search/views/index.html.erb +5 -3
  74. data/app/widgets/search/views/layouts/base.html.erb +13 -23
  75. data/app/widgets/search/views/show.html.erb +32 -47
  76. data/app/widgets/signup/base.rb +1 -1
  77. data/app/widgets/signup/javascript/signup.js +7 -9
  78. data/app/widgets/signup/views/_signup_form.html.erb +34 -29
  79. data/app/widgets/signup/views/error.html.erb +11 -11
  80. data/app/widgets/signup/views/index.html.erb +3 -2
  81. data/app/widgets/signup/views/layouts/base.html.erb +8 -5
  82. data/app/widgets/signup/views/success.html.erb +5 -4
  83. data/config/routes.rb +39 -28
  84. data/db/data_migrations/20120809020508_update_website_and_configuration.rb +3 -0
  85. data/db/migrate/20110211002317_setup_knitkit.rb +0 -1
  86. data/db/migrate/20131112013052_add_knitkit_missing_indexes.rb +33 -0
  87. data/db/migrate/20140622212723_update_website_inquiries.rb +22 -0
  88. data/db/migrate/20140911185022_add_publishing_to_website.rb +5 -0
  89. data/db/migrate/20141013073349_add_custom_fields_to_documents.rb +12 -0
  90. data/db/migrate/20141016101936_upgrade_remove_dynamic_attributes.rb +13 -0
  91. data/lib/knitkit.rb +0 -1
  92. data/lib/knitkit/engine.rb +1 -0
  93. data/lib/knitkit/extensions.rb +4 -0
  94. data/lib/knitkit/extensions/active_record/acts_as_commentable.rb +33 -0
  95. data/lib/knitkit/extensions/active_record/acts_as_document.rb +0 -12
  96. data/lib/knitkit/extensions/active_record/acts_as_publishable.rb +7 -10
  97. data/lib/knitkit/extensions/compass_ae/widgets/base.rb +2 -4
  98. data/lib/knitkit/extensions/compass_ae/widgets/widget_proxy_controller.rb +4 -1
  99. data/lib/knitkit/extensions/railties/action_view/helpers/blog_helper.rb +16 -13
  100. data/lib/knitkit/extensions/railties/action_view/helpers/content_helper.rb +10 -8
  101. data/lib/knitkit/extensions/railties/theme_support/asset_tag_helper.rb +123 -108
  102. data/lib/knitkit/extensions/will_paginate/link_renderer.rb +67 -0
  103. data/lib/knitkit/routing_filter/section_router.rb +10 -8
  104. data/lib/knitkit/syntax_validator.rb +2 -2
  105. data/lib/knitkit/version.rb +7 -3
  106. data/public/images/inline_edit/close.png +0 -0
  107. data/public/images/knitkit/close_window.png +0 -0
  108. data/public/images/knitkit/logo.png +0 -0
  109. data/public/images/knitkit/splash/images/add-site.png +0 -0
  110. data/public/images/knitkit/splash/images/adjust-site.png +0 -0
  111. data/public/images/knitkit/splash/images/browse-site.png +0 -0
  112. data/public/images/knitkit/splash/images/find-themes.png +0 -0
  113. data/public/images/knitkit/splash/images/settings.png +0 -0
  114. data/public/images/knitkit/splash/images/tutorials.png +0 -0
  115. data/public/images/knitkit/splash/splash.png +0 -0
  116. data/public/javascripts/erp_app/desktop/applications/knitkit/articles_grid_panel.js +656 -627
  117. data/public/javascripts/erp_app/desktop/applications/knitkit/center_region.js +444 -333
  118. data/public/javascripts/erp_app/desktop/applications/knitkit/{east_region.js → east_region/east_region.js} +33 -33
  119. data/public/javascripts/erp_app/desktop/applications/knitkit/east_region/file_assets_panel.js +332 -0
  120. data/public/javascripts/erp_app/desktop/applications/knitkit/east_region/image_assets_data_view.js +144 -0
  121. data/public/javascripts/erp_app/desktop/applications/knitkit/east_region/image_assets_panel.js +335 -0
  122. data/public/javascripts/erp_app/desktop/applications/knitkit/{widgets_panel.js → east_region/widgets_panel.js} +55 -55
  123. data/public/javascripts/erp_app/desktop/applications/knitkit/inquiries_grid_panel.js +150 -37
  124. data/public/javascripts/erp_app/desktop/applications/knitkit/module.js +228 -96
  125. data/public/javascripts/erp_app/desktop/applications/knitkit/publish_window.js +89 -85
  126. data/public/javascripts/erp_app/desktop/applications/knitkit/published_grid_panel.js +238 -217
  127. data/public/javascripts/erp_app/desktop/applications/knitkit/select_roles_window.js +59 -54
  128. data/public/javascripts/erp_app/desktop/applications/knitkit/splash_screen.js +170 -0
  129. data/public/javascripts/erp_app/desktop/applications/knitkit/top_menu/main_menu.js +1168 -0
  130. data/public/javascripts/erp_app/desktop/applications/knitkit/top_menu/websites_combo.js +71 -0
  131. data/public/javascripts/erp_app/desktop/applications/knitkit/versions_grid_panel.js +301 -306
  132. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/article.js +216 -0
  133. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/document.js +182 -153
  134. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/host.js +48 -65
  135. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/menu.js +93 -94
  136. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/section.js +523 -197
  137. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/website_nav_items.js +20 -34
  138. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/hosts_tree_panel.js +74 -0
  139. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/menu_tree_panel.js +245 -0
  140. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/site_contents_tree_panel.js +360 -0
  141. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/themes_tree_panel.js +348 -0
  142. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/west_region.js +106 -1132
  143. data/public/javascripts/knitkit/bootstrap-datepicker.js +474 -0
  144. data/public/javascripts/knitkit/bootstrap.min.js +7 -0
  145. data/public/javascripts/knitkit/confirm-bootstrap.js +110 -0
  146. data/public/javascripts/knitkit/inline_editing.js +73 -50
  147. data/public/javascripts/knitkit/jquery.maskedinput.min.js +7 -0
  148. data/public/javascripts/knitkit/mobile/app/view/Main.js +108 -0
  149. data/public/javascripts/knitkit/mobile/ux/slidenavigation/View.js +734 -0
  150. data/public/javascripts/knitkit/theme.js +76 -0
  151. data/public/stylesheets/erp_app/desktop/applications/knitkit/knitkit.css +95 -35
  152. data/public/stylesheets/knitkit/bootstrap-responsive.min.css +10 -0
  153. data/public/stylesheets/knitkit/bootstrap.min.css +7 -0
  154. data/public/stylesheets/knitkit/custom.css +122 -0
  155. data/public/stylesheets/knitkit/datepicker.css +182 -0
  156. data/public/stylesheets/knitkit/inline_editing.css +58 -58
  157. data/spec/controllers/knitkit/erp_app/desktop/website_section_controller_spec.rb +1 -1
  158. data/spec/dummy/config/application.rb +1 -1
  159. data/spec/models/article_spec.rb +3 -3
  160. data/spec/models/content_spec.rb +9 -9
  161. data/spec/models/website_spec.rb +1 -1
  162. metadata +100 -114
  163. data/app/helpers/application_helper.rb +0 -134
  164. data/app/views/knitkit/articles/index.html.erb +0 -3
  165. data/app/views/knitkit/articles/show.html.erb +0 -4
  166. data/app/views/menus/knitkit/_default_sub_menu.html.erb +0 -43
  167. data/app/views/menus/knitkit/_default_sub_section_menu.html.erb +0 -47
  168. data/app/widgets/contact_us/views/_contact_form.html.erb +0 -36
  169. data/app/widgets/dynamic_forms/base.rb +0 -139
  170. data/app/widgets/dynamic_forms/javascript/dynamic_forms.js +0 -110
  171. data/app/widgets/dynamic_forms/views/error.html.erb +0 -5
  172. data/app/widgets/dynamic_forms/views/index.html.erb +0 -8
  173. data/app/widgets/dynamic_forms/views/success.html.erb +0 -4
  174. data/app/widgets/dynamic_grid/base.rb +0 -130
  175. data/app/widgets/dynamic_grid/helpers/controller/dynamic_grid_controller_helper.rb +0 -3
  176. data/app/widgets/dynamic_grid/helpers/view/dynamic_grid_view_helper.rb +0 -3
  177. data/app/widgets/dynamic_grid/javascript/dynamic_grid.js +0 -177
  178. data/app/widgets/dynamic_grid/views/index.html.erb +0 -14
  179. data/app/widgets/login/views/reset_password.html.erb +0 -26
  180. data/app/widgets/manage_profile/views/default_type_error.html.erb +0 -5
  181. data/app/widgets/scaffold/base.rb +0 -87
  182. data/app/widgets/scaffold/helpers/controller/scaffold_controller_helper.rb +0 -3
  183. data/app/widgets/scaffold/helpers/view/scaffold_view_helper.rb +0 -3
  184. data/app/widgets/scaffold/javascript/scaffold.js +0 -337
  185. data/app/widgets/scaffold/views/index.html.erb +0 -15
  186. data/app/widgets/search/views/_search.html.erb +0 -39
  187. data/public/images/knitkit/bullet.png +0 -0
  188. data/public/images/knitkit/close.png +0 -0
  189. data/public/images/knitkit/content.png +0 -0
  190. data/public/images/knitkit/footer.png +0 -0
  191. data/public/images/knitkit/graphic.png +0 -0
  192. data/public/images/knitkit/greyFadeDown.png +0 -0
  193. data/public/images/knitkit/link.png +0 -0
  194. data/public/images/knitkit/menu.png +0 -0
  195. data/public/images/knitkit/menu_select.png +0 -0
  196. data/public/images/knitkit/search.png +0 -0
  197. data/public/images/knitkit/tooltip.gif +0 -0
  198. data/public/javascripts/ajax_pagination.js +0 -33
  199. data/public/javascripts/datepicker.js +0 -445
  200. data/public/javascripts/erp_app/desktop/applications/knitkit/file_assets_panel.js +0 -341
  201. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_data_view.js +0 -31
  202. data/public/javascripts/erp_app/desktop/applications/knitkit/image_assets_panel.js +0 -263
  203. data/public/javascripts/erp_app/desktop/applications/knitkit/section_articles_grid_panel.js +0 -722
  204. data/public/javascripts/erp_app/desktop/applications/knitkit/themes_tree_panel.js +0 -585
  205. data/public/javascripts/erp_app/desktop/applications/knitkit/west_region/helpers/website.js +0 -155
  206. data/public/javascripts/knitkit/helpers.js +0 -26
  207. data/public/stylesheets/datepicker.css +0 -121
  208. data/public/stylesheets/extjs/resources/css/knitkit_extjs_4.css +0 -233
  209. data/public/stylesheets/knitkit/style.css +0 -426
@@ -1,9 +1,7 @@
1
- <div style="float:left;font-size:15px;">
2
- <% unless @authenticated %>
3
- <span>
4
- <a href="<%=@login_url%>">Login</a>&nbsp;|&nbsp;<a href="<%=@signup_url%>">Sign Up</a>
5
- </span>
6
- <% else %>
7
- <span>Welcome <%= @user.party.description %>&nbsp;|&nbsp;<a href="/session/sign_out?login_url=<%=@login_url%>">Logout</a></span>
8
- <% end %>
9
- </div>
1
+ <span class="login-header">
2
+ <% unless @authenticated -%>
3
+ <a href="<%= @login_url %>"><span>Login</span></a>
4
+ <% else %>
5
+ <a href="/session/sign_out?login_url=<%= @login_url %>"><span>Logout</span></a>
6
+ <% end %>
7
+ </span>
@@ -2,7 +2,7 @@ module Widgets
2
2
  module ManageProfile
3
3
  class Base < ErpApp::Widgets::Base
4
4
 
5
- def load_profile_data
5
+ def index
6
6
  @user = User.find(current_user)
7
7
  @individual = @user.party.business_party
8
8
  @email_addresses = @user.party.find_all_contacts_by_contact_mechanism(EmailAddress)
@@ -28,10 +28,6 @@ module Widgets
28
28
  states.each do |s|
29
29
  @states_id << [s.zone_name, s.id]
30
30
  end
31
- end
32
-
33
- def index
34
- load_profile_data
35
31
 
36
32
  render
37
33
  end
@@ -39,29 +35,14 @@ module Widgets
39
35
  def update_user_information
40
36
  #### Get appropriate models ####
41
37
 
42
- @user=User.find(current_user)
43
- @individual= @user.party.business_party
44
-
45
- #### Formating the date for sqlite. Will probably need diffrent formating for production ####
46
- if params[:date][:day].to_i < 10
47
- day="0#{params[:date][:day]}"
48
- else
49
- day= params[:date][:day]
50
- end
51
-
52
- if params[:date][:month].to_i < 10
53
- month="0#{params[:date][:month]}"
54
- else
55
- month= params[:date][:month]
56
- end
57
-
58
- formated_date= "#{params[:date][:year]}-#{month}-#{day}"
38
+ @user = User.find(current_user)
39
+ @individual = @user.party.business_party
59
40
 
60
- @individual.current_first_name= params[:first_name]
61
- @individual.current_last_name= params[:last_name]
62
- @individual.current_middle_name= params[:middle_name]
63
- @individual.gender= params[:gender]
64
- @individual.birth_date= formated_date
41
+ @individual.current_first_name = params[:first_name]
42
+ @individual.current_last_name = params[:last_name]
43
+ @individual.current_middle_name = params[:middle_name]
44
+ @individual.gender = params[:gender]
45
+ @individual.birth_date = Date.strptime(params[:birth_date], '%m/%d/%Y')
65
46
  @user.email = params[:email]
66
47
 
67
48
  #### check validation then save and render message ####
@@ -70,15 +51,16 @@ module Widgets
70
51
  @user.save
71
52
  @individual.save
72
53
  @message = "User Information Updated"
73
- load_profile_data
74
- render :update => {:id => "#{@uuid}_result", :view => :index}
54
+
55
+ render :update => {:id => "#{@uuid}_result", :view => :success}
75
56
  else
76
57
  @message_cls = 'sexyerror'
77
58
  @message = "Error Updating User Information"
78
- render :update => {:id => "#{@uuid}_result", :view => :index}
59
+ render :update => {:id => "#{@uuid}_result", :view => :error}
79
60
  end
80
61
  else
81
- render :update => {:id => "#{@uuid}_result", :view => :index}
62
+ @message = "User Information Updated"
63
+ render :update => {:id => "#{@uuid}_result", :view => :success}
82
64
  end
83
65
 
84
66
  end
@@ -86,7 +68,6 @@ module Widgets
86
68
 
87
69
  def update_password
88
70
  if @user = User.authenticate(current_user.username, params[:old_password])
89
- load_profile_data
90
71
 
91
72
  if !params[:new_password].blank? && !params[:password_confirmation].blank? && params[:new_password] == params[:password_confirmation]
92
73
 
@@ -94,179 +75,150 @@ module Widgets
94
75
 
95
76
  if @user.change_password!(params[:new_password])
96
77
  @message = "Password Updated"
97
-
98
- render :update => {:id => "#{@uuid}_result", :view => :index}
78
+
79
+ render :update => {:id => "#{@uuid}_result", :view => :success}
99
80
  else
100
81
  @message = "Error Updating Password"
101
- @message_cls = 'sexyerror'
82
+
102
83
  #### validation failed ####
103
- render :update => {:id => "#{@uuid}_result", :view => :index}
84
+ render :update => {:id => "#{@uuid}_result", :view => :error}
104
85
  end
105
86
 
106
87
  else
107
88
  #### password and password confirmation cant be blank or unequal ####
108
89
  @message = "Password Confirmation Must Match Password"
109
- @message_cls = 'sexyerror'
110
- render :update => {:id => "#{@uuid}_result", :view => :index}
90
+
91
+ render :update => {:id => "#{@uuid}_result", :view => :error}
111
92
  end
112
93
  else
113
- load_profile_data
114
94
  #### old password wrong ####
115
95
  @message = "Invalid Old Password"
116
- @message_cls = 'sexyerror'
117
- render :update => {:id => "#{@uuid}_result", :view => :index}
118
- end
119
-
120
- end
121
96
 
122
- def update_contact_information
123
- @user= User.find(current_user)
124
- @email_addresses= @user.party.find_all_contacts_by_contact_mechanism(EmailAddress)
125
- @phone_numbers= @user.party.find_all_contacts_by_contact_mechanism(PhoneNumber)
126
- @postal_addresses= @user.party.find_all_contacts_by_contact_mechanism(PostalAddress)
127
- contact_type_in_use=false
128
-
129
- #### Updates email records ####
130
- @email_addresses.each_with_index do |e, i|
131
- if e.email_address != params[:email_addresses][i.to_s]
132
- email_address_args={:email_address => params[:email_addresses][i.to_s]}
133
- @user.party.update_or_add_contact_with_purpose(EmailAddress,
134
- ContactPurpose.find_by_internal_identifier(params[:email_address_contact_purposes][i.to_s]),
135
- email_address_args)
136
- end
97
+ render :update => {:id => "#{@uuid}_result", :view => :error}
137
98
  end
138
99
 
139
- #### Updates Phone Numbers ####
140
- @phone_numbers.each_with_index do |p, i|
141
- if p.phone_number != params[:phone_numbers][i.to_s]
142
- phone_number_args={:phone_number => params[:phone_numbers][i.to_s]}
143
- @user.party.update_or_add_contact_with_purpose(PhoneNumber,
144
- ContactPurpose.find_by_internal_identifier(params[:phone_number_contact_purposes][i.to_s]),
145
- phone_number_args)
146
- end
147
- end
100
+ end
148
101
 
149
- #### Updates Postal Addresses
150
- @postal_addresses.each_with_index do |a, i|
151
- postal_address_args= {}
102
+ def add_email_address
103
+ begin
104
+ email_address = params[:email_address].strip
105
+ contact_purpose = params[:contact_purpose]
152
106
 
153
- if a.address_line_1 != params[:postal_addresses][i.to_s][:address_line_1]
154
- postal_address_args[:address_line_1]= params[:postal_addresses][i.to_s][:address_line_1]
155
- end
107
+ email = current_user.party.add_contact(EmailAddress,
108
+ {email_address: email_address},
109
+ ContactPurpose.find_by_internal_identifier(contact_purpose))
156
110
 
157
- if a.address_line_2 != params[:postal_addresses][i.to_s][:address_line_2]
158
- postal_address_args[:address_line_2]= params[:postal_addresses][i.to_s][:address_line_2]
159
- end
111
+ {:json => {success: true, message: 'Email added', email: email.to_hash(:only => [:id, :email_address],
112
+ :contact_purpose => email.contact_purpose.description)}}
113
+ rescue => ex
114
+ Rails.logger.error ex.message
115
+ Rails.logger.error ex.backtrace.join("\n")
116
+ #TODO send out notification
160
117
 
161
- if a.city != params[:postal_addresses][i.to_s][:city]
162
- postal_address_args[:city]= params[:postal_addresses][i.to_s][:city]
163
- end
118
+ {:json => {success: false, message: 'Could not add email'}}
119
+ end
120
+ end
164
121
 
165
- if a.geo_zone_id != params[:postal_addresses][i.to_s][:state_id].to_i
166
- postal_address_args[:geo_zone_id]= params[:postal_addresses][i.to_s][:state_id].to_i
167
- postal_address_args[:state]= GeoZone.find(params[:postal_addresses][i.to_s][:state_id]).zone_name
168
- end
122
+ def remove_email_address
123
+ begin
124
+ email_address_id = params[:email_address_id].strip
169
125
 
170
- if a.zip != params[:postal_addresses][i.to_s][:zip]
171
- postal_address_args[:zip]= params[:postal_addresses][i.to_s][:zip]
172
- end
126
+ EmailAddress.find(email_address_id).destroy
173
127
 
174
- if a.geo_country_id != params[:postal_addresses][i.to_s][:country_id].to_i
175
- postal_address_args[:geo_country_id]= params[:postal_addresses][i.to_s][:country_id].to_i
176
- postal_address_args[:country]= GeoCountry.find(params[:postal_addresses][i.to_s][:country_id]).name
177
- end
128
+ {:json => {success: true, message: 'Email removed'}}
129
+ rescue => ex
130
+ Rails.logger.error ex.message
131
+ Rails.logger.error ex.backtrace.join("\n")
132
+ #TODO send out notification
178
133
 
179
- if !postal_address_args.empty?
180
- @user.party.update_or_add_contact_with_purpose(PostalAddress,
181
- ContactPurpose.find_by_internal_identifier(params[:postal_address_contact_purposes][i.to_s]),
182
- postal_address_args)
183
- end
134
+ {:json => {success: false, message: 'Could not remove email'}}
184
135
  end
136
+ end
185
137
 
186
- #### Adds new email address ####
187
- if params[:new_email_address] != nil && params[:new_email_address] != ""
188
- if !contact_purpose_in_use?(@email_addresses, params[:new_email_address_contact_purpose])
189
- @user.party.update_or_add_contact_with_purpose(EmailAddress,
190
- ContactPurpose.find_by_internal_identifier(params[:new_email_address_contact_purpose]),
191
- :email_address => params[:new_email_address])
192
- else
193
- contact_type_in_use=true
194
- end
195
- end
138
+ def add_phone_number
139
+ begin
140
+ phone_number = params[:phone_number].strip
141
+ contact_purpose = params[:contact_purpose]
196
142
 
197
- #### Adds new phone number ####
198
- if params[:new_phone_number] != nil && params[:new_phone_number] != ""
199
- if !contact_purpose_in_use?(@phone_numbers, params[:new_phone_number_contact_purpose])
200
- @user.party.update_or_add_contact_with_purpose(PhoneNumber,
201
- ContactPurpose.find_by_internal_identifier(params[:new_phone_number_contact_purpose]),
202
- :phone_number => params[:new_phone_number])
203
- else
204
- contact_type_in_use=true
205
- end
206
- end
143
+ phone_number = current_user.party.add_contact(PhoneNumber,
144
+ {phone_number: phone_number},
145
+ ContactPurpose.find_by_internal_identifier(contact_purpose))
207
146
 
208
- #### Adds new postal address ####
209
- new_postal_address_args= {}
147
+ {:json => {success: true, message: 'Phone number added', phone: phone_number.to_hash(:only => [:id, :phone_number],
148
+ :contact_purpose => phone_number.contact_purpose.description)}}
149
+ rescue => ex
150
+ Rails.logger.error ex.message
151
+ Rails.logger.error ex.backtrace.join("\n")
152
+ #TODO send out notification
210
153
 
211
- if params[:new_postal_address][:address_line_1] != "Address Line 1"
212
- new_postal_address_args[:address_line_1]= params[:new_postal_address][:address_line_1]
213
- end
214
-
215
- if params[:new_postal_address][:address_line_2] != "Address Line 2"
216
- new_postal_address_args[:address_line_2]= params[:new_postal_address][:address_line_2]
154
+ {:json => {success: false, message: 'Could not add phone number'}}
217
155
  end
156
+ end
218
157
 
219
- if params[:new_postal_address][:city] != "City"
220
- new_postal_address_args[:city]= params[:new_postal_address][:city]
221
- end
158
+ def remove_phone_number
159
+ begin
160
+ phone_number_id = params[:phone_number_id].strip
222
161
 
223
- if !params[:new_postal_address][:state_id].blank? and params[:new_postal_address][:state_id] != "default"
224
- new_postal_address_args[:geo_zone_id]= params[:new_postal_address][:state_id].to_i
225
- new_postal_address_args[:state]= GeoZone.find(params[:new_postal_address][:state_id]).zone_name
226
- end
162
+ PhoneNumber.find(phone_number_id).destroy
227
163
 
228
- if params[:new_postal_address][:zip] != "Zipcode"
229
- new_postal_address_args[:zip]= params[:new_postal_address][:zip]
230
- end
164
+ {:json => {success: true, message: 'Phone number removed'}}
165
+ rescue => ex
166
+ Rails.logger.error ex.message
167
+ Rails.logger.error ex.backtrace.join("\n")
168
+ #TODO send out notification
231
169
 
232
- if !params[:new_postal_address][:country_id].blank? and params[:new_postal_address][:country_id] != "default"
233
- new_postal_address_args[:geo_country_id]= params[:new_postal_address][:country_id].to_i
234
- new_postal_address_args[:country]= GeoCountry.find(params[:new_postal_address][:country_id]).name
170
+ {:json => {success: false, message: 'Could not remove phone number'}}
235
171
  end
172
+ end
236
173
 
237
- if !new_postal_address_args.empty?
238
- if !contact_purpose_in_use?(@postal_addresses, params[:new_postal_address_contact_purpose])
239
- @user.party.update_or_add_contact_with_purpose(PostalAddress,
240
- ContactPurpose.find_by_internal_identifier(params[:new_postal_address_contact_purpose]),
241
- new_postal_address_args)
242
- else
243
- contact_type_in_use=true
244
- end
174
+ def add_address
175
+ begin
176
+ address_line_1 = params[:address_line_1].strip
177
+ address_line_2 = params[:address_line_2].strip
178
+ city = params[:city].strip
179
+ geo_zone_id = params[:state].strip
180
+ postal_code = params[:postal_code].strip
181
+ contact_purpose = params[:contact_purpose]
182
+
183
+ postal_address = current_user.party.add_contact(PostalAddress,
184
+ {
185
+ address_line_1: address_line_1,
186
+ address_line_2: address_line_2,
187
+ city: city,
188
+ geo_zone_id: geo_zone_id,
189
+ state: GeoZone.find(geo_zone_id).zone_name,
190
+ zip: postal_code,
191
+ },
192
+ ContactPurpose.find_by_internal_identifier(contact_purpose))
193
+
194
+ {:json => {success: true,
195
+ message: 'Address added',
196
+ address: postal_address.to_hash(:only => [:id, :address_line_1, :address_line_2,
197
+ :city, :state, :zip],
198
+ :contact_purpose => postal_address.contact_purpose.description)}}
199
+ rescue => ex
200
+ Rails.logger.error ex.message
201
+ Rails.logger.error ex.backtrace.join("\n")
202
+ #TODO send out notification
203
+
204
+ {:json => {success: false, message: 'Could not add address'}}
245
205
  end
206
+ end
246
207
 
247
- load_profile_data
208
+ def remove_address
209
+ begin
210
+ address_id = params[:address_id].strip
248
211
 
249
- #### Renders proper error or success message ####
250
- if contact_type_in_use
251
- @message = "New contacts cannot have the same contact type as old contacts"
252
- @message_cls = 'sexyerror'
253
- render :update => {:id => "#{@uuid}_result", :view => :index}
254
- else
255
- @message = "Your Contact Information Was Updated"
256
- render :update => {:id => "#{@uuid}_result", :view => :index}
257
- end
212
+ PostalAddress.find(address_id).destroy
258
213
 
259
- end
214
+ {:json => {success: true, message: 'address removed'}}
215
+ rescue => ex
216
+ Rails.logger.error ex.message
217
+ Rails.logger.error ex.backtrace.join("\n")
218
+ #TODO send out notification
260
219
 
261
- def contact_purpose_in_use?(contacts, purpose)
262
- result = false
263
- contacts.each do |e|
264
- if e.contact.contact_purposes[0].internal_identifier == purpose
265
- result = true
266
- break
267
- end
220
+ {:json => {success: false, message: 'Could not remove address'}}
268
221
  end
269
- result
270
222
  end
271
223
 
272
224
  #should not be modified
@@ -0,0 +1,184 @@
1
+ <div style="margin-top:5px;" id="addressMessageArea"></div>
2
+ <table class="table table-striped" id="addressesTable">
3
+ <thead>
4
+ <tr>
5
+ <th>Address Line 1</th>
6
+ <th>Address Line 2</th>
7
+ <th>City</th>
8
+ <th>State</th>
9
+ <th>Postal Code</th>
10
+ <th>Contact Type</th>
11
+ <th>&nbsp;</th>
12
+ </tr>
13
+ </thead>
14
+ <tbody>
15
+ <% @postal_addresses.each do |p| %>
16
+ <tr id="address<%= p.id %>">
17
+ <td><%= p.address_line_1 %></td>
18
+ <td><%= p.address_line_2 %></td>
19
+ <td><%= p.city %></td>
20
+ <td><%= p.state %></td>
21
+ <td><%= p.zip %></td>
22
+ <td><%= p.contact.contact_purposes.first.description %></td>
23
+ <td>
24
+ <button type="button"
25
+ class="addressDeleteBtn btn btn-danger"
26
+ data-id="<%= p.id %>">Delete
27
+ </button>
28
+ </td>
29
+ </tr>
30
+ <% end %>
31
+ </tbody>
32
+ </table>
33
+
34
+ <button type="button" id="addAddressBtn" class="btn btn-success">Add Address</button>
35
+
36
+ <div id="addAddressDiv" style="display:none;">
37
+ <%= form_remote_tag build_widget_url(:add_address), :id => 'address_form', :role => 'form' do %>
38
+ <div class="form-group">
39
+ <%= label_tag :address_line_1 %>
40
+ <%= text_field_tag :address_line_1, nil, class: 'form-control', required: true %>
41
+
42
+ <%= label_tag :address_line_2 %>
43
+ <%= text_field_tag :address_line_2, nil, class: 'form-control' %>
44
+
45
+ <%= label_tag :city %>
46
+ <%= text_field_tag :city, nil, class: 'form-control', required: true %>
47
+
48
+ <%= label_tag :state %>
49
+ <%= select_tag("state", options_for_select(@states_id, :selected => "default", :disabled => "default"), :class => "form-control") %>
50
+
51
+ <%= label_tag :postal_code %>
52
+ <%= text_field_tag :postal_code, nil, class: 'form-control', required: true %>
53
+
54
+ <%= label_tag :contact_purpose %>
55
+ <%= select_tag("contact_purpose", options_for_select(@purpose_hash, :selected => "default"), :class => "form-control") %>
56
+ </div>
57
+ <button id="submitAddressBtn" type="submit" class="btn btn-primary">Submit</button>
58
+ <button id="cancelAddressBtn" type="button" class="btn btn-default">Cancel</button>
59
+ <% end %>
60
+ </div>
61
+
62
+ <script type="text/javascript">
63
+
64
+ addressesPanel = {
65
+ setup: function () {
66
+ jQuery('#addAddressBtn').click(function () {
67
+ var addBtn = jQuery(this);
68
+
69
+ addBtn.css('display', 'none');
70
+ jQuery('#addAddressDiv').css('display', '');
71
+ });
72
+
73
+ jQuery('#cancelAddressBtn').click(function () {
74
+ var addBtn = jQuery('#addAddressBtn');
75
+
76
+ addBtn.css('display', '');
77
+ jQuery('#addAddressDiv').css('display', 'none');
78
+ });
79
+
80
+ jQuery('#address_form').bind('ajax:success', function (e, response) {
81
+ var html = '';
82
+
83
+ if (response.success) {
84
+ html = [
85
+ '<div class="alert alert-success" >',
86
+ '<button type="button" class="close" data-dismiss="alert">&times;</button>',
87
+ response.message,
88
+ '</div>'
89
+ ].join('');
90
+
91
+ var newRowHtml = [
92
+ '<tr id="address' + response.address.id + '">',
93
+ '<td>' + response.address.address_line_1 + '</td>',
94
+ '<td>' + response.address.address_line_2 + '</td>',
95
+ '<td>' + response.address.city + '</td>',
96
+ '<td>' + response.address.state + '</td>',
97
+ '<td>' + response.address.zip + '</td>',
98
+ '<td>' + response.address.contact_purpose + '</td>',
99
+ '<td>',
100
+ '<button type="button" class="addressDeleteBtn btn btn-danger" data-id="' + response.address.id + '" >Delete</button>',
101
+ '</td>',
102
+ '</tr>'
103
+ ].join('');
104
+
105
+ jQuery('#addressesTable > tbody:last').append(newRowHtml);
106
+ var newDeleteBtn = jQuery('#addressesTable > tbody:last > tr:last > td:last > button');
107
+
108
+ newDeleteBtn.confirmModal({
109
+ confirmCallback: addressesPanel.deleteAddress,
110
+ confirmMessage : 'Are you sure you want to remove this address ?'
111
+ });
112
+
113
+ jQuery('#addAddressBtn').css('display', '');
114
+ jQuery('#addAddressDiv').css('display', 'none');
115
+ jQuery('#address_form')[0].reset();
116
+ }
117
+ else {
118
+ html = [
119
+ '<div class="alert alert-danger" >',
120
+ '<button type="button" class="close" data-dismiss="alert">&times;</button>',
121
+ response.message,
122
+ '</div>'
123
+ ].join('');
124
+ }
125
+
126
+ jQuery('#addressMessageArea').html(html);
127
+ });
128
+
129
+ window['addressesPanel'].bindDeleteBtn();
130
+ },
131
+
132
+ bindDeleteBtn: function () {
133
+ jQuery('.addressDeleteBtn').confirmModal({
134
+ confirmCallback: addressesPanel.deleteAddress,
135
+ confirmMessage : 'Are you sure you want to remove this address ?'
136
+ });
137
+ },
138
+
139
+ deleteAddress: function (link, data) {
140
+ var id = data.id;
141
+
142
+ jQuery.ajax({
143
+ url: '<%= build_widget_url(:remove_address) %>',
144
+ data: {address_id: id},
145
+ success: function (data) {
146
+ if (data.success) {
147
+ html = [
148
+ '<div class="alert alert-success" >',
149
+ '<button type="button" class="close" data-dismiss="alert">&times;</button>',
150
+ data.message,
151
+ '</div>'
152
+ ].join('');
153
+
154
+ jQuery('#addressMessageArea').html(html);
155
+
156
+ jQuery('#address' + id).remove();
157
+ }
158
+ else {
159
+ html = [
160
+ '<div class="alert alert-danger" >',
161
+ '<button type="button" class="close" data-dismiss="alert">&times;</button>',
162
+ data.message,
163
+ '</div>'
164
+ ].join('');
165
+
166
+ jQuery('#addressMessageArea').html(html);
167
+ }
168
+ },
169
+ error: function () {
170
+ html = [
171
+ '<div class="alert alert-danger" >',
172
+ '<button type="button" class="close" data-dismiss="alert">&times;</button>',
173
+ 'Could not remove address',
174
+ '</div>'
175
+ ].join('');
176
+
177
+ jQuery('#addressMessageArea').html(html);
178
+ }
179
+ });
180
+ }
181
+ };
182
+
183
+ addressesPanel.setup();
184
+ </script>