crossey_app/app/controllers/admin/newsletters_controller.rb
2013-09-30 17:42:55 +02:00

144 lines
3.3 KiB
Ruby
Executable File

# -*- encoding : utf-8 -*-
class Admin::NewslettersController < ApplicationController
layout "admin"
# require_permission 'newsletter.show'
# require_permission 'newsletter.add', :only => [:newsletter_new, :newsletter_create]
# require_permission 'newsletter.edit', :only => [:newsletter_edit, :newsletter_update]
# require_permission 'newsletter.delete', :only => [:newsletter_del]
# require_permission 'newsletter.send', :only => [:send_test, :send_newsletter, :select_recipients]
def index
@h2 = "Lister les newsletters éxistantes"
@newsletter= Newsletter.find(:all, :order => "created_at DESC")
end
def new
@h2 = "Creer une newsletter"
@newsletter = Newsletter.new
end
def create
@h2 = "Creer une newsletter"
@newsletter = Newsletter.new(params.require(:newsletter).permit!)
if @newsletter.save
redirect_to :action => :index
else
render :action => :new
end
end
def edit
@h2 = "Editer une newsletter"
@newsletter = Newsletter.find(params[:id])
end
def update
@h2 = "Editer une newsletter"
@newsletter = Newsletter.find(params[:id])
if @newsletter.update_attributes(params.require(:newsletter).permit!)
flash[:notice]= "La newsletter à été mise à jour"
redirect_to :action => :index
else
render :action => :edit
end
end
def show
@newsletter = Newsletter.find(params[:id])
@options = {}
render :layout => "mail"
end
def destroy
@newsletter = Newsletter.find(params[:id])
@newsletter.destroy
flash[:notice]= "La newsletter à été supprimé avec succès"
redirect_to :action => :index
end
def send_test
@newsletter = Newsletter.find(params[:id])
NewsletterMails.newsletter(@newsletter, params[:email]).deliver
flash[:notice]= "La newsletter a bien été envoyée à l'email de test"
redirect_to :action => :index
end
def send_helper(newsletter, email, options = nil)
begin
NewsletterMails.newsletter(newsletter, email, options).deliver if email and email != ""
rescue
@errors << "<span class'error'>#{p.email}</span>"
end
end
def send_newsletter
@errors = []
if params[:recipients_confirmed]
@newsletter = Newsletter.find(params[:id])
params[:recipients_confirmed].each do |email|
if Inscrit.find_by_email(email)
send_helper(@newsletter, email, unsuscrib_public_inscrit_url(Inscrit.find_by_email(email).verify_key))
else
send_helper(@newsletter, email)
end
end
flash[:notice]= "La newsletter a bien été envoyée à toutes les adresses mail séléctionnée"
redirect_to :action => :index
end
end
def select_recipients
@newsletter = Newsletter.find(params[:id])
if params[:recipients]
@recipients = []
if params[:recipients][:inscrits]
Inscrit.all(:conditions => {:enabled => true}).each do |a|
@recipients << a.email
end
end
if params[:recipients][:entreprises]
Entreprise.all().each do |a|
@recipients << a.email
end
end
@recipients = @recipients.uniq.sort
end
end
end