forgeos_commerce_front 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. data/COPYING +339 -0
  2. data/COPYING.LESSER +165 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE +2 -0
  5. data/README.textile +28 -0
  6. data/app/assets/images/commerce_front/cart/calulate.png +0 -0
  7. data/app/assets/images/commerce_front/cart/cart.png +0 -0
  8. data/app/assets/images/commerce_front/cart/change_quantity.png +0 -0
  9. data/app/assets/images/commerce_front/cart/delete.png +0 -0
  10. data/app/assets/images/commerce_front/cart/reduction.png +0 -0
  11. data/app/assets/images/commerce_front/cart/steps_left.png +0 -0
  12. data/app/assets/images/commerce_front/cart/steps_right.png +0 -0
  13. data/app/assets/images/commerce_front/product.jpg +0 -0
  14. data/app/assets/javascripts/commerce_front/functions.js +10 -0
  15. data/app/assets/javascripts/commerce_front/init.js +4 -0
  16. data/app/assets/javascripts/commerce_front/jquery.jnotify.min.js +21 -0
  17. data/app/assets/stylesheets/commerce_front/_cart.css.sass +97 -0
  18. data/app/assets/stylesheets/commerce_front/_common.css.sass +13 -0
  19. data/app/assets/stylesheets/commerce_front/_forms.css.sass +15 -0
  20. data/app/assets/stylesheets/commerce_front/_jnotify.css.sass +65 -0
  21. data/app/assets/stylesheets/commerce_front/style.css.sass +4 -0
  22. data/app/controllers/addresses_controller.rb +71 -0
  23. data/app/controllers/application_controller.rb +21 -0
  24. data/app/controllers/cart_controller.rb +144 -0
  25. data/app/controllers/newsletters_controller.rb +20 -0
  26. data/app/controllers/order_controller.rb +413 -0
  27. data/app/controllers/orders_controller.rb +32 -0
  28. data/app/controllers/person_sessions_controller.rb +23 -0
  29. data/app/controllers/users_controller.rb +164 -0
  30. data/app/helpers/application_helper.rb +73 -0
  31. data/app/helpers/cart_helper.rb +25 -0
  32. data/app/helpers/order_helper.rb +59 -0
  33. data/app/models/address.rb +18 -0
  34. data/app/models/notifier.rb +88 -0
  35. data/app/models/order.rb +13 -0
  36. data/app/models/user.rb +16 -0
  37. data/app/models/user_address.rb +15 -0
  38. data/app/views/addresses/_address_form.html.haml +18 -0
  39. data/app/views/addresses/_multiple_address_form.html.haml +27 -0
  40. data/app/views/cart/_free_products.html.haml +3 -0
  41. data/app/views/cart/_tbody.html.haml +25 -0
  42. data/app/views/cart/_total.html.haml +46 -0
  43. data/app/views/cart/index.html.haml +32 -0
  44. data/app/views/notifier/newsletter.html.haml +2 -0
  45. data/app/views/notifier/reset_password.html.haml +9 -0
  46. data/app/views/notifier/validation_user_account.html.haml +9 -0
  47. data/app/views/notifier/waiting_for_cheque_notification.html.haml +2 -0
  48. data/app/views/order/_form_address.html.haml +44 -0
  49. data/app/views/order/_tbody.html.haml +21 -0
  50. data/app/views/order/_total.html.haml +50 -0
  51. data/app/views/order/cheque_payment.html.haml +1 -0
  52. data/app/views/order/create.html.haml +76 -0
  53. data/app/views/order/deliveries.html.haml +28 -0
  54. data/app/views/order/new.html.haml +26 -0
  55. data/app/views/order/so_colissimo.html.haml +8 -0
  56. data/app/views/orders/index.html.haml +34 -0
  57. data/app/views/person_sessions/_form.html.haml +23 -0
  58. data/app/views/person_sessions/new.html.haml +1 -0
  59. data/app/views/person_sessions/new_reset_password.html.haml +7 -0
  60. data/app/views/users/_edit_form.html.haml +61 -0
  61. data/app/views/users/_form_create.html.haml +27 -0
  62. data/app/views/users/_form_quick_create.html.haml +16 -0
  63. data/app/views/users/_login_or_new.html.haml +10 -0
  64. data/app/views/users/forgotten_password.html.haml +12 -0
  65. data/app/views/users/new.html.haml +1 -0
  66. data/app/views/users/new_password.html.haml +10 -0
  67. data/app/views/users/show.html.haml +1 -0
  68. data/config/commerce.example.yml +27 -0
  69. data/config/initializers/commerce_front.rb +6 -0
  70. data/config/locales/fr.yml +85 -0
  71. data/config/routes.rb +17 -0
  72. data/db/migrate/20110311134232_add_form_attributes_to_addresses.rb +9 -0
  73. data/lib/field_error_proc_changer.rb +19 -0
  74. data/lib/forgeos/commerce_front.rb +6 -0
  75. data/lib/forgeos/commerce_front/engine.rb +10 -0
  76. data/lib/forgeos/commerce_front/version.rb +5 -0
  77. data/lib/forgeos_commerce_front.rb +1 -0
  78. data/lib/tasks/install.rake +13 -0
  79. data/recipes/deploy.rb +6 -0
  80. data/test/dummy/Rakefile +7 -0
  81. data/test/dummy/app/assets/javascripts/application.js +9 -0
  82. data/test/dummy/app/assets/stylesheets/application.css +7 -0
  83. data/test/dummy/app/controllers/application_controller.rb +3 -0
  84. data/test/dummy/app/helpers/application_helper.rb +2 -0
  85. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  86. data/test/dummy/config.ru +4 -0
  87. data/test/dummy/config/application.rb +42 -0
  88. data/test/dummy/config/boot.rb +10 -0
  89. data/test/dummy/config/database.yml +25 -0
  90. data/test/dummy/config/environment.rb +5 -0
  91. data/test/dummy/config/environments/development.rb +27 -0
  92. data/test/dummy/config/environments/production.rb +51 -0
  93. data/test/dummy/config/environments/test.rb +39 -0
  94. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  95. data/test/dummy/config/initializers/inflections.rb +10 -0
  96. data/test/dummy/config/initializers/mime_types.rb +5 -0
  97. data/test/dummy/config/initializers/secret_token.rb +7 -0
  98. data/test/dummy/config/initializers/session_store.rb +8 -0
  99. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  100. data/test/dummy/config/locales/en.yml +5 -0
  101. data/test/dummy/config/routes.rb +58 -0
  102. data/test/dummy/log/development.log +0 -0
  103. data/test/dummy/public/404.html +26 -0
  104. data/test/dummy/public/422.html +26 -0
  105. data/test/dummy/public/500.html +26 -0
  106. data/test/dummy/public/favicon.ico +0 -0
  107. data/test/dummy/script/rails +6 -0
  108. data/test/forgeos_commerce_front_test.rb +7 -0
  109. data/test/test_helper.rb +10 -0
  110. metadata +197 -0
@@ -0,0 +1,26 @@
1
+ = step_order(3)
2
+ .clear
3
+
4
+ - unless @order.order_details.empty?
5
+ .grid_24.cart_content
6
+ %table#cart_table
7
+ %thead
8
+ %tr
9
+ %th Produit
10
+ %th Quantité
11
+ %th Prix unitaire
12
+ %th Réduction
13
+ %th Prix total
14
+ %tbody#tbody
15
+ = render :partial => 'tbody'
16
+
17
+ .grid_24#total
18
+ -#.grid_9.prefix_1
19
+ =# render :partial => 'free_products'
20
+ .grid_10.prefix_3.omega#cart_total
21
+ = render :partial => 'total'
22
+
23
+ - else
24
+ Il n'y a pas de produit dans votre panier
25
+
26
+ .clear
@@ -0,0 +1,8 @@
1
+ - form_tag(@_url, :autocomplete => 'off', :id => 'payment_form') do
2
+ - @colissimo.each do |key,value|
3
+ = hidden_field_tag key, value unless key == :key
4
+ .center
5
+ %p
6
+ Merci pour votre confiance, vous allez être redirigé vers l'interface "So Colissimo" dans quelques instant
7
+ %br
8
+ = javascript_tag "jQuery('#payment_form').submit();"
@@ -0,0 +1,34 @@
1
+ .myaccount
2
+ %h2
3
+ Mon compte
4
+ .clear
5
+ .suiviorder.grid_16
6
+ .titresuivi.grid_4
7
+ %h4
8
+ = t(:order_list)
9
+ .clear
10
+ - unless @orders.empty?
11
+ %table
12
+ - @orders.each do |order|
13
+ %thead
14
+ %tr
15
+ %th= t(:order_reference)
16
+ %th= t(:order_date)
17
+ %th= t(:shipping)
18
+ %th= t(:amount)
19
+ %th= t(:status)
20
+ %tbody
21
+ %tr
22
+ %td
23
+ = "Commande n°#{order.id}"
24
+ .datecommande.commande
25
+ = order.created_at.strftime('%d/%m/%Y')
26
+ .detailscommande.commande
27
+ = t(:articles, :count => order.order_details.count)
28
+ pour un montant de
29
+ = price_with_currency(order.total)
30
+ TTC
31
+ .livraisoncommande.commande
32
+ = t(order.status, :scope => :order_status)
33
+ .detailcommande.commande
34
+ = link_to('Détail', order_path(order, :format => :pdf))
@@ -0,0 +1,23 @@
1
+ - form_for(@person_session || PersonSession.new, :url => person_session_path, :html => { :class => 'account-form' }) do |f|
2
+ .person-session-form
3
+ .grid_2
4
+ = f.label :email, "#{t(:email)} <span class='required'>*</span>"
5
+ .grid_4
6
+ = f.text_field :email
7
+ .clear
8
+ .grid_2
9
+ = f.label :password, "#{t(:password)} <span class='required'>*</span>"
10
+ .grid_4
11
+ = f.password_field :password
12
+ .clear
13
+ .grid_4.prefix_2
14
+ - link_to forgotten_password_user_path, :id => 'reset_password_link' do
15
+ = t('get_forgotten_password').capitalize
16
+ .grid_4.prefix_2
17
+ = f.check_box :remember_me, :value => '1'
18
+ = f.label :remember_me, t(:remember_me).capitalize, :class => 'remember'
19
+ %br
20
+ = f.submit t('log.in.action').capitalize, :class => 'submit_contact'
21
+ .clear
22
+ %p.mandatory-field
23
+ * #{t(:mandatory_field, :count => 2)}
@@ -0,0 +1 @@
1
+ = render :partial => '/users/login_or_new'
@@ -0,0 +1,7 @@
1
+ %h2 Récupérer un nouveau mot de passe
2
+ - form_tag :action => 'reset_admin_password' do
3
+ %fieldset.account-form
4
+ = label_tag :email, I18n.t('email').capitalize
5
+ = text_field_tag 'email', nil, :class => 'text'
6
+ = submit_tag 'envoyer', :class => 'submit-connexion commander'
7
+ = link_to "Retour à la page précédente", :action => 'new'
@@ -0,0 +1,61 @@
1
+ .myaccount
2
+ - form_for(@user, :url => user_path, :html => { :multipart => true, :autocomplete => false }) do |f|
3
+ .profile
4
+ %h2
5
+ = t(:profile, :scope => [:user, :part]).capitalize
6
+ .grid_5
7
+ - login_field = Forgeos::CONFIG[:login]['login_field']
8
+ = f.label(login_field, t(:uid, :scope => :user).capitalize)
9
+ = f.text_field(login_field)
10
+ .clear
11
+ //.grid_5
12
+ = password_fields(f)
13
+ .clear
14
+ - if Forgeos::CONFIG[:newsletter]['active']
15
+ .grid_5.newsletter
16
+ = f.check_box(:newsletter)
17
+ = f.label(:newsletter, t(:i_want, :scope => :newsletter).capitalize)
18
+ .clear
19
+
20
+ - if Forgeos::CONFIG[:account]['avatar']['active']
21
+ .avatar
22
+ - current_user.build_avatar unless current_user.avatar
23
+ - f.fields_for :avatar do |avatar|
24
+ = display_avatar(current_user.avatar)
25
+ = avatar.file_field :uploaded_data
26
+ .clear
27
+ .coord
28
+ %h2
29
+ = t(:infos, :scope => [:user, :part]).capitalize
30
+ .grid_5
31
+ = f.label :civility, "#{t(:civility, :count => 1).capitalize} <em>*</em>"
32
+ = f.select :civility, options_for_select([['Mr',0],['Mme',1],['Mlle',2],['Société',3]])
33
+ .clear
34
+
35
+ .grid_5
36
+ = f.label :lastname, "#{t(:lastname).capitalize} <em>*</em>"
37
+ = f.text_field :lastname
38
+ .clear
39
+ .grid_5
40
+ = f.label :firstname, "#{t(:firstname).capitalize} <em>*</em>"
41
+ = f.text_field :firstname
42
+ .clear
43
+ .grid_5
44
+ = f.label :phone, "#{t(:phone).capitalize} <em>*</em>"
45
+ = f.text_field :phone
46
+ .clear
47
+
48
+ .address
49
+ - multiple_addresses = Forgeos::CONFIG[:addresses]['multiple_addresses']
50
+ - if multiple_addresses
51
+ - @user.build_address_delivery unless @user.address_delivery
52
+ = render :partial => '/addresses/multiple_address_form', :locals => {:address => @user.address_invoice}
53
+ - else
54
+ %h2= t(:address, :count => 1, :scope => [:user, :part]).capitalize
55
+ - f.object.build_address_invoice unless f.object.address_invoice
56
+ - f.fields_for :address_invoice do |address|
57
+ = render :partial => '/addresses/address_form', :locals => {:f => address}
58
+ .requiredinfo
59
+ * #{t(:mandatory_field, :count => 2)}
60
+ = f.submit t('action', :scope => [:user, :update])
61
+ .clear
@@ -0,0 +1,27 @@
1
+ - content_for(:title, t('action', :scope => [:user, :create]))
2
+ - form_for @user, :html => { :autocomplete => 'on'}, :url => user_path do |f|
3
+ .person-session-form
4
+ .grid_2
5
+ = f.label(:civility, "#{t(:civility, :count => 1)} <span class='required'>*<span>")
6
+ .grid_4
7
+ = f.radio_button :civility, 0
8
+ %span M
9
+ = f.radio_button :civility, 1
10
+ %span Mme
11
+ = f.radio_button :civility, 2
12
+ %span Mlle
13
+ = f.radio_button :civility, 3
14
+ %span Société
15
+ - [:lastname, :firstname, :email].each do |key|
16
+ .grid_2
17
+ = f.label key, "#{t(key)} <span class='required'>*<span>"
18
+ .grid_4
19
+ = f.text_field key
20
+ .clear
21
+ - unless Forgeos::CONFIG[:account]['password_generated']
22
+ = password_fields(f)
23
+ .grid_4.prefix_2
24
+ = f.submit t('action', :scope => [:user, :create])
25
+ .clear
26
+ %p.mandatory-field
27
+ * #{t(:mandatory_field, :count => 2)}
@@ -0,0 +1,16 @@
1
+ - content_for(:title, t('action', :scope => [:user, :create]))
2
+ - form_for @user, :html => { :autocomplete => 'on'}, :url => user_path do |f|
3
+ = hidden_field_tag :quick, 1
4
+ .person-session-form
5
+ - [:email, :email_confirmation].each do |key|
6
+ .grid_2
7
+ = f.label key, "#{t(key)} <span class='required'>*<span>"
8
+ .grid_4
9
+ = f.text_field key
10
+ .clear
11
+ = password_fields(f, :label_class => 'grid_2', :input_class => 'grid_4', :field_class=> nil, :password_label => "#{t(:password)} <span class='required'>*<span>", :confirmation_label => "#{t(:password_confirmation)} <span class='required'>*<span>")
12
+ .grid_4.prefix_2
13
+ = f.submit t('action', :scope => [:user, :create])
14
+ .clear
15
+ %p.mandatory-field
16
+ * #{t(:mandatory_field, :count => 2)}
@@ -0,0 +1,10 @@
1
+ .account-area
2
+ .grid_7.login
3
+ %h2= t('new', :scope => [:person_session, :action])
4
+ = render :partial => '/person_sessions/form'
5
+ .prefix_2.grid_7
6
+ %h2= t('create', :scope => [:user, :action])
7
+ - if Forgeos::CONFIG[:account]['checkout_quick_create'] and params[:quick]
8
+ = render :partial => '/users/form_quick_create', :locals => {:btn => 'create'}
9
+ - else
10
+ = render :partial => '/users/form_create', :locals => {:btn => 'create'}
@@ -0,0 +1,12 @@
1
+ .account-area
2
+ .prefix_4.grid_8
3
+ %h2= t(:forgotten_password, :scope => [:user, :action]).capitalize
4
+ - form_tag(reset_password_user_path, :html => { :autocomplete => false }, :class => 'account-form') do
5
+ .grid_2
6
+ = label_tag(:email, t(:email))
7
+ .grid_5
8
+ = text_field_tag(:email)
9
+ .grid_5.prefix_2
10
+ = submit_tag(t('action', :scope => [:user, :reset_password]), :id => 'forgotten_password_submit')
11
+ .clear
12
+ .clear
@@ -0,0 +1 @@
1
+ = render :partial => '/users/login_or_new'
@@ -0,0 +1,10 @@
1
+ .account-area.new_password
2
+ .prefix_4.grid_8
3
+ %h2= t('new_password', :scope => [:user, :action]).capitalize
4
+ - form_for(@user, :url => update_password_user_path, :html => { :autocomplete => false }) do |f|
5
+ = hidden_field_tag :user_token, f.object.perishable_token
6
+ = password_fields(f, :label_class => 'grid_3', :input_class => 'grid_4')
7
+ .grid_5.prefix_2
8
+ = f.submit t('reset_password', :scope => [:user, :action])
9
+ .clear
10
+ .clear
@@ -0,0 +1 @@
1
+ = render :partial => 'users/edit_form.html.haml'
@@ -0,0 +1,27 @@
1
+ multilang: true # true/false
2
+ default_locale: en
3
+ login:
4
+ login_field: email
5
+ account:
6
+ active: true # true/false
7
+ password_generated: true # true/false
8
+ avatar:
9
+ active: true # true/false
10
+ addresses:
11
+ active: true # true/false
12
+ user_type: 'b2c' # b2b/b2c/b2b&b2c
13
+ multiple_addresses: true # true/false
14
+ mandatory_fields: [phone]
15
+ available_countries: [us, uk, fr]
16
+ default_country: us # ISO CODE
17
+ checkout:
18
+ active: true # true/false
19
+ payment: [cheque] # cheque/CMCIC
20
+ wishlist:
21
+ active: true # true/false
22
+ cart:
23
+ active: true # true/false
24
+ newsletter:
25
+ active: true
26
+ notifications:
27
+ active: true
@@ -0,0 +1,6 @@
1
+ # load settings
2
+ config_file = File.join(Rails.root, 'config', 'commerce.yml')
3
+ Forgeos::CONFIG = (File.exist?(config_file) ? YAML.load_file(config_file).symbolize_keys : {})
4
+ if not Forgeos::CONFIG[:multilang] and locale = Forgeos::CONFIG[:default_locale]
5
+ I18n.available_locales = locale.to_a
6
+ end
@@ -0,0 +1,85 @@
1
+ fr:
2
+ mandatory_field:
3
+ one: champ obligatoire
4
+ other: champs obligatoires
5
+ person_session:
6
+ action:
7
+ new: Identification
8
+ user:
9
+ one: utilisateur
10
+ other: utilisateurs
11
+ uid: identifiant
12
+ action:
13
+ show: Mon compte
14
+ create: Créer mon compte
15
+ activate: Activation du compte
16
+ new_password: votre nouveau mot de passe
17
+ reset_password: valider
18
+ forgotten_password: Vous avez perdu votre mot de passe ?
19
+ create:
20
+ success: Votre compte a bien été créé. Vous allez recevoir un email afin d'activer votre compte.
21
+ error: Une erreur s'est produite lors de la creation de votre compte.
22
+ action: Créer le compte
23
+ update:
24
+ success: Votre compte a bien été mis à jour.
25
+ error: Une erreur s'est produite lors de la mise à jour de vos informations personnelles
26
+ activate:
27
+ success: Votre compte a bien été activé.
28
+ error: Une erreur s'est produite lors de l'activation de votre compte.
29
+ reset_password:
30
+ success: Un email vous a été envoyé avec les intructions afin de réinitialiser votre mot de passe
31
+ error: Une erreur est survenue lors de l'envoie de l'email
32
+ unknown_user: Aucun utilisateur n'est enregistré avec %{email}
33
+ new_password:
34
+ error: Code d'identification invalide
35
+ part:
36
+ profile: mon profil
37
+ infos: mes coordonnées
38
+ address:
39
+ one: mon adresse
40
+ other: mes adresses
41
+ order:
42
+ not_found: La commande n'a pas été trouvée.
43
+ order_status:
44
+ paid: payée
45
+ unpaid: en attente de paiement
46
+ shipped: expédiée
47
+ waiting_for_cheque: en attente de chèque
48
+ canceled: annulée
49
+ closed: fermée
50
+ newsletter:
51
+ i_want: Je souhaite recevoir la newsletter
52
+ create:
53
+ success: Vous êtes maintenant inscrit à la newsletter.
54
+ invalid_email: L'email %{error}
55
+ subscription: Inscription à la Newsletter
56
+ authlogic:
57
+ error_messages:
58
+ login_blank: doit être rempli(e)
59
+ login_not_found: n'est pas valide
60
+ login_invalid: should use only letters, numbers, spaces, and .-_@ please.
61
+ consecutive_failed_logins_limit_exceeded: Consecutive failed logins limit exceeded, account is disabled.
62
+ email_invalid: n'est pas valide
63
+ password_blank: doit être rempli(e)
64
+ password_invalid: n'est pas valide
65
+ not_active: Votre compte n'est pas actif
66
+ not_confirmed: Your account is not confirmed
67
+ not_approved: Your account is not approved
68
+
69
+ emails:
70
+ waiting_for_cheque_notification:
71
+ subject: Commande en attente de chèque
72
+ reset_password:
73
+ subject: Réinitialisation de votre mot de passe
74
+ newsletter:
75
+ subject: Inscription à la newsletter
76
+ new_account:
77
+ subject: Bienvenue sur notre site
78
+ order_confirmation:
79
+ subject: Votre commande n°%{id}
80
+ order: votre commande
81
+ company: entreprise
82
+ administrator_warning: Attention vous êtes en administrateur.
83
+ not_authorized: Vous n'êtes pas autorisé à acceder à cette ressource.
84
+ phone: télephone
85
+ email_confirmation: confirmez votre email
@@ -0,0 +1,17 @@
1
+ Forgeos::CommerceFront::Engine.routes.draw do
2
+ resource :user do
3
+ member do
4
+ get :activate
5
+ get :new_password
6
+ get :forgotten_password
7
+ put :update_password
8
+ post :reset_password
9
+ end
10
+
11
+ resources :orders
12
+ resources :addresses
13
+
14
+ resources :address_deliveries, :controller => :addresses, :as => :addresses
15
+ resources :address_invoices, :controller => :addresses, :as => :addresses
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ class AddFormAttributesToAddresses < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :addresses, :form_attributes, :text
4
+ end
5
+
6
+ def self.down
7
+ remove_column :addresses, :form_attributes
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ class FieldErrorProcChanger
2
+ def initialize(proc)
3
+ @new_proc = proc
4
+ end
5
+
6
+ # This will run before the action. Returning false
7
+ # aborts the action.
8
+ def before(controller)
9
+ @old_proc = ActionView::Base.field_error_proc
10
+ ActionView::Base.field_error_proc = @new_proc
11
+ true
12
+ end
13
+
14
+ # This will run after the action if and only if
15
+ # before returned true.
16
+ def after(controller)
17
+ ActionView::Base.field_error_proc = @old_proc
18
+ end
19
+ end
@@ -0,0 +1,6 @@
1
+ module Forgeos
2
+ module CommerceFront
3
+ end
4
+ end
5
+
6
+ require 'forgeos/commerce_front/engine'
@@ -0,0 +1,10 @@
1
+ require 'forgeos/commerce/engine'
2
+ require 'forgeos/cms_front/engine'
3
+
4
+ module Forgeos
5
+ module CommerceFront
6
+ class Engine < Rails::Engine
7
+ paths["config/locales"] << 'config/locales/**'
8
+ end
9
+ end
10
+ end