artfully_ose 1.2.0.pre.16 → 1.2.0.pre.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/app/assets/javascripts/angular-resource.js +546 -0
- data/app/assets/javascripts/angular.js +20311 -0
- data/app/assets/javascripts/application.js +13 -2
- data/app/assets/javascripts/change-membership.js +98 -0
- data/app/assets/stylesheets/application.sass +3 -0
- data/app/controllers/artfully_ose_controller.rb +12 -0
- data/app/controllers/membership_awards_controller.rb +2 -0
- data/app/controllers/membership_changes_controller.rb +39 -0
- data/app/controllers/membership_types_controller.rb +2 -0
- data/app/controllers/sales_controller.rb +1 -1
- data/app/controllers/store/checkouts_controller.rb +4 -4
- data/app/controllers/store/orders_controller.rb +1 -1
- data/app/helpers/artfully_ose_helper.rb +10 -0
- data/app/helpers/membership_types_helper.rb +17 -0
- data/app/models/actions/change_action.rb +13 -0
- data/app/models/carts/cart.rb +6 -3
- data/app/models/donation.rb +4 -0
- data/app/models/ext/integrations.rb +1 -3
- data/app/models/item.rb +1 -1
- data/app/models/kits/membership_kit.rb +1 -1
- data/app/models/member.rb +6 -0
- data/app/models/membership.rb +10 -2
- data/app/models/membership_change.rb +176 -0
- data/app/models/membership_type.rb +10 -1
- data/app/models/order_handler.rb +2 -2
- data/app/models/orders/order.rb +9 -1
- data/app/models/section.rb +1 -1
- data/app/models/show.rb +2 -2
- data/app/models/ticket.rb +4 -0
- data/app/models/ticket_type.rb +2 -2
- data/app/views/events/_ticket_type_fields.html.haml +18 -17
- data/app/views/kits/_list.html.haml +8 -0
- data/app/views/layouts/storefront.html.haml +3 -3
- data/app/views/members/mailer/invitation_instructions.html.haml +3 -2
- data/app/views/membership_kits/edit.html.haml +2 -18
- data/app/views/membership_types/_form.html.haml +71 -5
- data/app/views/memberships/index.html.haml +45 -45
- data/app/views/orders/_item_table.haml +2 -0
- data/app/views/organizations/show.html.haml +22 -16
- data/app/views/sales/new.html.haml +1 -1
- data/app/views/store/checkouts/_membership_info.html.haml +2 -2
- data/app/views/store/checkouts/thanks.html.haml +1 -1
- data/app/views/store/memberships/index.html.haml +2 -2
- data/app/views/store/orders/show.html.haml +3 -3
- data/app/views/store/shows/_show.html.haml +1 -1
- data/app/views/user_memberships/_list.html.haml +27 -26
- data/config/routes.rb +2 -0
- data/db/migrate/20131206153323_add_membership_kit.rb +5 -0
- data/db/migrate/20131206175325_add_marketing_to_membership_type.rb +6 -0
- data/db/migrate/20131210212342_add_show_fee_to_memberhsip_type.rb +5 -0
- data/db/migrate/20131210222814_add_renewal_price_to_membership_type.rb +6 -0
- data/lib/artfully_ose/version.rb +1 -1
- metadata +13 -4
- data/app/assets/javascripts/angular-resource.min.js +0 -11
- data/app/assets/javascripts/angular.min.js +0 -178
@@ -1,7 +1,8 @@
|
|
1
1
|
class MembershipType < ActiveRecord::Base
|
2
2
|
attr_accessible :name, :price, :fee, :number_of_shows,
|
3
3
|
:plan, :on_sale, :description, :ends_at,
|
4
|
-
:starts_at, :duration, :type, :period, :number_of_tickets, :sales_start_at, :sales_end_at
|
4
|
+
:starts_at, :duration, :type, :period, :number_of_tickets, :sales_start_at, :sales_end_at,
|
5
|
+
:thanks_copy, :invitation_email_text_copy, :hide_fee, :renewal_price, :offer_renewal
|
5
6
|
|
6
7
|
belongs_to :organization
|
7
8
|
has_many :memberships
|
@@ -16,6 +17,8 @@ class MembershipType < ActiveRecord::Base
|
|
16
17
|
scope :on_sale, where(:on_sale => true)
|
17
18
|
scope :not_ended, where('ends_at > ?', DateTime.now)
|
18
19
|
|
20
|
+
SERVICE_FEE = 0.05
|
21
|
+
|
19
22
|
comma do
|
20
23
|
name
|
21
24
|
description
|
@@ -44,6 +47,12 @@ class MembershipType < ActiveRecord::Base
|
|
44
47
|
self.name.end_with?("Membership") ? self.name : self.name + " Membership"
|
45
48
|
end
|
46
49
|
|
50
|
+
def price_for(member = nil)
|
51
|
+
return price if member.nil?
|
52
|
+
|
53
|
+
(offer_renewal? && member.current?) ? renewal_price : price
|
54
|
+
end
|
55
|
+
|
47
56
|
def create_list_segment
|
48
57
|
@search = organization.searches.create({:membership_type => self})
|
49
58
|
@segment = organization.segments.create({:search => @search, :name => self.name})
|
data/app/models/order_handler.rb
CHANGED
@@ -76,7 +76,7 @@ class OrderHandler
|
|
76
76
|
end
|
77
77
|
|
78
78
|
|
79
|
-
def handle_memberships(params)
|
79
|
+
def handle_memberships(params, member = nil)
|
80
80
|
unless params[:membership_type].blank?
|
81
81
|
membership_type_id = params[:membership_type][:id]
|
82
82
|
quantity = params[:quantity].to_i
|
@@ -85,7 +85,7 @@ class OrderHandler
|
|
85
85
|
#current_membership_type_count = self.cart.memberships.count{ |membership| membership.membership_type_id == membership_type_id }
|
86
86
|
|
87
87
|
(1..quantity).each do |i|
|
88
|
-
self.cart.memberships << Membership.for(MembershipType.find(membership_type_id))
|
88
|
+
self.cart.memberships << Membership.for(MembershipType.find(membership_type_id), member)
|
89
89
|
end
|
90
90
|
|
91
91
|
end
|
data/app/models/orders/order.rb
CHANGED
@@ -237,6 +237,10 @@ class Order < ActiveRecord::Base
|
|
237
237
|
def memberships(reload=false)
|
238
238
|
items(reload).select(&:membership?)
|
239
239
|
end
|
240
|
+
|
241
|
+
def membership_types
|
242
|
+
memberships.collect{|item| item.product.membership_type}.uniq
|
243
|
+
end
|
240
244
|
|
241
245
|
def has_single_donation?
|
242
246
|
(donations.size == 1) && tickets.empty?
|
@@ -370,6 +374,10 @@ class Order < ActiveRecord::Base
|
|
370
374
|
self.person.calculate_lifetime_donations
|
371
375
|
end
|
372
376
|
|
377
|
+
def membership_action_class
|
378
|
+
GetAction
|
379
|
+
end
|
380
|
+
|
373
381
|
def purchase_action_class
|
374
382
|
GetAction
|
375
383
|
end
|
@@ -422,7 +430,7 @@ class Order < ActiveRecord::Base
|
|
422
430
|
|
423
431
|
def create_membership_action
|
424
432
|
unless self.memberships.empty?
|
425
|
-
action =
|
433
|
+
action = self.membership_action_class.new
|
426
434
|
action.person = self.person
|
427
435
|
action.subject = self
|
428
436
|
action.organization = self.organization
|
data/app/models/section.rb
CHANGED
@@ -60,7 +60,7 @@ class Section < ActiveRecord::Base
|
|
60
60
|
types << ticket_types.storefront
|
61
61
|
unless member.nil?
|
62
62
|
|
63
|
-
#Add "unrestricted member" ticket_types that aren't
|
63
|
+
#Add "unrestricted member" ticket_types that aren't tied to a particular membership type
|
64
64
|
types << ticket_types.members.select{|ticket_type| !ticket_type.member_ticket?} unless member.nil?
|
65
65
|
|
66
66
|
#Now add member ticket_types that apply to this particular member
|
data/app/models/show.rb
CHANGED
@@ -146,7 +146,7 @@ class Show < ActiveRecord::Base
|
|
146
146
|
"show_time" => show_time,
|
147
147
|
"datetime" => datetime_local_to_event,
|
148
148
|
"destroyable" => destroyable?,
|
149
|
-
"chart" => chart_for("storefront", options[:
|
149
|
+
"chart" => chart_for("storefront", options[:organization_id]).as_json(options)
|
150
150
|
}
|
151
151
|
end
|
152
152
|
|
@@ -156,7 +156,7 @@ class Show < ActiveRecord::Base
|
|
156
156
|
def as_widget_json(options = {})
|
157
157
|
as_json.merge(:event => event.as_json,
|
158
158
|
:venue => event.venue.as_json,
|
159
|
-
:chart => chart_for("storefront", options[:
|
159
|
+
:chart => chart_for("storefront", options[:organization_id]).as_json(options))
|
160
160
|
end
|
161
161
|
|
162
162
|
def bulk_on_sale(ids)
|
data/app/models/ticket.rb
CHANGED
data/app/models/ticket_type.rb
CHANGED
@@ -34,7 +34,7 @@ class TicketType < ActiveRecord::Base
|
|
34
34
|
#
|
35
35
|
# Returns an integer number of tickets available
|
36
36
|
#
|
37
|
-
def available(member = nil)
|
37
|
+
def available(channel = "storefront", member = nil)
|
38
38
|
available_in_section = Ticket.where(:section_id => self.section, :state => :on_sale, :cart_id => nil, :ticket_type_id => nil).count
|
39
39
|
|
40
40
|
return available_in_section if unlimited? && !self.member_ticket?
|
@@ -42,7 +42,7 @@ class TicketType < ActiveRecord::Base
|
|
42
42
|
available_measures = []
|
43
43
|
available_measures << limit - committed.length - locked.length unless limit.nil?
|
44
44
|
available_measures << available_in_section
|
45
|
-
available_measures << available_to(member, available_in_section) if self.member_ticket?
|
45
|
+
available_measures << available_to(member, available_in_section) if self.member_ticket? && channel == "storefront"
|
46
46
|
|
47
47
|
[ available_measures.min, 0].max
|
48
48
|
end
|
@@ -5,26 +5,27 @@
|
|
5
5
|
.controls
|
6
6
|
=f.text_field :name, :class => 'span4'
|
7
7
|
|
8
|
-
|
9
|
-
=label_tag "Member ticket?", "Member ticket?", :class => 'control-label'
|
10
|
-
.controls
|
11
|
-
%label.radio.inline
|
12
|
-
= f.radio_button :member_ticket, true, :class => "member-ticket-yes"
|
13
|
-
Yes
|
14
|
-
%label.radio.inline
|
15
|
-
= f.radio_button :member_ticket, false, :class => "member-ticket-no"
|
16
|
-
No
|
17
|
-
|
18
|
-
.membership-fields{:style => "display: none"}
|
8
|
+
-with_kit :membership do
|
19
9
|
.control-group
|
20
|
-
=
|
10
|
+
=label_tag "Member ticket?", "Member ticket?", :class => 'control-label'
|
21
11
|
.controls
|
22
|
-
|
12
|
+
%label.radio.inline
|
13
|
+
= f.radio_button :member_ticket, true, :class => "member-ticket-yes"
|
14
|
+
Yes
|
15
|
+
%label.radio.inline
|
16
|
+
= f.radio_button :member_ticket, false, :class => "member-ticket-no"
|
17
|
+
No
|
23
18
|
|
24
|
-
.
|
25
|
-
|
26
|
-
|
27
|
-
|
19
|
+
.membership-fields{:style => "display: none"}
|
20
|
+
.control-group
|
21
|
+
=f.label :membership_type_id, "Membership", :class => 'control-label'
|
22
|
+
.controls
|
23
|
+
=f.select :membership_type_id, options_from_collection_for_select(MembershipType.in_play, 'id', 'name', f.object.membership_type_id), {}, :class => 'span4'
|
24
|
+
|
25
|
+
.control-group
|
26
|
+
=f.label :tickets_per_membership, "Tickets per Membership", :class => 'control-label'
|
27
|
+
.controls
|
28
|
+
=f.text_field :tickets_per_membership, :class => 'input-small'
|
28
29
|
|
29
30
|
.control-group
|
30
31
|
=f.label :price, "Price", :class => 'control-label'
|
@@ -9,10 +9,10 @@
|
|
9
9
|
.navbar-inner
|
10
10
|
.container
|
11
11
|
= link_to @store_organization.name, root_path, :class => 'brand'
|
12
|
-
%ul.nav
|
12
|
+
%ul.nav#main-menu-options
|
13
13
|
%li= link_to "Buy Tickets", store_events_path(@store_organization.cached_slug)
|
14
|
-
|
15
|
-
|
14
|
+
-with_kit(:membership)do
|
15
|
+
%li= link_to "Become a Member", store_memberships_path(@store_organization.cached_slug)
|
16
16
|
%li= link_to "Donate Now", store_donate_path(@store_organization.cached_slug), :class => "btn btn-small btn-warning primary"
|
17
17
|
%ul.nav.pull-right
|
18
18
|
-if member_signed_in?
|
@@ -1,7 +1,8 @@
|
|
1
1
|
="Hello #{@resource.person.first_name},"
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
-@resource.current_membership_types.uniq.each do |membership_type|
|
4
|
+
%p
|
5
|
+
=membership_type.invitation_email_text_copy
|
5
6
|
|
6
7
|
= link_to 'Setup your account now', accept_invitation_url(@resource, :invitation_token => @resource.invitation_token)
|
7
8
|
|
@@ -25,25 +25,9 @@
|
|
25
25
|
|
26
26
|
.row-fluid.bottom-room
|
27
27
|
.span3
|
28
|
-
|
29
|
-
.guide
|
30
|
-
Ut porta risus et lectus lobortis, vitae ultricies massa placerat. In non dapibus augue.
|
31
|
-
%p
|
32
|
-
=link_to "Preview", "#thanks-preview-modal", 'data-toggle' => 'modal'
|
28
|
+
 
|
33
29
|
.span9
|
34
|
-
=
|
35
|
-
|
36
|
-
.row-fluid.bottom-room
|
37
|
-
.span3
|
38
|
-
%strong= f.label :invitation_email_text_copy, "Welcome Email Copy", :class => 'control-label'
|
39
|
-
.guide
|
40
|
-
Ut porta risus et lectus lobortis, vitae ultricies massa placerat. In non dapibus augue.
|
41
|
-
%p
|
42
|
-
=link_to "Preview", "#invite-preview-modal", 'data-toggle' => 'modal'
|
43
|
-
.span9
|
44
|
-
= f.text_area :invitation_email_text_copy, :class => "input-xxlarge", :rows => "8"
|
45
|
-
|
46
|
-
=f.submit "Save", :class => "btn btn-primary"
|
30
|
+
=f.submit "Save", :class => "btn btn-primary"
|
47
31
|
|
48
32
|
#thanks-preview-modal.modal
|
49
33
|
.modal-header
|
@@ -1,6 +1,7 @@
|
|
1
1
|
=form_for @membership_type, :as => :membership_type, :html => { :class => 'form-horizontal' } do |f|
|
2
2
|
=f.hidden_field :type, :value => @membership_type.type
|
3
3
|
%fieldset
|
4
|
+
%legend Basics
|
4
5
|
.control-group
|
5
6
|
= f.label :name, "Name", :class => 'control-label'
|
6
7
|
.controls
|
@@ -9,22 +10,87 @@
|
|
9
10
|
= f.label :description, "Description", :class => 'control-label'
|
10
11
|
.controls
|
11
12
|
= f.text_area :description, :rows => "5"
|
13
|
+
.control-group
|
14
|
+
= f.label :number_of_tickets, "Number of Tickets", :class => 'control-label'
|
15
|
+
.controls
|
16
|
+
= f.text_field :number_of_tickets, :class => "span1"
|
17
|
+
|
18
|
+
=render "membership_types/#{@membership_type.class.name.underscore}_form", :f => f
|
19
|
+
%fieldset
|
20
|
+
%legend Pricing
|
12
21
|
.control-group
|
13
22
|
= f.label :price, "Price", :class => 'control-label'
|
14
23
|
.controls
|
15
24
|
= f.text_field :price, :class => 'input-small section-price currency'
|
25
|
+
|
16
26
|
.control-group
|
17
|
-
=
|
27
|
+
=f.label :hide_fee, "Hide service fee?", :class => 'control-label'
|
18
28
|
.controls
|
19
|
-
= f.
|
29
|
+
= f.select :hide_fee, options_for_select([["Yes", true], ["No", false]]), {}, :class => 'span1'
|
30
|
+
%br
|
31
|
+
=link_to "Learn more", "#pricing-example", "data-toggle" => "modal"
|
32
|
+
|
20
33
|
.control-group
|
21
|
-
= f.label :
|
34
|
+
= f.label :offer_renewal, "Offer renewal price?", :class => 'control-label'
|
22
35
|
.controls
|
23
|
-
|
36
|
+
%label
|
37
|
+
= f.check_box :offer_renewal
|
24
38
|
|
39
|
+
.control-group#renewal-price-group
|
40
|
+
= f.label :renewal_price, "Renewal Price", :class => 'control-label'
|
41
|
+
.controls
|
42
|
+
= f.text_field :renewal_price, :class => 'input-small section-price currency'
|
25
43
|
|
26
|
-
|
44
|
+
#pricing-example.modal
|
45
|
+
.modal-header
|
46
|
+
.close{'data-dismiss'=>'modal'} x
|
47
|
+
%h3 Pricing Example
|
48
|
+
.modal-body
|
49
|
+
%table.table.table-compact
|
50
|
+
%tr
|
51
|
+
%th
|
52
|
+
%th.right Hidden fee
|
53
|
+
%th.right Shown fee
|
54
|
+
%tr
|
55
|
+
%td Membership price
|
56
|
+
%td.right $100
|
57
|
+
%td.right $100
|
58
|
+
%tr
|
59
|
+
%td Patron pays
|
60
|
+
%td.right $100
|
61
|
+
%td.right $100 + 5% service = $105
|
62
|
+
%tr
|
63
|
+
%td You receive
|
64
|
+
%td.right
|
65
|
+
$100
|
66
|
+
%br
|
67
|
+
="- 5% service"
|
68
|
+
%br
|
69
|
+
="- 3.5% processing"
|
70
|
+
%br
|
71
|
+
="$91.68"
|
72
|
+
%td.right $100 - 3.5% processing = $96.5
|
73
|
+
.modal-footer
|
74
|
+
= button_tag "Close", :class => "btn", 'data-dismiss' => 'modal'
|
27
75
|
|
76
|
+
|
77
|
+
/ .control-group
|
78
|
+
/ = f.label :fee, "Member Fee", :class => 'control-label'
|
79
|
+
/ .controls
|
80
|
+
/ = f.text_field :fee, :class => 'input-small section-price currency'
|
81
|
+
%fieldset
|
82
|
+
%legend Storefront Copy
|
83
|
+
.control-group
|
84
|
+
= f.label :thanks_copy, "Thanks Message", :class => 'control-label'
|
85
|
+
.controls
|
86
|
+
= f.text_area :thanks_copy, :rows => "5"
|
87
|
+
.control-group
|
88
|
+
= f.label :invitation_email_text_copy, "Email Message", :class => 'control-label'
|
89
|
+
.controls
|
90
|
+
= f.text_area :invitation_email_text_copy, :rows => "5"
|
91
|
+
|
92
|
+
%fieldset
|
93
|
+
%legend Sales
|
28
94
|
.control-group
|
29
95
|
= f.label :fee, "Sales Start", :class => 'control-label'
|
30
96
|
.controls
|
@@ -19,7 +19,7 @@
|
|
19
19
|
%li
|
20
20
|
= link_to "Change Expiration", "#extend", 'data-toggle' => 'modal'
|
21
21
|
%li
|
22
|
-
= link_to "Change Membership", "#change", '
|
22
|
+
= link_to "Change Membership", "#change", 'ng-controller' => 'ChangeMembershipController', 'ng-click' => 'changeSelected($event)'
|
23
23
|
%li
|
24
24
|
= link_to "Cancel Membership", "#cancel", 'data-toggle' => 'modal'
|
25
25
|
.span6.right
|
@@ -41,10 +41,10 @@
|
|
41
41
|
%tbody
|
42
42
|
- @person.memberships.each do |membership|
|
43
43
|
%tr
|
44
|
-
%td.grouped-checkbox= check_box_tag "membership_ids[]", membership.id, false
|
44
|
+
%td.grouped-checkbox= check_box_tag "membership_ids[]", membership.id, false, :id => "membership_id_#{membership.id}"
|
45
45
|
%td.item-description=link_to membership.membership_type.name, membership_type_path(membership.membership_type.id)
|
46
|
-
%td=l membership.starts_at, :format => :slashed_date
|
47
|
-
%td=l membership.ends_at, :format => :slashed_date
|
46
|
+
%td.starts-at=l membership.starts_at, :format => :slashed_date
|
47
|
+
%td.ends-at=l membership.ends_at, :format => :slashed_date
|
48
48
|
%td.price.right=number_as_cents membership.sold_price
|
49
49
|
%td.fee.right TODO
|
50
50
|
|
@@ -72,51 +72,63 @@
|
|
72
72
|
=link_to "Process Refund", "#", :class => "btn btn-success", 'data-dismiss'=>'modal'
|
73
73
|
=link_to "Cancel", "#", :class => "btn btn-danger", 'data-dismiss'=>'modal'
|
74
74
|
|
75
|
-
#change.modal
|
76
|
-
=form_tag
|
75
|
+
#change.modal{'ng-controller' => 'ChangeMembershipController'}
|
76
|
+
=form_tag person_membership_changes_path, :class => "form-horizontal", 'novalidate' => 'novalidate', 'name' => 'changeForm', :method => :post do
|
77
77
|
.modal-header
|
78
78
|
.close{'data-dismiss'=>'modal'} x
|
79
79
|
%h3 Change Membership
|
80
80
|
.modal-body
|
81
81
|
.control-group
|
82
|
-
%label.control-label="
|
82
|
+
%label.control-label="Selected Memberships"
|
83
83
|
.controls
|
84
|
-
|
84
|
+
%ol
|
85
|
+
%li{'ng-repeat' => 'membership in selected'}
|
86
|
+
= hidden_field_tag('membership_ids[]', '{{membership.id}}')
|
87
|
+
= '{{membership.type}} - {{membership.price}}'
|
88
|
+
.control-group
|
89
|
+
%label.control-label="New Membership Type"
|
90
|
+
.controls
|
91
|
+
= select_tag :membership_type_id, options_for_membership_types(@membership_types, include_price: true)
|
92
|
+
|
93
|
+
.control-group
|
94
|
+
%label.control-label Price Per Membership
|
95
|
+
.controls
|
96
|
+
= text_field_tag :price, '0', :class => 'span1 currency', 'ng-model' => 'price', 'ng-change' => 'updateTotal()'
|
85
97
|
|
86
98
|
.control-group
|
87
|
-
%label.control-label Price
|
99
|
+
%label.control-label Total Price
|
88
100
|
.controls
|
89
|
-
|
90
|
-
%span.add-on $
|
91
|
-
= text_field_tag :sold_price, "", :class => 'span1'
|
101
|
+
= text_field_tag 'total', '', :class => 'span1', :disabled => 'disabled', 'ng-model' => 'total'
|
92
102
|
|
93
|
-
|
94
|
-
%label.
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
+
.control-group
|
104
|
+
%label.control-label Payment Method
|
105
|
+
#payment-controls.controls
|
106
|
+
%label.radio
|
107
|
+
= radio_button_tag(:payment_method, :cash, true, :class => 'payment-method', :humanized_value => 'Cash', 'ng-model' => 'payment_method')
|
108
|
+
Cash
|
109
|
+
%label.radio
|
110
|
+
= radio_button_tag(:payment_method, :comp, false, :class => 'payment-method', :humanized_value => 'Comp', 'ng-model' => 'payment_method')
|
111
|
+
Comp
|
112
|
+
%label.radio
|
113
|
+
= radio_button_tag(:payment_method, :credit_card_manual, false, :class => 'payment-method', :humanized_value => 'Credit card', 'ng-model' => 'payment_method')
|
114
|
+
Credit
|
103
115
|
|
104
|
-
#payment-info.
|
116
|
+
#payment-info.well{'ng-show' => "'credit_card_manual' == payment_method"}
|
105
117
|
.control-group
|
106
|
-
%label.control-label=
|
107
|
-
.controls= text_field_tag(
|
118
|
+
%label.control-label='Name on Card'
|
119
|
+
.controls= text_field_tag('credit_card_info[name]')
|
108
120
|
.control-group
|
109
|
-
%label.control-label=
|
110
|
-
.controls= text_field_tag(
|
121
|
+
%label.control-label='Card Number'
|
122
|
+
.controls= text_field_tag('credit_card_info[number]')
|
111
123
|
.control-group
|
112
|
-
%label.control-label=
|
124
|
+
%label.control-label='Expiration Date'
|
113
125
|
.date_field.controls
|
114
|
-
= select_tag(
|
115
|
-
= select_tag(
|
126
|
+
= select_tag('credit_card_info[month]', options_for_select(1..12), :class => 'input-small inline')
|
127
|
+
= select_tag('credit_card_info[year]', options_for_select(Time.now.year..Time.now.year + 10), :class => 'input-small inline')
|
116
128
|
|
117
|
-
|
118
|
-
|
119
|
-
|
129
|
+
.modal-footer
|
130
|
+
= submit_tag "Process Membership Change", :class => "btn btn-success"
|
131
|
+
=link_to "Cancel", "#", :class => "btn btn-danger", 'data-dismiss'=>'modal'
|
120
132
|
|
121
133
|
#partial-refund.modal
|
122
134
|
.modal-header
|
@@ -141,15 +153,3 @@
|
|
141
153
|
.modal-footer
|
142
154
|
=link_to "Cancel Memberhships", "#", :class => "btn btn-success", 'data-dismiss'=>'modal'
|
143
155
|
=link_to "Cancel", "#", :class => "btn btn-danger", 'data-dismiss'=>'modal'
|
144
|
-
|
145
|
-
-content_for :custom_js do
|
146
|
-
:javascript
|
147
|
-
$(".payment-method").change(function(){
|
148
|
-
if($(this).attr('value') != 'credit_card_manual'){
|
149
|
-
$("#payment-info").addClass("hidden");
|
150
|
-
$("#credit_card_number").val("")
|
151
|
-
$("#credit_card_name").val("")
|
152
|
-
} else {
|
153
|
-
$("#payment-info").removeClass("hidden");
|
154
|
-
}
|
155
|
-
});
|