Mailer and other upgrades

This commit is contained in:
2013-01-17 09:15:42 +01:00
parent 26810defcd
commit 730768cb59
36 changed files with 242 additions and 8 deletions
+1
View File
@@ -53,6 +53,7 @@ group :development do
gem 'rspec-rails' gem 'rspec-rails'
gem 'guard-rspec' gem 'guard-rspec'
gem 'quiet_assets' gem 'quiet_assets'
gem 'letter_opener'
gem 'thin' gem 'thin'
end end
+5
View File
@@ -130,6 +130,10 @@ GEM
kaminari-bootstrap (0.1.3) kaminari-bootstrap (0.1.3)
kaminari (>= 0.13.0) kaminari (>= 0.13.0)
rails rails
launchy (2.1.2)
addressable (~> 2.3)
letter_opener (1.0.0)
launchy (>= 2.0.4)
libwebsocket (0.1.7.1) libwebsocket (0.1.7.1)
addressable addressable
websocket websocket
@@ -269,6 +273,7 @@ DEPENDENCIES
haml-rails haml-rails
jquery-rails jquery-rails
kaminari-bootstrap kaminari-bootstrap
letter_opener
mini_magick mini_magick
mustache mustache
pry pry
@@ -56,7 +56,6 @@ function setTranslations(selector){
var list = $('#top-navigation-list'); var list = $('#top-navigation-list');
list.find('.locale').show(); list.find('.locale').show();
list.find('.locale-'+$locale).hide(); list.find('.locale-'+$locale).hide();
debugger;
if(selector){ if(selector){
$(selector).find('[data-t]').each(function(){$(this).text(t($(this).data('t'), $(this).data('tAttributes')))}) $(selector).find('[data-t]').each(function(){$(this).text(t($(this).data('t'), $(this).data('tAttributes')))})
}else{ }else{
@@ -0,0 +1,7 @@
@import bootstrap
body
.nav
> li
> a
&:hover
background-color: transparent
+10
View File
@@ -0,0 +1,10 @@
class SupplierMailer < ActionMailer::Base
default from: "Qwaiter <service@qwaiter.com>"
layout 'mail'
def creation(supplier)
I18n.locale = :nl
@supplier = supplier
mail to: supplier.email, subject: I18n.t('mailer.supplier.creation.subject', name: supplier.name)
end
end
+7 -1
View File
@@ -1,7 +1,8 @@
class Supplier class Supplier
include SimplyStored::Couch include SimplyStored::Couch
include Devise::Orm::SimplyStored include Devise::Orm::SimplyStored
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable devise :database_authenticatable, :recoverable, :rememberable, :trackable, :registerable, :confirmable
property :unconfirmed_email
property :name property :name
property :open, type: :boolean, default: false property :open, type: :boolean, default: false
@@ -30,6 +31,7 @@ class Supplier
has_many :sections, dependent: :destroy has_many :sections, dependent: :destroy
after_create :add_section_on_create after_create :add_section_on_create
after_create :send_creation_notifications
view :by_email, key: :email view :by_email, key: :email
@@ -92,4 +94,8 @@ class Supplier
@section = Section.create supplier: self, title: I18n.t('supplier.section.first_section_title') @section = Section.create supplier: self, title: I18n.t('supplier.section.first_section_title')
end end
def send_creation_notifications
SupplierMailer.creation(self).deliver
end
end end
+1 -1
View File
@@ -17,7 +17,7 @@ class Table
view :by_supplier_id_and_id, key: [:supplier_id, :_id] view :by_supplier_id_and_id, key: [:supplier_id, :_id]
#validates_uniqueness_of :number #validates_uniqueness_of :number
#view :by_number, key: :number # For uniqueness validation view :by_number, key: :number
def occupied? def occupied?
return @is_occupied if instance_variable_defined?(:'@is_occupied') return @is_occupied if instance_variable_defined?(:'@is_occupied')
+2
View File
@@ -1,6 +1,8 @@
class User class User
include SimplyStored::Couch include SimplyStored::Couch
include Devise::Orm::SimplyStored include Devise::Orm::SimplyStored
property :name
property :active_list_id property :active_list_id
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :token_authenticatable # , :registerable devise :database_authenticatable, :recoverable, :rememberable, :trackable, :token_authenticatable # , :registerable
+11
View File
@@ -0,0 +1,11 @@
doctype strict
html
head
title
meta http-equiv="Content-Type" content="text/html; charset=utf-8"
body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0" style="-webkit-text-size-adjust:none;margin:0;padding:0;background-color:#eaeef0;width:100%;"
center
table border="0" cellpadding="0" cellspacing="0" height="100%" id="backgroundTable" style="margin:20px 0 20px 0;padding:0;height:100%;width:600px;background-color:#ffffff"
tr
td align="left" valign="top" style="color:#4C7334;font-family:Arial;padding:22px"
= yield
@@ -0,0 +1,20 @@
h2= t('mailer.supplier.creation.title', name: @supplier.name)
p
|
Welkom bij Qwaiter! Leuk dat je gebruik wil maken van bestellen via de smartphone. De eerste stap is gezet! Maak je gebruik van een reeds
bestaand kassasysteem dan is de kans groot dat Qwaiter deze ondersteunt. Selecteer in
dit geval eerst je kassasysteem. De inrichting van Qwaiter zich hierop zal
aanpassen.
p
|
Wij van Qwaiter hopen dat dit een waardevolle toevoeging op je bedrijf zal zijn en
zullen er alles aan doen om de relatie zo aangenaam mogelijk te maken.
p
br
| Met vriendelijke groet,
br
br
| Qwaiter
br
= link_to 'www.Qwaiter.com', root_url, style: "color:#FAA732"
+19
View File
@@ -0,0 +1,19 @@
ul.nav.nav-pills
- if controller_name != 'sessions'
li= link_to t('devise.sessions.button'), new_session_path(resource_name), class: [:devise, :btn]
- if devise_mapping.registerable? && controller_name != 'registrations'
li= link_to t('devise.registrations.button'), new_registration_path(resource_name), class: [:devise, :btn]
- if devise_mapping.recoverable? && controller_name != 'passwords'
li= link_to t('devise.sessions.forgot_your_password'), new_password_path(resource_name), class: [:devise, :btn]
- if devise_mapping.confirmable? && controller_name != 'confirmations'
li= link_to t('devise.confirmations.did_not_receive_instructions_link'), new_confirmation_path(resource_name), class: [:devise, :btn]
- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks'
li= link_to t('devise.unlocks.did_not_receive_instructions_link'), new_unlock_path(resource_name), class: [:devise, :btn]
- if devise_mapping.omniauthable?
- resource_class.omniauth_providers.each do |provider|
li= link_to t('devise.omniauth_callbacks.sign_in_with', provider: provider.to_s.titleize), omniauth_authorize_path(resource_name, provider), class: [:devise, :btn]
@@ -0,0 +1,12 @@
<h2>Resend confirmation instructions</h2>
<%= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post }) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.submit "Resend confirmation instructions" %></div>
<% end %>
<%= render "links" %>
@@ -0,0 +1,5 @@
<p>Welcome <%= @resource.email %>!</p>
<p>You can confirm your account email through the link below:</p>
<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>
@@ -0,0 +1,8 @@
<p>Hello <%= @resource.email %>!</p>
<p>Someone has requested a link to change your password, and you can do this through the link below.</p>
<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>
<p>If you didn't request this, please ignore this email.</p>
<p>Your password won't change until you access the link above and create a new one.</p>
@@ -0,0 +1,7 @@
<p>Hello <%= @resource.email %>!</p>
<p>Your account has been locked due to an excessive amount of unsuccessful sign in attempts.</p>
<p>Click the link below to unlock your account:</p>
<p><%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token) %></p>
+14
View File
@@ -0,0 +1,14 @@
h2= t('devise.passwords.edit.title')
= form_for(resource, :as => resource_name, :url => password_path(resource_name), html: {class: 'form-horizontal', method: :put}) do |f|
= devise_error_messages!
= f.hidden_field :reset_password_token
.control-group
= f.label :password, class: 'control-label'
.controls= f.password_field :password
.control-group
= f.label :password_confirmation, class: 'control-label'
.controls= f.password_field :password_confirmation
.control-group
.controls
= f.submit t('devise.passwords.edit.button'), class: 'btn btn-primary'
= render "links"
+10
View File
@@ -0,0 +1,10 @@
h2= t('devise.passwords.title')
= form_for(resource, :as => resource_name, :url => password_path(resource_name), html: {class: 'form-horizontal'}) do |f|
= devise_error_messages!
.control-group
= f.label :email, class: 'control-label'
.controls= f.email_field :email
.control-group
.controls
= f.submit t('devise.passwords.button'), class: 'btn btn-primary'
= render "links"
@@ -0,0 +1,25 @@
<h2>Edit <%= resource_name.to_s.humanize %></h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
<%= f.password_field :password, :autocomplete => "off" %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
<%= f.password_field :current_password %></div>
<div><%= f.submit "Update" %></div>
<% end %>
<h3>Cancel my account</h3>
<p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.</p>
<%= link_to "Back", :back %>
@@ -0,0 +1,19 @@
h2= t('devise.registrations.title')
= form_for(resource, :as => resource_name, :url => registration_path(resource_name), html: {class: 'form-horizontal'}) do |f|
= devise_error_messages!
.control-group
= f.label :name, class: 'control-label'
.controls= f.text_field :name
.control-group
= f.label :email, class: 'control-label'
.controls= f.email_field :email
.control-group
= f.label :password, class: 'control-label'
.controls= f.password_field :password
.control-group
= f.label :password_confirmation, class: 'control-label'
.controls= f.password_field :password_confirmation
.control-group
.controls
= f.submit t('devise.registrations.button'), class: 'btn btn-primary'
= render "links"
+19
View File
@@ -0,0 +1,19 @@
h2= t('devise.sessions.title')
= form_for(resource, :as => resource_name, :url => session_path(resource_name), html: {class: 'form-horizontal'}) do |f|
= devise_error_messages!
.control-group
= f.label :email, class: 'control-label'
.controls= f.email_field :email
.control-group
= f.label :password, class: 'control-label'
.controls= f.password_field :password
.control-group
.controls
= f.label :remember_me do
= f.check_box :remember_me
|&nbsp;
= t('devise.sessions.remember_me')
.control-group
.controls
= f.submit t('devise.sessions.button'), class: 'btn btn-primary'
= render "links"
+12
View File
@@ -0,0 +1,12 @@
<h2>Resend unlock instructions</h2>
<%= form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.submit "Resend unlock instructions" %></div>
<% end %>
<%= render "links" %>
+15
View File
@@ -22,6 +22,21 @@ Qwaiter::Application.configure do
# Don't care if the mailer can't send # Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false config.action_mailer.raise_delivery_errors = false
#config.action_mailer.delivery_method = :letter_opener
config.action_mailer.default_url_options = {
host: 'localhost',
port: 3000
}
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "atool.nl",
authentication: :plain,
user_name: "bterkuile@companytools.nl",
password: "BjTKct22",
enable_starttls_auto: true
}
# Print deprecation notices to the Rails logger # Print deprecation notices to the Rails logger
config.active_support.deprecation = :log config.active_support.deprecation = :log
+10 -1
View File
@@ -49,7 +49,16 @@ Qwaiter::Application.configure do
# config.assets.precompile += %w( search.js ) # config.assets.precompile += %w( search.js )
# Disable delivery errors, bad email addresses will be ignored # Disable delivery errors, bad email addresses will be ignored
# config.action_mailer.raise_delivery_errors = false config.action_mailer.raise_delivery_errors = false
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "atool.nl",
authentication: :plain,
user_name: "bterkuile@companytools.nl",
password: "BjTKct22",
enable_starttls_auto: true
}
# Enable threaded mode # Enable threaded mode
# config.threadsafe! # config.threadsafe!
+2 -2
View File
@@ -182,11 +182,11 @@ Devise.setup do |config|
# Turn scoped views on. Before rendering "sessions/new", it will first check for # Turn scoped views on. Before rendering "sessions/new", it will first check for
# "users/sessions/new". It's turned off by default because it's slower if you # "users/sessions/new". It's turned off by default because it's slower if you
# are using only default views. # are using only default views.
# config.scoped_views = false config.scoped_views = true
# Configure the default scope given to Warden. By default it's the first # Configure the default scope given to Warden. By default it's the first
# devise role declared in your routes (usually :user). # devise role declared in your routes (usually :user).
# config.default_scope = :user config.default_scope = :supplier
# Configure sign_out behavior. # Configure sign_out behavior.
# Sign_out action can be scoped (i.e. /users/sign_out affects only :user scope). # Sign_out action can be scoped (i.e. /users/sign_out affects only :user scope).
+1 -2
View File
@@ -43,14 +43,13 @@ nl:
registrations: registrations:
title: Aanmelden title: Aanmelden
button: Aanmelden button: Aanmelden
signed_up: 'Welcome! You have signed up successfully.'
signed_up_but_unconfirmed: 'A message with a confirmation link has been sent to your email address. Please open the link to activate your account.' signed_up_but_unconfirmed: 'A message with a confirmation link has been sent to your email address. Please open the link to activate your account.'
signed_up_but_inactive: 'You have signed up successfully. However, we could not sign you in because your account is not yet activated.' signed_up_but_inactive: 'You have signed up successfully. However, we could not sign you in because your account is not yet activated.'
signed_up_but_locked: 'You have signed up successfully. However, we could not sign you in because your account is locked.' signed_up_but_locked: 'You have signed up successfully. However, we could not sign you in because your account is locked.'
updated: 'You updated your account successfully.' updated: 'You updated your account successfully.'
update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and click on the confirm link to finalize confirming your new email address." update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and click on the confirm link to finalize confirming your new email address."
signed_up: 'You have signed up successfully. If enabled, a confirmation was sent your e-mail.' signed_up: 'Je hebt je succesvol aangemeld! Er wordt een bevestigingsmail toegestuurd'
updated: 'You updated your account successfully.' updated: 'You updated your account successfully.'
destroyed: 'Bye! Your account was successfully cancelled. We hope to see you again soon.' destroyed: 'Bye! Your account was successfully cancelled. We hope to see you again soon.'
sign_up: Acount aanvragen sign_up: Acount aanvragen