refinerycms-newsletters 1.0
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/app/controllers/admin/newsletters_controller.rb +30 -0
- data/app/controllers/newsletters_controller.rb +20 -0
- data/app/models/newsletter.rb +7 -0
- data/app/views/admin/newsletters/_form.html.erb +24 -0
- data/app/views/admin/newsletters/_newsletter.html.erb +18 -0
- data/app/views/admin/newsletters/_newsletters.html.erb +2 -0
- data/app/views/admin/newsletters/_sortable_list.html.erb +7 -0
- data/app/views/admin/newsletters/edit.html.erb +1 -0
- data/app/views/admin/newsletters/index.html.erb +56 -0
- data/app/views/admin/newsletters/new.html.erb +1 -0
- data/app/views/newsletters/index.html.erb +26 -0
- data/app/views/newsletters/thank_you.html.erb +1 -0
- data/config/locales/en.yml +26 -0
- data/config/locales/lolcat.yml +24 -0
- data/config/locales/nb.yml +20 -0
- data/config/locales/nl.yml +20 -0
- data/config/routes.rb +20 -0
- data/lib/generators/refinerycms_newsletters_generator.rb +6 -0
- data/lib/refinerycms-newsletters.rb +21 -0
- data/lib/tasks/newsletters.rake +13 -0
- metadata +85 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
module Admin
|
2
|
+
class NewslettersController < Admin::BaseController
|
3
|
+
|
4
|
+
crudify :newsletter,
|
5
|
+
:title_attribute => 'name'
|
6
|
+
|
7
|
+
def index
|
8
|
+
search_all_newsletters if searching?
|
9
|
+
paginate_all_newsletters
|
10
|
+
|
11
|
+
render :partial => 'newsletters' if request.xhr?
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
def download_csv
|
16
|
+
csv_lib = RUBY_VERSION =~ /1.8/ ? FasterCSV : CSV
|
17
|
+
|
18
|
+
csv_string = csv_lib.generate do |csv|
|
19
|
+
csv << ["Name", "Email"]
|
20
|
+
Newsletter.all.each do |newsletter|
|
21
|
+
csv << [newsletter.name, newsletter.email]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
send_data(csv_string,
|
25
|
+
:type => 'text/csv; charset=utf-8; header=present',
|
26
|
+
:filename => "newsletters_#{Date.today.to_s}.csv")
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class NewslettersController < ApplicationController
|
2
|
+
|
3
|
+
def thank_you
|
4
|
+
end
|
5
|
+
|
6
|
+
def index
|
7
|
+
@newsletter = Newsletter.new
|
8
|
+
end
|
9
|
+
|
10
|
+
def create
|
11
|
+
|
12
|
+
@newsletter = Newsletter.new(params[:newsletter])
|
13
|
+
if @newsletter.save
|
14
|
+
redirect_to thank_you_newsletters_url
|
15
|
+
else
|
16
|
+
render :action => 'new'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<%= form_for [:admin, @newsletter] do |f| -%>
|
2
|
+
<%= render :partial => "/shared/admin/error_messages", :locals => {
|
3
|
+
:object => @newsletter,
|
4
|
+
:include_object_name => true
|
5
|
+
} %>
|
6
|
+
|
7
|
+
<div class='field'>
|
8
|
+
<%= f.label :name -%>
|
9
|
+
<%= f.text_field :name, :class => 'larger widest' -%>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<div class='field'>
|
13
|
+
<%= f.label :email -%>
|
14
|
+
<%= f.text_field :email -%>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<%= render :partial => "/shared/admin/form_actions",
|
18
|
+
:locals => {
|
19
|
+
:f => f,
|
20
|
+
:continue_editing => false,
|
21
|
+
:delete_title => t('delete', :scope => 'admin.newsletters.newsletter'),
|
22
|
+
:delete_confirmation => t('message', :scope => 'shared.admin.delete', :title => @newsletter.name)
|
23
|
+
} %>
|
24
|
+
<% end -%>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(newsletter) -%>">
|
2
|
+
<span class='title'>
|
3
|
+
<%= "#{newsletter.name} - #{newsletter.email}" %>
|
4
|
+
<span class="preview"> </span>
|
5
|
+
</span>
|
6
|
+
<span class='actions'>
|
7
|
+
<%= link_to refinery_icon_tag("application_go.png"), admin_newsletter_url(newsletter),
|
8
|
+
:title => t('.view_live_html'),
|
9
|
+
:target => "_blank" %>
|
10
|
+
<%= link_to refinery_icon_tag("application_edit.png"), edit_admin_newsletter_path(newsletter),
|
11
|
+
:title => t('.edit') %>
|
12
|
+
<%= link_to refinery_icon_tag("delete.png"), admin_newsletter_path(newsletter),
|
13
|
+
:class => "cancel confirm-delete",
|
14
|
+
:title => t('.delete'),
|
15
|
+
:confirm => t('message', :scope => 'shared.admin.delete', :title => newsletter.name),
|
16
|
+
:method => :delete %>
|
17
|
+
</span>
|
18
|
+
</li>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<ul id='sortable_list'>
|
2
|
+
<%= render :partial => 'newsletter', :collection => @newsletters %>
|
3
|
+
</ul>
|
4
|
+
<%= render :partial => "/shared/admin/sortable_list",
|
5
|
+
:locals => {
|
6
|
+
:continue_reordering => (local_assigns.keys.include?(:continue_reordering)) ? continue_reordering : true
|
7
|
+
} %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => "form" %>
|
@@ -0,0 +1,56 @@
|
|
1
|
+
<div id='records'>
|
2
|
+
<% if searching? %>
|
3
|
+
<h2><%= t('results_for', :scope => 'shared.admin.search', :query => params[:search]) %></h2>
|
4
|
+
<% end %>
|
5
|
+
<% if @newsletters.any? %>
|
6
|
+
<div class='pagination_container'>
|
7
|
+
<%= render :partial => 'newsletters' %>
|
8
|
+
|
9
|
+
<%= link_to "Download subscription list", download_csv_admin_newsletters_path %>
|
10
|
+
</div>
|
11
|
+
<% else %>
|
12
|
+
<p>
|
13
|
+
<% unless searching? %>
|
14
|
+
<strong>
|
15
|
+
<%= t('.no_items_yet') %>
|
16
|
+
</strong>
|
17
|
+
<% else %>
|
18
|
+
<%= t('no_results', :scope => 'shared.admin.search') %>
|
19
|
+
<% end %>
|
20
|
+
</p>
|
21
|
+
<% end %>
|
22
|
+
</div>
|
23
|
+
<div id='actions'>
|
24
|
+
<ul>
|
25
|
+
<% if Admin::NewslettersController.searchable? %>
|
26
|
+
<li>
|
27
|
+
<%= render :partial => "/shared/admin/search",
|
28
|
+
:locals => {
|
29
|
+
:url => admin_newsletters_url
|
30
|
+
} %>
|
31
|
+
</li>
|
32
|
+
<% end %>
|
33
|
+
<li>
|
34
|
+
<%= link_to t('.create_new'), new_admin_newsletter_url,
|
35
|
+
:class => "add_icon" %>
|
36
|
+
</li>
|
37
|
+
<% if !searching? and Admin::NewslettersController.sortable? and Newsletter.count > 1 %>
|
38
|
+
<li>
|
39
|
+
<%= link_to t('.reorder', :what => "Newsletters"),
|
40
|
+
admin_newsletters_url,
|
41
|
+
:id => "reorder_action",
|
42
|
+
:class => "reorder_icon" %>
|
43
|
+
|
44
|
+
<%= link_to t('.reorder_done', :what => "Newsletters"),
|
45
|
+
admin_newsletters_url,
|
46
|
+
:id => "reorder_action_done",
|
47
|
+
:style => "display: none;",
|
48
|
+
:class => "reorder_icon" %>
|
49
|
+
</li>
|
50
|
+
<% end %>
|
51
|
+
</ul>
|
52
|
+
</div>
|
53
|
+
<%= render :partial => "/shared/admin/make_sortable",
|
54
|
+
:locals => {
|
55
|
+
:tree => false
|
56
|
+
} if !searching? and Admin::NewslettersController.sortable? and Newsletter.count > 1 %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render :partial => "form" %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<% content_for :body_content_left do %>
|
2
|
+
<div class='newsletters'>
|
3
|
+
<%#=raw @page[Page.default_parts.first.to_sym] %>
|
4
|
+
|
5
|
+
<%= form_for @newsletter do |f| %>
|
6
|
+
<%= render :partial => "/shared/admin/error_messages",
|
7
|
+
:locals => {
|
8
|
+
:object => @newsletter,
|
9
|
+
:include_object_name => true
|
10
|
+
} %>
|
11
|
+
<div class='field'>
|
12
|
+
<%= f.required_label :name %>
|
13
|
+
<%= f.text_field :name %>
|
14
|
+
</div>
|
15
|
+
<div class='field'>
|
16
|
+
<%= f.required_label :email %>
|
17
|
+
<%= f.text_field :email %>
|
18
|
+
</div>
|
19
|
+
<div class='actions'>
|
20
|
+
<%= f.submit "Subscribe" %>
|
21
|
+
<%= link_to t('.privacy_policy'), "/pages/privacy-policy", :id => "privacy_link" if RefinerySetting.find_or_set(:show_contact_privacy_link, false) %>
|
22
|
+
</div>
|
23
|
+
<% end %>
|
24
|
+
</div>
|
25
|
+
<% end %>
|
26
|
+
<%= render :partial => "/shared/content_page" %>
|
@@ -0,0 +1 @@
|
|
1
|
+
Thank you for your subscription. Have a nice day!
|
@@ -0,0 +1,26 @@
|
|
1
|
+
en:
|
2
|
+
shared:
|
3
|
+
admin:
|
4
|
+
image_picker:
|
5
|
+
image: image
|
6
|
+
plugins:
|
7
|
+
newsletters:
|
8
|
+
title: Newsletters
|
9
|
+
admin:
|
10
|
+
newsletters:
|
11
|
+
index:
|
12
|
+
title: Newsletters
|
13
|
+
create_new: Add New Newsletter
|
14
|
+
reorder: Reorder Newsletters
|
15
|
+
reorder_done: Done Reordering Newsletters
|
16
|
+
sorry_no_results: Sorry! There are no results found.
|
17
|
+
no_items_yet: There are no Newsletters yet. Click "Add New Newsletter" to add your first newsletter.
|
18
|
+
subscribe: Subscribe
|
19
|
+
send: Send
|
20
|
+
newsletter:
|
21
|
+
view_live_html: View this newsletter live <br/><em>(opens in a new window)</em>
|
22
|
+
edit: Edit this newsletter
|
23
|
+
delete: Remove this newsletter forever
|
24
|
+
newsletters:
|
25
|
+
show:
|
26
|
+
other: Other Newsletters
|
@@ -0,0 +1,24 @@
|
|
1
|
+
lolcat:
|
2
|
+
shared:
|
3
|
+
admin:
|
4
|
+
image_picker:
|
5
|
+
image: IMAGE
|
6
|
+
plugins:
|
7
|
+
newsletters:
|
8
|
+
title: Newsletters
|
9
|
+
admin:
|
10
|
+
newsletters:
|
11
|
+
index:
|
12
|
+
title: Newsletters
|
13
|
+
create_new: CREATE NEW Newsletter
|
14
|
+
reorder: REORDR Newsletters
|
15
|
+
reorder_done: DUN REORDERIN Newsletters
|
16
|
+
sorry_no_results: SRY! THAR R NO RESULTS FINDZ.
|
17
|
+
no_items_yet: THAR R NO Newsletters YET. CLICK "CREATE NEW Newsletter" 2 ADD UR FURST newsletter.
|
18
|
+
newsletter:
|
19
|
+
view_live_html: VIEW DIS newsletter LIV <BR/><EM>(OPENS IN NEW WINDOW)</EM>
|
20
|
+
edit: EDIT DIS newsletter
|
21
|
+
delete: REMOOV DIS newsletter FOREVR
|
22
|
+
newsletters:
|
23
|
+
show:
|
24
|
+
other: OTHR Newsletters
|
@@ -0,0 +1,20 @@
|
|
1
|
+
nb:
|
2
|
+
plugins:
|
3
|
+
newsletters:
|
4
|
+
title: Newsletters
|
5
|
+
admin:
|
6
|
+
newsletters:
|
7
|
+
index:
|
8
|
+
title: Newsletters
|
9
|
+
create_new: Lag en ny Newsletter
|
10
|
+
reorder: Endre rekkefølgen på Newsletters
|
11
|
+
reorder_done: Ferdig å endre rekkefølgen Newsletters
|
12
|
+
sorry_no_results: Beklager! Vi fant ikke noen resultater.
|
13
|
+
no_items_yet: Det er ingen Newsletters enda. Klikk på "Lag en ny Newsletter" for å legge til din første newsletter.
|
14
|
+
newsletter:
|
15
|
+
view_live_html: Vis hvordan denne newsletter ser ut offentlig <br/><em>(åpner i et nytt vindu)</em>
|
16
|
+
edit: Rediger denne newsletter
|
17
|
+
delete: Fjern denne newsletter permanent
|
18
|
+
newsletters:
|
19
|
+
show:
|
20
|
+
other: Andre Newsletters
|
@@ -0,0 +1,20 @@
|
|
1
|
+
nl:
|
2
|
+
plugins:
|
3
|
+
newsletters:
|
4
|
+
title: Newsletters
|
5
|
+
admin:
|
6
|
+
newsletters:
|
7
|
+
index:
|
8
|
+
title: Newsletters
|
9
|
+
create_new: Maak een nieuwe Newsletter
|
10
|
+
reorder: Wijzig de volgorde van de Newsletters
|
11
|
+
reorder_done: Klaar met het wijzingen van de volgorde van de Newsletters
|
12
|
+
sorry_no_results: Helaas! Er zijn geen resultaten gevonden.
|
13
|
+
no_items_yet: Er zijn nog geen Newsletters. Druk op 'Maak een nieuwe Newsletter' om de eerste aan te maken.
|
14
|
+
newsletter:
|
15
|
+
view_live_html: Bekijk deze newsletter op de website <br/><em>(opent een nieuw venster)</em>
|
16
|
+
edit: Bewerk deze newsletter
|
17
|
+
delete: Verwijder deze newsletter voor eeuwig
|
18
|
+
newsletters:
|
19
|
+
show:
|
20
|
+
other: Andere Newsletters
|
data/config/routes.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Refinery::Application.routes.draw do
|
2
|
+
|
3
|
+
resources :newsletters,
|
4
|
+
:only => [:index, :create],
|
5
|
+
:as => :newsletters,
|
6
|
+
:controller => 'newsletters' do
|
7
|
+
collection do
|
8
|
+
get :thank_you
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
scope(:path => 'admin', :as => 'admin', :module => 'admin') do
|
13
|
+
resources :newsletters, :except => :show do
|
14
|
+
collection do
|
15
|
+
post :update_positions
|
16
|
+
get :download_csv
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'refinery'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
module Newsletters
|
5
|
+
class Engine < Rails::Engine
|
6
|
+
initializer "static assets" do |app|
|
7
|
+
app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public"
|
8
|
+
end
|
9
|
+
|
10
|
+
config.after_initialize do
|
11
|
+
Refinery::Plugin.register do |plugin|
|
12
|
+
plugin.name = "newsletters"
|
13
|
+
plugin.activity = {
|
14
|
+
:class => Newsletter,
|
15
|
+
:title => 'name'
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: refinerycms-newsletters
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 15
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
version: "1.0"
|
10
|
+
platform: ruby
|
11
|
+
authors: []
|
12
|
+
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-03-10 00:00:00 +08:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: Ruby on Rails Newsletters engine for Refinery CMS
|
22
|
+
email:
|
23
|
+
executables: []
|
24
|
+
|
25
|
+
extensions: []
|
26
|
+
|
27
|
+
extra_rdoc_files: []
|
28
|
+
|
29
|
+
files:
|
30
|
+
- lib/generators/refinerycms_newsletters_generator.rb
|
31
|
+
- lib/refinerycms-newsletters.rb
|
32
|
+
- lib/tasks/newsletters.rake
|
33
|
+
- config/locales/en.yml
|
34
|
+
- config/locales/lolcat.yml
|
35
|
+
- config/locales/nb.yml
|
36
|
+
- config/locales/nl.yml
|
37
|
+
- config/routes.rb
|
38
|
+
- app/controllers/admin/newsletters_controller.rb
|
39
|
+
- app/controllers/newsletters_controller.rb
|
40
|
+
- app/models/newsletter.rb
|
41
|
+
- app/views/admin/newsletters/_form.html.erb
|
42
|
+
- app/views/admin/newsletters/_newsletter.html.erb
|
43
|
+
- app/views/admin/newsletters/_newsletters.html.erb
|
44
|
+
- app/views/admin/newsletters/_sortable_list.html.erb
|
45
|
+
- app/views/admin/newsletters/edit.html.erb
|
46
|
+
- app/views/admin/newsletters/index.html.erb
|
47
|
+
- app/views/admin/newsletters/new.html.erb
|
48
|
+
- app/views/newsletters/index.html.erb
|
49
|
+
- app/views/newsletters/thank_you.html.erb
|
50
|
+
has_rdoc: true
|
51
|
+
homepage:
|
52
|
+
licenses: []
|
53
|
+
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options: []
|
56
|
+
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
none: false
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
hash: 3
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 3
|
74
|
+
segments:
|
75
|
+
- 0
|
76
|
+
version: "0"
|
77
|
+
requirements: []
|
78
|
+
|
79
|
+
rubyforge_project:
|
80
|
+
rubygems_version: 1.3.7
|
81
|
+
signing_key:
|
82
|
+
specification_version: 3
|
83
|
+
summary: Newsletters engine for Refinery CMS
|
84
|
+
test_files: []
|
85
|
+
|