Big feactoring and bug fixing, Mailer, Tasks, GroupOrders
This commit is contained in:
parent
c936813967
commit
5fb0bc2444
43 changed files with 95 additions and 118 deletions
|
@ -1,3 +1,4 @@
|
||||||
|
# encoding: utf-8
|
||||||
class Finance::FinancialTransactionsController < ApplicationController
|
class Finance::FinancialTransactionsController < ApplicationController
|
||||||
before_filter :authenticate_finance
|
before_filter :authenticate_finance
|
||||||
before_filter :find_ordergroup, :except => [:new_collection, :create_collection]
|
before_filter :find_ordergroup, :except => [:new_collection, :create_collection]
|
||||||
|
@ -38,8 +39,8 @@ class Finance::FinancialTransactionsController < ApplicationController
|
||||||
@financial_transaction.user = current_user
|
@financial_transaction.user = current_user
|
||||||
@financial_transaction.add_transaction!
|
@financial_transaction.add_transaction!
|
||||||
redirect_to finance_ordergroup_transactions_url(@ordergroup), :notice => "Die Transaktion wurde gespeichert."
|
redirect_to finance_ordergroup_transactions_url(@ordergroup), :notice => "Die Transaktion wurde gespeichert."
|
||||||
rescue
|
#rescue
|
||||||
render :action => :new
|
# render :action => :new
|
||||||
end
|
end
|
||||||
|
|
||||||
def new_collection
|
def new_collection
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
# Controller for all ordering-actions that are performed by a user who is member of an Ordergroup.
|
# Controller for all ordering-actions that are performed by a user who is member of an Ordergroup.
|
||||||
# Management actions that require the "orders" role are handled by the OrdersController.
|
# Management actions that require the "orders" role are handled by the OrdersController.
|
||||||
class OrderingController < ApplicationController
|
class GroupOrdersController < ApplicationController
|
||||||
# Security
|
# Security
|
||||||
before_filter :ensure_ordergroup_member
|
before_filter :ensure_ordergroup_member
|
||||||
before_filter :ensure_open_order, :only => [:new, :create, :edit, :update, :order, :stock_order, :saveOrder]
|
before_filter :ensure_open_order, :only => [:new, :create, :edit, :update, :order, :stock_order, :saveOrder]
|
||||||
|
before_filter :ensure_my_group_order, only: [:show, :edit, :update]
|
||||||
|
|
||||||
# Index page.
|
# Index page.
|
||||||
def index
|
def index
|
||||||
|
@ -28,17 +29,14 @@ class OrderingController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@group_order = GroupOrder.find(params[:id])
|
|
||||||
@order= @group_order.order
|
@order= @group_order.order
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@group_order = GroupOrder.find(params[:id])
|
|
||||||
@ordering_data = @group_order.load_data
|
@ordering_data = @group_order.load_data
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@group_order = GroupOrder.find(params[:id])
|
|
||||||
@group_order.attributes = params[:group_order]
|
@group_order.attributes = params[:group_order]
|
||||||
begin
|
begin
|
||||||
@group_order.save_ordering!
|
@group_order.save_ordering!
|
||||||
|
@ -84,4 +82,10 @@ class OrderingController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def ensure_my_group_order
|
||||||
|
@group_order = @ordergroup.group_orders.find(params[:id])
|
||||||
|
rescue ActiveRecord::RecordNotFound
|
||||||
|
redirect_to group_orders_url, alert: 'Fehlerhafte URL, das ist nicht Deine Bestellung.'
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -5,11 +5,12 @@ class LoginController < ApplicationController
|
||||||
|
|
||||||
# Display the form to enter an email address requesting a token to set a new password.
|
# Display the form to enter an email address requesting a token to set a new password.
|
||||||
def forgot_password
|
def forgot_password
|
||||||
|
@user = User.new
|
||||||
end
|
end
|
||||||
|
|
||||||
# Sends an email to a user with the token that allows setting a new password through action "password".
|
# Sends an email to a user with the token that allows setting a new password through action "password".
|
||||||
def reset_password
|
def reset_password
|
||||||
if (user = User.find_by_email(params[:login][:email]))
|
if (user = User.find_by_email(params[:user][:email]))
|
||||||
user.reset_password_token = user.new_random_password(16)
|
user.reset_password_token = user.new_random_password(16)
|
||||||
user.reset_password_expires = Time.now.advance(:days => 2)
|
user.reset_password_expires = Time.now.advance(:days => 2)
|
||||||
if user.save
|
if user.save
|
||||||
|
|
|
@ -14,9 +14,7 @@ class MessagesController < ApplicationController
|
||||||
def create
|
def create
|
||||||
@message = @current_user.send_messages.new(params[:message])
|
@message = @current_user.send_messages.new(params[:message])
|
||||||
if @message.save
|
if @message.save
|
||||||
#FIXME: Send Mails wit ID instead of using message.state ...
|
@message.deliver #TODO: Put this into a background job
|
||||||
#call_rake :send_emails
|
|
||||||
@message.deliver
|
|
||||||
redirect_to messages_url, :notice => "Nachricht ist gespeichert und wird versendet."
|
redirect_to messages_url, :notice => "Nachricht ist gespeichert und wird versendet."
|
||||||
else
|
else
|
||||||
render :action => 'new'
|
render :action => 'new'
|
||||||
|
|
|
@ -40,9 +40,9 @@ class TasksController < ApplicationController
|
||||||
@task.save
|
@task.save
|
||||||
flash[:notice] = "Aufgabe wurde aktualisiert"
|
flash[:notice] = "Aufgabe wurde aktualisiert"
|
||||||
if @task.workgroup
|
if @task.workgroup
|
||||||
redirect_to :action => "workgroup", :id => @task.workgroup
|
redirect_to workgroup_tasks_url(workgroup_id: @task.workgroup_id)
|
||||||
else
|
else
|
||||||
redirect_to :action => "index"
|
redirect_to tasks_url
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
render :template => "tasks/edit"
|
render :template => "tasks/edit"
|
||||||
|
@ -84,20 +84,9 @@ class TasksController < ApplicationController
|
||||||
|
|
||||||
# shows workgroup (normal group) to edit weekly_tasks_template
|
# shows workgroup (normal group) to edit weekly_tasks_template
|
||||||
def workgroup
|
def workgroup
|
||||||
@group = Group.find(params[:id])
|
@group = Group.find(params[:workgroup_id])
|
||||||
if @group.is_a? Ordergroup
|
if @group.is_a? Ordergroup
|
||||||
redirect_to tasks_url, :alert => "Keine Arbeitsgruppe gefunden"
|
redirect_to tasks_url, :alert => "Keine Arbeitsgruppe gefunden"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# this method is uses for the auto_complete-function from script.aculo.us
|
|
||||||
def auto_complete_for_task_user_list
|
|
||||||
@users = User.find(
|
|
||||||
:all,
|
|
||||||
:conditions => [ 'LOWER(nick) LIKE ?', '%' + params[:task][:user_list].downcase + '%' ],
|
|
||||||
:order => 'nick ASC',
|
|
||||||
:limit => 8
|
|
||||||
)
|
|
||||||
render :partial => '/shared/auto_complete_users'
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
module OrderingHelper
|
module GroupOrdersHelper
|
||||||
def data_to_js(ordering_data)
|
def data_to_js(ordering_data)
|
||||||
ordering_data[:order_articles].map { |id, data|
|
ordering_data[:order_articles].map { |id, data|
|
||||||
[id, data[:price], data[:unit], data[:total_price], data[:others_quantity], data[:others_tolerance], data[:used_quantity], data[:quantity_available]]
|
[id, data[:price], data[:unit], data[:total_price], data[:others_quantity], data[:others_tolerance], data[:used_quantity], data[:quantity_available]]
|
|
@ -4,15 +4,15 @@ class Mailer < ActionMailer::Base
|
||||||
|
|
||||||
layout 'email' # Use views/layouts/email.txt.erb
|
layout 'email' # Use views/layouts/email.txt.erb
|
||||||
|
|
||||||
default from: "FoodSoft <#{Foodsoft.config[:email_sender]}>"
|
default from: "FoodSoft <#{Foodsoft.config[:email_sender]}>",
|
||||||
|
sender: Foodsoft.config[:email_sender],
|
||||||
|
errors_to: Foodsoft.config[:email_sender]
|
||||||
|
|
||||||
# Sends an email copy of the given internal foodsoft message.
|
# Sends an email copy of the given internal foodsoft message.
|
||||||
def foodsoft_message(message, recipient)
|
def foodsoft_message(message, recipient)
|
||||||
@message = message
|
@message = message
|
||||||
|
|
||||||
mail sender: Foodsoft.config[:email_sender],
|
mail subject: "[#{Foodsoft.config[:name]}] " + message.subject,
|
||||||
errors_to: Foodsoft.config[:email_sender],
|
|
||||||
subject: "[#{Foodsoft.config[:name]}] " + message.subject,
|
|
||||||
to: recipient.email,
|
to: recipient.email,
|
||||||
from: "#{message.sender.nick} <#{message.sender.email}>"
|
from: "#{message.sender.nick} <#{message.sender.email}>"
|
||||||
end
|
end
|
||||||
|
@ -74,13 +74,12 @@ class Mailer < ActionMailer::Base
|
||||||
:subject => "[Foodsoft] Feeback von #{user.email}"
|
:subject => "[Foodsoft] Feeback von #{user.email}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def not_enough_users_assigned(task,user)
|
def not_enough_users_assigned(task, user)
|
||||||
@task = task
|
@task = task
|
||||||
@user = user
|
@user = user
|
||||||
@task_url = url_for(:controller => "tasks", :action => "workgroup", :id => task.workgroup_id)
|
|
||||||
|
|
||||||
mail :to => user.email,
|
mail :to => user.email,
|
||||||
:subject => "[#{Foodsoft.config[:name]}] #{task.name} braucht noch Leute!"
|
:subject => "[#{Foodsoft.config[:name]}] \"#{task.name}\" braucht noch Leute!"
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -68,12 +68,12 @@ class Message < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def deliver
|
def deliver
|
||||||
for recipient in recipients
|
for user in recipients
|
||||||
if recipient.settings['messages.sendAsEmail'] == "1" && !recipient.email.blank?
|
if user.receive_email?
|
||||||
begin
|
begin
|
||||||
Mailer.foodsoft_message(self, recipient).deliver
|
Mailer.foodsoft_message(self, user).deliver
|
||||||
# rescue
|
rescue
|
||||||
# logger.warn "Deliver failed for #{recipient.nick}: #{recipient.email}"
|
logger.warn "Deliver failed for #{user.nick}: #{user.email}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,6 +13,7 @@ class Task < ActiveRecord::Base
|
||||||
validates :name, :presence => true, :length => { :minimum => 3 }
|
validates :name, :presence => true, :length => { :minimum => 3 }
|
||||||
validates :required_users, :presence => true
|
validates :required_users, :presence => true
|
||||||
validates_numericality_of :duration, :required_users, :only_integer => true, :greater_than => 0
|
validates_numericality_of :duration, :required_users, :only_integer => true, :greater_than => 0
|
||||||
|
validates_length_of :description, maximum: 250
|
||||||
|
|
||||||
after_save :update_ordergroup_stats
|
after_save :update_ordergroup_stats
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,10 @@ class User < ActiveRecord::Base
|
||||||
[first_name, last_name].join(" ")
|
[first_name, last_name].join(" ")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def receive_email?
|
||||||
|
settings['messages.sendAsEmail'] == "1" && email.present?
|
||||||
|
end
|
||||||
|
|
||||||
def ordergroup_name
|
def ordergroup_name
|
||||||
ordergroup.name if ordergroup
|
ordergroup.name if ordergroup
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,9 +6,10 @@ class Workgroup < Group
|
||||||
has_many :open_tasks, :class_name => 'Task', :conditions => ['done = ?', false], :order => 'due_date ASC'
|
has_many :open_tasks, :class_name => 'Task', :conditions => ['done = ?', false], :order => 'due_date ASC'
|
||||||
|
|
||||||
validates_presence_of :task_name, :weekday, :task_required_users, :next_weekly_tasks_number,
|
validates_presence_of :task_name, :weekday, :task_required_users, :next_weekly_tasks_number,
|
||||||
:if => :weekly_task
|
:if => :weekly_task
|
||||||
validates_numericality_of :next_weekly_tasks_number, :greater_than => 0, :less_than => 21, :only_integer => true,
|
validates_numericality_of :next_weekly_tasks_number, :greater_than => 0, :less_than => 21, :only_integer => true,
|
||||||
:if => :weekly_task
|
:if => :weekly_task
|
||||||
|
validates_length_of :task_description, maximum: 250
|
||||||
validate :last_admin_on_earth, :on => :update
|
validate :last_admin_on_earth, :on => :update
|
||||||
before_destroy :check_last_admin_group
|
before_destroy :check_last_admin_group
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
- title "Neue Transaktion"
|
- title "Neue Transaktion"
|
||||||
|
|
||||||
|
%p Hier kannst du der Bestellgruppe <b>#{@ordergroup.name}</b> Geld gutschreiben/abziehen.
|
||||||
|
|
||||||
= simple_form_for @financial_transaction, :url => finance_ordergroup_transactions_path(@ordergroup),
|
= simple_form_for @financial_transaction, :url => finance_ordergroup_transactions_path(@ordergroup),
|
||||||
:validate => true do |f|
|
:validate => true do |f|
|
||||||
= f.association :ordergroup
|
= f.hidden_field :ordergroup_id
|
||||||
= f.input :amount
|
= f.input :amount
|
||||||
= f.input :note, :as => :text
|
= f.input :note, :as => :text
|
||||||
= f.submit
|
= f.submit
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
.column_content
|
.column_content
|
||||||
= render :partial => 'shared/group', :locals => { :group => workgroup }
|
= render :partial => 'shared/group', :locals => { :group => workgroup }
|
||||||
%p
|
%p
|
||||||
= link_to "Alle Aufgaben zeigen", :controller => "/tasks", :action => "workgroup", :id => workgroup
|
= link_to "Alle Aufgaben zeigen", workgroup_tasks_path(workgroup_id: workgroup)
|
||||||
|
|
|
|
||||||
= link_to "Mitgliedern eine Nachricht schicken", new_message_path(:message => {:group_id => workgroup.id})
|
= link_to "Mitgliedern eine Nachricht schicken", new_message_path(:message => {:group_id => workgroup.id})
|
||||||
- if workgroup.member?(@current_user)
|
- if workgroup.member?(@current_user)
|
||||||
|
|
|
@ -147,6 +147,6 @@
|
||||||
€
|
€
|
||||||
#order-button
|
#order-button
|
||||||
= submit_tag( "Bestellung speichern", :id => 'submit_button' )
|
= submit_tag( "Bestellung speichern", :id => 'submit_button' )
|
||||||
oder #{link_to "abbrechen", :controller => 'ordering'}
|
oder #{link_to "abbrechen", group_orders_path}
|
||||||
%input#total_balance{:name => "total_balance", :type => "hidden", :value => @ordergroup.account_balance - @group_order.price}/
|
%input#total_balance{:name => "total_balance", :type => "hidden", :value => @ordergroup.account_balance - @group_order.price}/
|
||||||
%input{:name => "version", :type => "hidden", :value => @version}/
|
%input{:name => "version", :type => "hidden", :value => @version}/
|
|
@ -11,7 +11,7 @@
|
||||||
- group_order = order.group_order(@ordergroup) # Get GroupOrder if possible
|
- group_order = order.group_order(@ordergroup) # Get GroupOrder if possible
|
||||||
- order_class = group_order ? "" : "color:grey"
|
- order_class = group_order ? "" : "color:grey"
|
||||||
%tr{:class=> cycle('even', 'odd', :name => 'orders'), :style => order_class}
|
%tr{:class=> cycle('even', 'odd', :name => 'orders'), :style => order_class}
|
||||||
%td= link_to order.name, :action => 'my_order_result', :id => order
|
%td= group_order.present? ? link_to(order.name, group_order_path(group_order)) : order.name
|
||||||
%td= format_time(order.ends)
|
%td= format_time(order.ends)
|
||||||
%td{:class => "currency"}= group_order ? number_to_currency(group_order.price) : "--"
|
%td{:class => "currency"}= group_order ? number_to_currency(group_order.price) : "--"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
- title "Bestellungen der #{@ordergroup.name}"
|
- title "Bestellungen der #{@ordergroup.name}"
|
||||||
%p
|
%p
|
||||||
Siehe hier alle
|
Siehe hier alle
|
||||||
= link_to "laufenden Bestellungen.", ordering_path
|
= link_to "laufenden Bestellungen.", group_orders_path
|
||||||
|
|
||||||
.single_column{:style => "width:50em"}
|
.single_column{:style => "width:50em"}
|
||||||
.box_title
|
.box_title
|
|
@ -15,7 +15,7 @@
|
||||||
Bestellungen
|
Bestellungen
|
||||||
%ul
|
%ul
|
||||||
- if has_ordergroup
|
- if has_ordergroup
|
||||||
%li= link_to "Bestellübersicht", :controller => "ordering"
|
%li= link_to "Bestellübersicht", group_orders_path
|
||||||
- if has_orders_role
|
- if has_orders_role
|
||||||
%li= link_to "Bestellungen beenden", :controller => 'orders'
|
%li= link_to "Bestellungen beenden", :controller => 'orders'
|
||||||
// Articles
|
// Articles
|
||||||
|
|
|
@ -24,10 +24,10 @@
|
||||||
{ :name => "Alle Seiten", :url => all_pages_path }
|
{ :name => "Alle Seiten", :url => all_pages_path }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{ :name => "Bestellungen", :url => u.ordergroup ? ordering_path : orders_path,
|
{ :name => "Bestellungen", :url => u.ordergroup ? group_orders_path : orders_path,
|
||||||
:active => ["orders", "ordering"],
|
:active => ["orders", "ordering"],
|
||||||
:subnav => [
|
:subnav => [
|
||||||
{ :name => "Bestellen!", :url => ordering_path },
|
{ :name => "Bestellen!", :url => group_orders_path },
|
||||||
{ :name => "Meine Bestellungen", :url => archive_group_orders_path },
|
{ :name => "Meine Bestellungen", :url => archive_group_orders_path },
|
||||||
{ :name => "Bestellverwaltung", :url => orders_path, :access_denied? => (!u.role_orders?) }
|
{ :name => "Bestellverwaltung", :url => orders_path, :access_denied? => (!u.role_orders?) }
|
||||||
]
|
]
|
||||||
|
|
|
@ -5,12 +5,7 @@
|
||||||
Dazu musst hier die E-Mail-Adresse eingeben, mit der Du in der FoodSoft angemeldet bist.
|
Dazu musst hier die E-Mail-Adresse eingeben, mit der Du in der FoodSoft angemeldet bist.
|
||||||
Du erhälst dann eine E-Mail mit weiteren Instruktionen.
|
Du erhälst dann eine E-Mail mit weiteren Instruktionen.
|
||||||
|
|
||||||
.edit_form{:style => "width:25em"}
|
= simple_form_for User.new, url: {action: 'reset_password'} do |form|
|
||||||
- form_tag(:action => 'reset_password') do
|
= form.input :email
|
||||||
%p
|
= form.submit "Neues Passwort anfordern"
|
||||||
E-Mail:
|
= link_to "Abbrechen", :back
|
||||||
%br/
|
|
||||||
= text_field 'login', 'email'
|
|
||||||
= submit_tag 'Neues Passwort anfordern'
|
|
||||||
|
|
|
||||||
= link_to 'Abbrechen', login_path
|
|
|
@ -1,16 +1,6 @@
|
||||||
- title "Neues Passwort"
|
- title "Neues Passwort"
|
||||||
%p=h "Bitte neues Passwort für #{@user.nick} eingeben."
|
%p=h "Bitte neues Passwort für #{@user.nick} eingeben."
|
||||||
.edit_form{:style => "width:25em"}
|
= simple_form_for @user, :url => {:action => 'update_password', :id => @user.id, :token => @user.reset_password_token} do |form|
|
||||||
- form_for @user, :url => {:action => 'update_password', :id => @user.id, :token => @user.reset_password_token} do |form|
|
= form.input :password
|
||||||
= form.error_messages :header_message => ""
|
= form.input :password_confirmation
|
||||||
%p
|
= form.submit
|
||||||
Neues Passwort
|
|
||||||
%br/
|
|
||||||
= form.password_field :password
|
|
||||||
%p
|
|
||||||
Passwort wiederholen
|
|
||||||
%br/
|
|
||||||
= form.password_field :password_confirmation
|
|
||||||
= form.submit 'Speichern'
|
|
||||||
|
|
|
||||||
= link_to 'Abbrechen', login_path
|
|
|
@ -1,9 +1,3 @@
|
||||||
Foodsoft-Nachricht
|
|
||||||
|
|
||||||
Von: <%= @message.sender.nick %>
|
|
||||||
|
|
||||||
======================================================================
|
|
||||||
|
|
||||||
<%= @message.body %>
|
<%= @message.body %>
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
|
|
|
@ -2,7 +2,7 @@ Hallo!
|
||||||
|
|
||||||
<%= @invite.user.first_name %> <%= @invite.user.last_name %> (<%= @invite.user.email %>) hat dich in die Gruppe "<%= @invite.group.name %>" eingeladen.
|
<%= @invite.user.first_name %> <%= @invite.user.last_name %> (<%= @invite.user.email %>) hat dich in die Gruppe "<%= @invite.group.name %>" eingeladen.
|
||||||
Um die Einladung anzunehmen und der Foodcoop beizutreten, gehe zu: <%= @link %>
|
Um die Einladung anzunehmen und der Foodcoop beizutreten, gehe zu: <%= @link %>
|
||||||
Dieser Link kann nur einmal aufgerufen werden und ist nur bis <%= @invite.expires_at.strftime('%A den %d.%m.%Y um %H:%M') %> gültig.
|
Dieser Link kann nur einmal aufgerufen werden und ist nur bis <%= I18n.l @invite.expires_at %> gültig.
|
||||||
|
|
||||||
Grüße sendet die Foodsoft!
|
Grüße sendet die Foodsoft!
|
||||||
|
|
||||||
|
@ -12,6 +12,6 @@ Hi!
|
||||||
|
|
||||||
<%= @invite.user.first_name %> <%= @invite.user.last_name %> (<%= @invite.user.email %>) has invited you to join the group "<%= @invite.group.name %>".
|
<%= @invite.user.first_name %> <%= @invite.user.last_name %> (<%= @invite.user.email %>) has invited you to join the group "<%= @invite.group.name %>".
|
||||||
To accept the invitation and to join the foodcoop please follow this link: <%= @link %>
|
To accept the invitation and to join the foodcoop please follow this link: <%= @link %>
|
||||||
This link works only once and expires on <%= @invite.expires_at.strftime('%A den %d.%m.%Y um %H:%M') %>.
|
This link works only once and expires on <%= I18n.l @invite.expires_at, locale: :en %>.
|
||||||
|
|
||||||
Greetings, your FoodSoft Team!
|
Greetings, your FoodSoft Team!
|
|
@ -1,11 +0,0 @@
|
||||||
Liebe(r) <%= @user.first_name %>,
|
|
||||||
|
|
||||||
Der Job <%= @task.name -%> Deiner Arbeitsgruppe ist am <%= @task.due_date.strftime("%d. %b") -%> fällig
|
|
||||||
und es fehlen noch Mitstreiterinnen!
|
|
||||||
|
|
||||||
Sofern Du Dich noch nicht für diese Aufgabe eingetragen hast ist das jetzt die Chance:
|
|
||||||
<%= @task_url %>
|
|
||||||
|
|
||||||
--
|
|
||||||
Deine Aufgaben: <%= url_for(:controller => "home", :actions => "user") %>
|
|
||||||
|
|
11
app/views/mailer/not_enough_users_assigned.text.erb
Normal file
11
app/views/mailer/not_enough_users_assigned.text.erb
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Liebe(r) <%= @user.first_name %>,
|
||||||
|
|
||||||
|
Der Job '<%= @task.name -%>' Deiner Arbeitsgruppe ist am <%= I18n.l @task.due_date, format: "%d. %b" %> fällig
|
||||||
|
und es fehlen noch Mitstreiterinnen!
|
||||||
|
|
||||||
|
Sofern Du Dich noch nicht für diese Aufgabe eingetragen hast ist das jetzt die Chance:
|
||||||
|
<%= workgroup_tasks_url(workgroup_id: task.workgroup_id) %>
|
||||||
|
|
||||||
|
--
|
||||||
|
Deine Aufgaben: <%= user_tasks_url %>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Liebe <%= @group_order.ordergroup.name %>,
|
Liebe <%= @group_order.ordergroup.name %>,
|
||||||
|
|
||||||
die Bestellung für "<%= @order.name %>" wurde am <%= @order.ends.strftime('%d.%m.%Y um %H:%M') %> von <%= @order.updated_by.nick %> beendet.
|
die Bestellung für "<%= @order.name %>" wurde am <%= I18n.l @order.ends %> von <%= @order.updated_by.nick %> beendet.
|
||||||
|
|
||||||
Für Euch wurden die folgenden Artikel bestellt:
|
Für Euch wurden die folgenden Artikel bestellt:
|
||||||
<% for group_order_article in @group_order.group_order_articles.ordered.all(:include => :order_article)
|
<% for group_order_article in @group_order.group_order_articles.ordered.all(:include => :order_article)
|
||||||
|
@ -9,6 +9,6 @@ Für Euch wurden die folgenden Artikel bestellt:
|
||||||
<% end -%>
|
<% end -%>
|
||||||
Gesamtpreis: <%= @group_order.price %>
|
Gesamtpreis: <%= @group_order.price %>
|
||||||
|
|
||||||
Bestellung online einsehen: <%= url_for(:controller => "ordering", :action => "my_order_result", :id => @order.id) %>
|
Bestellung online einsehen: <%= group_order_url(@group_order) %>
|
||||||
|
|
||||||
Viele Grüße von <%= Foodsoft.config[:name] %>
|
Viele Grüße von <%= Foodsoft.config[:name] %>
|
|
@ -2,7 +2,7 @@ Hallo <%= @user.nick %>,
|
||||||
|
|
||||||
du (oder jemand anderes) hat auf der FoodSoft-Website ein neues Passwort angefordert.
|
du (oder jemand anderes) hat auf der FoodSoft-Website ein neues Passwort angefordert.
|
||||||
Um ein neues Passwort einzugeben, gehe zu: <%= @link %>
|
Um ein neues Passwort einzugeben, gehe zu: <%= @link %>
|
||||||
Dieser Link kann nur einmal aufgerufen werden und läuft am <%= @user.reset_password_expires.strftime('%A (%d.%m.%Y %H:%M)') %> ab.
|
Dieser Link kann nur einmal aufgerufen werden und läuft am <%= I18n.l @user.reset_password_expires %> ab.
|
||||||
Wenn du das Passwort nicht ändern möchtest oder diese Email nicht ausgelöst hast, brauchst du nichts zu tun. Dein bisheriges Passwort wurde nicht geändert.
|
Wenn du das Passwort nicht ändern möchtest oder diese Email nicht ausgelöst hast, brauchst du nichts zu tun. Dein bisheriges Passwort wurde nicht geändert.
|
||||||
|
|
||||||
Grüße sendet die Foodsoft! :)
|
Grüße sendet die Foodsoft! :)
|
||||||
|
@ -12,7 +12,7 @@ Grüße sendet die Foodsoft! :)
|
||||||
Hi <%= @user.nick %>,
|
Hi <%= @user.nick %>,
|
||||||
you have (or someone else has) requested a new password.
|
you have (or someone else has) requested a new password.
|
||||||
In order to choose a new password follow this link: <%= @link %>
|
In order to choose a new password follow this link: <%= @link %>
|
||||||
This link works only once and expires on <%= @user.reset_password_expires.strftime('%A (%d.%m.%Y %H:%M)') %>.
|
This link works only once and expires on <%= I18n.l @user.reset_password_expires, locale: :en %>.
|
||||||
If you don't want to change your password, just ignore this message. Your password hasn't been changed yet.
|
If you don't want to change your password, just ignore this message. Your password hasn't been changed yet.
|
||||||
|
|
||||||
Greetings, your FoodSoft Team!
|
Greetings, your FoodSoft Team!
|
|
@ -1,16 +0,0 @@
|
||||||
Liebe(r) <%= @user.name %>,
|
|
||||||
|
|
||||||
Du bist für "<%= @task.name -%>" eingetragen. Die Aufgabe ist morgen (<%= @task.due_date.strftime("%d. %b") -%>) fällig!
|
|
||||||
|
|
||||||
<% if @user.next_tasks.size > 1 -%>
|
|
||||||
Aufgaben für die nächste Woche:
|
|
||||||
<% for next_task in @user.next_tasks -%>
|
|
||||||
<% unless next_task == @task -%>
|
|
||||||
* <%= next_task.due_date.strftime("%d.%m.") -%> <%= next_task.name %>
|
|
||||||
<% end -%>
|
|
||||||
<% end -%>
|
|
||||||
<% end -%>
|
|
||||||
|
|
||||||
Meine Aufgaben: <%= url_for(:controller => "home", :actions => "user") %>
|
|
||||||
|
|
||||||
Viele Grüße von <%= Foodsoft.config[:name] %>
|
|
15
app/views/mailer/upcoming_tasks.text.erb
Normal file
15
app/views/mailer/upcoming_tasks.text.erb
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
Liebe(r) <%= @user.name %>,
|
||||||
|
|
||||||
|
Du bist für "<%= @task.name -%>" eingetragen. Die Aufgabe ist morgen (<%= I18n.l @task.due_date, format: "%d. %b" %>) fällig!
|
||||||
|
|
||||||
|
<% if @user.next_tasks.size > 0 %>
|
||||||
|
Aufgaben für die nächste Woche:
|
||||||
|
<% for next_task in @user.next_tasks -%>
|
||||||
|
<% next if next_task == @task -%>
|
||||||
|
* <%= I18n.l next_task.due_date, format: "%d. %b" -%> <%= next_task.name %>
|
||||||
|
<% end -%>
|
||||||
|
<% end -%>
|
||||||
|
|
||||||
|
Meine Aufgaben: <%= user_tasks_url %>
|
||||||
|
|
||||||
|
Viele Grüße von <%= Foodsoft.config[:name] %>
|
|
@ -11,7 +11,7 @@
|
||||||
= f.input :task_name
|
= f.input :task_name
|
||||||
= f.input :task_required_users
|
= f.input :task_required_users
|
||||||
= f.input :task_duration, :as => :select, :collection => (1..3)
|
= f.input :task_duration, :as => :select, :collection => (1..3)
|
||||||
= f.input :task_description
|
= f.input :task_description, as: :text, input_html: {rows: 10}
|
||||||
= f.input :next_weekly_tasks_number
|
= f.input :next_weekly_tasks_number
|
||||||
|
|
||||||
= f.input :user_tokens, :as => :string, :input_html => { 'data-pre' => f.object.users.map { |u| u.token_attributes }.to_json }
|
= f.input :user_tokens, :as => :string, :input_html => { 'data-pre' => f.object.users.map { |u| u.token_attributes }.to_json }
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
|
|
||||||
= simple_form_for @task do |f|
|
= simple_form_for @task do |f|
|
||||||
= f.input :name
|
= f.input :name
|
||||||
= f.input :description
|
= f.input :description, as: :text, input_html: {rows: 10}
|
||||||
= f.input :duration, :as => :select, :collection => 1..3
|
= f.input :duration, :as => :select, :collection => 1..3
|
||||||
= f.input :user_list, :as => :string, :input_html => { 'data-pre' => @task.users.map { |u| u.token_attributes }.to_json }
|
= f.input :user_list, :as => :string, :input_html => { 'data-pre' => @task.users.map { |u| u.token_attributes }.to_json }
|
||||||
= f.input :required_users
|
= f.input :required_users
|
||||||
|
|
|
@ -16,4 +16,4 @@
|
||||||
Gruppenaufgaben
|
Gruppenaufgaben
|
||||||
%ul
|
%ul
|
||||||
- for group in Workgroup.all
|
- for group in Workgroup.all
|
||||||
%li= link_to group.name, :controller => 'tasks', :action => "workgroup", :id => group
|
%li= link_to group.name, workgroup_tasks_path(workgroup_id: group.id)
|
|
@ -23,7 +23,7 @@
|
||||||
%td Arbeitsgruppe
|
%td Arbeitsgruppe
|
||||||
%td
|
%td
|
||||||
- if @task.workgroup
|
- if @task.workgroup
|
||||||
= link_to @task.workgroup.name, :action => "workgroup", :id => @task.workgroup
|
= link_to @task.workgroup.name, workgroup_tasks_path(workgroup_id: @task.workgroup_id)
|
||||||
|
|
||||||
%tr
|
%tr
|
||||||
%td{:colspan => "2"}
|
%td{:colspan => "2"}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
%h2 Wöchentliche Aufgaben verwalten
|
%h2 Wöchentliche Aufgaben verwalten
|
||||||
.column_content
|
.column_content
|
||||||
- if @group.weekly_task
|
- if @group.weekly_task
|
||||||
%p= "Jeden <b>#{weekday(@group.weekday)}</b> hat diese Arbeitsgruppe folgenden Job: <b>#{@group.task_name}</b>"
|
%p Jeden <b>#{weekday(@group.weekday)}</b> hat diese Arbeitsgruppe folgenden Job: <b>#{@group.task_name}</b>
|
||||||
%p Die Wochenaufgaben werden von der Foodsoft automatisch erstellt. Eintragen müsst Ihr Euch aber selber.
|
%p Die Wochenaufgaben werden von der Foodsoft automatisch erstellt. Eintragen müsst Ihr Euch aber selber.
|
||||||
- else
|
- else
|
||||||
Noch keine Wochenaufgaben angelegt.
|
Noch keine Wochenaufgaben angelegt.
|
||||||
|
|
|
@ -44,10 +44,9 @@ Foodsoft::Application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :group_orders, :controller => 'ordering', :path => 'ordering' do
|
resources :group_orders do
|
||||||
get :archive, :on => :collection
|
get :archive, :on => :collection
|
||||||
end
|
end
|
||||||
match '/ordering' => 'ordering#index', :as => 'ordering'
|
|
||||||
|
|
||||||
resources :order_comments, :only => [:new, :create]
|
resources :order_comments, :only => [:new, :create]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue