artfully_ose 1.2.0.pre.4 → 1.2.0.pre.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +8 -8
  2. data/app/assets/images/household-default-avatar.png +0 -0
  3. data/app/assets/images/person-default-avatar.psd +0 -0
  4. data/app/assets/javascripts/angular-resource.min.js +11 -0
  5. data/app/assets/javascripts/angular.min.js +178 -0
  6. data/app/assets/javascripts/application.js +43 -4
  7. data/app/assets/javascripts/store/store.js +5 -4
  8. data/app/assets/stylesheets/application.sass +6 -0
  9. data/app/assets/stylesheets/bootstrap-overrides.css +12 -2
  10. data/app/assets/stylesheets/sass/store.sass +42 -7
  11. data/app/controllers/artfully_ose_controller.rb +2 -7
  12. data/app/controllers/events_controller.rb +3 -21
  13. data/app/controllers/memberships_controller.rb +1 -0
  14. data/app/controllers/organizations_controller.rb +3 -3
  15. data/app/controllers/store/events_controller.rb +2 -0
  16. data/app/helpers/artfully_ose_helper.rb +6 -0
  17. data/app/models/action.rb +1 -1
  18. data/app/models/event.rb +5 -7
  19. data/app/models/kit.rb +1 -3
  20. data/app/models/membership.rb +3 -3
  21. data/app/models/membership_award.rb +1 -0
  22. data/app/models/note.rb +1 -1
  23. data/app/models/order_handler.rb +1 -2
  24. data/app/models/organization.rb +7 -8
  25. data/app/models/user.rb +16 -4
  26. data/app/models/user_membership.rb +4 -3
  27. data/app/views/imports/people/_new.html.haml +5 -5
  28. data/app/views/layouts/_flash.html.haml +1 -1
  29. data/app/views/layouts/application.html.haml +2 -2
  30. data/app/views/layouts/devise_layout.html.haml +2 -2
  31. data/app/views/membership_awards/confirm.html.haml +48 -2
  32. data/app/views/membership_awards/new.html.haml +12 -7
  33. data/app/views/memberships/index.html.haml +98 -38
  34. data/app/views/organizations/_connection_form.html.haml +1 -1
  35. data/app/views/organizations/_form.html.haml +52 -20
  36. data/app/views/organizations/edit.html.haml +2 -2
  37. data/app/views/producer_mailer/donation_kit_notification.html.haml +8 -0
  38. data/app/views/producer_mailer/donation_kit_notification.text.erb +8 -0
  39. data/app/views/producer_mailer/mailchimp_kit_initial_sync_notification.html.haml +21 -0
  40. data/app/views/producer_mailer/ticket_offer_accepted.html.haml +7 -0
  41. data/app/views/producer_mailer/ticket_offer_accepted.text.erb +7 -0
  42. data/app/views/producer_mailer/ticket_offer_rejected.html.haml +11 -0
  43. data/app/views/producer_mailer/ticket_offer_rejected.text.erb +13 -0
  44. data/app/views/shared/_error_messages.html.haml +1 -1
  45. data/app/views/store/events/_venue.html.haml +7 -0
  46. data/app/views/store/events/show.html.haml +6 -11
  47. data/app/views/store/events/single_show.html.haml +41 -0
  48. data/app/views/store/shared/_donate_form.html.haml +1 -1
  49. data/app/views/store/shows/_show.html.haml +37 -29
  50. data/app/views/user_memberships/_list.html.haml +1 -3
  51. data/app/views/users/invitations/edit.html.haml +57 -8
  52. data/app/views/users/mailer/invitation_instructions.html.haml +14 -0
  53. data/app/views/users/passwords/edit.html.haml +2 -2
  54. data/app/views/users/registrations/edit.html.erb +3 -3
  55. data/app/views/users/sessions/new.html.haml +2 -2
  56. data/config/initializers/devise.rb +0 -3
  57. data/config/locales/devise.en.yml +1 -1
  58. data/config/routes.rb +4 -2
  59. data/db/migrate/20130411162346_add_country_zip_state_phone_number_discipline_to_organizations.rb +9 -0
  60. data/db/migrate/20130412184415_add_first_name_and_last_name_to_users.rb +6 -0
  61. data/lib/artfully_ose/version.rb +1 -1
  62. metadata +17 -17
  63. data/app/views/users/mailer/invitation_instructions.html.erb +0 -8
@@ -9,4 +9,4 @@
9
9
  .input-prepend
10
10
  %span.add-on $
11
11
  = text_field_tag :donation_amount, '', :class => 'span1'
12
- = submit_tag 'Add Donation', :class => 'btn btn-primary'
12
+ = submit_tag 'Add Donation', :class => 'btn btn-primary', :id => 'add-donation'
@@ -1,3 +1,4 @@
1
+
1
2
  .title.active
2
3
  .date
3
4
  .month= show.datetime_local_to_event.strftime("%b")
@@ -11,32 +12,39 @@
11
12
  .sections{:style => "#{'display:none' if collapsed}"}
12
13
  - if show.chart.sections.storefront.empty?
13
14
  No tickets are available for this show
14
- - show.sections_for(current_member).each do |section|
15
- -section.ticket_types_for(current_member).each do |ticket_type|
16
- .section
17
- %h4
18
- = ticket_type.name
19
- %span{:class => 'price'}= number_as_cents(ticket_type.price)
20
- -unless ticket_type.description.nil?
21
- -description = ticket_type.description
22
- -if description.length > 150
23
- .toggle-truncated
24
- .truncated
25
- = simple_format "#{truncate(description, :length => 150)} (#{link_to 'more','#', :class => 'toggle'})"
26
- .not-truncated{:style => 'display:none;'}
27
- =simple_format "#{description} (#{link_to 'less','#', :class => 'toggle'})"
28
- - else
29
- =simple_format description
30
-
31
- = form_tag store_order_path(@store_organization.cached_slug), :class => 'add-tickets-to-cart' do
32
- = hidden_field_tag :show_id, show.id
33
- = hidden_field_tag :ticket_type_id, ticket_type.id
34
- = hidden_field_tag :section_name, ticket_type.name
35
- = hidden_field_tag :ticket_price, ticket_type.price
36
- - if ticket_type.available == 0
37
- %select{:style => "width:140px"}
38
- %option
39
- SOLD OUT
40
- - else
41
- = select_tag :quantity, options_for_select((1..[10, ticket_type.available].min).to_a.map {|i| [pluralize(i, 'Ticket'), i]}), :style => "width:140px"
42
- = submit_tag 'Add to cart', :class => 'btn btn-primary'
15
+ - else
16
+ %table.table.available-ticket-type-table
17
+ - show.sections_for(current_member).each do |section|
18
+ -section.ticket_types_for(current_member).each do |ticket_type|
19
+ %tr
20
+ %td.ticket-type-name
21
+ = ticket_type.name
22
+ %td.right.span2.ticket-type-price
23
+ %span{:class => 'price'}= number_as_cents(ticket_type.price)
24
+ %td.right.span4
25
+ = form_tag store_order_path(@store_organization.cached_slug), :class => 'add-tickets-to-cart' do
26
+ = hidden_field_tag :show_id, show.id
27
+ = hidden_field_tag :ticket_type_id, ticket_type.id
28
+ = hidden_field_tag :section_name, ticket_type.name
29
+ = hidden_field_tag :ticket_price, ticket_type.price
30
+
31
+ - if ticket_type.available == 0
32
+ %select{:style => "width:140px", :class => 'ticket-type-quantity'}
33
+ %option
34
+ SOLD OUT
35
+ - else
36
+ = select_tag :quantity, options_for_select((1..[10, ticket_type.available].min).to_a.map {|i| [pluralize(i, 'Ticket'), i]}), :style => "width:140px", :class => 'ticket-type-quantity'
37
+
38
+ = submit_tag 'Add to cart', :class => 'btn btn-primary'
39
+ %tr.no-border
40
+ %td.ticket-type-description{:colspan => "4"}
41
+ -unless ticket_type.description.nil?
42
+ -description = ticket_type.description
43
+ -if description.length > 150
44
+ .toggle-truncated
45
+ .truncated
46
+ = simple_format "#{truncate(description, :length => 150)} (#{link_to 'more','#', :class => 'toggle'})"
47
+ .not-truncated{:style => 'display:none;'}
48
+ =simple_format "#{description} (#{link_to 'less','#', :class => 'toggle'})"
49
+ - else
50
+ =simple_format description
@@ -2,7 +2,7 @@
2
2
  %h2.span2 Users
3
3
  .span10
4
4
  - if can? :manage, current_user.current_organization
5
- = link_to "Add", "#userForm", 'data-toggle' => 'modal', :class => 'btn'
5
+ = link_to "Invite User", "#userForm", 'data-toggle' => 'modal', :class => 'btn'
6
6
  %ul#memberships.detailed-list.row-fluid
7
7
  - organization.users.each do |user|
8
8
  %li.span5.row-fluid
@@ -27,5 +27,3 @@
27
27
  = text_field_tag :user_email, "", :placeholder => "Enter an email address..."
28
28
  .modal-footer
29
29
  = submit_tag "Add", :class => 'btn'
30
-
31
-
@@ -2,18 +2,67 @@
2
2
 
3
3
  .instructions.well
4
4
  The administrator for
5
- %strong=resource.user_memberships.first.organization.name
5
+ %strong=resource.user_memberships.first.organization.name
6
6
  has invited you to join their organization. Enter a password for your account and click 'Sign Up' to begin using Artfully!
7
7
 
8
- .account-details
9
- = form_for resource, :as => resource_name, :url => invitation_path(resource_name), :html => { :method => :put } do |f|
8
+ %fieldset.ng-cloak{"ng-controller" => "SignInCtrl"}
9
+ %ul.nav.nav-tabs
10
+ %li{"ng-class" => "{active: signinform == 'artfully'}"}
11
+ %a{href: "#", "ng-click" => "signinform = 'artfully'"} Create Account
12
+ %li{"ng-class" => "{active: signinform == 'fa'}"}
13
+ %a{href: "#", "ng-click" => "signinform = 'fa'"} Sign In with Fractured Atlas
14
+
15
+ = form_for resource, as: resource_name, url: invitation_path(resource_name), html: {method: :put, class: "form-horizontal", "ng-show" => "signinform == 'artfully'"} do |f|
10
16
  = devise_error_messages!
11
17
  = f.hidden_field :invitation_token
18
+
19
+ .control-group
20
+ = f.label :first_name, 'First Name', :class => 'control-label'
21
+ .controls= f.text_field :first_name, :required => true, tabindex: "1"
22
+ .control-group
23
+ = f.label :last_name, 'Last Name', :class => 'control-label'
24
+ .controls= f.text_field :last_name, :required => true, tabindex: "2"
12
25
  .control-group
13
- = f.label :password, :class=>'control-label'
14
- .controls= f.password_field :password
26
+ = f.label :email, :class => 'control-label'
27
+ .controls= f.text_field :email, :placeholder => 'example@fracturedatlas.org', :required => true, tabindex: "3"
15
28
  .control-group
16
- = f.label :password_confirmation, :class=>'control-label'
17
- .controls= f.password_field :password_confirmation
29
+ = f.label :password, :class => 'control-label'
30
+ .controls= f.password_field :password, :required => true, tabindex: "4"
31
+ .control-group
32
+ = f.label :password_confirmation, "Retype Password", :class => 'control-label'
33
+ .controls= f.password_field :password_confirmation, :required => true, tabindex: "5"
34
+ .control-group
35
+ .controls
36
+ %label.checkbox
37
+ = f.check_box :user_agreement, required: true, tabindex: "6"
38
+ I have read, understand and accept the terms and conditions of the #{link_to "User Agreement", user_agreement_path, :target => "_blank"}
39
+ .form-actions
40
+ %p= f.submit "Sign Up", class: "btn btn-primary btn-large", tabindex: "7"
18
41
 
19
- = f.submit "Sign Up", :class => "btn"
42
+ = form_for resource, as: resource_name, url: invitation_path(resource_name), html: {method: :put, class: 'form-horizontal', "ng-show" => "signinform == 'fa'"} do |f|
43
+ = devise_error_messages!
44
+ = hidden_field_tag :fa, 'true'
45
+ = f.hidden_field :invitation_token
46
+
47
+ .control-group
48
+ = f.label :email, 'Fractured Atlas Username', class: 'control-label'
49
+ .controls
50
+ = f.text_field :email, required: true, tabindex: "8", value: nil
51
+ .control-group
52
+ = f.label :password, class: 'control-label'
53
+ .controls
54
+ = f.password_field :password, required: true, tabindex: "9"
55
+ %p.help-block= link_to "Forgot your password?", "http://www.fracturedatlas.org/site/login/forgotten", :target => "_blank"
56
+
57
+ .control-group
58
+ .controls
59
+ %label.checkbox
60
+ = f.check_box :user_agreement, required: true, tabindex: "10"
61
+ I have read, understand and accept the terms and conditions of the #{link_to "User Agreement", user_agreement_path, :target => "_blank"}
62
+ .form-actions
63
+ = f.submit "Sign Up", :class => "btn btn-primary btn-large", tabindex: "11"
64
+ :javascript
65
+ var SignInCtrl = function($scope) {
66
+ console.log(window);
67
+ $scope.signinform = window.location.hash.slice(1) || 'artfully';
68
+ };
@@ -0,0 +1,14 @@
1
+ - @organization = @resource.invited_by.user_memberships.first.organization
2
+ %h1 Hi #{@resource.email}.
3
+
4
+ %p #{@organization.name} has invited you to their Artful.ly account! Artful.ly is a new web-app that helps artists sell tickets, take donations, and manage contacts.
5
+
6
+ %p
7
+ To check it out, accept #{@organization.name}’s invitation and set up your login info,
8
+ = link_to 'follow this link.', accept_invitation_url(@resource, :invitation_token => @resource.invitation_token)
9
+
10
+ %p
11
+ If you do not want to join this organization, just ignore this email. Your account won’t be created until you click the link above and set your password.
12
+
13
+ %p
14
+ If you have any question about #{@organization.name}’s invitation, please contact #{mail_to @organization.email}.
@@ -6,11 +6,11 @@
6
6
 
7
7
  .control-group
8
8
  = f.label :password, :class=>'control-label'
9
- .controls= f.password_field :password
9
+ .controls= f.password_field :password, autocomplete: 'off'
10
10
 
11
11
  .control-group
12
12
  = f.label :password_confirmation, "Retype Password", :class=>'control-label'
13
- .controls= f.password_field :password_confirmation
13
+ .controls= f.password_field :password_confirmation, autocomplete: 'off'
14
14
 
15
15
  = f.hidden_field :reset_password_token
16
16
 
@@ -7,13 +7,13 @@
7
7
  <%= f.text_field :email %></p>
8
8
 
9
9
  <p><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
10
- <%= f.password_field :password %></p>
10
+ <%= f.password_field :password, autocomplete: 'off' %></p>
11
11
 
12
12
  <p><%= f.label :password_confirmation %><br />
13
- <%= f.password_field :password_confirmation %></p>
13
+ <%= f.password_field :password_confirmation, autocomplete: 'off' %></p>
14
14
 
15
15
  <p><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
16
- <%= f.password_field :current_password %></p>
16
+ <%= f.password_field :current_password, autocomplete: 'off' %></p>
17
17
 
18
18
  <p><%= f.submit "Update", :class => "btn" %></p>
19
19
  <% end %>
@@ -1,6 +1,6 @@
1
1
  = devise_error_messages!
2
2
 
3
- = form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => 'form-horizontal'}) do |f|
3
+ = form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => {:class => 'form-horizontal'}) do |f|
4
4
 
5
5
  %fieldset
6
6
  %legend Sign In
@@ -13,7 +13,7 @@
13
13
  .control-group
14
14
  = f.label :password, :class=>'control-label', :tabindex => "2"
15
15
  .controls
16
- = f.password_field :password
16
+ = f.password_field :password, autocomplete: 'off'
17
17
  %p.help-block= link_to "Forgot your password?", new_password_path(resource_name)
18
18
 
19
19
  .form-actions
@@ -8,9 +8,6 @@ Devise.setup do |config|
8
8
  config.use_salt_as_remember_token = true
9
9
  config.reset_password_within = 24.hours
10
10
 
11
- # Configure the class responsible to send e-mails.
12
- # config.mailer = "Devise::Mailer"
13
-
14
11
  # ==> ORM configuration
15
12
  # Load and configure the ORM. Supports :active_record (default) and
16
13
  # :mongoid (bson_ext recommended) by default. Other ORMs may be
@@ -10,7 +10,7 @@ en:
10
10
  unauthenticated: 'Please sign in.'
11
11
  unconfirmed: 'You have to confirm your account before continuing.'
12
12
  locked: 'Your account is locked.'
13
- invalid: 'Invalid email or password.'
13
+ invalid: 'Invalid username or password.'
14
14
  invalid_token: 'Invalid authentication token.'
15
15
  timeout: 'Your session expired, please sign in again to continue.'
16
16
  inactive: 'Your account has been suspended.'
@@ -34,7 +34,7 @@ Rails.application.routes.draw do
34
34
  end
35
35
 
36
36
  devise_for :members
37
- devise_for :users
37
+ devise_for :users, :controllers => {:sessions => "users/sessions"}
38
38
  devise_scope :user do
39
39
  get "sign_up", :to => "devise/registrations#new"
40
40
  end
@@ -85,6 +85,8 @@ Rails.application.routes.draw do
85
85
  end
86
86
  end
87
87
 
88
+ resources :memberships, :only => :index
89
+
88
90
  def people_actions
89
91
  resources :actions
90
92
  resources :memberships do
@@ -175,7 +177,7 @@ Rails.application.routes.draw do
175
177
  put :validated
176
178
  put :unvalidated
177
179
  end
178
-
180
+
179
181
  collection do
180
182
  delete :delete
181
183
  put :on_sale
@@ -0,0 +1,9 @@
1
+ class AddCountryZipStatePhoneNumberDisciplineToOrganizations < ActiveRecord::Migration
2
+ def change
3
+ add_column :organizations, :country, :string
4
+ add_column :organizations, :zip, :string
5
+ add_column :organizations, :state, :string
6
+ add_column :organizations, :phone_number, :string
7
+ add_column :organizations, :discipline, :string
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ class AddFirstNameAndLastNameToUsers < ActiveRecord::Migration
2
+ def change
3
+ add_column :users, :first_name, :string
4
+ add_column :users, :last_name, :string
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module ArtfullyOse
2
- VERSION = "1.2.0.pre.4"
2
+ VERSION = "1.2.0.pre.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artfully_ose
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0.pre.4
4
+ version: 1.2.0.pre.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artful.ly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-27 00:00:00.000000000 Z
11
+ date: 2013-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -444,20 +444,6 @@ dependencies:
444
444
  - - '='
445
445
  - !ruby/object:Gem::Version
446
446
  version: 0.0.1
447
- - !ruby/object:Gem::Dependency
448
- name: angularjs-rails
449
- requirement: !ruby/object:Gem::Requirement
450
- requirements:
451
- - - '='
452
- - !ruby/object:Gem::Version
453
- version: 1.0.7
454
- type: :runtime
455
- prerelease: false
456
- version_requirements: !ruby/object:Gem::Requirement
457
- requirements:
458
- - - '='
459
- - !ruby/object:Gem::Version
460
- version: 1.0.7
461
447
  - !ruby/object:Gem::Dependency
462
448
  name: swiper
463
449
  requirement: !ruby/object:Gem::Requirement
@@ -1773,6 +1759,7 @@ files:
1773
1759
  - app/assets/images/glyphish/white/99-umbrella.png
1774
1760
  - app/assets/images/glyphish/white/99-umbrella@2x.png
1775
1761
  - app/assets/images/government-default-avatar.png
1762
+ - app/assets/images/household-default-avatar.png
1776
1763
  - app/assets/images/loading.gif
1777
1764
  - app/assets/images/nonprofit-default-avatar.png
1778
1765
  - app/assets/images/other-default-avatar.png
@@ -1809,6 +1796,8 @@ files:
1809
1796
  - app/assets/images/ui-smoothness/ui-icons_888888_256x240.png
1810
1797
  - app/assets/images/ui-smoothness/ui-icons_cd0a0a_256x240.png
1811
1798
  - app/assets/javascripts/angular-bootstrap-ui.js
1799
+ - app/assets/javascripts/angular-resource.min.js
1800
+ - app/assets/javascripts/angular.min.js
1812
1801
  - app/assets/javascripts/application.js
1813
1802
  - app/assets/javascripts/bootstrap.js
1814
1803
  - app/assets/javascripts/box-office.js
@@ -2207,6 +2196,13 @@ files:
2207
2196
  - app/views/people/new.html.haml
2208
2197
  - app/views/people/show.html.haml
2209
2198
  - app/views/people/show.js.haml
2199
+ - app/views/producer_mailer/donation_kit_notification.html.haml
2200
+ - app/views/producer_mailer/donation_kit_notification.text.erb
2201
+ - app/views/producer_mailer/mailchimp_kit_initial_sync_notification.html.haml
2202
+ - app/views/producer_mailer/ticket_offer_accepted.html.haml
2203
+ - app/views/producer_mailer/ticket_offer_accepted.text.erb
2204
+ - app/views/producer_mailer/ticket_offer_rejected.html.haml
2205
+ - app/views/producer_mailer/ticket_offer_rejected.text.erb
2210
2206
  - app/views/refunds/_grouped_form.html.haml
2211
2207
  - app/views/refunds/new.html.haml
2212
2208
  - app/views/reports_mailer/_fine_print.html.haml
@@ -2263,8 +2259,10 @@ files:
2263
2259
  - app/views/store/checkouts/thanks.html.haml
2264
2260
  - app/views/store/donations/index.html.haml
2265
2261
  - app/views/store/events/_calendar.html.haml
2262
+ - app/views/store/events/_venue.html.haml
2266
2263
  - app/views/store/events/index.html.haml
2267
2264
  - app/views/store/events/show.html.haml
2265
+ - app/views/store/events/single_show.html.haml
2268
2266
  - app/views/store/memberships/index.html.haml
2269
2267
  - app/views/store/orders/show.html.haml
2270
2268
  - app/views/store/shared/_donate_form.html.haml
@@ -2277,7 +2275,7 @@ files:
2277
2275
  - app/views/users/invitations/edit.html.haml
2278
2276
  - app/views/users/invitations/new.html.haml
2279
2277
  - app/views/users/mailer/confirmation_instructions.html.erb
2280
- - app/views/users/mailer/invitation_instructions.html.erb
2278
+ - app/views/users/mailer/invitation_instructions.html.haml
2281
2279
  - app/views/users/mailer/reset_password_instructions.html.erb
2282
2280
  - app/views/users/mailer/unlock_instructions.html.erb
2283
2281
  - app/views/users/passwords/edit.html.haml
@@ -2346,7 +2344,9 @@ files:
2346
2344
  - db/migrate/20130325190110_add_indexes_to_actions.rb
2347
2345
  - db/migrate/20130326173653_add_lifetime_donations_to_people_and_searches.rb
2348
2346
  - db/migrate/20130329201707_clean_geographic_data.rb
2347
+ - db/migrate/20130411162346_add_country_zip_state_phone_number_discipline_to_organizations.rb
2349
2348
  - db/migrate/20130412145428_massage_action_subtypes.rb
2349
+ - db/migrate/20130412184415_add_first_name_and_last_name_to_users.rb
2350
2350
  - db/migrate/20130415190224_make_nongift_amount0_by_default.rb
2351
2351
  - db/migrate/20130415193118_add_settings_to_kits.rb
2352
2352
  - db/migrate/20130420232537_add_starred_to_note.rb
@@ -1,8 +0,0 @@
1
- <p>Hello <%= @resource.email %>!</p>
2
-
3
- <p><%= @resource.invited_by.email %> has invited you to join <%= link_to(@resource.invited_by.user_memberships.first.organization.name, root_url) %>. You can accept it through the link below.</p>
4
-
5
- <p><%= link_to 'Accept invitation', accept_invitation_url(@resource, :invitation_token => @resource.invitation_token) %></p>
6
-
7
- <p>If you don't want to accept the invitation, please ignore this email.<br />
8
- Your account won't be created until you access the link above and set your password.</p>