artfully_ose 1.2.0.pre.27 → 1.2.0

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 (89) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +4 -6
  3. data/app/assets/javascripts/application.js +39 -0
  4. data/app/assets/javascripts/boxoffice.js +558 -0
  5. data/app/assets/javascripts/custom/kits-config.js +33 -0
  6. data/app/assets/javascripts/sales-console.js +29 -24
  7. data/app/assets/javascripts/store/store.js +11 -0
  8. data/app/assets/stylesheets/application.sass +66 -52
  9. data/app/assets/stylesheets/bootstrap-overrides.css +1 -1
  10. data/app/assets/stylesheets/boxoffice.css.scss +258 -0
  11. data/app/assets/stylesheets/pages/bootstrap-responsive.css +1109 -0
  12. data/app/assets/stylesheets/sass/store.sass +52 -62
  13. data/app/assets/stylesheets/storefront.css +1 -1
  14. data/app/concerns/itemable.rb +1 -1
  15. data/app/concerns/pdf_generation.rb +1 -11
  16. data/app/concerns/search_by_dates.rb +20 -0
  17. data/app/controllers/events_controller.rb +1 -0
  18. data/app/controllers/export_controller.rb +11 -1
  19. data/app/controllers/imports_controller.rb +2 -3
  20. data/app/controllers/member_cards_controller.rb +2 -3
  21. data/app/controllers/orders_controller.rb +42 -0
  22. data/app/controllers/organizations_controller.rb +1 -0
  23. data/app/controllers/passes_reports_controller.rb +21 -1
  24. data/app/controllers/regular_donation_kits_controller.rb +32 -0
  25. data/app/controllers/store/donations_controller.rb +19 -1
  26. data/app/controllers/store/orders_controller.rb +15 -5
  27. data/app/helpers/artfully_ose_helper.rb +28 -18
  28. data/app/models/database_views/item_view.rb +41 -0
  29. data/app/models/event.rb +10 -2
  30. data/app/models/ext/integrations.rb +5 -0
  31. data/app/models/fee_strategy.rb +47 -1
  32. data/app/models/imports/events_import.rb +6 -7
  33. data/app/models/item.rb +4 -3
  34. data/app/models/job/order_processor.rb +4 -3
  35. data/app/models/kit.rb +18 -0
  36. data/app/models/kits/regular_donation_kit.rb +51 -9
  37. data/app/models/member.rb +4 -3
  38. data/app/models/membership.rb +1 -2
  39. data/app/models/membership_sale_search.rb +2 -20
  40. data/app/models/membership_type.rb +1 -2
  41. data/app/models/order.rb +29 -1
  42. data/app/models/order_handler.rb +4 -3
  43. data/app/models/organization.rb +17 -9
  44. data/app/models/pass.rb +18 -17
  45. data/app/models/pass_sale_search.rb +18 -0
  46. data/app/models/pass_type.rb +7 -2
  47. data/app/models/passes_report.rb +117 -0
  48. data/app/models/sale_search.rb +3 -21
  49. data/app/models/user.rb +1 -2
  50. data/app/serializers/show_serializer.rb +15 -0
  51. data/app/views/contributions/index.html.haml +2 -2
  52. data/app/views/events/_header.html.haml +1 -0
  53. data/app/views/events/_ticket_type_fields.html.haml +31 -15
  54. data/app/views/events/edit.html.haml +6 -1
  55. data/app/views/imports/_export_links.html.haml +3 -0
  56. data/app/views/imports/donations/_pending.html.haml +24 -6
  57. data/app/views/imports/events/_pending.html.haml +16 -5
  58. data/app/views/imports/index.html.haml +6 -4
  59. data/app/views/imports/people/_pending.html.haml +20 -25
  60. data/app/views/layouts/storefront.html.haml +9 -5
  61. data/app/views/order_mailer/confirmation_for.html.haml +11 -5
  62. data/app/views/order_mailer/confirmation_for_refund.html.haml +6 -2
  63. data/app/views/order_mailer/confirmation_for_refund.text.haml +4 -3
  64. data/app/views/orders/membership.html.haml +15 -19
  65. data/app/views/orders/passes.html.haml +97 -0
  66. data/app/views/orders/sales.html.haml +2 -2
  67. data/app/views/organizations/_form.html.haml +4 -37
  68. data/app/views/pass_types/index.html.haml +1 -1
  69. data/app/views/passes_reports/index.html.haml +79 -1
  70. data/app/views/people/show.html.haml +16 -15
  71. data/app/views/regular_donation_kits/edit.html.haml +140 -0
  72. data/app/views/store/checkouts/thanks.html.haml +14 -6
  73. data/app/views/store/donations/index.html.haml +19 -2
  74. data/app/views/store/events/calendar.html.haml +1 -0
  75. data/app/views/store/events/index.html.haml +1 -0
  76. data/app/views/store/events/show.html.haml +1 -0
  77. data/app/views/store/events/single_show.html.haml +2 -0
  78. data/app/views/store/orders/show.html.haml +10 -10
  79. data/app/views/store/passes/index.html.haml +2 -2
  80. data/app/views/store/shared/_donate_form.html.haml +31 -12
  81. data/app/views/store/shared/_small_donate_form.html.haml +22 -0
  82. data/app/views/users/invitations/edit.html.haml +3 -42
  83. data/config/locales/en.yml +3 -1
  84. data/config/routes.rb +4 -1
  85. data/db/migrate/20140603200735_add_subtitle_to_events.rb +5 -0
  86. data/lib/artfully_ose/version.rb +1 -1
  87. data/spec/factories/kit_factories.rb +5 -4
  88. metadata +25 -13
  89. data/app/assets/javascripts/box-office.js +0 -262
@@ -0,0 +1,97 @@
1
+ - in_section :transactions
2
+ - content_for :header do
3
+ %h1 Pass Orders
4
+
5
+ #donations-search
6
+
7
+ .control-group.well
8
+ = form_tag passes_orders_path, :method => :get, :id => 'passes-date-search-form', :class => 'form-inline' do
9
+ .pull-left
10
+ = label_tag :start, "From", :class => "control-label"
11
+ = text_field_tag :start,"#{l @search.start, :format => :date_for_input}", :class => 'datepicker input-small'
12
+
13
+ = label_tag :stop, "To", :class => "control-label"
14
+ = text_field_tag :stop, "#{l @search.stop, :format => :date_for_input}", :class => 'datepicker input-small'
15
+
16
+ - if @pass_types.present?
17
+ = label_tag :pass_type_id, nil, :class => "control-label"
18
+ = raw select_pass_type_for_sales_search @pass_types, :pass_type_id, params[:pass_type_id]
19
+
20
+ = submit_tag "Search", :class => "btn"
21
+
22
+
23
+ - if @search.results.present?
24
+ .pull-right
25
+
26
+ %ul.in-table
27
+ %li.dropdown#bulkactions
28
+ =icon_link_to('Work with...', "#menu#bulkactions", 'fa-asterisk', 'dropdown-toggle dropdown btn', '')
29
+ %ul.dropdown-menu
30
+ %li
31
+ = link_to 'Export to CSV', params.merge(:format => 'csv').delete_if {|k,v| :commit == k.to_sym }
32
+
33
+
34
+ - if @search.results.present?
35
+
36
+ #tickets
37
+ %table.standalone.zebra.table
38
+ %thead
39
+ %tr
40
+ %th Order
41
+ %th Time
42
+ %th Person
43
+ %th Method
44
+ %th Membership Type
45
+ %th Amount
46
+ %tbody
47
+ - @search.results.each do |order|
48
+ - order.items.select(&:pass?).each_with_index do |item, index|
49
+ - if index == 0
50
+ %tr{:id => "order_#{order.id}"}
51
+ - rowspan = order.items.select(&:pass?).size
52
+ %td{:rowspan => rowspan}= link_to order.id, order_path(order.id)
53
+ %td{:rowspan => rowspan}= l(order.created_at_local_to_organization, :format => :short)
54
+ %td{:rowspan => rowspan}= link_to_person(order.person)
55
+ %td{:rowspan => rowspan}= (order.payment_method || "")
56
+ %td
57
+ ="#{item.product.pass_type.name}"
58
+ %td= number_as_cents item.price
59
+ - else
60
+ %tr
61
+ %td
62
+ ="#{item.product.pass_type.name}"
63
+ %td= number_as_cents item.price
64
+
65
+ = will_paginate(@search.results)
66
+
67
+ - else
68
+
69
+ %h4= "No sales found."
70
+
71
+ - content_for :custom_js do
72
+ :javascript
73
+ var printCardInterval;
74
+
75
+ $('#print-cards').on('show', function (show) {
76
+ // Remove any existing intervals
77
+ clearInterval(printCardInterval);
78
+
79
+ // Initial hurry to 90%
80
+ var bar = $('#print-cards .bar');
81
+ $(bar).css('width', '1%').animate({width: '90%'}, 1500, function() {
82
+
83
+ // Progress to 100% from there
84
+ var times = 0;
85
+ printCardInterval = setInterval(function() {
86
+ // Count this run
87
+ times = times + 1;
88
+
89
+ // Update the progress bar
90
+ $(bar).css('width', (90 + times) + '%');
91
+
92
+ // Clear the interval on the last run
93
+ if (times > 9) { clearInterval(printCardInterval); }
94
+ }, 1000);
95
+
96
+ });
97
+ });
@@ -7,10 +7,10 @@
7
7
  .control-group.well
8
8
  .pull-left
9
9
  = label_tag :start, "From", :class => "control-label"
10
- = text_field_tag :start,"#{l @search.start, :format => :date_for_input}", :readonly => true, :class => 'datepicker input-small'
10
+ = text_field_tag :start,"#{l @search.start, :format => :date_for_input}", :class => 'datepicker input-small'
11
11
 
12
12
  = label_tag :stop, "To", :class => "control-label"
13
- = text_field_tag :stop, "#{l @search.stop, :format => :date_for_input}", :readonly => true, :class => 'datepicker input-small'
13
+ = text_field_tag :stop, "#{l @search.stop, :format => :date_for_input}", :class => 'datepicker input-small'
14
14
 
15
15
  - if @events.present?
16
16
  = label_tag :event_id, nil, :class => "control-label"
@@ -1,10 +1,8 @@
1
- %fieldset.ng-cloak
2
- %legend Required Info
3
- .control-group{"ng-class" => "{error: ! data.organization.valid_name}"}
1
+ %fieldset
2
+ .control-group
4
3
  = form.label :name, "Organization Name", :class => 'control-label'
5
4
  .controls
6
5
  = form.text_field :name, :value => @organization.name, :required => true, :class => 'input-xlarge no-fa'
7
- %p.text-error{"ng-hide" => "data.organization.valid_name"} Artful.ly already has an organization with this name and zip code. If you forgot your password or would like to be added to the existing organization please email #{mail_to "support@artful.ly"}.
8
6
 
9
7
  .control-group
10
8
  = form.label :email, 'Organization Email', :class=>'control-label'
@@ -12,41 +10,10 @@
12
10
  = form.email_field :email, :placeholder => 'contact@organization.org', :required => true, :class => 'input-xlarge email-popup', "data-content" => "Your patrons will be able to respond to this email address when receiving ticket/donation receipts. You can change this at any time."
13
11
  %span.help-inline (default contact for your patrons)
14
12
 
15
- - unless @organization.new_record?
16
- .control-group
17
- = form.label :cached_slug, 'Storefront URL', :class=>'control-label'
18
- .controls
19
- = form.text_field :cached_slug, :placeholder => @organization.cached_slug, :required => true, :class => 'input-xlarge'
20
-
21
- %fieldset
22
- %legend Details
23
13
  .control-group
24
- = form.label :country, :class => 'control-label'
25
- .controls= form.select :country, [(h form.object.country || "United States")], selected: (form.object.country || "United States"), :required => true
26
-
27
- .control-group
28
- .control-label.form-inline
29
- = form.label :state, 'State'
30
- &
31
- = form.label :zip, 'Zip'
14
+ = form.label :cached_slug, 'Storefront URL', :class=>'control-label'
32
15
  .controls
33
- = form.select :state, [nil, (h form.object.state || "New York")], selected: (form.object.state), :required => true
34
- = form.text_field :zip, :placeholder => '10001', :class => 'span1', :required => true, "ng-model" => "data.organization.zip", "ng-init" => "data.organization.zip = '#{form.object.zip}'"
35
-
36
- .control-group
37
- = form.label :phone_number, 'Phone Number', :class => 'control-label'
38
- .controls= form.text_field :phone_number, :placeholder => '(888) 692-7878', :required => true
39
-
40
- .control-group
41
- = form.label :website, :class => 'control-label'
42
- .controls
43
- .input-prepend
44
- %span.add-on http://
45
- = form.text_field :website, :placeholder => 'example.com'
46
-
47
- .control-group
48
- = form.label :discipline, :class => 'control-label hidden'
49
- .controls= form.select :discipline, ['Dance', 'Film & Electronic Media', 'Literary Arts', 'Music', 'Theater', 'Visual Arts', 'Other'], {:include_blank => 'What kind of work does your organization primarily do?'}, {:class => 'span5', :required => true}
16
+ = form.text_field :cached_slug, :placeholder => @organization.cached_slug, :required => true, :class => 'input-xlarge'
50
17
 
51
18
  .control-group
52
19
  = form.label :time_zone, "Time Zone", :class => 'control-label'
@@ -21,7 +21,7 @@
21
21
  %td=link_to pass_type.name, edit_pass_type_path(pass_type)
22
22
  %td=l pass_type.starts_at, :format => :slashed_date
23
23
  %td=l pass_type.ends_at, :format => :slashed_date
24
- %td.right=pass_type.passes.count
24
+ %td.right=pass_type.sold.count
25
25
  %td.right=pass_type.tickets_allowed
26
26
  %td.right=number_as_cents pass_type.price
27
27
  %td.right
@@ -1,2 +1,80 @@
1
1
  -content_for :header do
2
- %h1 Passes
2
+ %h1 Pass Usage
3
+
4
+ = form_tag passes_reports_path, :method => :get, :class => 'well form-inline' do
5
+ = label_tag :pass_type, "Pass", :class => "control-label"
6
+ = select_tag :pass_type, options_for_select(@options_for_select, @report.pass_type.try(:id))
7
+
8
+
9
+ = label_tag :start_date, "From", :class => "control-label"
10
+ = text_field_tag :start_date, @start_date, :readonly => true, :class => 'datepicker input-small'
11
+
12
+ = label_tag :end_date, "To", :class => "control-label"
13
+ = text_field_tag :end_date, @end_date, :readonly => true, :class => 'datepicker input-small'
14
+
15
+ .pull-right
16
+ = submit_tag "Search", :class => "btn"
17
+
18
+ - unless @report.nil?
19
+
20
+ .row-fluid.botton-room
21
+ .span9
22
+ %h3=@report.header
23
+ .span3
24
+ .pull-right
25
+ =link_to "Download CSV", passes_reports_path(code: @report.pass_type, start_date: @report.start_date, end_date: @report.end_date, format: "csv"), :class => "btn"
26
+
27
+ #statement-summary.bottom-room.well
28
+ .row-fluid
29
+ .span4
30
+ .center.headline-stat#passes-sold-stat
31
+ =@report.passes_sold
32
+ .center.headline-caption
33
+ %h6 PASSES SOLD
34
+ .span4
35
+ .center.headline-stat#tickets-sold-stat
36
+ =@report.tickets_sold
37
+ .center.headline-caption
38
+ %h6 TICKETS SOLD
39
+ .span4
40
+ .center.headline-stat#tickets-remaining-stat
41
+ =@report.tickets_remaining
42
+ .center.headline-caption
43
+ %h6 TICKETS REMAINING
44
+
45
+ .row
46
+ .span12
47
+ %table.table.zebra#order-table
48
+ %thead
49
+ %tr
50
+ %th{:style=>'width:200px'} Pass
51
+ %th Order/Date
52
+ %th{:style=>'width:200px'} Person
53
+ %th Event
54
+ %th.right Tickets
55
+ %th.right Orig. Price
56
+ %th.right Gross
57
+ %tbody
58
+ -if @rows.empty?
59
+ %tr
60
+ %td{:colspan => 7}
61
+ .no-image#no-pass-sales
62
+ #text
63
+ =icon_tag '299-ticket'
64
+ %br
65
+ This pass hasn't been used to buy any tickets.
66
+ -@rows.each do |row|
67
+ %tr
68
+ %td=row.pass_type
69
+ %td
70
+ =link_to row.order.id, order_path(row.order)
71
+ %br
72
+ =l row.order.created_at, :format => :slashed_date
73
+ %td
74
+ =link_to row.order.person, person_path(row.order.person)
75
+ %td=link_to row.show.event.name, event_path(row.show.event)
76
+ %td.right=row.ticket_count
77
+ %td.right=number_as_cents row.original_price
78
+ %td.right=number_as_cents row.gross
79
+
80
+ = will_paginate(@rows)
@@ -68,10 +68,10 @@
68
68
  %span Do Not Email
69
69
  = form.submit "Save", :class => 'btn btn-primary hidden'
70
70
 
71
- %h5 Email Lists
72
- %section#subscription-listing
73
- = form_for @person do |form|
74
- - if @person.organization.kits.mailchimp
71
+ - with_kit(:mailchimp) do
72
+ %h5 Email Lists
73
+ %section#subscription-listing
74
+ = form_for @person do |form|
75
75
  .mailchimp-list
76
76
  - mailchimp_kit = @person.organization.kits.mailchimp
77
77
  = hidden_field_tag "person[subscribed_lists][]", nil, :id => "person_subscribed_lists_empty"
@@ -79,7 +79,7 @@
79
79
  = label_tag "", :class => "checkbox" do
80
80
  = check_box_tag "person[subscribed_lists][]", list[:list_id], @person.subscribed_lists.include?(list[:list_id]), :class => "mail-chimp-list", :disabled => @person.do_not_email
81
81
  %span= list[:list_name]
82
- = form.submit "Save", :class => 'btn btn-primary hidden'
82
+ = form.submit "Save", :class => 'btn btn-primary hidden'
83
83
 
84
84
  .span8
85
85
  #notes
@@ -146,13 +146,14 @@
146
146
  = render 'convert_to_company_modal'
147
147
  #edit-order-popup.modal
148
148
 
149
- - if current_user.current_organization.kits.mailchimp
150
- .modal#subscribe-modal(role="dialog")
151
- .modal-header
152
- %button(type="button" class="close" data-dismiss="modal" aria-hidden="true") ×
153
- %h3 MailChimp List Subscription
154
- .modal-body
155
- %p #{@person} will receive an email from MailChimp confirming their addition to this list
156
- .modal-footer
157
- %button(class="btn" data-dismiss="modal" aria-hidden="true") Cancel
158
- %button(class="btn btn-primary") OK
149
+ -with_kit(:mailchimp) do
150
+ - if current_user.current_organization.kits.mailchimp
151
+ .modal#subscribe-modal(role="dialog")
152
+ .modal-header
153
+ %button(type="button" class="close" data-dismiss="modal" aria-hidden="true") ×
154
+ %h3 MailChimp List Subscription
155
+ .modal-body
156
+ %p #{@person} will receive an email from MailChimp confirming their addition to this list
157
+ .modal-footer
158
+ %button(class="btn" data-dismiss="modal" aria-hidden="true") Cancel
159
+ %button(class="btn btn-primary") OK
@@ -0,0 +1,140 @@
1
+ - content_for :header do
2
+ %h1 Configure 501(c)(3) Donation Kit
3
+
4
+ #edit-donation-kit
5
+ = form_for @kit do |f|
6
+ .row-fluid.bottom-room
7
+ .span3
8
+ = f.label :about_organization_text, 'About Your Organization', :class => 'control-label'
9
+ .guide
10
+ %p
11
+ Briefly describe your organization's activities and goals to a potential patron.
12
+ .span9
13
+ = f.text_area :about_organization_text, :class => 'input-xxlarge wysihtml5', :rows => 8
14
+
15
+ .row-fluid.bottom-room
16
+ .span3
17
+ = f.label :donation_ask_text, 'Donation Ask for Storefront', :class => 'control-label'
18
+ .guide
19
+ %p
20
+ Why should someone donate to your organization? This appeal appears on your Donation Storefront.
21
+ .span9
22
+ = f.text_area :donation_ask_text, :class => 'input-xxlarge wysihtml5', :rows => 8
23
+
24
+ .row-fluid.bottom-room
25
+ .span3
26
+ = f.label :donate_now_text, 'Navigation Button Name', :class => 'control-label'
27
+ .guide
28
+ %p
29
+ Customize the name of orange donate button on your Storefront navigation bar.
30
+ .span9
31
+ = f.text_field :donate_now_text, :class => 'input-xxlarge'
32
+
33
+ .row-fluid.bottom-room
34
+ .span3
35
+ = f.label :donation_nudge_text, 'Donation Nudge for Cart', :class => 'control-label'
36
+ .guide
37
+ %p
38
+ This short appeal appears in the shopping cart to encourage patrons to add a donation to their order.
39
+ .span9
40
+ = f.text_field :donation_nudge_text, :class => 'input-xxlarge'
41
+
42
+ .row-fluid.bottom-room
43
+ %hr
44
+
45
+ .row-fluid.bottom-room
46
+ .span3
47
+ = f.label :suggested_gifts, 'Suggested Gifts', :class => 'control-label'
48
+ .span9
49
+ - idx = 0
50
+ - Array(@kit.suggested_gifts).each do |s|
51
+ .suggested-gift-container
52
+ = f.text_field "suggested_gift_#{idx}_level_name", :name => "regular_donation_kit[suggested_gifts][#{idx}][level_name]",
53
+ :placeholder => 'Level Name (optional)',
54
+ :value => s['level_name'].present? ? s['level_name'] : ''
55
+ = f.text_field "suggested_gift_#{idx}_amount", :name => "regular_donation_kit[suggested_gifts][#{idx}][amount]",
56
+ :placeholder => '$ Amount',
57
+ :value => s['amount'].present? ? s['amount'] : ''
58
+ %a{ href: 'javascript:;', :class => 'suggested-gift-remove' }
59
+ Remove
60
+ - idx = idx + 1
61
+ .suggested-gift-container.new-suggested-gift-container
62
+ = f.text_field "suggested_gift_#{idx}_level_name", :name => "regular_donation_kit[suggested_gifts][#{idx}][level_name]",
63
+ :placeholder => 'Level Name (optional)',
64
+ :value => ''
65
+ = f.text_field "suggested_gift_#{idx}_amount", :name => "regular_donation_kit[suggested_gifts][#{idx}][amount]",
66
+ :placeholder => '$ Amount',
67
+ :value => ''
68
+ %a{ href: 'javascript:;', :class => 'suggested-gift-add' }
69
+ Add
70
+
71
+ .row-fluid.bottom-room
72
+ .span3
73
+ = f.label :open_gift_field, 'Display open gift field', :class => 'control-label'
74
+ .span9
75
+ = f.check_box :open_gift_field, :checked => @kit.open_gift_field.nil? || @kit.open_gift_field == '1'
76
+
77
+ .row-fluid.bottom-room
78
+ %hr
79
+
80
+ .row-fluid.bottom-room
81
+ .span3
82
+ = f.label :thanks_msg_text, 'Thanks Message', :class => 'control-label'
83
+ .guide
84
+ %p
85
+ This appears on the confirmation page after your patron makes a donation.
86
+ .span9
87
+ = f.text_area :thanks_msg_text, :class => 'input-xxlarge', :rows => 8
88
+
89
+ .row-fluid.bottom-room
90
+ .span3
91
+ = f.label :email_msg_text, 'Email Message', :class => 'control-label'
92
+ .guide
93
+ %p
94
+ This appears in the email order confirmation your patron receives after making a donation.
95
+ .span9
96
+ = f.text_area :email_msg_text, :class => 'input-xxlarge', :rows => 8
97
+
98
+ .row-fluid.bottom-room
99
+ %hr
100
+
101
+ .row-fluid.bottom-room
102
+ .span3
103
+ = f.label :donation_only_storefront, 'Donation-Only Storefront Link'
104
+ .span9
105
+ = link_to store_donate_url(@kit.organization.cached_slug).gsub(/^https?:\/+/, ''), store_donate_url(@kit.organization.cached_slug), :target => '_blank'
106
+
107
+ .row-fluid.bottom-room
108
+ .span3
109
+ = f.label :open_gift_field, 'Display Donation-Only Storefront', :class => 'control-label'
110
+ .span9
111
+ = f.check_box :donation_only_storefront
112
+
113
+ .row-fluid.bottom-room
114
+ .span3
115
+ &nbsp
116
+ .span9
117
+ =f.submit 'Save', :class => 'btn btn-primary'
118
+
119
+
120
+ #about_organization_text-preview-modal.modal
121
+ .modal-header
122
+ .close{'data-dismiss' => 'modal'} x
123
+ %h3 About Organization Text Preview
124
+
125
+ .modal-body
126
+ #about_organization_text-preview
127
+ (About Organization Text Preview)
128
+ .modal-footer
129
+ = link_to 'Close', '#', :class => 'btn', 'data-dismiss' => 'modal'
130
+
131
+ #donation_ask_text-preview-modal.modal
132
+ .modal-header
133
+ .close{'data-dismiss' => 'modal'} x
134
+ %h3 Donation Ask Preview
135
+
136
+ .modal-body
137
+ #donation_ask_text-preview
138
+ (Donation Ask Preview)
139
+ .modal-footer
140
+ = link_to 'Close', '#', :class => 'btn', 'data-dismiss' => 'modal'