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.
@@ -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,7 @@
1
+ class Newsletter < ActiveRecord::Base
2
+
3
+ acts_as_indexed :fields => [:name, :email]
4
+
5
+ validates :name, :presence => true, :uniqueness => true
6
+
7
+ 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">&nbsp;</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,2 @@
1
+ <%= will_paginate @newsletters %>
2
+ <%= render :partial => "sortable_list" %>
@@ -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
@@ -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,6 @@
1
+ class RefinerycmsNewsletters < Refinery::Generators::EngineInstaller
2
+
3
+ source_root File.expand_path('../../../', __FILE__)
4
+ engine_name "newsletters"
5
+
6
+ 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
@@ -0,0 +1,13 @@
1
+ namespace :refinery do
2
+
3
+ namespace :newsletters do
4
+
5
+ # call this task my running: rake refinery:newsletters:my_task
6
+ # desc "Description of my task below"
7
+ # task :my_task => :environment do
8
+ # # add your logic here
9
+ # end
10
+
11
+ end
12
+
13
+ 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
+