mix-rails-vouchers 0.10.3

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 (34) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +27 -0
  4. data/app/controllers/admix/vouchers_controller.rb +24 -0
  5. data/app/controllers/vouchers_controller.rb +68 -0
  6. data/app/mailers/voucher_mailer.rb +10 -0
  7. data/app/models/admix/vouchers_datagrid.rb +18 -0
  8. data/app/models/email_validator.rb +9 -0
  9. data/app/models/voucher.rb +22 -0
  10. data/app/models/voucher_user.rb +48 -0
  11. data/app/models/vouchers/contact.rb +17 -0
  12. data/app/uploaders/vouchers/photo_uploader.rb +65 -0
  13. data/app/views/admix/vouchers/_form_fields.html.haml +6 -0
  14. data/app/views/admix/vouchers/_show.html.haml +9 -0
  15. data/app/views/admix/vouchers/_table_actions.html.haml +9 -0
  16. data/app/views/admix/vouchers/print.html.haml +27 -0
  17. data/app/views/admix/vouchers/users.html.haml +31 -0
  18. data/app/views/voucher_mailer/send_confirmation_link.text.erb +7 -0
  19. data/app/views/vouchers/_voucher.html.haml +12 -0
  20. data/app/views/vouchers/_voucher_show.html.haml +30 -0
  21. data/app/views/vouchers/confirmation.html.haml +0 -0
  22. data/app/views/vouchers/confirmation_error.html.haml +5 -0
  23. data/app/views/vouchers/email_sent.html.haml +4 -0
  24. data/app/views/vouchers/index.html.haml +9 -0
  25. data/app/views/vouchers/print.html.haml +56 -0
  26. data/app/views/vouchers/show.html.haml +3 -0
  27. data/config/initializers/carrier_wave.rb +0 -0
  28. data/config/locales/vouchers.pt-BR.yml +15 -0
  29. data/config/routes.rb +15 -0
  30. data/lib/mix-rails-vouchers/engine.rb +21 -0
  31. data/lib/mix-rails-vouchers/version.rb +10 -0
  32. data/lib/mix-rails-vouchers.rb +5 -0
  33. data/lib/tasks/mix-vouchers_tasks.rake +4 -0
  34. metadata +134 -0
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2013 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,3 @@
1
+ = MixVouchers
2
+
3
+ This project rocks and uses MIT-LICENSE.
data/Rakefile ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'MixVouchers'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+
24
+
25
+
26
+ Bundler::GemHelper.install_tasks
27
+
@@ -0,0 +1,24 @@
1
+ class Admix::VouchersController < Admix::InheritedController
2
+
3
+ before_filter :voucher, only: [:print, :users, :delete]
4
+
5
+ def print
6
+ @users = @voucher.users.where(confirmed: true).order_by(name: 1)
7
+ render layout: false
8
+ end
9
+
10
+ def users
11
+ @users = @voucher.users.order_by(confirmed: -1, name: 1)
12
+ end
13
+
14
+ def delete_user
15
+ @voucher.users.find(params[:user_id]).delete
16
+ redirect_to admix_voucher_users_url
17
+ end
18
+
19
+ private
20
+ def voucher
21
+ @voucher = Voucher.find(params[:id])
22
+ end
23
+
24
+ end
@@ -0,0 +1,68 @@
1
+ class VouchersController < ApplicationController
2
+
3
+ def index
4
+ @vouchers = Voucher.actives
5
+ end
6
+
7
+ def show
8
+ @voucher = Voucher.find(params[:id])
9
+ @user = VoucherUser.new
10
+ end
11
+
12
+ def confirmation
13
+ @user = VoucherUser.new
14
+ end
15
+
16
+ def email_sent
17
+ @voucher = Voucher.find(params[:id])
18
+ end
19
+
20
+ def send_confirmation
21
+ @voucher = Voucher.find(params[:id])
22
+ @user = VoucherUser.new(params[:voucher_user])
23
+
24
+ if @user.already_required(@voucher)
25
+ if @user.has_confirmed(@voucher)
26
+ render :show, notice: 'Voce ja requisitou este voucher, por favor, aguardo outra promocao'
27
+ else
28
+ render :show, notice: 'Voce ja requisitou este voucher, por favor, acesse seu email para imprimi-lo'
29
+ end
30
+ else
31
+ @voucher.users << @user
32
+ if @voucher.save
33
+ redirect_to :vouchers_email_sent
34
+ else
35
+ render :show, notice: 'Por favor, corrija os erros abaixo'
36
+ end
37
+ end
38
+ end
39
+
40
+ def confirmation
41
+ begin
42
+ voucher = Voucher.find(params[:id])
43
+ user = VoucherUser.where(voucher_id: voucher.id).find(params[:user_id])
44
+ user.confirmed = true
45
+ user.confirmation_date = Time.now
46
+ user.save
47
+
48
+ redirect_to vouchers_print_path
49
+ rescue
50
+ render :confirmation_error
51
+ end
52
+ end
53
+
54
+ def print
55
+ begin
56
+ @voucher = Voucher.find(params[:id])
57
+ @user = VoucherUser.where(voucher_id: @voucher.id).find(params[:user_id])
58
+
59
+ render layout: false
60
+ rescue
61
+ render :confirmation_error
62
+ end
63
+ end
64
+
65
+ def confirmation_error
66
+ end
67
+
68
+ end
@@ -0,0 +1,10 @@
1
+ class VoucherMailer < AdmixMailer
2
+
3
+ def send_confirmation_link(voucher_user)
4
+ @voucher_user = voucher_user
5
+ @url = vouchers_confirmation_url(voucher_user.voucher, voucher_user)
6
+
7
+ mail(to: voucher_user.email, subject: t('vouchers.mailers.send_confirmation_link.subject'))
8
+ end
9
+
10
+ end
@@ -0,0 +1,18 @@
1
+ class Admix::VouchersDatagrid
2
+ include Datagrid
3
+
4
+ scope do
5
+ Voucher.all
6
+ end
7
+ column :name, header: I18n.t('vouchers.fields.name')
8
+
9
+ column :date_from, header: I18n.t('vouchers.fields.date_from') do |voucher|
10
+ voucher.date_from.strftime('%d/%m/%Y')
11
+ end
12
+
13
+ column :date_to, header: I18n.t('vouchers.fields.date_to') do |voucher|
14
+ voucher.date_to.strftime('%d/%m/%Y')
15
+ end
16
+
17
+ include Admix::TableActions
18
+ end
@@ -0,0 +1,9 @@
1
+ # TODO change the place of this validator
2
+
3
+ class EmailValidator < ActiveModel::EachValidator
4
+ def validate_each(record, attribute, value)
5
+ unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
6
+ record.errors[attribute] << (options[:message] or I18n.t("errors.invalid_email"))
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,22 @@
1
+ class Voucher
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+ include Mongoid::Slug
5
+
6
+ scope :actives, -> { where({:date_from.lte => Date.today, :date_to.gte => Date.today}) }
7
+
8
+ field :name, type: String
9
+ field :rules, type: Array
10
+ field :date_from, type: Date
11
+ field :date_to, type: Date
12
+ mount_uploader :photo, Vouchers::PhotoUploader
13
+ mount_uploader :partner_photo, Vouchers::PhotoUploader
14
+
15
+ has_many :users, class_name: 'VoucherUser', dependent: :delete
16
+
17
+ validates_presence_of :name, :rules, :photo
18
+
19
+ slug :name, history: true do |voucher|
20
+ voucher.name.parameterize
21
+ end
22
+ end
@@ -0,0 +1,48 @@
1
+ class VoucherUser
2
+ include Mongoid::Document
3
+ include Mongoid::Timestamps
4
+
5
+ field :name, type: String
6
+ field :email, type: String
7
+ field :confirmed, type: Boolean, default: false
8
+ field :confirmation_date, type: Date
9
+
10
+ belongs_to :voucher
11
+
12
+ attr_protected :confirmed, :confirmation_date
13
+ validates_presence_of :name, :email
14
+ validates :email, email: true
15
+
16
+ after_create :send_confirmation_email
17
+
18
+
19
+ def confirm
20
+ @confirmed = true
21
+ @confirmation_date = Time.now
22
+ @save
23
+ end
24
+
25
+ # @param voucher instance of Voucher
26
+ def already_required(voucher)
27
+ user = VoucherUser.where({voucher_id: voucher[:_id], _id: @attributes['_id']}).first
28
+ if user
29
+ true
30
+ else
31
+ false
32
+ end
33
+ end
34
+
35
+ def has_confirmed(voucher)
36
+ user = VoucherUser.where({voucher_id: voucher[:_id], _id: @attributes['_id'], confirmed: true}).first
37
+ if user
38
+ true
39
+ else
40
+ false
41
+ end
42
+ end
43
+
44
+ def send_confirmation_email
45
+ VoucherMailer.send_confirmation_link(self).deliver
46
+ end
47
+
48
+ end
@@ -0,0 +1,17 @@
1
+ module Vouchers
2
+ class Contact < MailForm::Base
3
+ attribute :name
4
+ attribute :email
5
+ attribute :message
6
+
7
+ def headers
8
+ {
9
+ to: %("#{name}" <#{email}>),
10
+ subject: "Imprima seu Voucher",
11
+ # TODO get site name automatically
12
+ from: "Forro com turista <noreply@forrocomturista.com.br"
13
+ }
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,65 @@
1
+ # encoding: utf-8
2
+
3
+ class Vouchers::PhotoUploader < CarrierWave::Uploader::Base
4
+
5
+ grid_fs_access_url = "public/uploads"
6
+
7
+ def store_dir
8
+ 'public/uploads'
9
+ end
10
+
11
+ def extension_white_list
12
+ %w(jpg jpeg gif png)
13
+ end
14
+
15
+ # Include RMagick or MiniMagick support:
16
+ # include CarrierWave::RMagick
17
+ # include CarrierWave::MiniMagick
18
+
19
+ # Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
20
+ # include Sprockets::Helpers::RailsHelper
21
+ # include Sprockets::Helpers::IsolatedHelper
22
+
23
+ # Choose what kind of storage to use for this uploader:
24
+ storage :grid_fs
25
+ # storage :fog
26
+
27
+ # Override the directory where uploaded files will be stored.
28
+ # This is a sensible default for uploaders that are meant to be mounted:
29
+ def store_dir
30
+ "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
31
+ end
32
+
33
+ # Provide a default URL as a default if there hasn't been a file uploaded:
34
+ # def default_url
35
+ # # For Rails 3.1+ asset pipeline compatibility:
36
+ # # asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
37
+ #
38
+ # "/images/fallback/" + [version_name, "default.png"].compact.join('_')
39
+ # end
40
+
41
+ # Process files as they are uploaded:
42
+ # process :scale => [200, 300]
43
+ #
44
+ # def scale(width, height)
45
+ # # do something
46
+ # end
47
+
48
+ # Create different versions of your uploaded files:
49
+ # version :thumb do
50
+ # process :scale => [50, 50]
51
+ # end
52
+
53
+ # Add a white list of extensions which are allowed to be uploaded.
54
+ # For images you might use something like this:
55
+ # def extension_white_list
56
+ # %w(jpg jpeg gif png)
57
+ # end
58
+
59
+ # Override the filename of the uploaded files:
60
+ # Avoid using model.id or version_name here, see uploader/store.rb for details.
61
+ # def filename
62
+ # "something.jpg" if original_filename
63
+ # end
64
+
65
+ end
@@ -0,0 +1,6 @@
1
+ = f.input :name, label: t('vouchers.fields.name')
2
+ = f.input :date_from, label: t('vouchers.fields.date_from'), as: 'datepicker'
3
+ = f.input :date_to, label: t('vouchers.fields.date_to'), as: 'datepicker'
4
+ = f.input :photo, label: t('vouchers.fields.photo'), as: :file
5
+ = f.input :rules, label: t('vouchers.fields.rules'), as: :text, input_html: {class: 'niceditor'}
6
+ = f.input :partner_photo, label: t('vouchers.fields.partner_photo'), as: :file
@@ -0,0 +1,9 @@
1
+ %dl
2
+ %dt= t('vouchers.name')
3
+ %dd= resource.name
4
+ %dt= t('vouchers.rules')
5
+ %dd!= resource.rules
6
+ %dt= t('vouchers.photo')
7
+ %dd= image_tag resource.photo
8
+ %dt= t('vouchers.partner_photo')
9
+ %dd= image_tag resource.partner_photo
@@ -0,0 +1,9 @@
1
+ - if resource.users.length > 0
2
+ = link_to image_tag('admix/icons/printer.png'), admix_voucher_print_url(resource), class: 'btn', title: 'Imprimir usuários deste voucher'
3
+ = link_to image_tag('admix/icons/user_go.png'), admix_voucher_users_url(resource), class: 'btn', title: 'Listar usuários deste voucher'
4
+ - else
5
+ %a.btn.disabled{title:'Nenhum usuário'}= image_tag('admix/icons/printer.png')
6
+ %a.btn.disabled{title:'Nenhum usuário'}= image_tag('admix/icons/user_go.png')
7
+ = link_to image_tag('admix/icons/zoom.png'), resource_url(resource), class: 'btn', title:'Visualizar registro'
8
+ = link_to image_tag('admix/icons/page_edit.png'), edit_resource_url(resource), class: 'btn', title:'Editar registro'
9
+ = link_to image_tag('admix/icons/cancel.png'), resource_url(resource), method: :delete, data: { confirm: t('admix.crud.destroy_confirm') }, class: 'btn', title:'Deletar registro'
@@ -0,0 +1,27 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %meta{:charset => "utf-8"}
5
+ %meta{:content => "noindex, nofollow", :name => "robots"}
6
+ %title Admix
7
+ = stylesheet_link_tag "admix/application", :media => "all"
8
+ = javascript_include_tag "admix/application"
9
+ = csrf_meta_tags
10
+ %body
11
+ %h2 Lista do voucher "#{@voucher.name}"
12
+ - if @users.length > 0
13
+ %table.table
14
+ %thead
15
+ %tr
16
+ %th Nome
17
+ %th Email
18
+ %tbody
19
+ - @users.each do |user|
20
+ %tr
21
+ %td= user.name.titleize
22
+ %td= user.email.downcase
23
+
24
+ %script
25
+ window.print();
26
+ - else
27
+ %p Nenhum cliente imprimiu este voucher
@@ -0,0 +1,31 @@
1
+ %h1 Usuários do voucher "#{@voucher.name}"
2
+
3
+ - if @users.length > 0
4
+ %table.table.table-striped
5
+ %table.table
6
+ %thead
7
+ %tr
8
+ %th Nome
9
+ %th Email
10
+ %th Confirmou por email?
11
+ %th Ações
12
+ %tbody
13
+ - @users.each do |user|
14
+ %tr
15
+ %td= user.name.titleize
16
+ %td= user.email.downcase
17
+ %td= user.confirmed ? 'Sim' : 'Não'
18
+ %td
19
+ = link_to image_tag('admix/icons/delete.png'), admix_voucher_user_delete_url(id: @voucher.id, user_id: user.id), method: :delete, class: 'btn', title: 'Deletar este usuário'
20
+ - if user.confirmed
21
+ = link_to image_tag('admix/icons/printer.png'), vouchers_print_url(id: @voucher.id, user_id: user.id), class: 'btn', title: 'Imprimir voucher do usuário'
22
+ - else
23
+ %a.btn.disabled{title: 'Usuário não confirmado'}= image_tag('admix/icons/printer.png')
24
+
25
+ - else
26
+ %p Nenhum cliente requisitou este voucher
27
+
28
+
29
+ = link_to t('admix.crud.back'), collection_url, class: 'btn'
30
+
31
+
@@ -0,0 +1,7 @@
1
+ Olá <%= @voucher_user.name.titleize %>,
2
+
3
+ segue um link de confirmação para que possa imprimir seu Voucher:
4
+
5
+ <%= @url %>
6
+
7
+ Equipe <%= app_title %>
@@ -0,0 +1,12 @@
1
+ %li
2
+ .row
3
+ .span5
4
+ %a{:href => voucher_path(voucher)}
5
+ = image_tag voucher.photo.url
6
+ .span10.offset1
7
+ %a.fz18.fb.white{:href => voucher_path(voucher)}
8
+ = voucher.name
9
+ - if voucher.rules
10
+ %p.fz14.fb.red Regras:
11
+ != voucher.rules
12
+
@@ -0,0 +1,30 @@
1
+ .row
2
+ .span5
3
+ = image_tag voucher.photo.url
4
+ .span10.offset1
5
+ %p.fz18.fb.white
6
+ = voucher.name
7
+ %p.p.red.fz14.fb Regras de utilização:
8
+ != voucher.rules
9
+ %hr
10
+ %div
11
+ %h3.fb.white.p.mini Imprima seu Voucher
12
+ %p.muted.p
13
+ Para ter acesso ao voucher é necessário preencher apenas essas informações abaixo e imprimir o cupom que será gerado na tela seguinte e apresentá-lo no estabelecimento para obter o benefício.
14
+
15
+ = simple_form_for @user, url: vouchers_send_confirmation_url do |f|
16
+ %form{:action => vouchers_send_confirmation_url}
17
+ .row.p.mini
18
+ .span
19
+ = f.label :name
20
+ = f.input_field :name, class: 'span8'
21
+ %p
22
+ = f.error :name
23
+ .span.offset1
24
+ = f.label :email
25
+ = f.input_field :email, class: 'span7', type: :email
26
+ %p
27
+ = f.error :email
28
+ .ta-r
29
+ %button.no-style{:type => "submit"}
30
+ = image_tag 'btn_seguir.png'
File without changes
@@ -0,0 +1,5 @@
1
+ - content_for(:vouchers_content) do
2
+ .alert.alert-error Sua requisição de impressão não foi encontrada
3
+ %h4.white.f Requisite a impressão do seu voucher na página do voucher
4
+
5
+ = render template: 'templates/vouchers/index'
@@ -0,0 +1,4 @@
1
+ - content_for(:vouchers_content) do
2
+ .alert.alert-success Confira seu email
3
+ %h4.white.f O link de impressão do Voucher foi enviado para seu email!
4
+ = render template: 'templates/vouchers/index'
@@ -0,0 +1,9 @@
1
+ - content_for(:vouchers_content) do
2
+ - if @vouchers.length > 0
3
+ %ul.list.sequential
4
+ = render @vouchers
5
+ - else
6
+ %p.muted
7
+ Em breve estaremos com descontos exclusivos.
8
+
9
+ = render template: 'templates/vouchers/index'
@@ -0,0 +1,56 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %meta{:charset => "utf-8"}
5
+ %meta{:content => "IE=edge,chrome=1", "http-equiv" => "X-UA-Compatible"}
6
+ %title Forro com Turista
7
+ %meta{:content => "width=device-width", :name => "viewport"}
8
+ %meta{:content => "", :name => "description"}
9
+ %meta{:content => "", :name => "keywords"}
10
+ = stylesheet_link_tag "application", :media => "all"
11
+ = javascript_include_tag "application"
12
+ = csrf_meta_tags
13
+ %link{:href => "favicon.png", :rel => "shortcut icon", :type => "image/png"}
14
+ %link{:href => "http://fonts.googleapis.com/css?family=Open+Sans:600italic,800italic,700,400", :rel => "stylesheet", :type => "text/css"}
15
+ %body.print
16
+ .row
17
+ .span16
18
+ .row.p
19
+ .span8
20
+ = image_tag 'logo_bw.png'
21
+ .span8.ta-r
22
+ .p.inverse
23
+ %h2.i Voucher de desconto
24
+ %p.i.gray.fz14.b forrocomturista.com.br
25
+ .line.big.p
26
+ %h2.i.p= @voucher.name
27
+ %p.fz14.p.b.i Regras de utilização:
28
+ %p.muted.p!= @voucher.rules
29
+
30
+ .pad-content.p.super
31
+ %table
32
+ %tbody
33
+ %tr
34
+ %td.gray.fz14
35
+ Nome:
36
+ %strong.gray= @user.name
37
+ %tr
38
+ %td.gray.fz14
39
+ Email:
40
+ %strong.gray= @user.email
41
+ %tr
42
+ %td.gray.fz14
43
+ Data de Impressão:
44
+ %strong.gray= @user.confirmation_date.strftime("%d/%m/%Y")
45
+ %tr
46
+ %td.gray.fz14
47
+ Válido até
48
+ %strong.gray= @voucher.date_to.strftime("%d/%m/%Y")
49
+ .line.big.p.super
50
+ %p.ta-c.i.fz14
51
+ Agradecemos seu interesse em nossos produtos/serviços,vamos continuar trabalhando
52
+ para que sua experiência em Natal/RN seja sempre inesquessível!
53
+ %br
54
+ %strong.fz18 www.forrocomturista.com.br
55
+ %script
56
+ window.print();
@@ -0,0 +1,3 @@
1
+ - content_for(:voucher_content) do
2
+ = render partial: 'voucher_show', locals: {voucher: @voucher}
3
+ = render template: 'templates/vouchers/show'
File without changes
@@ -0,0 +1,15 @@
1
+ pt-BR:
2
+ vouchers:
3
+ vouchers: 'Vouchers'
4
+ mailers:
5
+ send_confirmation_link:
6
+ subject: 'Imprima seu Voucher'
7
+ fields:
8
+ name: 'Nome'
9
+ date_from: 'De'
10
+ date_to: 'Até'
11
+ rules: 'Regras'
12
+ photo: 'Foto'
13
+ partner_photo: 'Foto do parceiro'
14
+ errors:
15
+ invalid_email: 'Email inválido'
data/config/routes.rb ADDED
@@ -0,0 +1,15 @@
1
+ Rails.application.routes.draw do
2
+ resources :vouchers
3
+
4
+ post 'vouchers/:id' => 'vouchers#send_confirmation', as: :vouchers_send_confirmation
5
+ match 'vouchers/:id/email-enviado' => 'vouchers#email_sent', as: :vouchers_email_sent
6
+ match 'vouchers/:id/confirm/:user_id' => 'vouchers#confirmation', as: :vouchers_confirmation
7
+ match 'vouchers/:id/imprimir/:user_id' => 'vouchers#print', as: :vouchers_print
8
+
9
+ namespace :admix do
10
+ get 'vouchers/:id/users/print' => 'vouchers#print', as: :voucher_print
11
+ get 'vouchers/:id/users' => 'vouchers#users', as: :voucher_users
12
+ delete 'vouchers/:id/users/:user_id/delete' => 'vouchers#delete_user', as: :voucher_user_delete
13
+ resources :vouchers
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ module MixRailsVouchers
2
+ class Engine < ::Rails::Engine
3
+
4
+ def navigation
5
+ if defined? Admix
6
+
7
+ Admix::Navigation::NavBar.post_menu do
8
+ Admix::Navigation::NavBar.find(:content) do |menu|
9
+ menu.submenu do |submenu|
10
+ submenu.key = :vouchers
11
+ submenu.title = I18n.t 'vouchers.vouchers'
12
+ submenu.url = 'admix_vouchers_url'
13
+ end
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,10 @@
1
+ module MixRailsVouchers
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 10
5
+ TINY = 3
6
+ PRE = nil
7
+
8
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ require "mix-rails-vouchers/engine"
2
+ require "carrierwave/mongoid"
3
+
4
+ module MixRailsVouchers
5
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :mix-vouchers do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mix-rails-vouchers
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.10.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Rafael Garcia
9
+ - Sadjow Medeiros Leão
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-01-22 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: mail_form
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 1.4.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 1.4.0
31
+ - !ruby/object:Gem::Dependency
32
+ name: rails
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ version: 3.2.9
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 3.2.9
47
+ - !ruby/object:Gem::Dependency
48
+ name: carrierwave-mongoid
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.3.0
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: 0.3.0
63
+ description: Vouchers module for mix-rails
64
+ email:
65
+ - rafbgarcia@gmail.com
66
+ - sadjow@gmail.com
67
+ executables: []
68
+ extensions: []
69
+ extra_rdoc_files: []
70
+ files:
71
+ - app/uploaders/vouchers/photo_uploader.rb
72
+ - app/controllers/admix/vouchers_controller.rb
73
+ - app/controllers/vouchers_controller.rb
74
+ - app/mailers/voucher_mailer.rb
75
+ - app/models/admix/vouchers_datagrid.rb
76
+ - app/models/email_validator.rb
77
+ - app/models/voucher_user.rb
78
+ - app/models/vouchers/contact.rb
79
+ - app/models/voucher.rb
80
+ - app/views/admix/vouchers/_show.html.haml
81
+ - app/views/admix/vouchers/_table_actions.html.haml
82
+ - app/views/admix/vouchers/print.html.haml
83
+ - app/views/admix/vouchers/users.html.haml
84
+ - app/views/admix/vouchers/_form_fields.html.haml
85
+ - app/views/vouchers/confirmation.html.haml
86
+ - app/views/vouchers/_voucher.html.haml
87
+ - app/views/vouchers/_voucher_show.html.haml
88
+ - app/views/vouchers/email_sent.html.haml
89
+ - app/views/vouchers/print.html.haml
90
+ - app/views/vouchers/index.html.haml
91
+ - app/views/vouchers/confirmation_error.html.haml
92
+ - app/views/vouchers/show.html.haml
93
+ - app/views/voucher_mailer/send_confirmation_link.text.erb
94
+ - config/locales/vouchers.pt-BR.yml
95
+ - config/initializers/carrier_wave.rb
96
+ - config/routes.rb
97
+ - lib/mix-rails-vouchers/version.rb
98
+ - lib/mix-rails-vouchers/engine.rb
99
+ - lib/tasks/mix-vouchers_tasks.rake
100
+ - lib/mix-rails-vouchers.rb
101
+ - MIT-LICENSE
102
+ - Rakefile
103
+ - README.rdoc
104
+ homepage: https://github.com/mixinternet/mix-rails
105
+ licenses: []
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ segments:
117
+ - 0
118
+ hash: 2811653840542869922
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ segments:
126
+ - 0
127
+ hash: 2811653840542869922
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 1.8.24
131
+ signing_key:
132
+ specification_version: 3
133
+ summary: Vouchers module for mix-rails
134
+ test_files: []