artfully_ose 1.3.0.pre3 → 1.3.0.pre4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/loading-white.gif +0 -0
  3. data/app/assets/images/seating_temp/1.jpg +0 -0
  4. data/app/assets/images/seating_temp/10.jpg +0 -0
  5. data/app/assets/images/seating_temp/11.jpg +0 -0
  6. data/app/assets/images/seating_temp/2.jpg +0 -0
  7. data/app/assets/images/seating_temp/3.jpg +0 -0
  8. data/app/assets/images/seating_temp/4.jpg +0 -0
  9. data/app/assets/images/seating_temp/5.jpg +0 -0
  10. data/app/assets/images/seating_temp/6.jpg +0 -0
  11. data/app/assets/images/seating_temp/7.jpg +0 -0
  12. data/app/assets/images/seating_temp/8.jpg +0 -0
  13. data/app/assets/images/seating_temp/9.jpg +0 -0
  14. data/app/assets/images/seating_temp/icon_43405.png +0 -0
  15. data/app/assets/images/seating_temp/icon_43405.svg +3 -0
  16. data/app/assets/images/seating_temp/icon_43405_plus.png +0 -0
  17. data/app/assets/images/seating_temp/license.txt +8 -0
  18. data/app/assets/javascripts/application.js +1 -0
  19. data/app/assets/javascripts/custom/cookies.js +27 -0
  20. data/app/assets/javascripts/custom/inline-people-search.js +4 -0
  21. data/app/assets/javascripts/custom/job-monitor.js +0 -1
  22. data/app/assets/javascripts/exchange-seat-chart.js +5 -0
  23. data/app/assets/javascripts/seat-chart.js +606 -0
  24. data/app/assets/javascripts/show-seat-chart.js +17 -0
  25. data/app/assets/javascripts/store/store-seat-chart.js +76 -0
  26. data/app/assets/javascripts/store/store.js +14 -39
  27. data/app/assets/stylesheets/application.sass +49 -1
  28. data/app/assets/stylesheets/bootstrap-overrides.css +11 -3
  29. data/app/assets/stylesheets/sass/seat-chart.sass +311 -0
  30. data/app/assets/stylesheets/sass/store.sass +73 -19
  31. data/app/assets/stylesheets/storefront.css +2 -0
  32. data/app/concerns/pdf_generation.rb +1 -15
  33. data/app/controllers/advanced_searches_controller.rb +1 -3
  34. data/app/controllers/charts_controller.rb +14 -12
  35. data/app/controllers/console_sales_controller.rb +55 -0
  36. data/app/controllers/event_calendars_controller.rb +15 -0
  37. data/app/controllers/events_controller.rb +16 -5
  38. data/app/controllers/exchanges_controller.rb +32 -9
  39. data/app/controllers/export_controller.rb +8 -0
  40. data/app/controllers/members/sessions_controller.rb +0 -2
  41. data/app/controllers/membership_comps_controller.rb +2 -1
  42. data/app/controllers/prices_controller.rb +20 -0
  43. data/app/controllers/shows_controller.rb +3 -1
  44. data/app/controllers/store/events_controller.rb +6 -5
  45. data/app/controllers/store/orders_controller.rb +11 -13
  46. data/app/controllers/store/shows_controller.rb +1 -0
  47. data/app/controllers/store/store_controller.rb +11 -0
  48. data/app/controllers/tickets_controller.rb +0 -28
  49. data/app/controllers/user_memberships_controller.rb +7 -2
  50. data/app/controllers/venues_controller.rb +9 -0
  51. data/app/helpers/artfully_ose_helper.rb +18 -4
  52. data/app/helpers/seating_helper.rb +157 -0
  53. data/app/models/assigned_chart.rb +220 -0
  54. data/app/models/cart.rb +6 -1
  55. data/app/models/chart.rb +28 -17
  56. data/app/models/database_views/item_view.rb +76 -5
  57. data/app/models/discount.rb +4 -0
  58. data/app/models/discounts/buy_one_get_one_free_discount_type.rb +1 -1
  59. data/app/models/discounts/dollars_off_tickets_discount_type.rb +5 -1
  60. data/app/models/discounts/percentage_off_tickets_discount_type.rb +8 -4
  61. data/app/models/event.rb +86 -12
  62. data/app/models/general_admission_chart.rb +51 -0
  63. data/app/models/imports/events_import.rb +1 -1
  64. data/app/models/job/show_creator.rb +3 -10
  65. data/app/models/kit.rb +11 -1
  66. data/app/models/kits/assigned_seating_kit.rb +23 -0
  67. data/app/models/member_walkup.rb +1 -1
  68. data/app/models/order_handler.rb +22 -6
  69. data/app/models/organization.rb +4 -5
  70. data/app/models/person.rb +3 -1
  71. data/app/models/sale.rb +1 -1
  72. data/app/models/seat.rb +96 -0
  73. data/app/models/section.rb +1 -3
  74. data/app/models/show.rb +10 -17
  75. data/app/models/ticket.rb +30 -6
  76. data/app/models/ticket/locker.rb +3 -2
  77. data/app/models/ticket_type.rb +12 -6
  78. data/app/models/ticket_types_seat.rb +4 -0
  79. data/app/models/venue.rb +23 -0
  80. data/app/views/advanced_searches/filters/_birthday.html.haml +1 -0
  81. data/app/views/assigned_charts/_show.html.haml +12 -0
  82. data/app/views/console_sales/_aloha.html.haml +5 -4
  83. data/app/views/console_sales/new.html.haml +9 -0
  84. data/app/views/event_calendars/index.html.haml +34 -0
  85. data/app/views/events/_menu.html.haml +2 -1
  86. data/app/views/events/_section_fields.html.haml +13 -8
  87. data/app/views/events/new.html.haml +34 -4
  88. data/app/views/events/prices.html.haml +3 -4
  89. data/app/views/events/seating.html.haml +131 -0
  90. data/app/views/exchanges/_assigned_chart.html.haml +108 -0
  91. data/app/views/exchanges/_general_admission_chart.html.haml +55 -0
  92. data/app/views/exchanges/new.html.haml +1 -55
  93. data/app/views/general_admission_charts/_show.html.haml +2 -0
  94. data/app/views/layouts/_menu.html.haml +44 -31
  95. data/app/views/layouts/storefront.html.haml +72 -30
  96. data/app/views/membership_comps/new.html.haml +1 -0
  97. data/app/views/order_mailer/confirmation_for.html.haml +5 -3
  98. data/app/views/order_mailer/confirmation_for.text.haml +1 -2
  99. data/app/views/pdfs/order.html.haml +20 -6
  100. data/app/views/seating/_actions_menu.html.haml +10 -0
  101. data/app/views/seating/_chart.html.haml +15 -0
  102. data/app/views/seating/_chart_container.html.haml +2 -0
  103. data/app/views/seating/_chart_note_display.html.haml +7 -0
  104. data/app/views/seating/_hold_seats_modal.html.haml +39 -0
  105. data/app/views/seating/_layer_menu.html.haml +23 -0
  106. data/app/views/seating/_legend.html.haml +52 -0
  107. data/app/views/seating/_modify_seats_modal.html.haml +29 -0
  108. data/app/views/seating/_ticket_type_modals.html.haml +41 -0
  109. data/app/views/shows/_seat_chart.html.haml +122 -0
  110. data/app/views/shows/_sections_table.html.haml +3 -24
  111. data/app/views/shows/_ticket_table.html.haml +4 -2
  112. data/app/views/shows/_work_with.html.haml +4 -0
  113. data/app/views/shows/new.html.haml +2 -2
  114. data/app/views/shows/show.html.haml +93 -14
  115. data/app/views/store/assigned_charts/_show.html.haml +54 -0
  116. data/app/views/store/checkouts/shopping_cart_display/_tickets.haml +13 -0
  117. data/app/views/store/donations/index.html.haml +1 -1
  118. data/app/views/store/events/calendar.html.haml +94 -11
  119. data/app/views/store/events/index.html.haml +1 -1
  120. data/app/views/store/events/show.html.haml +36 -2
  121. data/app/views/store/events/single_show.html.haml +5 -4
  122. data/app/views/store/general_admission_charts/_show.html.haml +41 -0
  123. data/app/views/store/orders/show.html.haml +17 -4
  124. data/app/views/store/shared/_donate_form.html.haml +2 -1
  125. data/app/views/store/shared/_small_donate_form.html.haml +1 -1
  126. data/app/views/store/shows/_show.html.haml +1 -39
  127. data/app/views/ticket_types/edit.html.haml +1 -1
  128. data/app/views/user_memberships/_list.html.haml +1 -1
  129. data/app/views/venues/edit.html.haml +1 -1
  130. data/app/views/venues/show.html.haml +11 -0
  131. data/config/routes.rb +27 -10
  132. data/db/migrate/20140828174357_add_type_to_chart.rb +7 -0
  133. data/db/migrate/20140828195617_create_seats.rb +16 -0
  134. data/db/migrate/20140829135426_add_venue_to_chart.rb +5 -0
  135. data/db/migrate/20140829143520_add_assigned_to_event.rb +5 -0
  136. data/db/migrate/20140904164927_add_fields_to_seat.rb +14 -0
  137. data/db/migrate/20140912170010_add_note_to_seat.rb +6 -0
  138. data/db/migrate/20140919152307_add_seats_to_ticket.rb +5 -0
  139. data/db/migrate/20140930224543_add_public_note_to_chart.rb +5 -0
  140. data/db/migrate/20141001140737_add_seat_id_index_to_tickets.rb +5 -0
  141. data/db/migrate/20141001193242_associate_hold_with_person.rb +6 -0
  142. data/db/migrate/20141021175311_create_ticket_types_seats.rb +11 -0
  143. data/db/migrate/20150106161744_migrate_charts_back_to_venues.rb +18 -0
  144. data/db/migrate/20151105085424_add_creator_to_items_view.rb +40 -0
  145. data/lib/artfully_ose/version.rb +1 -1
  146. data/spec/factories/assigned_chart_factories.rb +18 -0
  147. data/spec/factories/chart_factories.rb +4 -8
  148. data/spec/factories/kit_factories.rb +4 -0
  149. data/spec/factories/seat_factories.rb +4 -0
  150. data/spec/factories/show_factories.rb +1 -1
  151. metadata +66 -5
  152. data/app/models/ticket/foundry.rb +0 -48
  153. data/app/models/ticket/template.rb +0 -40
  154. data/app/views/store/events/_calendar.html.haml +0 -13
@@ -8,13 +8,14 @@ module Ticket::Locker
8
8
  #
9
9
  # TODO: blow up if this ticket_type does not apply to this show
10
10
  #
11
- Rails.logger.debug(tickets.inspect)
11
+ Rails.logger.debug("LOCKER LOCKING TICKETS: #{tickets.inspect}")
12
+ Rails.logger.debug("LOCKER WITH TICKET TYPE: #{ticket_type.inspect}")
12
13
  Ticket.where(:id => tickets).update_all({ :cart_id => cart.id,
13
14
  :ticket_type_id => ticket_type.id,
14
15
  :cart_price => ticket_type.price
15
16
  })
16
17
  tickets = Ticket.includes(:ticket_type).where(:id => tickets)
17
- Rails.logger.debug(tickets.inspect)
18
+ Rails.logger.debug("LOCKER #{tickets.inspect}")
18
19
  cart << tickets
19
20
  ExpireTicketJob.enqueue(tickets.collect(&:id), cart.id)
20
21
  tickets
@@ -4,6 +4,8 @@ class TicketType < ActiveRecord::Base
4
4
  belongs_to :section
5
5
  belongs_to :show
6
6
  belongs_to :membership_type
7
+ has_many :ticket_types_seats
8
+ has_many :seats, :through => :ticket_types_seats
7
9
  delegate :chart, :to => :section
8
10
  has_many :tickets
9
11
 
@@ -27,13 +29,17 @@ class TicketType < ActiveRecord::Base
27
29
  }
28
30
  end
29
31
 
32
+ def price_for_cart(cart)
33
+ return cart.discount.calculate_discount_for(self) if cart.discount.present?
34
+ return 0 if (cart.applied_pass.present? && self.applies_to_pass?(cart.applied_pass))
35
+ self.price
36
+ end
37
+
30
38
  #
31
- # Returns Tickets
39
+ # Returns [ Tickets, "error" ]
32
40
  #
33
- def available_tickets(ticket_limit = 4, member = nil)
34
- Ticket.available({:section_id => self.section.id,
35
- :ticket_type_id => nil },
36
- [ticket_limit, self.available(member)].min)
41
+ def available_tickets(ticket_limit = 4, member = nil, seat = nil, cart = nil)
42
+ self.chart.get_available_tickets(self, ticket_limit, member, seat, cart)
37
43
  end
38
44
 
39
45
  #
@@ -99,7 +105,7 @@ class TicketType < ActiveRecord::Base
99
105
  end
100
106
 
101
107
  def dup!
102
- TicketType.new(self.attributes.reject { |key, value| key == 'id' }, :without_protection => true)
108
+ TicketType.new(self.attributes.reject { |key, value| ["section_id", "id"].include? key }, :without_protection => true)
103
109
  end
104
110
 
105
111
  def channels
@@ -0,0 +1,4 @@
1
+ class TicketTypesSeat < ActiveRecord::Base
2
+ belongs_to :ticket_type
3
+ belongs_to :seat
4
+ end
@@ -3,6 +3,7 @@ require 'geocoder'
3
3
  class Venue < ActiveRecord::Base
4
4
  belongs_to :organization
5
5
  has_one :event
6
+ has_many :charts
6
7
 
7
8
  validates_presence_of :name
8
9
 
@@ -12,6 +13,28 @@ class Venue < ActiveRecord::Base
12
13
 
13
14
  after_save :run_geocode, :if => :address1_changed?
14
15
  after_save :refresh_show_stats, :if => :time_zone_changed?
16
+
17
+ def default_chart
18
+ self.charts.first
19
+ end
20
+
21
+ def self.most_recently_named(organization, venue_name)
22
+ organization.venues
23
+ .where(:name => venue_name)
24
+ .order('id desc')
25
+ .first
26
+ end
27
+
28
+ #
29
+ # MigrateChartsBackToVenues depends on this method
30
+ #
31
+ def update_default_chart_from(chart)
32
+ new_chart = chart.dup!({:save => true})
33
+ new_chart.event = nil
34
+ self.default_chart.destroy if default_chart
35
+ new_chart.venue = self
36
+ new_chart.save
37
+ end
15
38
 
16
39
  def name_and_address_as_string
17
40
  string = ''
@@ -2,6 +2,7 @@
2
2
 
3
3
  %li.filter-birthday
4
4
  = hidden_field_tag 'search[field_type]', 'birthday', id: nil
5
+ = hidden_field_tag 'search[negation-filter]', 0
5
6
  = remove_search_filter_button
6
7
  = search_filter_text_block 'Have a birthday on'
7
8
  = select_tag 'search[birth_month]', options_for_select(birth_months, selected: search_values['birth_month']), include_blank: false, class: 'short', class: 'advanced-search-select-field', id: nil
@@ -0,0 +1,12 @@
1
+ %ul.nav.nav-tabs#show-tabs
2
+ %li.active
3
+ %a{:href => "#chart-tab"} Seat Chart
4
+ %li
5
+ %a{:href => "#sections-tab"} Ticket Types
6
+
7
+ .tab-content{:style=>"position: relative;overflow: auto"}
8
+ .tab-pane#sections#sections-tab
9
+ = render :partial => 'sections_table', :locals => { :show => @show, :tickets => @show.tickets }
10
+
11
+ .tab-pane.active#chart-tab
12
+ =render :partial => "seat_chart"
@@ -1,16 +1,17 @@
1
1
  %h3 &nbsp;
2
2
  .row-fluid{:style => "margin-bottom: 10px"}
3
3
  .span4
4
- =link_to "Tickets", "#tickets-modal", :class => "btn btn-primary btn-block console-button", 'data-toggle' => 'modal'
4
+ =link_to "Tickets", "#tickets-modal", :class => "btn btn-primary btn-block console-button", :id => "tickets-button", 'data-toggle' => 'modal'
5
5
  .span4
6
- =link_to "Donation", "#donation-modal", :class => "btn btn-primary btn-block console-button", 'data-toggle' => 'modal'
6
+ -with_kit(:regular_donation) do
7
+ =link_to "Donation", "#donation-modal", :class => "btn btn-primary btn-block console-button", :id => "donation-button", 'data-toggle' => 'modal'
7
8
  .span4
8
9
  -with_kit(:membership) do
9
- =link_to "Memberships", "#memberships-modal", :class => "btn btn-primary btn-block console-button", 'data-toggle' => 'modal'
10
+ =link_to "Memberships", "#memberships-modal", :class => "btn btn-primary btn-block console-button", :id => "memberships-button", 'data-toggle' => 'modal'
10
11
  -with_kit(:passes) do
11
12
  .row-fluid
12
13
  .span4
13
- =link_to "Passes", "#passes-modal", :class => "btn btn-primary btn-block console-button", 'data-toggle' => 'modal'
14
+ =link_to "Passes", "#passes-modal", :class => "btn btn-primary btn-block console-button", :id => "passes-button", 'data-toggle' => 'modal'
14
15
 
15
16
  -unless current_sales_console_cart.empty?
16
17
  %hr
@@ -3,6 +3,15 @@
3
3
  .row
4
4
  %h2 Sales Console
5
5
 
6
+ -if @other_seats_are_being_held
7
+ .alert.alert-success.add-holds-to-cart
8
+ .row-fluid
9
+ .span9.add-holds-to-cart-message
10
+ ="More tickets for this show are being held for #{@person}. Would you like to add those to the cart?"
11
+ .span3.add-holds-to-cart-button
12
+ .pull-right
13
+ =link_to "Yes, please", new_console_sale_path(:seat_id => @seat.id, :ticket_type_id => @ticket_type.id, :add_all => "true"), :class => "btn block btn-success btn-large"
14
+
6
15
  .row
7
16
  .span7
8
17
  #builder
@@ -0,0 +1,34 @@
1
+ - in_section :events
2
+ - content_for :header do
3
+ %h1= t('.heading', :default => "Event Calendar")
4
+
5
+ .row
6
+ .span12
7
+ #event-calendar
8
+
9
+ .row-fluid{:style => "margin-top:20px"}
10
+ .span12
11
+ #calendar-help
12
+ .pull-right
13
+ %span{:style => 'background-color: #ADADAD'} &nbsp&nbsp&nbsp&nbsp
14
+ Unpublished shows
15
+ &nbsp&nbsp&nbsp&nbsp
16
+ -Event::EVENT_CALENDAR_COLORS.each do |c|
17
+ %span{:style => "background-color: #{c}; border:1px solid #{c};"} &nbsp&nbsp&nbsp&nbsp
18
+ Published shows
19
+
20
+ -content_for :custom_js do
21
+ :javascript
22
+ var showCal = $('#event-calendar')
23
+ showCal.fullCalendar({
24
+ height: 500
25
+ ,eventSources: [
26
+ {
27
+ url: '/event_calendars.json'
28
+ }
29
+
30
+ ]
31
+ ,eventClick: function(ev, jsEvent, view) {
32
+ window.location = "/events/" + ev.event_id + "/shows/" + ev.id
33
+ }
34
+ })
@@ -2,7 +2,6 @@
2
2
  .accordion-group
3
3
  .accordion-heading
4
4
  = link_to 'Event Overview', event_path(@event), :class => 'accordion-toggle'
5
-
6
5
  -if current_user.can? :manage, Event
7
6
  .accordion-group
8
7
  .accordion-heading
@@ -13,6 +12,8 @@
13
12
  = active_link_to 'About', edit_event_path(@event)
14
13
  = active_link_to 'Venue', edit_event_venue_path(@event)
15
14
  = active_link_to 'Prices', prices_event_path(@event)
15
+ -if @event.assigned?
16
+ = active_link_to 'Seating', seating_event_path(@event)
16
17
  = active_link_to 'Image', image_event_path(@event)
17
18
  = active_link_to 'Special', messages_event_path(@event)
18
19
  -if current_user.can? :view, Show
@@ -1,16 +1,21 @@
1
- -no_editing = false if no_editing.nil?
2
- -new_show = false if new_show.nil?
1
+ -no_editing = false if no_editing.nil?
2
+ -new_show = false if new_show.nil?
3
+ -hide_capacity = false if hide_capacity.nil?
3
4
 
4
5
  =f.hidden_field :name
5
- - unless no_editing
6
- .control-group
7
- =f.label :capacity, :class => 'control-label'
8
- .controls
9
- =f.text_field :capacity, :class => 'span3', :disabled => no_editing
6
+
7
+ - if hide_capacity
8
+ =f.hidden_field :capacity, :value => "0"
9
+ - else
10
+ - unless no_editing
11
+ .control-group
12
+ =f.label :capacity, :class => 'control-label'
13
+ .controls
14
+ =f.text_field :capacity, :class => 'span3', :disabled => no_editing
10
15
 
11
16
  %fieldset
12
17
  -unless new_show
13
- %legend Ticket Types
18
+ %legend Prices
14
19
  = f.fields_for :ticket_types do |builder|
15
20
  = render 'events/ticket_type_fields', :f => builder
16
21
 
@@ -3,7 +3,7 @@
3
3
  %h1 Add a new event
4
4
  = render "shared/error_messages", :target => @event
5
5
  .row
6
- .span8.offset2
6
+ .span8
7
7
  .form-horizontal
8
8
  = form_for( @event, :html => { :class => 'quiz-form' }) do |form|
9
9
  .control-group
@@ -14,6 +14,36 @@
14
14
  .control-group
15
15
  =venue_form.label :name, "that happens at", :class => 'control-label'
16
16
  .controls
17
- = venue_form.text_field :name, :placeholder=>"Venue name"
18
- .form-actions
19
- = form.submit "Create Event", :class => 'btn btn-large'
17
+ = venue_form.text_field :name, :placeholder=>"Venue name", :autocomplete => "off", "data-provide" => "typeahead", "data-source" => @venue_names.to_s
18
+
19
+ -with_kit :assigned_seating do
20
+ .control-group
21
+ =form.label :assigned, "and seating is", :class => 'control-label'
22
+ .controls
23
+ = form.select :assigned, options_for_select([["General admission", "false"],["Assigned","true"]])
24
+
25
+ .form-actions{:style => "margin-top: 70px"}
26
+ = form.submit "Create Event", :class => 'btn btn-large'
27
+ .span4
28
+ #venue-details
29
+
30
+ -content_for :custom_js do
31
+ :javascript
32
+
33
+ var venueTimer;
34
+ $('#event_venue_attributes_name').keyup(function(){
35
+ clearTimeout(venueTimer);
36
+ if ($('#event_venue_attributes_name').val) {
37
+ venueTimer = setTimeout(showVenue, 500);
38
+ }
39
+ });
40
+
41
+ function showVenue() {
42
+ venueName = $('#event_venue_attributes_name').val()
43
+ $.ajax({
44
+ url: "/venues/" + venueName,
45
+ success: function (data) {
46
+ $("#venue-details").html(data)
47
+ }
48
+ });
49
+ }
@@ -8,11 +8,10 @@
8
8
  =render :partial=>'menu'
9
9
  .span9
10
10
  = render "shared/error_messages", :target => @event
11
- %h3 Ticket Capacity
12
11
 
13
- = form_for( @event.default_chart, :html => { :class => 'form-horizontal' } ) do |f|
12
+ = form_for( @event.default_chart, :url => price_path(@event.default_chart), :as => :chart, :html => { :class => 'form-horizontal' } ) do |f|
14
13
  = f.fields_for :sections do |builder|
15
- = render 'section_fields', :f => builder
14
+ = render 'section_fields', :f => builder, :hide_capacity => @event.assigned?
16
15
 
17
16
  .form-actions
18
17
  = render :partial => "shared/save_save_and_next", :locals => {:form => f}
@@ -29,4 +28,4 @@
29
28
  will not
30
29
  change the prices on shows you have already created. To edit pricing for existing shows, select a single show and edit pricing information for that specific show.
31
30
  .modal-footer
32
- %button.btn.btn-success{'data-dismiss'=>'modal'} OK
31
+ %button.btn.btn-success{'data-dismiss'=>'modal'} OK
@@ -0,0 +1,131 @@
1
+ - in_section :events
2
+ - content_for :header do
3
+ =render :partial=>'events/header'
4
+
5
+ .row
6
+ .span3
7
+ - in_sub_section :details
8
+ =render :partial=>'menu'
9
+ .span9
10
+ = render "shared/error_messages", :target => @event
11
+
12
+
13
+ %legend
14
+ =@event.venue.name
15
+
16
+ #big-seat-chart-container
17
+
18
+ #stage
19
+ #text
20
+ STAGE
21
+
22
+ #chart-parent
23
+ %a.btn.control-btn.action-button
24
+ %a.btn.control-btn.layers-button
25
+ %a.btn.control-btn.work-with-button
26
+ .toggable-container.actions-container
27
+ =render :partial => "seating/actions_menu"
28
+ .toggable-container.toggable-container.layers-container
29
+ =render :partial => "seating/layer_menu", :locals => {:ticket_types => @event.default_chart.ticket_types}
30
+ =render :partial => "seating/chart_container", :locals => {:chart => @event.default_chart}
31
+ =render :partial => "seating/chart_note_display", :locals => {:chart => @event.default_chart}
32
+
33
+ .seat-chart-legend
34
+ %hr
35
+ .seat-row.bottom-room
36
+ #legend
37
+ .row-fluid
38
+ .span4
39
+ .seat.seat-unselectable.seat-legend.seat-mini.available.empty
40
+ .seat-label Available for purchase
41
+ .span4
42
+ .seat-legend.seat-mini.hold
43
+ .seat-label Unavailable for purchase
44
+ .span4
45
+ .seat-legend.seat-mini.killed
46
+ .seat-label Killed
47
+ .tip
48
+ =link_to "View complete legend", "#seatLegendModal", "data-toggle"=>"modal"
49
+
50
+ #seatLegendModal.modal
51
+ .modal-header
52
+ .close{'data-dismiss'=>'modal'} x
53
+ %h3 Legend
54
+ .modal-body
55
+ =render :partial => "seating/legend"
56
+ .modal-footer
57
+ = button_tag "Close", :class => "btn", 'data-dismiss' => 'modal'
58
+
59
+ =render :partial => "seating/modify_seats_modal"
60
+
61
+ #seatNoteModal.modal
62
+ %form#seat-note-form{:action => "#"}
63
+ .modal-header
64
+ .close{'data-dismiss'=>'modal'} x
65
+ %h3 Seat Note
66
+ .modal-body
67
+ .row-fluid
68
+ .span4
69
+ .center
70
+ #seats-selected{:style => "font-size: 40pt; margin:20px 0px"} 25
71
+ #seats-selected-text
72
+ seats selected
73
+
74
+ .span8
75
+ .control-group
76
+ %label.control-label Note
77
+ .controls
78
+ %textarea#seat-note{:rows => 2, :cols => 40}
79
+ .tip.muted 140 character maximum
80
+ .control-group
81
+ .controls
82
+ This note will be visible to patrons when they select this seat.
83
+
84
+ .modal-footer
85
+ = submit_tag "Save", :class => "btn btn-primary"
86
+ = button_tag "Cancel", :class => "btn", 'data-dismiss' => 'modal'
87
+
88
+ =render :partial => "seating/ticket_type_modals", :locals => { :chart => @event.default_chart }
89
+ =render :partial => "seating/hold_seats_modal"
90
+
91
+ #chartNoteModal.modal
92
+ =form_for @event.default_chart, :remote => true, :html => {:class => "form-horizontal", :id => "edit-chart-note-form"} do |form|
93
+ .modal-header
94
+ .close{'data-dismiss'=>'modal'} x
95
+ %h3 Edit Chart Note
96
+ .modal-body
97
+ .control-group
98
+ %label.control-label Note
99
+ .controls
100
+ =form.text_area :public_note, :rows => 2, :cols => 20
101
+ .tip.muted 250 character maximum
102
+
103
+ .control-group
104
+ .controls
105
+ This note will be visible to patrons when they are selecting their seats.
106
+
107
+ .modal-footer
108
+ = submit_tag "Save", :class => "btn btn-primary"
109
+ = button_tag "Cancel", :class => "btn", 'data-dismiss' => 'modal'
110
+
111
+ #rowLimitReached.modal
112
+ .modal-header
113
+ .close{'data-dismiss'=>'modal'} x
114
+ %h3 Row Limit Reached
115
+ .modal-body
116
+ Sorry, we can't add any more rows to this seat chart.
117
+ .modal-footer
118
+ = button_tag "OK", :class => "btn", 'data-dismiss' => 'modal'
119
+
120
+ #colLimitReached.modal
121
+ .modal-header
122
+ .close{'data-dismiss'=>'modal'} x
123
+ %h3 Row Limit Reached
124
+ .modal-body
125
+ Sorry, we can't add any more columns to this seat chart.
126
+ .modal-footer
127
+ = button_tag "OK", :class => "btn", 'data-dismiss' => 'modal'
128
+
129
+ -content_for :custom_js do
130
+ = javascript_include_tag 'seat-chart'
131
+ = javascript_include_tag 'custom/inline-people-search'