From 1a045e278a0dc5ba3572a3ca09fac93be20eed59 Mon Sep 17 00:00:00 2001 From: Nicolas Bally Date: Thu, 5 Jan 2017 11:20:16 +0100 Subject: [PATCH] suite --- app/assets/stylesheets/admin.css.scss | 70 +++++ app/assets/stylesheets/public.scss | 68 +++++ .../admin/newsletters_controller.rb | 285 ++++++++---------- .../admin/registrants_controller.rb | 94 ++++++ .../admin/reservations_controller.rb | 3 +- .../public/label_produits_controller.rb | 76 ----- .../public/registrants_controller.rb | 19 +- app/mailers/general.rb | 16 +- app/models/block.rb | 10 +- app/models/dynamic_content.rb | 3 +- app/views/admin/newsletters/_form.haml | 14 - app/views/admin/newsletters/_form.html.haml | 13 + app/views/admin/newsletters/_newsletter.haml | 7 - .../admin/newsletters/_newsletter.html.haml | 14 + .../admin/newsletters/_select_line.html.haml | 7 + .../newsletters/_sheets_selecteds.html.haml | 25 +- app/views/admin/newsletters/_show.html.haml | 6 + app/views/admin/newsletters/create.js.erb | 3 +- app/views/admin/newsletters/destroy.js.erb | 2 + app/views/admin/newsletters/edit.html.haml | 122 ++++---- app/views/admin/newsletters/edit.js.erb | 3 + app/views/admin/newsletters/history.html.haml | 26 -- .../newsletters/history_detail.html.haml | 45 --- app/views/admin/newsletters/index.html.haml | 25 +- app/views/admin/newsletters/new.html.haml | 11 +- app/views/admin/newsletters/new.js.erb | 2 +- .../newsletters/select_recipients.html.haml | 70 +---- .../newsletters/select_recipients.js.erb | 4 +- app/views/admin/newsletters/show.html.haml | 12 - app/views/admin/newsletters/update.js.erb | 3 + app/views/admin/registrants/_form.html.haml | 14 + .../admin/registrants/_registrant.html.haml | 9 + app/views/admin/registrants/_show.html.haml | 20 ++ app/views/admin/registrants/create.js.erb | 4 + app/views/admin/registrants/destroy.js.erb | 3 + app/views/admin/registrants/edit.js.erb | 3 + app/views/admin/registrants/index.html.haml | 7 + app/views/admin/registrants/new.js.erb | 1 + app/views/admin/registrants/update.js.erb | 4 + app/views/admin/reservations/_day.html.haml | 4 +- app/views/general/confirm_email.html.erb | 81 ++++- app/views/general/send_newsletter.html.erb | 78 +++++ app/views/layouts/admin.html.haml | 4 +- .../dynamic_contents/_realisations.html.haml | 7 - .../dynamic_contents/_reservations.html.haml | 3 + .../dynamic_contents/_sub_menu.html.haml | 13 - app/views/public/menu_items/contact.html.haml | 106 ------- app/views/public/menu_items/show.html.haml | 22 -- app/views/public/registrants/_form.html.haml | 4 - .../public/registrants/_large_form.html.haml | 14 - .../public/registrants/_new_large.html.haml | 7 - .../public/registrants/_thanks.html.haml | 6 - app/views/public/registrants/create.html.haml | 0 app/views/public/registrants/create.js.erb | 9 +- app/views/public/registrants/new.html.haml | 1 - app/views/public/registrants/new.js.erb | 10 +- app/views/public/shared/_first_menu.html.haml | 2 +- config/locales/fr.yml | 1 + config/routes.rb | 45 +-- public/logo2.png | Bin 45191 -> 50491 bytes 60 files changed, 794 insertions(+), 746 deletions(-) mode change 100755 => 100644 app/controllers/admin/newsletters_controller.rb create mode 100644 app/controllers/admin/registrants_controller.rb delete mode 100644 app/controllers/public/label_produits_controller.rb delete mode 100755 app/views/admin/newsletters/_form.haml create mode 100644 app/views/admin/newsletters/_form.html.haml delete mode 100755 app/views/admin/newsletters/_newsletter.haml create mode 100644 app/views/admin/newsletters/_newsletter.html.haml create mode 100644 app/views/admin/newsletters/_select_line.html.haml create mode 100644 app/views/admin/newsletters/_show.html.haml create mode 100644 app/views/admin/newsletters/destroy.js.erb mode change 100755 => 100644 app/views/admin/newsletters/edit.html.haml create mode 100644 app/views/admin/newsletters/edit.js.erb delete mode 100644 app/views/admin/newsletters/history.html.haml delete mode 100644 app/views/admin/newsletters/history_detail.html.haml mode change 100755 => 100644 app/views/admin/newsletters/index.html.haml mode change 100755 => 100644 app/views/admin/newsletters/new.html.haml delete mode 100644 app/views/admin/newsletters/show.html.haml create mode 100644 app/views/admin/registrants/_form.html.haml create mode 100644 app/views/admin/registrants/_registrant.html.haml create mode 100644 app/views/admin/registrants/_show.html.haml create mode 100644 app/views/admin/registrants/create.js.erb create mode 100644 app/views/admin/registrants/destroy.js.erb create mode 100644 app/views/admin/registrants/edit.js.erb create mode 100644 app/views/admin/registrants/index.html.haml create mode 100644 app/views/admin/registrants/new.js.erb create mode 100644 app/views/admin/registrants/update.js.erb delete mode 100644 app/views/portlets/dynamic_contents/_realisations.html.haml create mode 100644 app/views/portlets/dynamic_contents/_reservations.html.haml delete mode 100644 app/views/portlets/dynamic_contents/_sub_menu.html.haml delete mode 100644 app/views/public/menu_items/contact.html.haml delete mode 100644 app/views/public/registrants/_form.html.haml delete mode 100644 app/views/public/registrants/_large_form.html.haml delete mode 100644 app/views/public/registrants/_new_large.html.haml delete mode 100644 app/views/public/registrants/_thanks.html.haml create mode 100644 app/views/public/registrants/create.html.haml diff --git a/app/assets/stylesheets/admin.css.scss b/app/assets/stylesheets/admin.css.scss index 4dacfc0..18553d0 100644 --- a/app/assets/stylesheets/admin.css.scss +++ b/app/assets/stylesheets/admin.css.scss @@ -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; + + } + + } + + } + + + } + + } + + + } + + +} diff --git a/app/assets/stylesheets/public.scss b/app/assets/stylesheets/public.scss index 96043a2..76ce975 100644 --- a/app/assets/stylesheets/public.scss +++ b/app/assets/stylesheets/public.scss @@ -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; + + } + + } + + } + + + } + + } + + + } + + +} diff --git a/app/controllers/admin/newsletters_controller.rb b/app/controllers/admin/newsletters_controller.rb old mode 100755 new mode 100644 index efc2169..bd2af56 --- a/app/controllers/admin/newsletters_controller.rb +++ b/app/controllers/admin/newsletters_controller.rb @@ -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 << "#{email}" - 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 diff --git a/app/controllers/admin/registrants_controller.rb b/app/controllers/admin/registrants_controller.rb new file mode 100644 index 0000000..3327ab9 --- /dev/null +++ b/app/controllers/admin/registrants_controller.rb @@ -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 diff --git a/app/controllers/admin/reservations_controller.rb b/app/controllers/admin/reservations_controller.rb index 6fb1a44..a300c7c 100644 --- a/app/controllers/admin/reservations_controller.rb +++ b/app/controllers/admin/reservations_controller.rb @@ -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 diff --git a/app/controllers/public/label_produits_controller.rb b/app/controllers/public/label_produits_controller.rb deleted file mode 100644 index 469270f..0000000 --- a/app/controllers/public/label_produits_controller.rb +++ /dev/null @@ -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 diff --git a/app/controllers/public/registrants_controller.rb b/app/controllers/public/registrants_controller.rb index 300ba8d..57f4db4 100644 --- a/app/controllers/public/registrants_controller.rb +++ b/app/controllers/public/registrants_controller.rb @@ -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 = "

Vous avez bien été désinscrit.

" + 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 = "

Merci, votre inscription a bien été prise en compte.

" + 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 diff --git a/app/mailers/general.rb b/app/mailers/general.rb index 8a6f3a9..6bf8b56 100644 --- a/app/mailers/general.rb +++ b/app/mailers/general.rb @@ -1,8 +1,22 @@ class General < ActionMailer::Base - default :from => "One Voice " + default :from => "ballalama " 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 diff --git a/app/models/block.rb b/app/models/block.rb index 9e6a43b..4e53c4c 100644 --- a/app/models/block.rb +++ b/app/models/block.rb @@ -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", diff --git a/app/models/dynamic_content.rb b/app/models/dynamic_content.rb index 3199e5d..e8b5b75 100644 --- a/app/models/dynamic_content.rb +++ b/app/models/dynamic_content.rb @@ -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" diff --git a/app/views/admin/newsletters/_form.haml b/app/views/admin/newsletters/_form.haml deleted file mode 100755 index e379522..0000000 --- a/app/views/admin/newsletters/_form.haml +++ /dev/null @@ -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" diff --git a/app/views/admin/newsletters/_form.html.haml b/app/views/admin/newsletters/_form.html.haml new file mode 100644 index 0000000..6bc5274 --- /dev/null +++ b/app/views/admin/newsletters/_form.html.haml @@ -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" diff --git a/app/views/admin/newsletters/_newsletter.haml b/app/views/admin/newsletters/_newsletter.haml deleted file mode 100755 index 5102839..0000000 --- a/app/views/admin/newsletters/_newsletter.haml +++ /dev/null @@ -1,7 +0,0 @@ -%tr - - %td - = newsletter.subject - - %td - =link_to public_newsletter_url(newsletter.slug), public_newsletter_path(newsletter.slug) \ No newline at end of file diff --git a/app/views/admin/newsletters/_newsletter.html.haml b/app/views/admin/newsletters/_newsletter.html.haml new file mode 100644 index 0000000..a9f1f61 --- /dev/null +++ b/app/views/admin/newsletters/_newsletter.html.haml @@ -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) diff --git a/app/views/admin/newsletters/_select_line.html.haml b/app/views/admin/newsletters/_select_line.html.haml new file mode 100644 index 0000000..b31f376 --- /dev/null +++ b/app/views/admin/newsletters/_select_line.html.haml @@ -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 + \ No newline at end of file diff --git a/app/views/admin/newsletters/_sheets_selecteds.html.haml b/app/views/admin/newsletters/_sheets_selecteds.html.haml index 276bcf4..614d4cf 100644 --- a/app/views/admin/newsletters/_sheets_selecteds.html.haml +++ b/app/views/admin/newsletters/_sheets_selecteds.html.haml @@ -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 - - - \ No newline at end of file +=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 \ No newline at end of file diff --git a/app/views/admin/newsletters/_show.html.haml b/app/views/admin/newsletters/_show.html.haml new file mode 100644 index 0000000..05c5460 --- /dev/null +++ b/app/views/admin/newsletters/_show.html.haml @@ -0,0 +1,6 @@ +#newsletter_show.QI_background_middle.QI_padding_small + %table + %tr + %td Sujet : + %td=@newsletter.subject + \ No newline at end of file diff --git a/app/views/admin/newsletters/create.js.erb b/app/views/admin/newsletters/create.js.erb index 7416a7c..08717fa 100644 --- a/app/views/admin/newsletters/create.js.erb +++ b/app/views/admin/newsletters/create.js.erb @@ -1,4 +1,3 @@ -$('#newsletters').html("<%= escape_javascript(render(@newsletters))%>"); close_pane_hover(); - +$('#newsletters').html("<%= escape_javascript(render(@newsletters))%>"); <%= flash_js %> \ No newline at end of file diff --git a/app/views/admin/newsletters/destroy.js.erb b/app/views/admin/newsletters/destroy.js.erb new file mode 100644 index 0000000..6737cf0 --- /dev/null +++ b/app/views/admin/newsletters/destroy.js.erb @@ -0,0 +1,2 @@ +$('#newsletter_row_<%=@newsletter.id%>').remove(); +<%= flash_js %> \ No newline at end of file diff --git a/app/views/admin/newsletters/edit.html.haml b/app/views/admin/newsletters/edit.html.haml old mode 100755 new mode 100644 index 2c09340..d6936cb --- a/app/views/admin/newsletters/edit.html.haml +++ b/app/views/admin/newsletters/edit.html.haml @@ -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 -   - déplacer - %span.cancel_message - =ic :ban -   - 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   - Sauvegarder + déplacer + %span.cancel_message + =ic :ban +   + 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") +   + Sauvegarder --else - - =raw @newsletter.content + - - - diff --git a/app/views/admin/newsletters/edit.js.erb b/app/views/admin/newsletters/edit.js.erb new file mode 100644 index 0000000..21bb4f8 --- /dev/null +++ b/app/views/admin/newsletters/edit.js.erb @@ -0,0 +1,3 @@ +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",550,600); + +<%= flash_js %> \ No newline at end of file diff --git a/app/views/admin/newsletters/history.html.haml b/app/views/admin/newsletters/history.html.haml deleted file mode 100644 index 8a96ff7..0000000 --- a/app/views/admin/newsletters/history.html.haml +++ /dev/null @@ -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) - =")" - - - \ No newline at end of file diff --git a/app/views/admin/newsletters/history_detail.html.haml b/app/views/admin/newsletters/history_detail.html.haml deleted file mode 100644 index c74a783..0000000 --- a/app/views/admin/newsletters/history_detail.html.haml +++ /dev/null @@ -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? - \ No newline at end of file diff --git a/app/views/admin/newsletters/index.html.haml b/app/views/admin/newsletters/index.html.haml old mode 100755 new mode 100644 index 74852c2..0c3d170 --- a/app/views/admin/newsletters/index.html.haml +++ b/app/views/admin/newsletters/index.html.haml @@ -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 + diff --git a/app/views/admin/newsletters/new.html.haml b/app/views/admin/newsletters/new.html.haml old mode 100755 new mode 100644 index b9ca168..78a062a --- a/app/views/admin/newsletters/new.html.haml +++ b/app/views/admin/newsletters/new.html.haml @@ -1,3 +1,10 @@ -%h1 Créer une newsletter +.header + + %h1 Créer une newsletter -=render :partial => "form" + + + +.grid_12 + =render :partial => "form" + diff --git a/app/views/admin/newsletters/new.js.erb b/app/views/admin/newsletters/new.js.erb index ecdd789..06a7cbc 100644 --- a/app/views/admin/newsletters/new.js.erb +++ b/app/views/admin/newsletters/new.js.erb @@ -1 +1 @@ -show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",700,900); +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",550,600); \ No newline at end of file diff --git a/app/views/admin/newsletters/select_recipients.html.haml b/app/views/admin/newsletters/select_recipients.html.haml index 4627c1a..19895ef 100644 --- a/app/views/admin/newsletters/select_recipients.html.haml +++ b/app/views/admin/newsletters/select_recipients.html.haml @@ -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" - - - - - - - -%br %br %br \ No newline at end of file diff --git a/app/views/admin/newsletters/select_recipients.js.erb b/app/views/admin/newsletters/select_recipients.js.erb index c3cf65b..2f300df 100644 --- a/app/views/admin/newsletters/select_recipients.js.erb +++ b/app/views/admin/newsletters/select_recipients.js.erb @@ -1 +1,3 @@ -$("#sheets_selecteds").html("<%= escape_javascript(render(:partial => "sheets_selecteds"))%>"); \ No newline at end of file + + +$('#sheets_selecteds').html('<%= escape_javascript(render(:partial => "sheets_selecteds")) %>'); \ No newline at end of file diff --git a/app/views/admin/newsletters/show.html.haml b/app/views/admin/newsletters/show.html.haml deleted file mode 100644 index 0e322b6..0000000 --- a/app/views/admin/newsletters/show.html.haml +++ /dev/null @@ -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}" - \ No newline at end of file diff --git a/app/views/admin/newsletters/update.js.erb b/app/views/admin/newsletters/update.js.erb index de03008..5cbf14e 100644 --- a/app/views/admin/newsletters/update.js.erb +++ b/app/views/admin/newsletters/update.js.erb @@ -1 +1,4 @@ +close_pane_hover(); +$('#newsletter_show').replaceWith("<%= escape_javascript(render(:partial => "show"))%>"); + <%= flash_js %> \ No newline at end of file diff --git a/app/views/admin/registrants/_form.html.haml b/app/views/admin/registrants/_form.html.haml new file mode 100644 index 0000000..d859d27 --- /dev/null +++ b/app/views/admin/registrants/_form.html.haml @@ -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" + \ No newline at end of file diff --git a/app/views/admin/registrants/_registrant.html.haml b/app/views/admin/registrants/_registrant.html.haml new file mode 100644 index 0000000..50aa0b1 --- /dev/null +++ b/app/views/admin/registrants/_registrant.html.haml @@ -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 diff --git a/app/views/admin/registrants/_show.html.haml b/app/views/admin/registrants/_show.html.haml new file mode 100644 index 0000000..9788d6f --- /dev/null +++ b/app/views/admin/registrants/_show.html.haml @@ -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 + \ No newline at end of file diff --git a/app/views/admin/registrants/create.js.erb b/app/views/admin/registrants/create.js.erb new file mode 100644 index 0000000..591883a --- /dev/null +++ b/app/views/admin/registrants/create.js.erb @@ -0,0 +1,4 @@ +close_pane_hover(); +$('#registrants').html("<%= escape_javascript(render(@registrants))%>"); + +<%= flash_js %> \ No newline at end of file diff --git a/app/views/admin/registrants/destroy.js.erb b/app/views/admin/registrants/destroy.js.erb new file mode 100644 index 0000000..0ce4921 --- /dev/null +++ b/app/views/admin/registrants/destroy.js.erb @@ -0,0 +1,3 @@ +$('#registrant_row_<%=@registrant.id%>').remove(); + +<%= flash_js %> \ No newline at end of file diff --git a/app/views/admin/registrants/edit.js.erb b/app/views/admin/registrants/edit.js.erb new file mode 100644 index 0000000..21bb4f8 --- /dev/null +++ b/app/views/admin/registrants/edit.js.erb @@ -0,0 +1,3 @@ +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",550,600); + +<%= flash_js %> \ No newline at end of file diff --git a/app/views/admin/registrants/index.html.haml b/app/views/admin/registrants/index.html.haml new file mode 100644 index 0000000..33029bc --- /dev/null +++ b/app/views/admin/registrants/index.html.haml @@ -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 diff --git a/app/views/admin/registrants/new.js.erb b/app/views/admin/registrants/new.js.erb new file mode 100644 index 0000000..5cc0028 --- /dev/null +++ b/app/views/admin/registrants/new.js.erb @@ -0,0 +1 @@ +show_pane_hover("<%= escape_javascript(render(:partial => "form"))%>",550,600); diff --git a/app/views/admin/registrants/update.js.erb b/app/views/admin/registrants/update.js.erb new file mode 100644 index 0000000..054f9b9 --- /dev/null +++ b/app/views/admin/registrants/update.js.erb @@ -0,0 +1,4 @@ +close_pane_hover(); +$('#registrant_row_<%= @registrant.id %>').replaceWith("<%= escape_javascript(render(@registrant))%>"); + +<%= flash_js %> \ No newline at end of file diff --git a/app/views/admin/reservations/_day.html.haml b/app/views/admin/reservations/_day.html.haml index c77d463..11bfd21 100644 --- a/app/views/admin/reservations/_day.html.haml +++ b/app/views/admin/reservations/_day.html.haml @@ -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 diff --git a/app/views/general/confirm_email.html.erb b/app/views/general/confirm_email.html.erb index 254e373..856856d 100644 --- a/app/views/general/confirm_email.html.erb +++ b/app/views/general/confirm_email.html.erb @@ -1,12 +1,85 @@ + + + +Ballalama + + + + + +
+<%=link_to image_tag("http://"+HOSTNAME+"/assets/front/logo.png"), "http://"+HOSTNAME %> + +
+
+ Bonjour ! +
+
+ 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. +
+
<%=link_to email_validation_public_registrant_url(:id => @registrant.token) , email_validation_public_registrant_url(:id => @registrant.token) %>

(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.) + + +
+ +
+
+ + + diff --git a/app/views/general/send_newsletter.html.erb b/app/views/general/send_newsletter.html.erb index e69de29..4463746 100644 --- a/app/views/general/send_newsletter.html.erb +++ b/app/views/general/send_newsletter.html.erb @@ -0,0 +1,78 @@ + + + +Ballalama + + + + + +
+<%=link_to image_tag("http://"+HOSTNAME+"/logo2.png"), "http://"+HOSTNAME %> + +
+
+<%= render :object => @newsletter.block, :partial => "public/blocks/block" %> + + + +
+
+Vous recevez cet email car vous êtes abonné à la newsletter du site Ballalama.com. 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 %> +
+
+
+ + + + \ No newline at end of file diff --git a/app/views/layouts/admin.html.haml b/app/views/layouts/admin.html.haml index 5bd3620..67b6877 100644 --- a/app/views/layouts/admin.html.haml +++ b/app/views/layouts/admin.html.haml @@ -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() diff --git a/app/views/portlets/dynamic_contents/_realisations.html.haml b/app/views/portlets/dynamic_contents/_realisations.html.haml deleted file mode 100644 index db9725b..0000000 --- a/app/views/portlets/dynamic_contents/_realisations.html.haml +++ /dev/null @@ -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 \ No newline at end of file diff --git a/app/views/portlets/dynamic_contents/_reservations.html.haml b/app/views/portlets/dynamic_contents/_reservations.html.haml new file mode 100644 index 0000000..77954cb --- /dev/null +++ b/app/views/portlets/dynamic_contents/_reservations.html.haml @@ -0,0 +1,3 @@ +-@date = Date.today.beginning_of_month + +=render :partial => "public/reservations/index_block" \ No newline at end of file diff --git a/app/views/portlets/dynamic_contents/_sub_menu.html.haml b/app/views/portlets/dynamic_contents/_sub_menu.html.haml deleted file mode 100644 index 8537b1e..0000000 --- a/app/views/portlets/dynamic_contents/_sub_menu.html.haml +++ /dev/null @@ -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 \ No newline at end of file diff --git a/app/views/public/menu_items/contact.html.haml b/app/views/public/menu_items/contact.html.haml deleted file mode 100644 index cde2179..0000000 --- a/app/views/public/menu_items/contact.html.haml +++ /dev/null @@ -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 -    - =radio_button_tag :type, "local" - %label{:style => "display:inline-block;"} Local - - .span9 - - Vous possédez le terrain ou le local pour l'installation ? -      - =radio_button_tag :owner, "oui" - %label{:style => "display:inline-block;"} oui -    - =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. - diff --git a/app/views/public/menu_items/show.html.haml b/app/views/public/menu_items/show.html.haml index 03dd0e9..7e9c86a 100644 --- a/app/views/public/menu_items/show.html.haml +++ b/app/views/public/menu_items/show.html.haml @@ -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" diff --git a/app/views/public/registrants/_form.html.haml b/app/views/public/registrants/_form.html.haml deleted file mode 100644 index 614161e..0000000 --- a/app/views/public/registrants/_form.html.haml +++ /dev/null @@ -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" \ No newline at end of file diff --git a/app/views/public/registrants/_large_form.html.haml b/app/views/public/registrants/_large_form.html.haml deleted file mode 100644 index 312d740..0000000 --- a/app/views/public/registrants/_large_form.html.haml +++ /dev/null @@ -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" -    - =link_to "Annuler", "#", :onclick => "$('#newsletter_large_place').html('');return false;", :class => "cancel" - - =hidden_field_tag :large, params[:large] \ No newline at end of file diff --git a/app/views/public/registrants/_new_large.html.haml b/app/views/public/registrants/_new_large.html.haml deleted file mode 100644 index 7f98ae2..0000000 --- a/app/views/public/registrants/_new_large.html.haml +++ /dev/null @@ -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 m’inscris à la newsletter. - - =render :partial => "public/registrants/large_form" \ No newline at end of file diff --git a/app/views/public/registrants/_thanks.html.haml b/app/views/public/registrants/_thanks.html.haml deleted file mode 100644 index 69a5880..0000000 --- a/app/views/public/registrants/_thanks.html.haml +++ /dev/null @@ -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" \ No newline at end of file diff --git a/app/views/public/registrants/create.html.haml b/app/views/public/registrants/create.html.haml new file mode 100644 index 0000000..e69de29 diff --git a/app/views/public/registrants/create.js.erb b/app/views/public/registrants/create.js.erb index 7032521..7425cca 100644 --- a/app/views/public/registrants/create.js.erb +++ b/app/views/public/registrants/create.js.erb @@ -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."); \ No newline at end of file diff --git a/app/views/public/registrants/new.html.haml b/app/views/public/registrants/new.html.haml index eb32ac2..e69de29 100644 --- a/app/views/public/registrants/new.html.haml +++ b/app/views/public/registrants/new.html.haml @@ -1 +0,0 @@ -=render :partial => "new_large" \ No newline at end of file diff --git a/app/views/public/registrants/new.js.erb b/app/views/public/registrants/new.js.erb index 0bdbc44..7cfe300 100644 --- a/app/views/public/registrants/new.js.erb +++ b/app/views/public/registrants/new.js.erb @@ -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")) %>"); \ No newline at end of file diff --git a/app/views/public/shared/_first_menu.html.haml b/app/views/public/shared/_first_menu.html.haml index e11d2dd..7b25e47 100644 --- a/app/views/public/shared/_first_menu.html.haml +++ b/app/views/public/shared/_first_menu.html.haml @@ -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" + diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 0ce066f..ab8823c 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -32,6 +32,7 @@ fr: short: "%e %b" long: "%e %B %Y" only_month: "%B %Y" + month: "%B %Y" day_names: - dimanche - lundi diff --git a/config/routes.rb b/config/routes.rb index 93dbdb5..787b964 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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 diff --git a/public/logo2.png b/public/logo2.png index 00006fbdf99b221801d654b7fb83eb409018e452..7bd5a56b44c703a915eb44e9a3c09d6e59ceb5ce 100644 GIT binary patch literal 50491 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 literal 45191 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�f?#9$*+vD2VJkQd;J{(Qe}Kvm!B66j(OQ6s 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