deal_redemptions 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +30 -0
- data/app/assets/fonts/proximanova-light.eot +0 -0
- data/app/assets/fonts/proximanova-light.svg +542 -0
- data/app/assets/fonts/proximanova-light.ttf +0 -0
- data/app/assets/fonts/proximanova-light.woff +0 -0
- data/app/assets/fonts/proximanova-regular.eot +0 -0
- data/app/assets/fonts/proximanova-regular.svg +544 -0
- data/app/assets/fonts/proximanova-regular.ttf +0 -0
- data/app/assets/fonts/proximanova-regular.woff +0 -0
- data/app/assets/fonts/ss-glyphs.eot +0 -0
- data/app/assets/fonts/ss-glyphs.svg +17 -0
- data/app/assets/fonts/ss-glyphs.ttf +0 -0
- data/app/assets/fonts/ss-glyphs.woff +0 -0
- data/app/assets/images/admin/csv-demo.jpg +0 -0
- data/app/assets/images/deal-redemptions-logo.png +0 -0
- data/app/assets/javascripts/deal_redemptions/admin.js.coffee +77 -0
- data/app/assets/javascripts/deal_redemptions/application.js +17 -0
- data/app/assets/javascripts/deal_redemptions/redeem/redeem.js.coffee +49 -0
- data/app/assets/javascripts/deal_redemptions/redeem/redemption.js.coffee +41 -0
- data/app/assets/javascripts/deal_redemptions/redeem/validator.js.coffee +36 -0
- data/app/assets/javascripts/deal_redemptions/welcome.js.coffee +3 -0
- data/app/assets/stylesheets/deal_redemptions/admin.css.scss +505 -0
- data/app/assets/stylesheets/deal_redemptions/application.css.scss +57 -0
- data/app/assets/stylesheets/deal_redemptions/lib.css.scss +29 -0
- data/app/assets/stylesheets/deal_redemptions/redeem.css.scss +56 -0
- data/app/assets/stylesheets/deal_redemptions/welcome.css.scss +33 -0
- data/app/controllers/deal_redemptions/admin/companies_controller.rb +66 -0
- data/app/controllers/deal_redemptions/admin/dashboard_controller.rb +12 -0
- data/app/controllers/deal_redemptions/admin/import_controller.rb +47 -0
- data/app/controllers/deal_redemptions/admin/products_controller.rb +60 -0
- data/app/controllers/deal_redemptions/admin/redemptions_controller.rb +50 -0
- data/app/controllers/deal_redemptions/admin/sessions_controller.rb +26 -0
- data/app/controllers/deal_redemptions/admin/settings_controller.rb +14 -0
- data/app/controllers/deal_redemptions/admin/user_controller.rb +53 -0
- data/app/controllers/deal_redemptions/application_controller.rb +16 -0
- data/app/controllers/deal_redemptions/redeem_controller.rb +87 -0
- data/app/controllers/deal_redemptions/welcome_controller.rb +9 -0
- data/app/helpers/deal_redemptions/admin_helper.rb +30 -0
- data/app/helpers/deal_redemptions/application_helper.rb +8 -0
- data/app/helpers/deal_redemptions/redeem_helper.rb +4 -0
- data/app/helpers/deal_redemptions/welcome_helper.rb +4 -0
- data/app/mailers/deal_redemptions/admin_user_mailer.rb +11 -0
- data/app/mailers/deal_redemptions/redemption_mailer.rb +11 -0
- data/app/models/deal_redemptions/company.rb +27 -0
- data/app/models/deal_redemptions/mailing_list.rb +8 -0
- data/app/models/deal_redemptions/product.rb +18 -0
- data/app/models/deal_redemptions/redeem_code.rb +30 -0
- data/app/models/deal_redemptions/redemption.rb +14 -0
- data/app/models/deal_redemptions/redemptions/redeem.rb +21 -0
- data/app/models/deal_redemptions/user.rb +40 -0
- data/app/views/deal_redemptions/admin/companies/_form.html.haml +25 -0
- data/app/views/deal_redemptions/admin/companies/edit.html.haml +19 -0
- data/app/views/deal_redemptions/admin/companies/index.html.haml +32 -0
- data/app/views/deal_redemptions/admin/companies/new.html.haml +11 -0
- data/app/views/deal_redemptions/admin/dashboard/index.html.haml +4 -0
- data/app/views/deal_redemptions/admin/import/export_redemptions.csv.erb +1 -0
- data/app/views/deal_redemptions/admin/import/new.html.haml +54 -0
- data/app/views/deal_redemptions/admin/products/_form.html.haml +16 -0
- data/app/views/deal_redemptions/admin/products/edit.html.haml +18 -0
- data/app/views/deal_redemptions/admin/products/index.html.haml +26 -0
- data/app/views/deal_redemptions/admin/products/new.html.haml +11 -0
- data/app/views/deal_redemptions/admin/redemptions/index.html.haml +54 -0
- data/app/views/deal_redemptions/admin/redemptions/new.html.erb +5 -0
- data/app/views/deal_redemptions/admin/redemptions/show.html.haml +64 -0
- data/app/views/deal_redemptions/admin/sessions/new.html.haml +23 -0
- data/app/views/deal_redemptions/admin/settings/_new_user_modal.html.haml +38 -0
- data/app/views/deal_redemptions/admin/settings/index.html.haml +48 -0
- data/app/views/deal_redemptions/admin/shared/_sidebar.html.haml +16 -0
- data/app/views/deal_redemptions/admin/shared/_topbar.html.haml +5 -0
- data/app/views/deal_redemptions/admin_user_mailer/new_confirmation.html.erb +8 -0
- data/app/views/deal_redemptions/redeem/new.html.haml +112 -0
- data/app/views/deal_redemptions/redeem/thankyou.html.haml +6 -0
- data/app/views/deal_redemptions/redeem/validate_code.jbuilder +1 -0
- data/app/views/deal_redemptions/redemption_mailer/confirmation.html.erb +3 -0
- data/app/views/deal_redemptions/shared_partials/_powered.html.haml +4 -0
- data/app/views/deal_redemptions/welcome/index.html.haml +15 -0
- data/app/views/kaminari/_first_page.html.haml +9 -0
- data/app/views/kaminari/_gap.html.haml +8 -0
- data/app/views/kaminari/_last_page.html.haml +9 -0
- data/app/views/kaminari/_next_page.html.haml +9 -0
- data/app/views/kaminari/_page.html.haml +10 -0
- data/app/views/kaminari/_paginator.html.haml +18 -0
- data/app/views/kaminari/_prev_page.html.haml +9 -0
- data/app/views/layouts/deal_redemptions/admin/auth.html.erb +17 -0
- data/app/views/layouts/deal_redemptions/admin/default.html.erb +50 -0
- data/app/views/layouts/deal_redemptions/application.html.erb +16 -0
- data/config/config_engine_rake_file.rb +13 -0
- data/config/locales/en.yml +37 -0
- data/config/routes.rb +38 -0
- data/db/migrate/20140709234323_create_deal_redemptions_companies.rb +12 -0
- data/db/migrate/20140711183800_add_active_to_deal_redemptions_companies.rb +5 -0
- data/db/migrate/20140711222957_create_deal_redemptions_mailing_lists.rb +11 -0
- data/db/migrate/20140714165815_create_deal_redemptions_products.rb +10 -0
- data/db/migrate/20140714184807_create_deal_redemptions_redemptions.rb +20 -0
- data/db/migrate/20140715041757_create_deal_redemptions_redeem_codes.rb +13 -0
- data/db/migrate/20140718200319_create_deal_redemptions_users.rb +14 -0
- data/db/migrate/20140802010843_add_company_and_remove_transaction_to_redemption.rb +5 -0
- data/lib/deal_redemptions.rb +5 -0
- data/lib/deal_redemptions/admin/importer.rb +66 -0
- data/lib/deal_redemptions/admin_interface_domain.rb +11 -0
- data/lib/deal_redemptions/engine.rb +52 -0
- data/lib/deal_redemptions/version.rb +3 -0
- data/lib/tasks/deal_redemptions_tasks.rake +11 -0
- data/spec/controllers/deal_redemptions/admin/companies_controller_spec.rb +120 -0
- data/spec/controllers/deal_redemptions/admin/dashboard_controller_spec.rb +17 -0
- data/spec/controllers/deal_redemptions/admin/import_controller_spec.rb +32 -0
- data/spec/controllers/deal_redemptions/admin/products_controller_spec.rb +136 -0
- data/spec/controllers/deal_redemptions/admin/redemptions_controller_spec.rb +81 -0
- data/spec/controllers/deal_redemptions/admin/sessions_controller_spec.rb +15 -0
- data/spec/controllers/deal_redemptions/admin/settings_controller_spec.rb +28 -0
- data/spec/controllers/deal_redemptions/admin/user_controller_spec.rb +62 -0
- data/spec/controllers/deal_redemptions/redeem_controller_spec.rb +32 -0
- data/spec/controllers/deal_redemptions/welcome_controller_spec.rb +28 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +29 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +82 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/assets.rb +8 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/deal_redemptions.rb +13 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +85 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +1464 -0
- data/spec/dummy/log/test.log +242034 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/65dfde5f086fa3aca4c12e3ec1bab0e7 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d625417a15a40e26da10d62fd34927e1 +0 -0
- data/spec/factories/company.rb +21 -0
- data/spec/factories/deal_redemption_products.rb +9 -0
- data/spec/factories/deal_redemptions_redeem_codes.rb +11 -0
- data/spec/factories/deal_redemptions_redemptions.rb +51 -0
- data/spec/factories/deal_redemptions_users.rb +19 -0
- data/spec/factories/mailing_lists.rb +9 -0
- data/spec/mailers/deal_redemptions/admin_user_mailer_spec.rb +24 -0
- data/spec/mailers/deal_redemptions/redemption_mailer_spec.rb +24 -0
- data/spec/models/deal_redemptions/company_spec.rb +27 -0
- data/spec/models/deal_redemptions/mailing_list_spec.rb +14 -0
- data/spec/models/deal_redemptions/product_spec.rb +23 -0
- data/spec/models/deal_redemptions/redeem_code_spec.rb +57 -0
- data/spec/models/deal_redemptions/redemption_spec.rb +23 -0
- data/spec/models/deal_redemptions/redemptions/redeem_spec.rb +21 -0
- data/spec/models/deal_redemptions/user_spec.rb +39 -0
- data/spec/rails_helper.rb +43 -0
- data/spec/routing/deal_redemptions/admin/import_routing_spec.rb +21 -0
- data/spec/routing/deal_redemptions/admin/redemptions_routing_spec.rb +18 -0
- data/spec/routing/deal_redemptions/admin/user_controller_routing_spec.rb +11 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/tasks/tasks_spec.rb +20 -0
- data/spec/views/deal_redemptions/admin/dashboard/index.html.erb_spec.rb +5 -0
- data/spec/views/deal_redemptions/admin/import/index.html.erb_spec.rb +5 -0
- data/spec/views/deal_redemptions/admin/sessions/index.html.erb_spec.rb +5 -0
- data/spec/views/deal_redemptions/admin/settings/index.html.erb_spec.rb +5 -0
- data/vendor/assets/javascripts/bootstrap-datepicker.js +474 -0
- data/vendor/assets/stylesheets/datepicker.css +182 -0
- metadata +485 -0
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" standalone="no"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4
|
+
<metadata>Generated by IcoMoon</metadata>
|
5
|
+
<defs>
|
6
|
+
<font id="icomoon" horiz-adv-x="512">
|
7
|
+
<font-face units-per-em="512" ascent="480" descent="-32" />
|
8
|
+
<missing-glyph horiz-adv-x="512" />
|
9
|
+
<glyph unicode=" " d="" horiz-adv-x="256" />
|
10
|
+
<glyph unicode="" d="M346.777 89.084c-23.93 0-43.332 19.395-43.332 43.325 0 11.974-128.803 173.952-128.803 173.952s160.176-130.613 172.139-130.613c23.938 0 43.339-19.402 43.339-43.339-0.003-23.93-19.406-43.325-43.343-43.325zM325.015 281.752c0-11.96 9.7-21.662 21.666-21.662v0c11.967 0 21.67 9.699 21.67 21.662v46.563c0 11.967-9.703 21.662-21.67 21.662v0c-11.967 0-21.666-9.696-21.666-21.662v-46.563zM539.641 111.652c11.971 0 21.67 9.696 21.67 21.663v0c0 11.974-9.699 21.673-21.67 21.673h-46.553c-11.971 0-21.666-9.7-21.666-21.673v0c0-11.967 9.696-21.663 21.666-21.663h46.553zM494.364 251.588c8.462 8.466 8.459 22.178 0 30.641v0c-8.466 8.466-22.181 8.469-30.64 0l-32.926-32.923c-8.459-8.463-8.459-22.178 0-30.64v0c8.466-8.462 22.185-8.462 30.644 0l32.923 32.923zM197.922 111.652c11.97 0 21.67 9.696 21.67 21.663v0c0 11.974-9.7 21.673-21.67 21.673h-46.556c-11.967 0-21.666-9.7-21.666-21.673v0c0-11.967 9.7-21.663 21.666-21.663h46.556zM651.48-32c26.713 49.14 41.883 105.459 41.883 165.315 0 191.47-155.214 346.685-346.681 346.685s-346.681-155.214-346.681-346.685c0-59.856 15.177-116.175 41.883-165.315h609.597zM346.681 410.178c152.904 0 276.863-123.959 276.863-276.863 0-33.271-5.885-65.176-16.648-94.733h-520.427c-10.762 29.557-16.648 61.462-16.648 94.733 0.004 152.907 123.956 276.863 276.86 276.863z" horiz-adv-x="694" />
|
11
|
+
<glyph unicode="" d="M65.171 273.805c-3.224-8.243-0.018-17.79 7.936-22.214l19.543-10.858c-3.915 14.235-13.786 26.46-27.48 33.072zM485.212 124.038c-3.769-4.471-6.654-9.938-8.286-16.539-3.601-14.555 0.855-26.738 9.864-36.068l18.022 32.427c-8.706 4.841-15.339 11.955-19.599 20.18zM575.639 268.313l-376.869 209.422c-8.674 4.819-19.61 1.695-24.43-6.975l-30.404-54.712c23.557-13.095 32.042-42.801 18.955-66.362-0.954-1.717-2.020-3.327-3.142-4.884l388.173-94.457c10.263-2.536 16.529-12.921 13.989-23.186l-8.6-36.004 29.299 52.728c4.823 8.671 1.699 19.61-6.971 24.43zM461.882 110.305c6.904 27.885 35.103 44.899 62.992 37.998l16.026 64.762c2.54 10.27-3.722 20.654-13.989 23.194l-446.113 110.401c-10.267 2.54-20.647-3.722-23.191-13.989l-16.030-64.766c27.889-6.9 44.898-35.102 37.998-62.991s-35.102-44.895-62.988-37.995l-16.030-64.765c-2.54-10.267 3.723-20.647 13.989-23.19l446.116-110.405c10.267-2.54 20.647 3.723 23.19 13.986l16.026 64.769c-27.885 6.904-44.895 35.106-37.998 62.991z" horiz-adv-x="585" />
|
12
|
+
<glyph unicode="" d="M584.795 316.571h-89.459l1.243-3.736c0 0 11.639-35.267-19.714-53.819-39.548-23.406-63.677 15.325-63.677 15.325l-27.663 42.23h-165.054l-27.659-42.23c0 0-24.126-38.732-63.677-15.325-31.352 18.552-19.721 53.819-19.721 53.819l1.246 3.736h-85.317c-13.993 0-25.344-11.347-25.344-25.347 0-13.997 11.351-25.348 25.344-25.348h14.385l35.363-273.66c0-13.37 10.838-24.215 24.215-24.215h410.353c13.374 0 24.215 10.845 24.215 24.215l35.359 273.66h15.564c14 0 25.347 11.354 25.347 25.348-0.004 14-11.351 25.347-25.351 25.347zM199.779 34.031c0-12.37-10.026-22.399-22.399-22.399-12.369 0-22.395 10.029-22.395 22.399v151.331c0 12.373 10.026 22.402 22.395 22.402 12.373 0 22.399-10.029 22.399-22.402v-151.331zM272.474 34.031c0-12.37-10.026-22.399-22.395-22.399-12.373 0-22.398 10.029-22.398 22.399v151.331c0 12.373 10.026 22.402 22.399 22.402 12.37 0 22.395-10.029 22.395-22.402v-151.331zM381.519 34.031c0-12.37-10.026-22.399-22.395-22.399-12.373 0-22.399 10.029-22.399 22.399v151.331c0 12.373 10.026 22.402 22.399 22.402 12.37 0 22.395-10.029 22.395-22.402v-151.331zM454.214 34.031c0-12.37-10.026-22.399-22.395-22.399-12.373 0-22.395 10.029-22.395 22.399v151.331c0 12.373 10.022 22.402 22.395 22.402 12.37 0 22.395-10.029 22.395-22.402v-151.331zM180.835 281.948c-9.218-14.745-28.635-19.222-43.38-10.008v0c-14.745 9.218-19.218 28.635-10.008 43.377l93.698 149.885c9.214 14.745 28.631 19.222 43.376 10.008v0c14.745-9.218 19.218-28.635 10.012-43.377l-93.697-149.885zM425.675 281.948c9.217-14.745 28.635-19.222 43.38-10.008v0c14.741 9.218 19.218 28.635 10.008 43.377l-93.701 149.885c-9.21 14.745-28.632 19.222-43.377 10.008v0c-14.741-9.218-19.218-28.635-10.008-43.377l93.697-149.885z" horiz-adv-x="610" />
|
13
|
+
<glyph unicode="" d="M418.298 448.759l-193.542 31.238-193.542-31.238c-16.517-2.34-31.216-13.978-31.216-31.216v-387.086c0-17.235 14.7-27.959 31.216-31.216 0 0 166.228-31.238 193.542-31.238s193.542 31.238 193.542 31.238c19.774 3.258 31.216 13.985 31.216 31.216v387.082c0 17.243-11.445 28.88-31.216 31.22zM407.127 66.688c0-13.985-9.286-22.695-25.33-25.334 0 0-134.88-25.348-157.042-25.348-22.165 0-157.042 25.348-157.042 25.348-13.409 2.639-25.33 11.349-25.33 25.334v314.087c0 13.991 12.896 25.327 25.33 25.327s157.042-41.367 157.042-41.367 141.001 41.367 157.042 41.367 25.33-11.339 25.33-25.327v-314.087zM125.885 232.002c0-5.107-3.659-9.824-9.251-9.255l-43.938 11.566c-3.852 0.772-9.247 4.147-9.247 9.255v75.172c0 5.115 3.18 10.794 9.247 9.255l43.938-11.573c5.975-1.633 9.251-4.14 9.251-9.247v-75.172zM172.772-5.681c0-5.115-3.656-9.816-9.247-9.247l-72.082 11.566c-3.859 0.772-9.255 4.133-9.255 9.247v168.899c0 5.115 3.183 10.787 9.255 9.255l71.954-18.687c5.971-1.625 9.247-4.14 9.247-9.247l0.128-161.786zM203.995 213.245c0-5.1-3.667-9.816-9.255-9.24l-43.938 11.559c-3.856 0.772-9.247 4.147-9.247 9.255v75.175c0 5.115 3.183 10.787 9.247 9.255l43.938-11.573c5.975-1.633 9.255-4.14 9.255-9.247v-75.183zM322.615 232.002c0-5.107 3.659-9.824 9.25-9.255l43.938 11.566c3.852 0.772 9.247 4.147 9.247 9.255v75.172c0 5.115-3.176 10.794-9.247 9.255l-43.938-11.573c-5.968-1.633-9.25-4.14-9.25-9.247v-75.172zM244.516 213.245c0-5.1 3.656-9.816 9.247-9.24l43.938 11.559c3.852 0.772 9.247 4.147 9.247 9.255v75.175c0 5.115-3.18 10.787-9.247 9.255l-43.938-11.573c-5.975-1.633-9.247-4.14-9.247-9.247v-75.183zM322.615 107.034c0-5.108 3.659-9.816 9.25-9.255l43.938 11.573c3.852 0.772 9.247 4.14 9.247 9.255v75.172c0 5.108-3.176 10.787-9.247 9.247l-43.938-11.566c-5.968-1.632-9.25-4.14-9.25-9.255v-75.172zM244.516 88.291c0-5.115 3.656-9.83 9.247-9.255l43.938 11.559c3.852 0.786 9.247 4.154 9.247 9.262v75.175c0 5.108-3.18 10.787-9.247 9.247l-43.938-11.566c-5.975-1.632-9.247-4.14-9.247-9.255v-75.168z" horiz-adv-x="450" />
|
14
|
+
<glyph unicode="" d="M515.397 387.451l-92.275 92.549-190.248-190.255 92.275-92.542zM170.635 434.909v-295.637h295.641zM343.719 95.417v-36.043c0-15.603-12.651-28.255-28.252-28.255h-224.101c-15.6 0-28.252 12.651-28.252 28.255v224.101c0 15.603 12.652 28.255 28.252 28.255h36.616v63.119h-99.735c-15.6 0-28.252-12.651-28.252-28.258v-350.339c0-15.603 12.652-28.255 28.252-28.255h350.335c15.607 0 28.259 12.651 28.259 28.255v99.166h-63.123z" horiz-adv-x="516" />
|
15
|
+
<glyph unicode="" d="M485.787 271.171h-47.019c-4.447 17.289-11.324 33.594-20.169 48.586l33.714 33.711c10.236 10.236 10.232 26.831 0 37.074l-29.654 29.651c-10.236 10.236-26.832 10.236-37.067 0l-33.679-33.686c-15.035 8.896-31.393 15.796-48.736 20.255v47.026c0 14.47-11.736 26.206-26.213 26.206h-41.938c-14.477 0-26.213-11.736-26.213-26.206v-47.026c-17.314-4.459-33.643-11.338-48.661-20.215l-34.219 34.219c-10.236 10.236-26.831 10.236-37.067 0l-29.648-29.647c-10.239-10.243-10.236-26.832 0-37.067l34.22-34.22c-8.87-15.021-15.757-31.343-20.212-48.664h-47.022c-14.477 0-26.213-11.736-26.213-26.206v-41.942c0-14.47 11.736-26.206 26.213-26.206h47.022c4.462-17.339 11.362-33.7 20.255-48.732l-33.121-33.121c-10.236-10.236-10.239-26.832 0-37.067l29.651-29.651c10.236-10.236 26.835-10.236 37.067 0l33.153 33.149c14.996-8.846 31.297-15.721 48.583-20.166v-47.026c0-14.477 11.736-26.206 26.213-26.206h41.934c14.474 0 26.213 11.729 26.213 26.206v47.026c17.314 4.451 33.64 11.337 48.661 20.215l33.181-33.185c10.236-10.236 26.832-10.243 37.067 0l29.654 29.651c10.232 10.236 10.232 26.832 0 37.067l-33.181 33.185c8.87 15.021 15.757 31.343 20.215 48.657h47.019c14.477 0 26.209 11.736 26.209 26.206v41.941c-0.003 14.47-11.74 26.206-26.213 26.206zM255.996 145.368c-43.428 0-78.635 35.204-78.635 78.625 0 43.428 35.204 78.632 78.635 78.632 43.428 0 78.632-35.204 78.632-78.632 0-43.421-35.204-78.625-78.632-78.625z" />
|
16
|
+
<glyph unicode="" d="M289.084 480c-140.752 0-254.851-114.103-254.851-254.847 0-140.756 114.103-254.855 254.851-254.855s254.851 114.099 254.851 254.855c0 140.745-114.103 254.847-254.851 254.847zM289.084 18.98c-113.865 0-206.168 92.305-206.168 206.172 0 113.861 92.305 206.165 206.168 206.165s206.165-92.305 206.165-206.165c0-113.868-92.305-206.172-206.165-206.172zM190.157 279.522c0 15.575 2.337 29.74 7.010 42.487s11.474 23.644 20.393 32.713c8.92 9.062 19.682 16.076 32.291 21.030 12.598 4.954 26.692 7.437 42.274 7.437 13.024 0 25.135-1.91 36.327-5.733 11.185-3.824 20.959-9.346 29.317-16.57 8.351-7.223 14.938-16.221 19.757-26.981 4.815-10.766 7.224-22.943 7.224-36.537 0-9.92-1.060-18.48-3.187-25.707-2.123-7.224-4.958-13.454-8.497-18.697-3.546-5.246-7.579-9.916-12.11-14.017-4.534-4.112-9.070-8.148-13.597-12.11-5.385-4.531-10.342-8.923-14.87-13.17-4.534-4.247-8.497-8.995-11.897-14.233-3.4-5.246-6.022-11.406-7.86-18.48-1.846-7.084-2.76-15.72-2.76-25.917h-45.887c0 12.459 0.637 23.011 1.913 31.65 1.274 8.639 3.325 16.214 6.16 22.733 2.827 6.512 6.298 12.245 10.41 17.207 4.104 4.954 8.988 9.841 14.661 14.656 4.527 3.965 8.849 7.647 12.96 11.047 4.101 3.4 7.786 7.153 11.047 11.26 3.255 4.101 5.801 8.707 7.647 13.806 1.839 5.1 2.76 11.189 2.76 18.274 0 8.497-1.486 15.784-4.46 21.877-2.974 6.089-6.587 10.976-10.834 14.66-4.247 3.678-8.781 6.374-13.597 8.074-4.819 1.7-9.070 2.55-12.743 2.55-17.566 0-30.526-5.733-38.877-17.207-8.358-11.474-12.534-26.841-12.534-46.101h-48.441zM257.711 125.717h56.934v-53.111h-56.934v53.111z" horiz-adv-x="562" />
|
17
|
+
</font></defs></svg>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# JS File to handle admin interface
|
2
|
+
|
3
|
+
class Validator
|
4
|
+
email_address: (email) ->
|
5
|
+
regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/
|
6
|
+
regex.test email
|
7
|
+
|
8
|
+
form: (options) ->
|
9
|
+
options = options || {}
|
10
|
+
count = 0
|
11
|
+
self = @
|
12
|
+
|
13
|
+
$("#{options.form} input[required]").each(() ->
|
14
|
+
if @.value != ''
|
15
|
+
$(@).parent().removeClass 'has-error'
|
16
|
+
else
|
17
|
+
$(@).parent().addClass 'has-error'
|
18
|
+
count++
|
19
|
+
|
20
|
+
if $(@).prop('type') == 'email'
|
21
|
+
if self.email_address(@.value)
|
22
|
+
$(@).parent().removeClass 'has-error'
|
23
|
+
else
|
24
|
+
$(@).parent().addClass 'has-error'
|
25
|
+
count++
|
26
|
+
)
|
27
|
+
|
28
|
+
if count == 0 then true else false
|
29
|
+
|
30
|
+
class Navigation
|
31
|
+
mobile: () ->
|
32
|
+
$('section#mobile-navigation select').bind 'change', () ->
|
33
|
+
window.location.href = @.value
|
34
|
+
|
35
|
+
|
36
|
+
$(document).ready ->
|
37
|
+
navigation = new Navigation
|
38
|
+
|
39
|
+
# Responsive mobile navigation
|
40
|
+
navigation.mobile()
|
41
|
+
|
42
|
+
$('i.csv-tip').tooltip({
|
43
|
+
container: 'body'
|
44
|
+
html: true
|
45
|
+
placement: 'right'
|
46
|
+
trigger: 'hover'
|
47
|
+
template: '<img src="/assets/admin/csv-demo.jpg" alt="" />'
|
48
|
+
viewport: 'col-md-4'
|
49
|
+
})
|
50
|
+
|
51
|
+
nowTemp = new Date()
|
52
|
+
now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0)
|
53
|
+
|
54
|
+
checkin = $('input#exportStartDate').datepicker({
|
55
|
+
format: 'yyyy-mm-dd'
|
56
|
+
onRender: (date) ->
|
57
|
+
return date.valueOf() < now.valueOf() ? 'disabled' : ''
|
58
|
+
|
59
|
+
}).on('changeDate', (ev) ->
|
60
|
+
if ev.date.valueOf() > checkout.date.valueOf()
|
61
|
+
newDate = new Date(ev.date)
|
62
|
+
newDate.setDate(newDate.getDate() + 1)
|
63
|
+
checkout.setValue(newDate)
|
64
|
+
|
65
|
+
checkin.hide()
|
66
|
+
|
67
|
+
$('input#exportEndDate').focus()
|
68
|
+
).data('datepicker')
|
69
|
+
|
70
|
+
checkout = $('#exportEndDate').datepicker({
|
71
|
+
format: 'yyyy-mm-dd'
|
72
|
+
onRender: (date) ->
|
73
|
+
return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : ''
|
74
|
+
|
75
|
+
}).on('changeDate', (ev) ->
|
76
|
+
checkout.hide()
|
77
|
+
).data('datepicker')
|
@@ -0,0 +1,17 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require bootstrap
|
15
|
+
//= require bootstrap-datepicker
|
16
|
+
//= stub deal_redemptions/admin
|
17
|
+
//= require_tree .
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# Place all the behaviors and hooks related to the matching controller here.
|
2
|
+
# All this logic will automatically be available in application.js.
|
3
|
+
|
4
|
+
# Add duplicate detection on array prototype
|
5
|
+
Array.prototype.duplicate_values = () ->
|
6
|
+
sorted = this.sort()
|
7
|
+
|
8
|
+
for i, index in sorted
|
9
|
+
if sorted[index] == sorted[index - 1] || sorted[index] == sorted[index + 1]
|
10
|
+
return true
|
11
|
+
|
12
|
+
return false
|
13
|
+
|
14
|
+
$(document).ready () ->
|
15
|
+
# Instantiate redemption class
|
16
|
+
redemption = new Redemption
|
17
|
+
validation = new Validator
|
18
|
+
|
19
|
+
# Add additional redemption codes
|
20
|
+
$('.add-button').bind 'click', () ->
|
21
|
+
redemption.add_redeem_code()
|
22
|
+
false
|
23
|
+
|
24
|
+
# On change event, validate current code fields
|
25
|
+
$(document).on 'change', "input[name^='redeem_codes[]']", () ->
|
26
|
+
self = @
|
27
|
+
redemption.search_for_duplicate_entries("input[name^='redeem_codes[]']", (response) ->
|
28
|
+
if response
|
29
|
+
redemption.display_code_message("Please provide unique redemption codes.")
|
30
|
+
else
|
31
|
+
if self.value != ''
|
32
|
+
validation.validate_code(self.value, (response) ->
|
33
|
+
if response.status == true
|
34
|
+
$(self).parent().removeClass('has-error').addClass('has-success')
|
35
|
+
else
|
36
|
+
$(self).parent().addClass('has-error')
|
37
|
+
redemption.display_code_message("Please provide valid redemption code(s).")
|
38
|
+
)
|
39
|
+
)
|
40
|
+
|
41
|
+
# Form submission
|
42
|
+
$("button[type='submit']").bind 'click', () ->
|
43
|
+
validation.form((data) ->
|
44
|
+
if data == 0
|
45
|
+
return true
|
46
|
+
else
|
47
|
+
redemption.display_code_message('Please fill out all required fields.')
|
48
|
+
return false
|
49
|
+
)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
root = exports ? this
|
2
|
+
|
3
|
+
class root.Redemption
|
4
|
+
constructor: (@max) ->
|
5
|
+
@number = 0
|
6
|
+
@max = @max || 9
|
7
|
+
|
8
|
+
add_redeem_code: () ->
|
9
|
+
if @number < @max
|
10
|
+
@number++
|
11
|
+
$('.row#redemption_codes').append "<div class=\"col-md-6\"><div class=\"form-group\"><label for=\"redeem_codes[]\">Voucher Code #{@number + 1}</label><input class=\"form-control\" id=\"redeem_codes_#{@number}_code\" name=\"redeem_codes[]\" type=\"text\"></div></div>"
|
12
|
+
|
13
|
+
# Search for duplicate codes in the input form
|
14
|
+
get_inputs_array: (inputs) ->
|
15
|
+
inputArray = []
|
16
|
+
|
17
|
+
$.each($(inputs), (key, input) ->
|
18
|
+
if input.value != ''
|
19
|
+
inputArray.push input.value
|
20
|
+
)
|
21
|
+
|
22
|
+
inputArray
|
23
|
+
|
24
|
+
search_for_duplicate_entries: (inputs, callback) ->
|
25
|
+
inputs = @.get_inputs_array(inputs)
|
26
|
+
|
27
|
+
if typeof callback == 'function'
|
28
|
+
# Find matching values in array if present and return with callback
|
29
|
+
callback inputs.duplicate_values()
|
30
|
+
|
31
|
+
get_company_from_uri: () ->
|
32
|
+
pathArray = window.location.pathname.split('/')
|
33
|
+
pathArray[2]
|
34
|
+
|
35
|
+
display_code_message: (message, timing) ->
|
36
|
+
timing = timing || 8000
|
37
|
+
|
38
|
+
container = $('.code-alert')
|
39
|
+
container.html message
|
40
|
+
container.slideDown()
|
41
|
+
container.delay(timing).slideUp()
|
@@ -0,0 +1,36 @@
|
|
1
|
+
root = exports ? this
|
2
|
+
|
3
|
+
class root.Validator extends Redemption
|
4
|
+
email_address: (email) ->
|
5
|
+
emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/
|
6
|
+
|
7
|
+
if emailReg.test email
|
8
|
+
return true
|
9
|
+
|
10
|
+
return false
|
11
|
+
|
12
|
+
form: (callback) ->
|
13
|
+
self = @
|
14
|
+
count = 0
|
15
|
+
|
16
|
+
$.each($("form[name='redemptionForm'] input"), (key, value) ->
|
17
|
+
if value.value == '' && $(value).prop 'required'
|
18
|
+
count++
|
19
|
+
|
20
|
+
if value.type == 'email' && count == 0
|
21
|
+
if !self.email_address(value.value)
|
22
|
+
self.display_code_message('Please provide a valid email address.')
|
23
|
+
)
|
24
|
+
|
25
|
+
# If all required fields are met
|
26
|
+
# return callback function
|
27
|
+
if typeof callback == 'function'
|
28
|
+
callback(count)
|
29
|
+
|
30
|
+
validate_code: (code, callback) ->
|
31
|
+
$.getJSON("/validate/code/#{@.get_company_from_uri()}/#{code}", (response) ->
|
32
|
+
if typeof callback == 'function'
|
33
|
+
callback response
|
34
|
+
).error(() ->
|
35
|
+
false
|
36
|
+
)
|
@@ -0,0 +1,505 @@
|
|
1
|
+
@import "lib.css.scss";
|
2
|
+
// Stylesheet form deal redemptions admin interface
|
3
|
+
|
4
|
+
@font-face {
|
5
|
+
font-family: 'ss-glyphs';
|
6
|
+
src:url('/assets/ss-glyphs.eot?k0r2ye');
|
7
|
+
src:url('/assets/ss-glyphs.eot?#iefixk0r2ye') format('embedded-opentype'),
|
8
|
+
url('/assets/ss-glyphs.woff?k0r2ye') format('woff'),
|
9
|
+
url('/assets/ss-glyphs.ttf?k0r2ye') format('truetype'),
|
10
|
+
url('/assets/ss-glyphs.svg?k0r2ye#ss-glyphs') format('svg');
|
11
|
+
font-weight: normal;
|
12
|
+
font-style: normal;
|
13
|
+
}
|
14
|
+
|
15
|
+
html, body {
|
16
|
+
color: #444;
|
17
|
+
font-family: "ProximaNovaLight", "Helvetica Neue", "Helvetica", "sans-serif";
|
18
|
+
margin: 0;
|
19
|
+
padding: 0;
|
20
|
+
display: initial;
|
21
|
+
|
22
|
+
.login {
|
23
|
+
background: #444;
|
24
|
+
color: #FFF;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
// ===============================================================
|
29
|
+
// 1.0 Login
|
30
|
+
// ===============================================================
|
31
|
+
|
32
|
+
// Login form
|
33
|
+
.login-heading, .login-subheading {
|
34
|
+
text-align: center;
|
35
|
+
text-shadow: 0 0 4px #000;
|
36
|
+
|
37
|
+
h1 {
|
38
|
+
padding: 30px 0 20px 0;
|
39
|
+
font-size: 30px;
|
40
|
+
}
|
41
|
+
|
42
|
+
h4 {
|
43
|
+
padding: 0 0 20px 0;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
.login-subheading {
|
48
|
+
font-family: 'ProximaNovaRegular';
|
49
|
+
font-size: 12px;
|
50
|
+
}
|
51
|
+
|
52
|
+
.login-container {
|
53
|
+
max-width: 340px;
|
54
|
+
margin: auto;
|
55
|
+
|
56
|
+
.login-form {
|
57
|
+
background: white;
|
58
|
+
-webkit-border-radius: 10px;
|
59
|
+
-moz-border-radius: 10px;
|
60
|
+
-o-border-radius: 10px;
|
61
|
+
border-radius: 10px;
|
62
|
+
box-shadow: 0 0 8px #000;
|
63
|
+
overflow: hidden;
|
64
|
+
|
65
|
+
form {
|
66
|
+
.form-input {
|
67
|
+
padding: 10px;
|
68
|
+
}
|
69
|
+
|
70
|
+
input[type='text'], input[type='password'] {
|
71
|
+
color: #888;
|
72
|
+
width: 100%;
|
73
|
+
padding: 4%;
|
74
|
+
border: none;
|
75
|
+
outline: none;
|
76
|
+
|
77
|
+
&:-webkit-autofill {
|
78
|
+
-webkit-box-shadow: 0 0 0 50px white inset; /* Change the color to your own background color */
|
79
|
+
-webkit-text-fill-color: #888;
|
80
|
+
}
|
81
|
+
|
82
|
+
&:-webkit-autofill:focus {
|
83
|
+
-webkit-box-shadow: 0 0 0 50px white inset;
|
84
|
+
-webkit-text-fill-color: #888;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
input[type='submit'] {
|
89
|
+
background: #059fe6;
|
90
|
+
width: 100%;
|
91
|
+
font-size: 18px;
|
92
|
+
padding: 20px;
|
93
|
+
border: none;
|
94
|
+
@include transform(background 0.3s linear);
|
95
|
+
|
96
|
+
&:hover {
|
97
|
+
background: #0081bc;
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
hr {
|
102
|
+
margin: 0;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
|
109
|
+
// ===============================================================
|
110
|
+
// 2.0 Basic Structure
|
111
|
+
// ===============================================================
|
112
|
+
// Sidebar/Navigation
|
113
|
+
.sidebar {
|
114
|
+
position: fixed;
|
115
|
+
top: 0;
|
116
|
+
left: 0;
|
117
|
+
bottom: 0;
|
118
|
+
width: 200px;
|
119
|
+
background: #444;
|
120
|
+
z-index: 3;
|
121
|
+
|
122
|
+
.account-header {
|
123
|
+
background: #333;
|
124
|
+
height: 60px;
|
125
|
+
border-bottom: 1px #696969 solid;
|
126
|
+
|
127
|
+
.account-logo {
|
128
|
+
background: #FFF;
|
129
|
+
width: 60px;
|
130
|
+
height: 60px;
|
131
|
+
padding: 10px;
|
132
|
+
overflow: hidden;
|
133
|
+
|
134
|
+
img {
|
135
|
+
max-width: 30px;
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
p {
|
140
|
+
&.site-name {
|
141
|
+
color: #FFF;
|
142
|
+
font-size: 14px;
|
143
|
+
padding: 20px 10px;
|
144
|
+
}
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
nav {
|
149
|
+
ul {
|
150
|
+
padding: 0;
|
151
|
+
margin: 0;
|
152
|
+
|
153
|
+
li {
|
154
|
+
list-style: none;
|
155
|
+
height: 40px;
|
156
|
+
|
157
|
+
a:link, a:visited {
|
158
|
+
float: left;
|
159
|
+
width: 100%;
|
160
|
+
height: 40px;
|
161
|
+
color: #CCC;
|
162
|
+
text-decoration: none;
|
163
|
+
line-height: 25px;
|
164
|
+
padding: 8px 20px;
|
165
|
+
@include transform(background 0.2s linear);
|
166
|
+
|
167
|
+
&:hover {
|
168
|
+
background: #333;
|
169
|
+
}
|
170
|
+
|
171
|
+
&.active {
|
172
|
+
color: #FFF;
|
173
|
+
background: #333;
|
174
|
+
}
|
175
|
+
}
|
176
|
+
}
|
177
|
+
}
|
178
|
+
}
|
179
|
+
}
|
180
|
+
|
181
|
+
.topbar {
|
182
|
+
position: fixed;
|
183
|
+
top: 0;
|
184
|
+
left: 0;
|
185
|
+
background: #f0f0f0;
|
186
|
+
background: rgba(240,240,240,0.8);
|
187
|
+
width: 100%;
|
188
|
+
height: 60px;
|
189
|
+
border-bottom: 1px #CCC solid;
|
190
|
+
padding-left: 220px;
|
191
|
+
z-index: 2;
|
192
|
+
|
193
|
+
h1 {
|
194
|
+
float: left;
|
195
|
+
font-size: 24px;
|
196
|
+
margin: 16px 0;
|
197
|
+
|
198
|
+
&.dashboard {
|
199
|
+
&:before {
|
200
|
+
content: '\e600'
|
201
|
+
}
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
.pull-right {
|
206
|
+
padding: 13px;
|
207
|
+
}
|
208
|
+
}
|
209
|
+
|
210
|
+
// Glyph icons
|
211
|
+
i {
|
212
|
+
width: 30px;
|
213
|
+
font-family: "ss-glyphs";
|
214
|
+
font-style: normal;
|
215
|
+
font-weight: normal;
|
216
|
+
font-variant: normal;
|
217
|
+
text-transform: none;
|
218
|
+
text-align: center;
|
219
|
+
line-height: 1;
|
220
|
+
padding-right: 10px;
|
221
|
+
|
222
|
+
&.dashboard {
|
223
|
+
&:before {
|
224
|
+
content: '\e600'
|
225
|
+
}
|
226
|
+
}
|
227
|
+
|
228
|
+
&.redemptions {
|
229
|
+
&:before {
|
230
|
+
content: '\e601'
|
231
|
+
}
|
232
|
+
}
|
233
|
+
|
234
|
+
&.products {
|
235
|
+
&:before {
|
236
|
+
content: '\e602'
|
237
|
+
}
|
238
|
+
}
|
239
|
+
|
240
|
+
&.companies {
|
241
|
+
&:before {
|
242
|
+
content: '\e603'
|
243
|
+
}
|
244
|
+
}
|
245
|
+
|
246
|
+
&.import {
|
247
|
+
&:before {
|
248
|
+
content: '\e604'
|
249
|
+
}
|
250
|
+
}
|
251
|
+
|
252
|
+
&.settings {
|
253
|
+
&:before {
|
254
|
+
content: '\e605'
|
255
|
+
}
|
256
|
+
}
|
257
|
+
|
258
|
+
&.question {
|
259
|
+
&:before {
|
260
|
+
content: '\e606'
|
261
|
+
}
|
262
|
+
}
|
263
|
+
}
|
264
|
+
|
265
|
+
// Main content
|
266
|
+
.content-wrapper {
|
267
|
+
padding: 70px 20px 20px 220px;
|
268
|
+
}
|
269
|
+
|
270
|
+
label, input, textarea, select {
|
271
|
+
font-family: "Helvetica Neue", "Helvetica";
|
272
|
+
}
|
273
|
+
|
274
|
+
label {
|
275
|
+
font-size: 14px;
|
276
|
+
}
|
277
|
+
|
278
|
+
.remove-btn {
|
279
|
+
background: none;
|
280
|
+
color: red;
|
281
|
+
border: none;
|
282
|
+
padding: 0;
|
283
|
+
|
284
|
+
&:hover {
|
285
|
+
text-decoration: underline;
|
286
|
+
}
|
287
|
+
}
|
288
|
+
|
289
|
+
// Bootstrap tooltip
|
290
|
+
.tooltip {
|
291
|
+
z-index: 2000;
|
292
|
+
}
|
293
|
+
|
294
|
+
// ===============================================================
|
295
|
+
// 2.1 Page Structure
|
296
|
+
// ===============================================================
|
297
|
+
table.table {
|
298
|
+
&.default {
|
299
|
+
thead {
|
300
|
+
tr {
|
301
|
+
td {
|
302
|
+
padding: 10px 20px;
|
303
|
+
font: 14px "ProximaNovaRegular";
|
304
|
+
}
|
305
|
+
}
|
306
|
+
}
|
307
|
+
|
308
|
+
tbody {
|
309
|
+
tr {
|
310
|
+
@include transform(background 0.2s linear);
|
311
|
+
|
312
|
+
&:nth-last-child(1) {
|
313
|
+
border-bottom: 1px #DDD solid;
|
314
|
+
}
|
315
|
+
|
316
|
+
&:hover {
|
317
|
+
background: #f8f8f8;
|
318
|
+
}
|
319
|
+
|
320
|
+
td {
|
321
|
+
font-size: 14px;
|
322
|
+
padding: 16px;
|
323
|
+
}
|
324
|
+
}
|
325
|
+
}
|
326
|
+
}
|
327
|
+
}
|
328
|
+
|
329
|
+
.row, .row-fluid {
|
330
|
+
.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6,
|
331
|
+
.col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
|
332
|
+
&.description-wrapper {
|
333
|
+
border: 1px #e0e0e0 solid;
|
334
|
+
@include border-radius(6px);
|
335
|
+
margin-bottom: 10px;
|
336
|
+
|
337
|
+
header {
|
338
|
+
background: #f0f0f0;
|
339
|
+
color: #428bca;
|
340
|
+
font: 16px "ProximaNovaRegular";
|
341
|
+
padding: 10px;
|
342
|
+
margin: 0;
|
343
|
+
border-bottom: 1px #e0e0e0 solid;
|
344
|
+
@include border-top-left-radius(6px);
|
345
|
+
@include border-top-right-radius(6px);
|
346
|
+
}
|
347
|
+
|
348
|
+
.row, .row-fluid {
|
349
|
+
&.redemption-description {
|
350
|
+
padding: 10px 0;
|
351
|
+
|
352
|
+
strong {
|
353
|
+
&.title {
|
354
|
+
float: left;
|
355
|
+
width: 100%;
|
356
|
+
font-family: "ProximaNovaRegular";
|
357
|
+
font-style: bold;
|
358
|
+
}
|
359
|
+
}
|
360
|
+
}
|
361
|
+
}
|
362
|
+
}
|
363
|
+
}
|
364
|
+
}
|
365
|
+
|
366
|
+
// Padding
|
367
|
+
.padding-right-5 {
|
368
|
+
padding-right: 5px;
|
369
|
+
}
|
370
|
+
|
371
|
+
.padding-right-10 {
|
372
|
+
padding-right: 10px;
|
373
|
+
}
|
374
|
+
|
375
|
+
.padding-right-15 {
|
376
|
+
padding-right: 15px;
|
377
|
+
}
|
378
|
+
|
379
|
+
.padding-left-5 {
|
380
|
+
padding-left: 5px;
|
381
|
+
}
|
382
|
+
|
383
|
+
.padding-left-10 {
|
384
|
+
padding-left: 10px;
|
385
|
+
}
|
386
|
+
|
387
|
+
.padding-left-15 {
|
388
|
+
padding-left: 15px;
|
389
|
+
}
|
390
|
+
|
391
|
+
// ===============================================================
|
392
|
+
// 2.2 Mobile Components
|
393
|
+
// ===============================================================
|
394
|
+
section#mobile-navigation {
|
395
|
+
display: none;
|
396
|
+
|
397
|
+
select {
|
398
|
+
width: 100%;
|
399
|
+
}
|
400
|
+
}
|
401
|
+
|
402
|
+
// ===============================================================
|
403
|
+
// 3.0 Products
|
404
|
+
// ===============================================================
|
405
|
+
.no-current-products {
|
406
|
+
text-align: center;
|
407
|
+
font-size: 24px;
|
408
|
+
margin-top: 80px;
|
409
|
+
|
410
|
+
i {
|
411
|
+
&.products {
|
412
|
+
&:before {
|
413
|
+
width: 100%;
|
414
|
+
font-size: 140px;
|
415
|
+
margin-bottom: 20px;
|
416
|
+
}
|
417
|
+
}
|
418
|
+
}
|
419
|
+
}
|
420
|
+
|
421
|
+
// ===============================================================
|
422
|
+
// 4.0 Redemptions
|
423
|
+
// ===============================================================
|
424
|
+
form {
|
425
|
+
&.search-redemptions {
|
426
|
+
width: 100%;
|
427
|
+
}
|
428
|
+
}
|
429
|
+
|
430
|
+
.no-current-redemptions {
|
431
|
+
text-align: center;
|
432
|
+
font-size: 24px;
|
433
|
+
margin-top: 80px;
|
434
|
+
|
435
|
+
i {
|
436
|
+
&.redemptions {
|
437
|
+
&:before {
|
438
|
+
width: 100%;
|
439
|
+
font-size: 140px;
|
440
|
+
margin-bottom: 20px;
|
441
|
+
}
|
442
|
+
}
|
443
|
+
}
|
444
|
+
}
|
445
|
+
|
446
|
+
// ===============================================================
|
447
|
+
// 5.0 Responsive Design
|
448
|
+
// ===============================================================
|
449
|
+
// iPhone
|
450
|
+
@media (max-width: 480px) {
|
451
|
+
table {
|
452
|
+
&#redemptions {
|
453
|
+
tr {
|
454
|
+
td {
|
455
|
+
&:nth-child(1), &:nth-child(4), &:nth-child(5) {
|
456
|
+
display: none;
|
457
|
+
}
|
458
|
+
}
|
459
|
+
}
|
460
|
+
}
|
461
|
+
}
|
462
|
+
}
|
463
|
+
|
464
|
+
@media (max-width: 840px) {
|
465
|
+
.topbar {
|
466
|
+
padding-left: 20px;
|
467
|
+
}
|
468
|
+
|
469
|
+
section {
|
470
|
+
&.sidebar {
|
471
|
+
display: none;
|
472
|
+
}
|
473
|
+
|
474
|
+
&.content-wrapper {
|
475
|
+
padding-left: 20px;
|
476
|
+
}
|
477
|
+
|
478
|
+
&#mobile-navigation {
|
479
|
+
display: block;
|
480
|
+
}
|
481
|
+
}
|
482
|
+
}
|
483
|
+
|
484
|
+
@media (max-width: 990px) {
|
485
|
+
form {
|
486
|
+
&.search-redemptions {
|
487
|
+
button[type=submit] {
|
488
|
+
width: 100%;
|
489
|
+
}
|
490
|
+
|
491
|
+
.col-md-8 {
|
492
|
+
padding-right: 15px !important;
|
493
|
+
}
|
494
|
+
|
495
|
+
.col-md-4 {
|
496
|
+
padding-left: 15px !important;
|
497
|
+
}
|
498
|
+
}
|
499
|
+
}
|
500
|
+
|
501
|
+
// Redemptions
|
502
|
+
.redemption-right-col {
|
503
|
+
padding: 0;
|
504
|
+
}
|
505
|
+
}
|