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
|
||||
|
||||
@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"
|
||||
@ -86,10 +86,27 @@ class Admin::NewslettersController < ApplicationController
|
||||
|
||||
|
||||
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'>#{p.email}</span>"
|
||||
@errors << "<span class'error'>#{email}</span>"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -97,6 +114,8 @@ class Admin::NewslettersController < ApplicationController
|
||||
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
|
||||
|
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
|
||||
=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/:slug.:f' => 'plaquettes#show', :f => "html"
|
||||
|
||||
|
||||
get 'mail_assets/:token.png' => "admin/mail_trackings#update", :as => :image_tracking
|
||||
|
||||
|
||||
#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.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20140619095558) do
|
||||
ActiveRecord::Schema.define(version: 20141030173048) do
|
||||
|
||||
create_table "admins", force: true do |t|
|
||||
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", ["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|
|
||||
t.date "paid_at"
|
||||
t.integer "amount"
|
||||
@ -141,6 +152,23 @@ ActiveRecord::Schema.define(version: 20140619095558) do
|
||||
t.datetime "updated_at", null: false
|
||||
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|
|
||||
t.string "name"
|
||||
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