This commit is contained in:
Nicolas Bally 2017-01-05 11:20:16 +01:00
parent 462d328cb5
commit 1a045e278a
60 changed files with 794 additions and 746 deletions

View File

@ -845,3 +845,73 @@ h1{
}
#reservations_index_block{
table{
width:100%;
}
.top{
width:100%;
td{
border:0px;
}
}
.next{
text-align:right;
}
#calendar{
table{
border-collapse:collapse;
td{
border:1px solid black;
padding:0px;
.day{
position:relative;
.date{
position:absolute;
font-size:40px;
top:25px;
right:10px;
color:white;
}
.am, .pm{
text-align:left;
padding:20px;
&.true{
background:#ea5454;
}
&.false{
background:#9bbb56;
}
}
}
}
}
}
}

View File

@ -560,5 +560,73 @@ cursor:pointer
}
#reservations_index_block{
table{
width:100%;
}
.top{
width:100%;
td{
border:0px;
}
}
.next{
text-align:right;
}
#calendar{
table{
border-collapse:collapse;
td{
border:1px solid black;
padding:0px;
.day{
position:relative;
.date{
position:absolute;
font-size:40px;
top:25px;
right:10px;
color:white;
}
.am, .pm{
text-align:left;
padding:20px;
&.true{
background:#ea5454;
}
&.false{
background:#9bbb56;
}
}
}
}
}
}
}

285
app/controllers/admin/newsletters_controller.rb Executable file → Normal file
View File

@ -1,183 +1,136 @@
# -*- encoding : utf-8 -*-
class Admin::NewslettersController < ApplicationController
layout "admin"
before_filter :auth_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 history_detail
@archive_newsletter = ArchiveNewsletter.find(params[:id])
@newsletter = @archive_newsletter.newsletter
end
def history
@newsletter = Newsletter.find(params[:id])
end
def index
@h2 = "Liste des newsletters "
per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 15
page = (params[:page] and params[:page] != "") ? params[:page] : 1
@newsletter= Newsletter.order("created_at DESC").page(page).per(per_page)
end
def new
@h2 = "Creer une newsletter"
@newsletter = Newsletter.new
render :layout => false
end
def create
@h2 = "Creer une newsletter"
@newsletter = Newsletter.new(params.require(:newsletter).permit!)
if @newsletter.save
per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 15
page = (params[:page] and params[:page] != "") ? params[:page] : 1
@newsletters= Newsletter.order("created_at DESC").page(page).per(per_page)
#redirect_to :action => :index
else
render :action => :new
end
end
layout "admin"
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"
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 index
@newsletters = Newsletter.order('created_at DESC')
if request.xhr?
render :layout => false
end
end
def send_test
@errors = []
@newsletter = Newsletter.find(params[:id])
#NewsletterMails.newsletter(@newsletter, params[:email]).deliver
send_helper @newsletter, params[:email]
flash[:notice]= "La newsletter a bien été envoyée à l'email de test"
redirect_to :action => :index
end
def send_helper(newsletter, email, options = {})
if email and email != ""
begin
@mail_archive = MailArchive.new
@mail_archive.archive_newsletter_id = @archive_newsletter.id if @archive_newsletter
@mail_archive.email = email
@mail_archive.newsletter_id = newsletter.id
@mail_archive.sheet = options[:sheet]
@mail_archive.person = options[:person]
@mail_archive.save
options = options.merge({:mail_archive => @mail_archive})
NewsletterMails.newsletter(newsletter, email, options).deliver if email and email != ""
rescue
@errors << "<span class'error'>#{email}</span>"
end
end
end
def new
def send_newsletter
@errors = []
@newsletter = Newsletter.find(params[:id])
@archive_newsletter = ArchiveNewsletter.create :newsletter_id => @newsletter.id, :title => @newsletter.title, :content => @newsletter.content, :email_from => Newsletter::EMAIL_TEXTES[@newsletter.email_from][0].to_s+ " <#{@newsletter.email_from}>"
if params[:confirmed_groups]
PeopleNewsgroup.all(:conditions => {:newsgroup_id => params[:confirmed_groups]}).each do |pn|
if pn.person
p =pn.person
send_helper(@newsletter, p.email, :people_newsgroup => pn, :person => p, :sheet => p.sheet) if p.newsletter
end
end
elsif params[:confirmed_sheets]
@newsletter = Newsletter.new()
end
def create
@sheets = Sheet.find(:all, :conditions => {:id => params[:confirmed_sheets]})
@persons = Person.find(:all, :conditions => {:sheet_id => params[:confirmed_sheets], :newsletter => true})
@persons.each do |p|
send_helper(@newsletter, p.email, :person => p, :sheet => p.sheet)
end
@sheets.each do |s|
send_helper(@newsletter, s.other_mail, :sheet => s)
end
@newsletter = Newsletter.new(params.require(:newsletter).permit!)
end
flash[:notice]= "La newsletter a bien été envoyée à toutes les adresses mail séléctionnée"
redirect_to :action => :index
end
def select_recipients
@newsletter = Newsletter.find(params[:id])
if params[:sheet_filter]
@sheets = Sheet.search_by_params(params[:sheet_filter])
end
end
puts params[:newsletter][:subject]
if @newsletter.save
flash[:notice] = "La newsletter à bien été créé."
@newsletters = Newsletter.order('created_at DESC')
respond_to do |format|
format.js
format.html{ redirect_to admin_newsletters_path}
end
else
respond_to do |format|
format.js { render :action => :new}
end
end
end
def edit
@newsletter = Newsletter.find(params[:id])
end
def update
@newsletter = Newsletter.find(params[:id])
if @newsletter.update_attributes(params.require(:newsletter).permit!)
flash[:notice] = "La newsletter à bien été modifié."
respond_to do |format|
format.html { redirect_to(admin_newsletters_path()) }
format.js
end
else
respond_to do |format|
format.html { render :action => :edit}
format.js { render :action => :edit}
end
end
end
def destroy
@newsletter = Newsletter.find(params[:id])
@newsletter.destroy
flash[:notice] = "La newsletter à bien été supprimé."
end
def send_test
@newsletter = Newsletter.find(params[:id])
@email = params[:email].to_s
General.send_newsletter(@email,@newsletter).deliver
redirect_to(admin_newsletters_path, :notice => "La newsletter a bien été envoyée à l'email de test")
end
def select_recipients
@newsletter = Newsletter.find(params[:id])
@studients = Registrant.where(:enabled => true).all
respond_to do |format|
format.html
format.js
end
end
def send_newsletter
@newsletter = Newsletter.find(params[:id])
@i = 0
if params[:confirmed_ids]
@registrants = Registrant.find( params[:confirmed_ids])
@registrants.each do |registrant|
General.send_newsletter(registrant,@newsletter).deliver
@i +=1
end
end
@newsletter.sended = true
@newsletter.send_at = Time.now
@newsletter.save
redirect_to(admin_newsletters_path, :notice => "La newsletter a la séléction d'emails ("+@i.to_s+" envois.)")
end
end

View File

@ -0,0 +1,94 @@
# -*- encoding : utf-8 -*-
class Admin::RegistrantsController < ApplicationController
before_filter :auth_admin
layout "admin"
before_filter :find_registrants
def index
end
def import
@file = File.open(Rails.root.join('contacts.csv')).read
r = Regexp.new(/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b/)
@emails = @file.scan(r).uniq
@emails.each do |mail|
Registrant.create(:enabled => true, :email => mail)
end
end
def cible
@registrants = Registrant.all
render :layout => false
end
def new
@registrant = Registrant.new
respond_to do |format|
format.js
end
end
def edit
@registrant = Registrant.find(params[:id])
end
def create
@registrant = Registrant.new(params.require(:registrant).permit!)
respond_to do |format|
if @registrant.save
flash[:notice] = "Le lien à été ajouté avec succès."
self.find_registrants
format.js
else
format.html { render :action => "new" }
format.js { render :action => "new" }
end
end
end
def update
@registrant = Registrant.find(params[:id])
respond_to do |format|
if @registrant.update_attributes(params.require(:registrant).permit!)
format.js
else
format.js { render :action => "edit" }
end
end
end
def destroy
@registrant = Registrant.find(params[:id])
@registrant.destroy
respond_to do |format|
format.js
end
end
def find_registrants
@registrants = Registrant.all
end
end

View File

@ -2,6 +2,7 @@
# -*- encoding : utf-8 -*-
class Admin::ReservationsController < ApplicationController
before_filter :auth_admin
layout "admin"
@ -53,7 +54,7 @@ class Admin::ReservationsController < ApplicationController
def create
@reservation = Reservation.new(params[:reservation])
@reservation = Reservation.new(params.require(:reservation).permit!)
@date = Date.parse("#{params[:year]}/#{params[:month]}").beginning_of_month

View File

@ -1,76 +0,0 @@
# -*- encoding : utf-8 -*-
class Public::LabelProduitsController < ApplicationController
layout "public"
def importold
require 'roo'
@xlsx = Roo::Spreadsheet.open("#{Rails.root}/import_label/label.xlsx")
#xlsx = Roo::Excelx.new("./new_prices.xlsx")
# Use the extension option if the extension is ambiguous.
#xlsx = Roo::Spreadsheet.open('./rails_temp_upload', extension: :xlsx)
@xlsx.info
@sheet = @xlsx.sheet(0)
end
def index
per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 50
page = (params[:page] and params[:page] != "") ? params[:page] : 1
@label_produits = LabelProduit.order("label_produits.name ASC")
if params[:search]
if params[:label_category_id] and params[:label_category_id] != ""
@label_produits = @label_produits.where(:label_category_id => params[:label_category_id])
end
if params[:couleur_logo] and params[:couleur_logo] != ""
@label_produits = @label_produits.where(:couleur_logo => params[:couleur_logo])
end
if params[:label_marque_id] and params[:label_marque_id] != ""
@label_produits = @label_produits.where(:label_marque_id => params[:label_marque_id])
end
if params[:label_famille_id] and params[:label_famille_id] != ""
@label_produits = @label_produits.joins(:label_category).where("label_categories.label_famille_id = ?", params[:label_famille_id])
end
if params[:label_entreprise_id] and params[:label_entreprise_id] != ""
@label_produits = @label_produits.joins(:label_marque).where("label_marques.label_entreprise_id = ?", params[:label_entreprise_id])
end
if params[:label_distributeur_id] and params[:label_distributeur_id] != ""
@label_produits = @label_produits.joins(:label_distributeurs).where("label_distributeurs.id = ?", params[:label_distributeur_id])
end
if params[:q]
@label_produits = @label_produits.joins(:label_marque).where("label_produits.name LIKE ? or label_marques.name LIKE ? ", "%"+params[:q].to_s+"%", "%"+params[:q].to_s+"%" )
end
if params[:label_marque_id] and params[:label_marque_id] != ""
@label_marque = LabelMarque.find(params[:label_marque_id])
end
else
@label_produits = LabelProduit.order("name ASC")
end
@label_produits = @label_produits.order("label_produits.name ASC").page(page).per(per_page)
end
end

View File

@ -8,10 +8,10 @@ class Public::RegistrantsController < ApplicationController
def create
@registrant = Registrant.new(params.require(:registrant).permit(:surname, :email))
@registrant = Registrant.new(params.require(:registrant).permit!)
test = Registrant.find_by_email(@registrant.email)
if test and !test.enabled
if test
@registrant = test
General.confirm_email(@registrant).deliver
else
@ -24,13 +24,13 @@ class Public::RegistrantsController < ApplicationController
end
end
def destroy_e
def edit
@registrant = Registrant.find_by_token(params[:id])
if @registrant
@registrant.destroy
@message = "<p>Vous avez bien été désinscrit.</p>"
redirect_to root_path, :notice => "L'adresse mail #{@registrant.email} à bien été supprimée de notre fichier."
else
@message = "Votre adresse mail ne figure pas dans notre fichier."
redirect_to root_path, :notice => "Votre adresse mail ne figure pas dans notre fichier."
end
end
@ -39,14 +39,11 @@ class Public::RegistrantsController < ApplicationController
if @registrant
@registrant.enabled = true
@registrant.save
@message = "<p>Merci, votre inscription a bien été prise en compte.</p> "
redirect_to root_path, :notice => "Merci ! Votre inscription est confirmée, vous recevrez désormais notre newsletter !"
else
@message = "Votre adresse mail ne figure pas dans le fichier."
redirect_to root_path, :notice => "Votre adresse mail ne figure pas dans notre fichier."
end
redirect_to "/"
end
end
end

View File

@ -1,8 +1,22 @@
class General < ActionMailer::Base
default :from => "One Voice <info@test.com>"
default :from => "ballalama <ballalama.reaumont@orange.fr>"
self.default_url_options = {:host => HOSTNAME}
def send_newsletter(email,newsletter )
@newsletter = newsletter
if email.kind_of?(String)
email = email
else
@registrant = email
email = email.email
end
mail(:to => email, :subject => @newsletter.subject) do |format|
format.html { render :action => "send_newsletter"}
end
end
def confirm_email(registrant)
@registrant = registrant

View File

@ -5,13 +5,13 @@ class Block < ActiveRecord::Base
TitleContent: "Titre",
TextContent: "Texte",
ImageContent: "Image",
#LinkContent:"Lien",
#BreakContent: "Séparation",
LinkContent:"Lien",
BreakContent: "Séparation",
HtmlContent: "Code HTML",
#DownloadContent: "Téléchargement",
DownloadContent: "Téléchargement",
GalleryContent: "Galerie",
#DynamicContent: "Contenu dynamique",
#TableContent: "Tableau",
DynamicContent: "Contenu dynamique",
TableContent: "Tableau",
BlockContent: "Bloc",
MapContent: "Plan",
#QuoteContent: "Citation",

View File

@ -4,7 +4,8 @@ class DynamicContent < ActiveRecord::Base
belongs_to :item
NAMES = {"realisations" => "Liste des réalisations"}
NAMES = { "newsletter_form" => "Formulaire Newsletter","reservations" => "Tableau des réservations"}
def self.picto
"cog"

View File

@ -1,14 +0,0 @@
=form_for [:admin, @newsletter], :remote => true do |f|
.content
%p
Sujet :
=f.text_field :subject, :class => "inputText"
%p
slig:
=f.text_field :slug, :class => "inputText"
.actions
=f.submit "sauvegarder", :class => "btn btn-primary"

View File

@ -0,0 +1,13 @@
= semantic_form_for [:admin,@newsletter], :remote => true do |form|
.content
= form.inputs do
= form.input :subject, :label => "Sujet :"
.actions
= form.submit "Sauvegarder"

View File

@ -1,7 +0,0 @@
%tr
%td
= newsletter.subject
%td
=link_to public_newsletter_url(newsletter.slug), public_newsletter_path(newsletter.slug)

View File

@ -0,0 +1,14 @@
%tr#newsletter_row.newsletter_row{:id => newsletter.id}
%td=newsletter.subject
%td=l newsletter.send_at if newsletter.send_at?
%td
=form_tag send_test_admin_newsletter_path(newsletter) do
= text_field_tag :email,"", :style => "width:120px;"
= submit_tag "Envoyer un email de test", :class => "lien"
%td= link_to "Envoyer à une sélection d'inscrits", select_recipients_admin_newsletter_path(newsletter), :class => "button"
%td.actions
= link_to i(:"trash-o"), [:admin, newsletter], :confirm => 'Voulez-vous vraiment supprimer cet newsletter ?', :method => :delete, :remote => true
= link_to i(:pencil), edit_admin_newsletter_path(newsletter)

View File

@ -0,0 +1,7 @@
%tr
%td=check_box_tag "confirmed_ids[]", select_line.id,true, :id => "confirmed_ids_"+select_line.id.to_s
%td=select_line.name
%td=select_line.surname
%td=select_line.email

View File

@ -1,16 +1,9 @@
-if @sheets
=form_tag send_newsletter_admin_newsletter_path(params[:id]) do
.badge.badge-success
=@sheets.size
fiches trouvées
=submit_tag "Envoyer la newsletter à toutes les adresses de ces fiches", :class => "btn btn-danger"
%table#sheets_checkboxs.table.table-striped
-@sheets.sort{|u,v| ((u.person.surname if u.person) || u.corporate).to_s <=>(( v.person.surname if v.person )|| v.corporate).to_s}.each do |sheet|
%tr
%td
=check_box_tag "confirmed_sheets[]", sheet.id,true, :id => "confirmed_sheets_"+sheet.id.to_s
%label{:for => "confirmed_sheets_"+sheet.id.to_s, :style => "display:inline;"}=(sheet.person.name if sheet.person and (!sheet.corporate or sheet.corporate == "")) || sheet.corporate
=form_tag send_newsletter_admin_newsletter_path(@newsletter) do
#sheets_checkboxs
%table.QI_table_alternate_alt1
=render :partial => "select_line", :collection => @studients
%br
%br
=submit_tag "Envoyer la newsletter à toutes les inscrits"
%br
%br

View File

@ -0,0 +1,6 @@
#newsletter_show.QI_background_middle.QI_padding_small
%table
%tr
%td Sujet :
%td=@newsletter.subject

View File

@ -1,4 +1,3 @@
$('#newsletters').html("<%= escape_javascript(render(@newsletters))%>");
close_pane_hover();
$('#newsletters').html("<%= escape_javascript(render(@newsletters))%>");
<%= flash_js %>

View File

@ -0,0 +1,2 @@
$('#newsletter_row_<%=@newsletter.id%>').remove();
<%= flash_js %>

122
app/views/admin/newsletters/edit.html.haml Executable file → Normal file
View File

@ -1,24 +1,33 @@
-if @newsletter.block
#toolbar-text
%div{:style => "margin-right:330px;margin-top:45px;"}
.newsletter_block_edit
#menu_item_block_edit
=render :partial => "admin/blocks/block", :locals => {:block => @newsletter.block, :sortable => true}
#toolbar-text
#menu_item_block_edit{:style => "margin-right:330px;margin-top:45px;"}
%br
%br
%br
%br
%br
%br
%br
%br
%br
%br
%br
#menu_item_inspector_container
%h2
=render :partial => "admin/blocks/block", :locals => {:block => @newsletter.block, :sortable => true}
%br
%br
%br
%br
%br
%br
%br
%br
%br
%br
%br
#menu_item_inspector_container
@ -26,60 +35,59 @@
#menu_item_informations
%h4
Infos sur la newsletter
#menu_item_informations
=#link_to i(:eye), menu_item_path(:url => page.menu_item.url), :target => "_blank"
=link_to "modifier", edit_admin_newsletter_path(@newsletter), :remote => true,:class => "button"
%h4
Infos sur la newsletter
.panel#collapseOne{:style => "display:none;"}
=render :partial => "form"
.panel#collapseOne{:style => "display:none;"}
=#render :partial => "edit_form"
%h4 éléments
%h4 éléments
.panel#collapse2
.block_portlets_sortable#content_types
-@newsletter.alloweds_types.each do |slug, name|
.panel#collapse2
.block_portlets_sortable#content_types
-@newsletter.block.alloweds_types.each do |slug, name|
.content_type{:id => slug, :"data-type" => slug}
=#i slug.to_s.constantize.picto
=image_tag("admin/content_type/type_"+slug.to_s+".png", :alt => name, :title => name, :class => "handle")
.content_type{:id => slug, :"data-type" => slug}
=#i slug.to_s.constantize.picto
=image_tag("admin/content_type/type_"+slug.to_s+".png", :alt => name, :title => name, :class => "handle")
#collapse3{:style => "display:none;"}
%h4 Modifier l'élément
#collapse3{:style => "display:none;"}
%h4 Modifier l'élément
.panel
#element_form
.panel
#element_form
%div#element_form_action
%a.move.btn.btn-default.portlet_handle{:href => "#", :data => {:portlet_id => nil}}
%span.move_message
=ic :arrows
&nbsp;
déplacer
%span.cancel_message
=ic :ban
&nbsp;
annuler
=link_to ic(:"trash-o"), "#", :method => :delete, :data => { :confirm => "Etes-vous sûr ?"}, :remote => true, :class => "btn btn-danger trash"
%button.save.btn.btn-primary
=ic(:"floppy-o")
%div#element_form_action
%a.move.btn.btn-default.portlet_handle{:href => "#", :data => {:portlet_id => nil}}
%span.move_message
=ic :arrows
&nbsp;
Sauvegarder
déplacer
%span.cancel_message
=ic :ban
&nbsp;
annuler
=link_to ic(:"trash-o"), "#", :method => :delete, :data => { :confirm => "Etes-vous sûr ?"}, :remote => true, :class => "btn btn-danger trash"
%button.save.btn.btn-primary
=ic(:"floppy-o")
&nbsp;
Sauvegarder
-else
=raw @newsletter.content

View File

@ -0,0 +1,3 @@
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",550,600);
<%= flash_js %>

View File

@ -1,26 +0,0 @@
%h1= @newsletter.title
%table.table
%tr
%th Date d'envoi
%th Nombre de messages envoyés
%th Nombre de messages lus
%th Nombre de messages non-lus
-ArchiveNewsletter.where(:newsletter_id => @newsletter.id).all.each do |archive_newsletter|
%tr
%td=l archive_newsletter.created_at
%td=mail_send = archive_newsletter.mail_archives.count()
%td
=mail_read = archive_newsletter.mail_archives.where(:readed => true).count()
-if mail_send > 0
="("
=number_to_percentage (100.0*mail_read)/mail_send, :precision => 1
=")"
%td
=mail_no_read = mail_send - mail_read
-if mail_send > 0
="("
=link_to number_to_percentage((100.0*mail_no_read)/mail_send, :precision => 1), history_detail_admin_newsletter_path(archive_newsletter.id)
=")"

View File

@ -1,45 +0,0 @@
%h1= @newsletter.title
%table.table
%tr
%th Date d'envoi
%th Nombre de messages envoyés
%th Nombre de messages lus
%th Nombre de messages non-lus
%tr
%td=l @archive_newsletter.created_at
%td=mail_send = @archive_newsletter.mail_archives.count()
%td
=mail_read = @archive_newsletter.mail_archives.where(:readed => true).count()
-if mail_send > 0
="("
=number_to_percentage (100.0*mail_read)/mail_send, :precision => 1
=")"
%td
=mail_no_read = mail_send - mail_read
-if mail_send > 0
="("
= number_to_percentage((100.0*mail_no_read)/mail_send, :precision => 1)
=")"
%h3 Liste des mails n'ayant pas reçu la newsletter
%table.table
-@archive_newsletter.mail_archives.where("readed != 1 or readed is null").all.each do |mail_archive|
%tr
%td
=mail_archive.email
%td
%td
=link_to "Fiche adhérent", admin_sheet_path(mail_archive.sheet_id), :remote => true if mail_archive.sheet_id?
%h3 Liste des mails ayant reçu la newsletter
%table.table
-@archive_newsletter.mail_archives.where("readed = 1").all.each do |mail_archive|
%tr
%td
=mail_archive.email
%td
%td
=link_to "Fiche adhérent", admin_sheet_path(mail_archive.sheet_id), :remote => true if mail_archive.sheet_id?

25
app/views/admin/newsletters/index.html.haml Executable file → Normal file
View File

@ -1,22 +1,13 @@
.header
.right= link_to 'Créer une nouvelle newsletter', new_admin_newsletter_path, :class => "button", :remote => true
%h1 Liste des newsletters
.right
=link_to ic(:plus)+" Créer une newsletter", new_admin_newsletter_path, :class => "btn btn-primary", :remote => true
%h1 Newsletters
%table.admin_table#newsletters-list.table.table-striped
.grid_12
%tr
%th Expéditeur
%th Sujet
%th
%th
%tbody#newsletters=render @newsletter
.pagination
= paginate @newsletter#, :remote => true
%table#newsletters.QI_table_alternate_alt1
=render @newsletters

11
app/views/admin/newsletters/new.html.haml Executable file → Normal file
View File

@ -1,3 +1,10 @@
%h1 Créer une newsletter
.header
%h1 Créer une newsletter
=render :partial => "form"
.grid_12
=render :partial => "form"

View File

@ -1 +1 @@
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900);
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",550,600);

View File

@ -1,63 +1,17 @@
.header
%h1
Newsletter sélectionnée :
=@newsletter.subject
%h1 Envoyer une newsletter
%p
= link_to i(:"eye"), admin_newsletter_path(@newsletter), :target => "_blank"
Newsletter sélectionnée :
=@newsletter.title
%ul.nav.nav-tabs#myTab
%li.active
%a{:href => "#send_sheets"}
Envoyer à une selection d'adhérents
%li
%a{:href => "#groups"}
Envoyer à des groupes d'inscrits
.tab-content
.tab-pane.active#send_sheets
%br
%p Descendre en bas de page pour envoyer la newsletter.
.grid_12
%h3 Fiches sélectionnées
%a{:href => "#", :onclick => "$('#sheets_selecteds input:checkbox').attr('checked', true);return false"} Tout sélectionner.
%a{:href => "#", :onclick => "$('#sheets_selecteds input:checkbox').attr('checked', false);return false"} Tout désélectionner
#sheets_selecteds
=render :partial => "sheets_selecteds"
=render :partial => "admin/sheets/sheets_search", :locals => {:url => ""}
%p
%a{:href => "#", :onclick => "$('#sheets_selecteds input:checkbox').attr('checked', true);return false"} Tout sélectionner.
%a{:href => "#", :onclick => "$('#sheets_selecteds input:checkbox').attr('checked', false);return false"} Tout désélectionner
#sheets_selecteds
.tab-pane#groups
=form_tag send_newsletter_admin_newsletter_path(:id => params[:id]) do
%table.table.table-striped
-Newsgroup.all.each do |ng|
%tr
%td
=check_box_tag "confirmed_groups[]", ng.id,false, :id => "confirmed_groups_"+ng.id.to_s
%label{:for => "confirmed_groups_"+ng.id.to_s, :style => "display:inline;"}=ng.name
%br
%br
=submit_tag "Envoyer la newsletter à toutes les personnes de ce groupe", :class => "btn btn-danger"
<script>
$('#myTab a').click(function (e) {
e.preventDefault();
$(this).tab('show');
})
</script>
%br
%br
%br

View File

@ -1 +1,3 @@
$("#sheets_selecteds").html("<%= escape_javascript(render(:partial => "sheets_selecteds"))%>");
$('#sheets_selecteds').html('<%= escape_javascript(render(:partial => "sheets_selecteds")) %>');

View File

@ -1,12 +0,0 @@
=raw @newsletter.content
-if @newsletter.email_from? and @newsletter.email_from != "contact@lepicvert.asso.fr"
%br
%p
%strong=Newsletter::EMAIL_TEXTES[@newsletter.email_from][1]
%br
=Newsletter::EMAIL_TEXTES[@newsletter.email_from][2]
%br
%br
=link_to @newsletter.email_from, "mailto:#{@newsletter.email_from}"

View File

@ -1 +1,4 @@
close_pane_hover();
$('#newsletter_show').replaceWith("<%= escape_javascript(render(:partial => "show"))%>");
<%= flash_js %>

View File

@ -0,0 +1,14 @@
= semantic_form_for [:admin,@registrant], :remote => true do |form|
.content
= form.inputs do
= form.input :enabled, :as => :boolean, :label => "Confirmé"
= form.input :name, :label => "Nom"
= form.input :surname, :label => "Prénom"
= form.input :email, :label => "Email :"
.actions
= form.submit "Sauvegarder"

View File

@ -0,0 +1,9 @@
%tr#registrant_row.registrant_row{:id => registrant.id}
%td=registrant.email
%td.actions
= link_to i(:"trash-o"), [:admin, registrant], :confirm => 'Voulez-vous vraiment supprimer ce dossier, et tout ces articles ?', :method => :delete, :remote => true
= link_to i(:pencil), edit_admin_registrant_path(registrant), :remote => true

View File

@ -0,0 +1,20 @@
#registrant_show.QI_background_middle.QI_padding_small
%table
%tr
%td{:rowspan => 4, :style => "width:270px;text-align:center"}
=image_tag @registrant.image_file.file.large.medium.small.thumb.url if @registrant.image_file
%td{:style => "width:150px;"} Nom :
%td=@registrant.title
%tr
%td Permalink :
%td=@registrant.slug
%tr
%td Statut :
%td=@registrant.enabled ? "Publié" : "Brouillon"
%tr
%td{:style => "vertical-align:top"} Description courte :
%td= simple_format @registrant.description

View File

@ -0,0 +1,4 @@
close_pane_hover();
$('#registrants').html("<%= escape_javascript(render(@registrants))%>");
<%= flash_js %>

View File

@ -0,0 +1,3 @@
$('#registrant_row_<%=@registrant.id%>').remove();
<%= flash_js %>

View File

@ -0,0 +1,3 @@
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",550,600);
<%= flash_js %>

View File

@ -0,0 +1,7 @@
.header
.right= link_to 'Ajouter un inscrit', new_admin_registrant_path, :class => "button", :remote => true
%h1 Liste des inscrits à la newsletter
.grid_12
%table#registrants.QI_table_alternate_alt1
=render @registrants

View File

@ -0,0 +1 @@
show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",550,600);

View File

@ -0,0 +1,4 @@
close_pane_hover();
$('#registrant_row_<%= @registrant.id %>').replaceWith("<%= escape_javascript(render(@registrant))%>");
<%= flash_js %>

View File

@ -3,14 +3,14 @@
-if Reservation.where(:day => day, :pm => false).first
.am.true
= link_to i(:trash_stroke), admin_reservation_url(:id => Reservation.where(:day => day, :pm => false).first.id, :month => @date.month, :year => @date.year), :remote => true, :method => :delete
= link_to i(:"trash-o"), admin_reservation_url(:id => Reservation.where(:day => day, :pm => false).first.id, :month => @date.month, :year => @date.year), :remote => true, :method => :delete
-else
.am.false
= link_to i(:plus), admin_reservations_url(:reservation => {:day => day, :pm => false}, :month => @date.month, :year => @date.year), :remote => true, :method => :post
-if Reservation.where(:day => day, :pm => true).first
.am.true
= link_to i(:trash_stroke), admin_reservation_url(:id => Reservation.where(:day => day, :pm => true).first.id, :month => @date.month, :year => @date.year), :remote => true, :method => :delete
= link_to i(:"trash-o"), admin_reservation_url(:id => Reservation.where(:day => day, :pm => true).first.id, :month => @date.month, :year => @date.year), :remote => true, :method => :delete
-else
.am.false
= link_to i(:plus), admin_reservations_url(:reservation => {:day => day, :pm => true}, :month => @date.month, :year => @date.year), :remote => true, :method => :post

View File

@ -1,12 +1,85 @@
<!DOCTYPE html>
<html lang='fr' xml:lang='fr'>
<head>
<title>Ballalama</title>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
<style type="text/css">
body { background-color: white; color:#2d2d2d;font-family: Lucida Grande, arial, sans-serif;}
.content{
width:90%;
margin:auto;
margin-top:10px;
margin-bottom:10px;
-moz-box-shadow: 0px 0px 20px #666;
-webkit-box-shadow: 0px 0px 20px #666;
box-shadow: 0px 0px 20px #666;
padding:20px;
border:1px solid #aaaaa9;
position:relative;
}
#legaly{
text-align:center;
width:90%;
margin:auto;
}
.header{
text-align:center;
width:90%;
margin:auto;
}
.portlet.table_content table {
width: 100%;
border-collapse: collapse;
}
Merci pour votre inscription !
<br /><br />
En cliquant sur le lien ci-dessous vous confirmerez votre demande d'inscription à la newsletter.
<br /><br />
.portlet.table_content table td {
border: 1px solid black;
}
.portlet.block_content .two_column .column {
float: left;
width: 50%;
}
.portlet.block_content .two_column .column .block {
padding: 10px;
}
.clear {
clear: both;
}
</style>
</head>
<body>
<div class="header">
<%=link_to image_tag("http://"+HOSTNAME+"/assets/front/logo.png"), "http://"+HOSTNAME %>
</div>
<div class="content">
Bonjour !
<br />
<br />
En cliquant sur le lien ci dessous vous confirmerez votre demande d'inscription à notre newsletter,
qui vous permettra d'être tenu informé de nos actualités.
<br />
<br />
<%=link_to email_validation_public_registrant_url(:id => @registrant.token) , email_validation_public_registrant_url(:id => @registrant.token) %>
<br />
<br />
(Si vous ne pouvez pas cliquer sur ce lien, merci de bien vouloir le copier et le coller dans la barre d'adresse de votre navigateur.)
</div>
<br />
<br />
</body>

View File

@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang='fr' xml:lang='fr'>
<head>
<title>Ballalama</title>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
<style type="text/css">
body { background-color: white; color:#2d2d2d;font-family: Lucida Grande, arial, sans-serif;}
.content{
width:90%;
margin:auto;
margin-top:10px;
margin-bottom:10px;
-moz-box-shadow: 0px 0px 20px #666;
-webkit-box-shadow: 0px 0px 20px #666;
box-shadow: 0px 0px 20px #666;
padding:20px;
border:1px solid #aaaaa9;
position:relative;
}
#legaly{
text-align:center;
width:90%;
margin:auto;
}
.header{
text-align:center;
width:90%;
margin:auto;
}
.portlet.table_content table {
width: 100%;
border-collapse: collapse;
}
.portlet.table_content table td {
border: 1px solid black;
}
.portlet.block_content .two_column .column {
float: left;
width: 50%;
}
.portlet.block_content .two_column .column .block {
padding: 10px;
}
.clear {
clear: both;
}
</style>
</head>
<body>
<div class="header">
<%=link_to image_tag("http://"+HOSTNAME+"/logo2.png"), "http://"+HOSTNAME %>
</div>
<div class="content">
<%= render :object => @newsletter.block, :partial => "public/blocks/block" %>
</div>
<div id="legaly">
Vous recevez cet email car vous êtes abonné à la newsletter du site <a href="http://www.ballalama.com/">Ballalama.com</a>. Si vous ne souhaitez plus recevoir de mail de notre part, merci de cliquer sur ce lien : <%=link_to edit_public_registrant_url(:id => @registrant.token), edit_public_registrant_url(:id => @registrant.token) if @registrant %>
</div>
<br />
<br />
</body>

View File

@ -38,8 +38,8 @@
%li= link_to "Actualités", admin_articles_path
%li=#link_to "Inscrits", admin_registrants_path()
%li=#link_to "Newsletters", admin_newsletters_path()
%li=link_to "Inscrits", admin_registrants_path()
%li=link_to "Newsletters", admin_newsletters_path()
%li=link_to "Réservations", admin_reservations_path()
%li=link_to "Menu d'accueil", admin_big_menus_path()

View File

@ -1,7 +0,0 @@
.realisation_list
-Realisation.all.each do |realisation|
=link_to public_realisation_path(:id => realisation.slug) do
.realisation
.img{:style => "background-image :url('"+(realisation.default_image.image_file.file.large.medium.url if realisation.default_image).to_s+"');"}
%h3=realisation.title

View File

@ -0,0 +1,3 @@
-@date = Date.today.beginning_of_month
=render :partial => "public/reservations/index_block"

View File

@ -1,13 +0,0 @@
-if @admin
.dynamic
Sous menu avec images
-if input.portlet.blockable_parent and input.portlet.blockable_parent.class.to_s == "Page" and input.portlet.blockable_parent.menu_item
.sub_menu
-input.portlet.blockable_parent.menu_item.children.where(:enabled => true, :visible => true).each do |menu_item|
=link_to menu_item_path(:url => menu_item.url) do
.sub_menu_item{:style => "background-image:url('#{menu_item.image_file.file.large.medium.small.url}')"}
%h3=menu_item.name
.clear

View File

@ -1,106 +0,0 @@
.header
%h1 Faisons connaissance.
%p{:style => "text-align:center;"}
Que vous souhaitiez investir dans une laverie, ou simplement
%br
louer votre bien pour l'implantation de l'une d'elles nous nous ferons
%br
un plaisir de vous guider dans votre projet.
.article.left
.row-fluid
.span4
%h3 Par téléphone
%p 04 76 35 19 77
%h3 Par fax
%p 04 76 35 20 41
.span4
%h3 Par courrier
%p
Lux Laverie
%br
60 rue de la Tour de Criel
%br
38500 Voiron
%br
France
.span4
%h3 Par email
%p
En nous écrivant à
=link_to "contact@ballalama.com", "mailto:contact@ballalama.com"
%br
%br
.row-fluid
.span12
%h3 Formulaire de contact
=form_tag "contact/create", :method => :post do
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
%label Nom*
=text_field_tag :name, "", :placeholder => "Nom", :class => "validate[required]"
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
%label Adresse
=text_field_tag :address, "", :placeholder => "Adresse"
=text_field_tag :address2, "", :placeholder => "Adresse suite"
.row-fluid
.span4
=text_field_tag :cp, "", :placeholder => "Code postal"
.span8
=text_field_tag :city, "", :placeholder => "Ville"
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
%label Téléphone*
=text_field_tag :tel, "", :placeholder => "Téléphone", :class => "validate[required]"
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
%label Mail
=text_field_tag :mail, "", :placeholder => "Mail"
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
%label Lieu du projet
=text_field_tag :place, "", :placeholder => "Lieu du projet"
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
%label Type du projet
.row-fluid
.span3
=radio_button_tag :type, "bungalow"
%label{:style => "display:inline-block;"} Bungalow
&nbsp;&nbsp;
=radio_button_tag :type, "local"
%label{:style => "display:inline-block;"} Local
.span9
Vous possédez le terrain ou le local pour l'installation ?
&nbsp;&nbsp;&nbsp;&nbsp;
=radio_button_tag :owner, "oui"
%label{:style => "display:inline-block;"} oui
&nbsp;&nbsp;
=radio_button_tag :owner, "non"
%label{:style => "display:inline-block;"} non
%p{:style => "margin-top:0.5em;margin-bottom:0px;"}
%label Message
=text_area_tag :message, "", :placeholder => "Message", :style => "height:10em;"
%p Les champs marqués d'un * sont requis.
=submit_tag "Envoyer", :style => "display:block;text-align:center;margin:auto;color:white;background:#9ab354;border-radius:1em; padding:0.5em 1em; font-size:1em; border:0px;"
:javascript
$("form").validationEngine();
%p Un commercial pourra au besoin vous rencontrer sur toute la France.

View File

@ -63,28 +63,6 @@
=yield :corps
-if params[:url] == "contact"
.center
.row
.columns.span_4
%p
%strong Siège social
%p
Zone Actipôle, 4/6 boulevard Beaubourg
%br
77183 CROISSY BEAUBOURG
%p
Tél. 0(33) 1 60 17 91 76
%br
Fax. 0(33) 1 64 11 22 03
%p
email :
=link_to "signa@bouvier-signa.com", "mailto:signa@bouvier-signa.com"
.columns.span_8
.contact_form
#form=render :partial => "public/contacts/form"

View File

@ -1,4 +0,0 @@
-@registrant = @registrant || Registrant.new
=form_for [:public, @registrant], :remote => true do |f|
.email=f.text_field :email, :placeholder => "email"
=f.submit "M'inscrire", :class => "btn"

View File

@ -1,14 +0,0 @@
#registrant_large_form
-@registrant = @registrant || Registrant.new
.center
=semantic_form_for [:public, @registrant], :remote => true do |f|
=f.inputs do
=f.input :email, :label => "Mon adresse email :", :placeholder => "email"
=f.submit "M'inscrire", :class => "btn"
&nbsp;&nbsp;
=link_to "Annuler", "#", :onclick => "$('#newsletter_large_place').html('');return false;", :class => "cancel"
=hidden_field_tag :large, params[:large]

View File

@ -1,7 +0,0 @@
#newsletter_large
.header
.center
%h2 Je m'abonne à la newsletter de One Voice
%p Je souhaite être tenu au courant des campagnes de One Voice et participer à son combat. Je minscris à la newsletter.
=render :partial => "public/registrants/large_form"

View File

@ -1,6 +0,0 @@
.center
%p
Merci pour votre inscription. Vous allez recevoir un mail avec un lien pour la confirmer.
%p
=link_to "Fermer", "#", :onclick => "$('#newsletter_large_place').html('');return false;", :class => "cancel"

View File

@ -1,8 +1 @@
<% if params[:large] %>
$("#registrant_large_form").html('<%= escape_javascript(render(:partial => "thanks"))%>');
<% else %>
$("#newsletter_form").html('Merci pour votre inscription. Vous allez recevoir un mail avec un lien pour la confirmer.');
<% end %>
$(".newsletter_form").replaceWith("Merci pour votre inscription ! Vous allez recevoir un mail avec un lien pour confirmer celle-ci.");

View File

@ -1 +0,0 @@
=render :partial => "new_large"

View File

@ -1,9 +1 @@
<% if params[:open] %>
$("#newsletter_large_place").html('<%= escape_javascript(render(:partial => "new_large"))%>');
<% elsif params[:large] %>
$("#registrant_large_form").html('<%= escape_javascript(render(:partial => "large_form"))%>');
<% else %>
$("#newsletter_form").html('<%= escape_javascript(render(:partial => "form"))%>');
<% end %>
$(".newsletter_form").replaceWith("<%= escape_javascript(render(:partial => "portlets/dynamic_contents/newsletter_form")) %>");

View File

@ -2,4 +2,4 @@
=link_to "Actualités", public_articles_path(), :class => "link"
-MenuItem.where(:parent_id => nil, :menu_id => Menu.first.id).order(:position).each do |menu_item|
=menu_item_link(menu_item)
=link_to "Contact", "/contact.html", :class => "link"

View File

@ -32,6 +32,7 @@ fr:
short: "%e %b"
long: "%e %B %Y"
only_month: "%B %Y"
month: "%B %Y"
day_names:
- dimanche
- lundi

View File

@ -1,26 +1,6 @@
Rails.application.routes.draw do
get "/realisations/:id.html" => "public/realisations#show", :as => :public_realisation
get "fr/newsletters/:id.html" => "public/newsletters#show", :as => :public_newsletter
get "/fr/assurance-vie.html"=> "public/home#assurance"
get "/fr/jmc/le-label-one-voice/decouvrez-les-produits-labellises.html" => "public/label_produits#index"
get "label" => "public/label_produits#index", :as => :label
get "fr/videos/:slug" => "public/video_files#show", :as => :public_video_file
get "petition-chine" => "public/petitions#chine"
get "fr/petitions/animaux-en-chine-a-laide.html" => "public/petitions#chine"
get "petition-produits-entretien" => "public/petitions#entretien"
get "fr/petitions/interdiction-des-tests-sur-animaux-pour-les-produits-dentretien.html" => "public/petitions#entretien"
get "fr/faire-un-don.html", :to => redirect("/faire-un-don")
get "fr/faire-un-don", :to => redirect("/faire-un-don")
get "fr/presse" => "public/press_releases#index", :as => :public_press_releases
get "fr/presse/:id" => "public/press_releases#show", :as => :public_press_release
namespace :admin do
resources :realisation_images do
collection do
@ -71,8 +51,15 @@ Rails.application.routes.draw do
get "sitemap.:f" => "public/sitemap#sitemap"
namespace :public do
resources :registrants do
member do
get :email_validation
end
end
resources :newsletter
resources :reservations
resources :contacts
@ -192,6 +179,22 @@ Rails.application.routes.draw do
namespace :admin do
resources :registrants do
collection do
get :import
end
end
resources :newsletters do
member do
post :send_test
get :select_recipients
post :select_recipients
post:send_newsletter
end
end
resources :reservations
resources :big_menus do
member do

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 49 KiB