mail tracking
This commit is contained in:
parent
4720c272bd
commit
8490632452
18
app/controllers/admin/mail_trackings_controller.rb
Normal file
18
app/controllers/admin/mail_trackings_controller.rb
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# -*- encoding : utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
|
class Admin::MailTrackingsController < ApplicationController
|
||||||
|
# GET /people
|
||||||
|
# GET /people.xml
|
||||||
|
|
||||||
|
def update
|
||||||
|
@mail_archive = MailArchive.find_by_token(params[:token])
|
||||||
|
@mail_archive.update_attributes(:readed => true)
|
||||||
|
|
||||||
|
send_file 'public/tracking.png', type: 'image/png', disposition: 'inline'
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
@ -76,8 +76,8 @@ class Admin::NewslettersController < ApplicationController
|
|||||||
def send_test
|
def send_test
|
||||||
|
|
||||||
@newsletter = Newsletter.find(params[:id])
|
@newsletter = Newsletter.find(params[:id])
|
||||||
NewsletterMails.newsletter(@newsletter, params[:email]).deliver
|
#NewsletterMails.newsletter(@newsletter, params[:email]).deliver
|
||||||
|
send_helper @newsletter, params[:email]
|
||||||
|
|
||||||
|
|
||||||
flash[:notice]= "La newsletter a bien été envoyée à l'email de test"
|
flash[:notice]= "La newsletter a bien été envoyée à l'email de test"
|
||||||
@ -86,10 +86,27 @@ class Admin::NewslettersController < ApplicationController
|
|||||||
|
|
||||||
|
|
||||||
def send_helper(newsletter, email, options = {})
|
def send_helper(newsletter, email, options = {})
|
||||||
|
|
||||||
|
if email and email != ""
|
||||||
|
|
||||||
begin
|
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 != ""
|
NewsletterMails.newsletter(newsletter, email, options).deliver if email and email != ""
|
||||||
|
|
||||||
|
|
||||||
rescue
|
rescue
|
||||||
@errors << "<span class'error'>#{p.email}</span>"
|
@errors << "<span class'error'>#{email}</span>"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -97,6 +114,8 @@ class Admin::NewslettersController < ApplicationController
|
|||||||
def send_newsletter
|
def send_newsletter
|
||||||
@errors = []
|
@errors = []
|
||||||
@newsletter = Newsletter.find(params[:id])
|
@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]
|
if params[:confirmed_groups]
|
||||||
PeopleNewsgroup.all(:conditions => {:newsgroup_id => params[:confirmed_groups]}).each do |pn|
|
PeopleNewsgroup.all(:conditions => {:newsgroup_id => params[:confirmed_groups]}).each do |pn|
|
||||||
if pn.person
|
if pn.person
|
||||||
|
3
app/models/archive_newsletter.rb
Normal file
3
app/models/archive_newsletter.rb
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
class ArchiveNewsletter < ActiveRecord::Base
|
||||||
|
belongs_to :newsletter
|
||||||
|
end
|
17
app/models/mail_archive.rb
Normal file
17
app/models/mail_archive.rb
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
class MailArchive < ActiveRecord::Base
|
||||||
|
belongs_to :newsletter
|
||||||
|
belongs_to :archive_newsletter
|
||||||
|
belongs_to :sheet
|
||||||
|
belongs_to :person
|
||||||
|
|
||||||
|
before_create do
|
||||||
|
self.generate_token
|
||||||
|
end
|
||||||
|
|
||||||
|
def generate_token
|
||||||
|
begin
|
||||||
|
self[:token] = SecureRandom.urlsafe_base64
|
||||||
|
end while MailArchive.exists?(:token => self[token])
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
@ -15,4 +15,5 @@
|
|||||||
%br
|
%br
|
||||||
%br
|
%br
|
||||||
=link_to @newsletter.email_from, "mailto:#{@newsletter.email_from}"
|
=link_to @newsletter.email_from, "mailto:#{@newsletter.email_from}"
|
||||||
|
-if @options[:mail_archive] and @options[:mail_archive].token
|
||||||
|
=image_tag image_tracking_url(:token => @options[:mail_archive].token)
|
@ -5,7 +5,7 @@ Survey::Application.routes.draw do
|
|||||||
get 'plaquettes/gaspillage.:f' => 'plaquettes#gaspillage', :f => "html"
|
get 'plaquettes/gaspillage.:f' => 'plaquettes#gaspillage', :f => "html"
|
||||||
get 'plaquettes/:slug.:f' => 'plaquettes#show', :f => "html"
|
get 'plaquettes/:slug.:f' => 'plaquettes#show', :f => "html"
|
||||||
|
|
||||||
|
get 'mail_assets/:token.png' => "admin/mail_trackings#update", :as => :image_tracking
|
||||||
|
|
||||||
|
|
||||||
#admin
|
#admin
|
||||||
|
15
db/migrate/20141030163836_create_mail_archives.rb
Normal file
15
db/migrate/20141030163836_create_mail_archives.rb
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
class CreateMailArchives < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :mail_archives do |t|
|
||||||
|
t.references :newsletter, index: true
|
||||||
|
t.references :archive_newsletter, index: true
|
||||||
|
t.string :email
|
||||||
|
t.references :sheet, index: true
|
||||||
|
t.references :person, index: true
|
||||||
|
t.string :token
|
||||||
|
t.boolean :readed
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
12
db/migrate/20141030173048_create_archive_newsletters.rb
Normal file
12
db/migrate/20141030173048_create_archive_newsletters.rb
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
class CreateArchiveNewsletters < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :archive_newsletters do |t|
|
||||||
|
t.references :newsletter, index: true
|
||||||
|
t.string :title
|
||||||
|
t.text :content
|
||||||
|
t.string :email_from
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
30
db/schema.rb
30
db/schema.rb
@ -11,7 +11,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20140619095558) do
|
ActiveRecord::Schema.define(version: 20141030173048) do
|
||||||
|
|
||||||
create_table "admins", force: true do |t|
|
create_table "admins", force: true do |t|
|
||||||
t.string "email", default: "", null: false
|
t.string "email", default: "", null: false
|
||||||
@ -48,6 +48,17 @@ ActiveRecord::Schema.define(version: 20140619095558) do
|
|||||||
add_index "answer_sets", ["question_set_id"], name: "index_answer_sets_on_question_set_id", using: :btree
|
add_index "answer_sets", ["question_set_id"], name: "index_answer_sets_on_question_set_id", using: :btree
|
||||||
add_index "answer_sets", ["survey_item_answer_id"], name: "index_answer_sets_on_survey_item_answer_id", using: :btree
|
add_index "answer_sets", ["survey_item_answer_id"], name: "index_answer_sets_on_survey_item_answer_id", using: :btree
|
||||||
|
|
||||||
|
create_table "archive_newsletters", force: true do |t|
|
||||||
|
t.integer "newsletter_id"
|
||||||
|
t.string "title"
|
||||||
|
t.text "content"
|
||||||
|
t.string "email_from"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "archive_newsletters", ["newsletter_id"], name: "index_archive_newsletters_on_newsletter_id", using: :btree
|
||||||
|
|
||||||
create_table "donates", force: true do |t|
|
create_table "donates", force: true do |t|
|
||||||
t.date "paid_at"
|
t.date "paid_at"
|
||||||
t.integer "amount"
|
t.integer "amount"
|
||||||
@ -141,6 +152,23 @@ ActiveRecord::Schema.define(version: 20140619095558) do
|
|||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "mail_archives", force: true do |t|
|
||||||
|
t.integer "newsletter_id"
|
||||||
|
t.integer "archive_newsletter_id"
|
||||||
|
t.string "email"
|
||||||
|
t.integer "sheet_id"
|
||||||
|
t.integer "person_id"
|
||||||
|
t.string "token"
|
||||||
|
t.boolean "readed"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "mail_archives", ["archive_newsletter_id"], name: "index_mail_archives_on_archive_newsletter_id", using: :btree
|
||||||
|
add_index "mail_archives", ["newsletter_id"], name: "index_mail_archives_on_newsletter_id", using: :btree
|
||||||
|
add_index "mail_archives", ["person_id"], name: "index_mail_archives_on_person_id", using: :btree
|
||||||
|
add_index "mail_archives", ["sheet_id"], name: "index_mail_archives_on_sheet_id", using: :btree
|
||||||
|
|
||||||
create_table "newsgroups", force: true do |t|
|
create_table "newsgroups", force: true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.text "description"
|
t.text "description"
|
||||||
|
BIN
public/tracking.png
Normal file
BIN
public/tracking.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
13
test/fixtures/archive_newsletters.yml
vendored
Normal file
13
test/fixtures/archive_newsletters.yml
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
newsletter_id:
|
||||||
|
title: MyString
|
||||||
|
content: MyText
|
||||||
|
:
|
||||||
|
|
||||||
|
two:
|
||||||
|
newsletter_id:
|
||||||
|
title: MyString
|
||||||
|
content: MyText
|
||||||
|
:
|
17
test/fixtures/mail_archives.yml
vendored
Normal file
17
test/fixtures/mail_archives.yml
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
newsletter_id:
|
||||||
|
archive_newsletter_id:
|
||||||
|
email: MyString
|
||||||
|
sheet_id:
|
||||||
|
person_id:
|
||||||
|
token: MyString
|
||||||
|
|
||||||
|
two:
|
||||||
|
newsletter_id:
|
||||||
|
archive_newsletter_id:
|
||||||
|
email: MyString
|
||||||
|
sheet_id:
|
||||||
|
person_id:
|
||||||
|
token: MyString
|
7
test/models/archive_newsletter_test.rb
Normal file
7
test/models/archive_newsletter_test.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class ArchiveNewsletterTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
7
test/models/mail_archive_test.rb
Normal file
7
test/models/mail_archive_test.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class MailArchiveTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user