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

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.
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>