spree_mail 0.40.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +19 -0
- data/Rakefile +94 -0
- data/app/controllers/admin/emails_controller.rb +61 -0
- data/app/controllers/admin/subscribers_controller.rb +78 -0
- data/app/controllers/emails_controller.rb +19 -0
- data/app/controllers/subscribers_controller.rb +42 -0
- data/app/mailers/email_mailer.rb +24 -0
- data/app/model/email.rb +77 -0
- data/app/model/subscriber.rb +39 -0
- data/app/views/admin/emails/_form.html.erb +78 -0
- data/app/views/admin/emails/edit.html.erb +15 -0
- data/app/views/admin/emails/index.html.erb +64 -0
- data/app/views/admin/emails/new.html.erb +15 -0
- data/app/views/admin/emails/show.html.erb +20 -0
- data/app/views/admin/hooks/_subscribers_tab.html.erb +1 -0
- data/app/views/admin/shared/_spree_mail_sub_nav.html.erb +8 -0
- data/app/views/admin/subscribers/_form.html.erb +19 -0
- data/app/views/admin/subscribers/_options.html.erb +5 -0
- data/app/views/admin/subscribers/edit.html.erb +15 -0
- data/app/views/admin/subscribers/index.html.erb +76 -0
- data/app/views/admin/subscribers/new.html.erb +15 -0
- data/app/views/admin/subscribers/show.html.erb +19 -0
- data/app/views/hooks/_footer_left.html.erb +1 -0
- data/app/views/hooks/_subscriber_sign_up_form.html.erb +4 -0
- data/app/views/hooks/_subscriber_static_content.html.erb +3 -0
- data/app/views/layouts/email.html.erb +81 -0
- data/app/views/subscribers/_fields.html.erb +11 -0
- data/app/views/subscribers/new.html.erb +17 -0
- data/app/views/subscribers/show.html.erb +16 -0
- data/config/locales/en.yml +33 -0
- data/config/routes.rb +20 -0
- data/db/migrate/install_spree_mail.rb +25 -0
- data/lib/spree_mail.rb +24 -0
- data/lib/spree_mail/custom_hooks.rb +20 -0
- data/lib/spree_mail/version.rb +3 -0
- data/lib/tasks/install.rake +36 -0
- data/public/images/mailer/airmail.gif +0 -0
- data/public/images/mailer/background.jpg +0 -0
- data/public/images/mailer/postmark.png +0 -0
- data/public/stylesheets/admin/spree_mail.css +38 -0
- metadata +149 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
<p>
|
2
|
+
<%= form.label :name %><br/>
|
3
|
+
<%= form.text_field :name, :class => 'title required' %>
|
4
|
+
</p>
|
5
|
+
<p>
|
6
|
+
<%= form.label :email %><br/>
|
7
|
+
<%= form.text_field :email, :class => 'title required' %>
|
8
|
+
</p>
|
9
|
+
<p class="action">
|
10
|
+
<%= form.submit t("sign_up") %>
|
11
|
+
</p>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<div class="left">
|
2
|
+
|
3
|
+
<%= hook :subscriber_static_content do %>
|
4
|
+
<%= render 'hooks/subscriber_static_content' %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="right">
|
10
|
+
|
11
|
+
<%= hook :subscriber_sign_up_form do %>
|
12
|
+
<%= render 'hooks/subscriber_sign_up_form' %>
|
13
|
+
<% end %>
|
14
|
+
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="clear"> </div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<h1>Unsubscribe from our Mailing List</h1>
|
2
|
+
|
3
|
+
<p>Please enter your email address below:</p>
|
4
|
+
|
5
|
+
<% token = Digest::SHA1.hexdigest(Time.now.to_s) %>
|
6
|
+
<%= form_for @subscriber, :url => unsubscribe_subscriber_path(@subscriber.token) do |form| %>
|
7
|
+
<p>
|
8
|
+
<%= form.label :email %>
|
9
|
+
<%= form.text_field :email, :value => "" %>
|
10
|
+
<%= form.hidden_field :token, :value => token %>
|
11
|
+
</p>
|
12
|
+
<p>
|
13
|
+
<%= form.submit "Unsubscribe" %> or
|
14
|
+
<%= link_to "Cancel", root_path %>
|
15
|
+
</p>
|
16
|
+
<% end %>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
en:
|
2
|
+
spree_mail: Spree Mail
|
3
|
+
newsletter_sign_up: Sign up for our Newsletter
|
4
|
+
|
5
|
+
subscribers: Subscribers
|
6
|
+
listing_subscribers: Listing Subscribers
|
7
|
+
show_subscriber: Show Subscriber
|
8
|
+
new_subscriber: New Subscriber
|
9
|
+
editing_subscriber: Editing Subscriber
|
10
|
+
view_unsubscribed: View Unsubscribed
|
11
|
+
view_all_subscribers: View All Subscribers
|
12
|
+
|
13
|
+
resubscribe_success: "Successfully Resubscribed"
|
14
|
+
resubscribe_failed: "Resubscribe Failed"
|
15
|
+
unsubscribe_success: "Successfully Unsubscribed"
|
16
|
+
unsubscribe_failed: "Unsubscribed failed"
|
17
|
+
|
18
|
+
listing_emails: Listing Emails
|
19
|
+
show_email: Show Email
|
20
|
+
new_email: New Email
|
21
|
+
editing_email: Editing Email
|
22
|
+
|
23
|
+
emails: Emails
|
24
|
+
|
25
|
+
to: To
|
26
|
+
send: Send
|
27
|
+
subject: Subject
|
28
|
+
message_body: Message Body
|
29
|
+
|
30
|
+
delivery_success: Your email was successfully sent!
|
31
|
+
delivery_failed: Sorry, your email could not be sent.
|
32
|
+
|
33
|
+
|
data/config/routes.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
|
3
|
+
get "/email/:token/:id", :to => "emails#show", :as => :read_email
|
4
|
+
|
5
|
+
resources :subscribers, :except => [:edit,:update] do
|
6
|
+
put :unsubscribe, :on => :member
|
7
|
+
end
|
8
|
+
|
9
|
+
namespace(:admin) do
|
10
|
+
resources :subscribers do
|
11
|
+
get :unsubscribed, :on => :collection
|
12
|
+
get :resubscribe, :on => :member
|
13
|
+
get :unsubscribe, :on => :member
|
14
|
+
end
|
15
|
+
resources :emails do
|
16
|
+
get :deliver, :on => :member, :path => 'send'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class InstallSpreeMail < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def self.up
|
4
|
+
create_table :subscribers do |t|
|
5
|
+
t.string :token
|
6
|
+
t.string :name
|
7
|
+
t.string :email
|
8
|
+
t.datetime :unsubscribed_at
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
create_table :emails do |t|
|
12
|
+
t.string :token
|
13
|
+
t.text :to
|
14
|
+
t.string :subject
|
15
|
+
t.text :body
|
16
|
+
t.timestamps
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.down
|
21
|
+
drop_table :subscribers
|
22
|
+
drop_table :emails
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/lib/spree_mail.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'mustache'
|
2
|
+
require 'spree_mail/version'
|
3
|
+
require 'spree_mail/custom_hooks'
|
4
|
+
|
5
|
+
module SpreeMail
|
6
|
+
|
7
|
+
class Engine < Rails::Engine
|
8
|
+
|
9
|
+
config.autoload_paths += %W(#{config.root}/lib)
|
10
|
+
|
11
|
+
initializer "static assets" do |app|
|
12
|
+
app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{config.root}/public"
|
13
|
+
end
|
14
|
+
|
15
|
+
#def self.activate
|
16
|
+
# #Dir["../app/**/*.rb"].each do |c|
|
17
|
+
# # puts c
|
18
|
+
# # #Rails.env.production? ? require(c) : load(c)
|
19
|
+
# #end
|
20
|
+
#end
|
21
|
+
|
22
|
+
#config.to_prepare &method(:activate).to_proc
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module SpreeMail
|
2
|
+
class CustomHooks < Spree::ThemeSupport::HookListener
|
3
|
+
# custom hooks go here
|
4
|
+
|
5
|
+
#replace :admin_product_form_right, 'admin/hooks/product_form_right'
|
6
|
+
#
|
7
|
+
#replace :cart_item_price, 'hooks/cart_item_price'
|
8
|
+
#replace :cart_item_total, 'hooks/cart_item_total'
|
9
|
+
#
|
10
|
+
#insert_before :inside_cart_form, 'hooks/wholesale_customer_id'
|
11
|
+
#
|
12
|
+
#insert_after :admin_orders_index_headers, 'admin/hooks/admin_orders_index_headers'
|
13
|
+
#insert_after :admin_orders_index_rows, 'admin/hooks/admin_orders_index_rows'
|
14
|
+
#insert_after :admin_orders_index_search, 'admin/hooks/admin_orders_index_search'
|
15
|
+
|
16
|
+
insert_after :footer_left, 'hooks/footer_left'
|
17
|
+
insert_after :admin_tabs, 'admin/hooks/subscribers_tab'
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
namespace :spree_mail do
|
2
|
+
|
3
|
+
desc "Copies all migrations (NOTE: This will be obsolete with Rails 3.1)"
|
4
|
+
task :install do
|
5
|
+
Rake::Task['spree_mail:install:migrations'].invoke
|
6
|
+
end
|
7
|
+
|
8
|
+
namespace :install do
|
9
|
+
desc "Copies all migrations (NOTE: This will be obsolete with Rails 3.1)"
|
10
|
+
task :migrations do
|
11
|
+
|
12
|
+
source = File.expand_path('../../../db/migrate', __FILE__)
|
13
|
+
destination = File.join(Rails.root, 'db', 'migrate')
|
14
|
+
|
15
|
+
FileUtils.mkdir_p(destination)
|
16
|
+
|
17
|
+
migrations = Dir.entries(destination).select{|file| file.match('.rb') }
|
18
|
+
|
19
|
+
files = Dir.entries(source).select{|file| file.match('.rb') }
|
20
|
+
files.each_with_index do |file,index|
|
21
|
+
time = Time.now + (index * 7)
|
22
|
+
number = [time.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % index].max
|
23
|
+
new_file = [number,file].join('_')
|
24
|
+
src = File.join(source, file)
|
25
|
+
dst = File.join(destination, new_file)
|
26
|
+
if 0 < migrations.select{|migration| migration.match(file) != nil }.length
|
27
|
+
puts "#{file} exists!"
|
28
|
+
else
|
29
|
+
FileUtils.cp(src, dst)
|
30
|
+
puts "#{new_file} copied!"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,38 @@
|
|
1
|
+
ul.select {
|
2
|
+
list-style-type: none;
|
3
|
+
margin: 0;
|
4
|
+
padding: 7px;
|
5
|
+
height: 309px;
|
6
|
+
background-color: #fff;
|
7
|
+
border: 1px solid #bbb;
|
8
|
+
overflow: auto;
|
9
|
+
}
|
10
|
+
li.checkbox {
|
11
|
+
clear: both;
|
12
|
+
display: block;
|
13
|
+
margin-bottom: 2px;
|
14
|
+
padding: 3px;
|
15
|
+
border: 1px solid #e0e0e0;
|
16
|
+
background-color: #eee;
|
17
|
+
}
|
18
|
+
li.checkbox:hover {
|
19
|
+
background-color: #0095DA;
|
20
|
+
border: 1px solid #34599b;
|
21
|
+
color: #fff;
|
22
|
+
cursor: pointer;
|
23
|
+
}
|
24
|
+
label.checkbox {
|
25
|
+
clear: none;
|
26
|
+
margin: 0 0 0 5px;
|
27
|
+
padding: 0;
|
28
|
+
}
|
29
|
+
input.checkbox {
|
30
|
+
float: left;
|
31
|
+
display: block;
|
32
|
+
}
|
33
|
+
textarea.contacts {
|
34
|
+
margin: 0;
|
35
|
+
padding: 5px;
|
36
|
+
width: 280px;
|
37
|
+
height: 300px;
|
38
|
+
}
|
metadata
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: spree_mail
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 40
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.40.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Spencer Steffen
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-01-26 00:00:00 -08:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: spree_core
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 40
|
32
|
+
- 2
|
33
|
+
version: 0.40.2
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: spree_auth
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
- 40
|
47
|
+
- 2
|
48
|
+
version: 0.40.2
|
49
|
+
type: :runtime
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: mustache
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
- 12
|
62
|
+
- 0
|
63
|
+
version: 0.12.0
|
64
|
+
type: :runtime
|
65
|
+
version_requirements: *id003
|
66
|
+
description: Spree Mail extends Spree by adding a mailing list subscriber model, sign up forms and an admin to send messages.
|
67
|
+
email:
|
68
|
+
- spencer@citrusme.com
|
69
|
+
executables: []
|
70
|
+
|
71
|
+
extensions: []
|
72
|
+
|
73
|
+
extra_rdoc_files: []
|
74
|
+
|
75
|
+
files:
|
76
|
+
- README.md
|
77
|
+
- config/locales/en.yml
|
78
|
+
- config/routes.rb
|
79
|
+
- lib/spree_mail/custom_hooks.rb
|
80
|
+
- lib/spree_mail/version.rb
|
81
|
+
- lib/spree_mail.rb
|
82
|
+
- lib/tasks/install.rake
|
83
|
+
- app/controllers/admin/emails_controller.rb
|
84
|
+
- app/controllers/admin/subscribers_controller.rb
|
85
|
+
- app/controllers/emails_controller.rb
|
86
|
+
- app/controllers/subscribers_controller.rb
|
87
|
+
- app/mailers/email_mailer.rb
|
88
|
+
- app/model/email.rb
|
89
|
+
- app/model/subscriber.rb
|
90
|
+
- app/views/admin/emails/_form.html.erb
|
91
|
+
- app/views/admin/emails/edit.html.erb
|
92
|
+
- app/views/admin/emails/index.html.erb
|
93
|
+
- app/views/admin/emails/new.html.erb
|
94
|
+
- app/views/admin/emails/show.html.erb
|
95
|
+
- app/views/admin/hooks/_subscribers_tab.html.erb
|
96
|
+
- app/views/admin/shared/_spree_mail_sub_nav.html.erb
|
97
|
+
- app/views/admin/subscribers/_form.html.erb
|
98
|
+
- app/views/admin/subscribers/_options.html.erb
|
99
|
+
- app/views/admin/subscribers/edit.html.erb
|
100
|
+
- app/views/admin/subscribers/index.html.erb
|
101
|
+
- app/views/admin/subscribers/new.html.erb
|
102
|
+
- app/views/admin/subscribers/show.html.erb
|
103
|
+
- app/views/hooks/_footer_left.html.erb
|
104
|
+
- app/views/hooks/_subscriber_sign_up_form.html.erb
|
105
|
+
- app/views/hooks/_subscriber_static_content.html.erb
|
106
|
+
- app/views/layouts/email.html.erb
|
107
|
+
- app/views/subscribers/_fields.html.erb
|
108
|
+
- app/views/subscribers/new.html.erb
|
109
|
+
- app/views/subscribers/show.html.erb
|
110
|
+
- db/migrate/install_spree_mail.rb
|
111
|
+
- public/images/mailer/airmail.gif
|
112
|
+
- public/images/mailer/background.jpg
|
113
|
+
- public/images/mailer/postmark.png
|
114
|
+
- public/stylesheets/admin/spree_mail.css
|
115
|
+
- Rakefile
|
116
|
+
has_rdoc: false
|
117
|
+
homepage: http://github.com/citrus/spree_mail
|
118
|
+
licenses: []
|
119
|
+
|
120
|
+
post_install_message:
|
121
|
+
rdoc_options: []
|
122
|
+
|
123
|
+
require_paths:
|
124
|
+
- lib
|
125
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
segments:
|
131
|
+
- 0
|
132
|
+
version: "0"
|
133
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
segments:
|
139
|
+
- 0
|
140
|
+
version: "0"
|
141
|
+
requirements: []
|
142
|
+
|
143
|
+
rubyforge_project:
|
144
|
+
rubygems_version: 1.3.7
|
145
|
+
signing_key:
|
146
|
+
specification_version: 3
|
147
|
+
summary: Spree Mail adds mailing list signup and delivery features.
|
148
|
+
test_files: []
|
149
|
+
|