-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
37 changed files
with
872 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
.margin-top { | ||
margin-top: 24px; | ||
} | ||
|
||
.highlight { | ||
background: #e7f2fc; | ||
border: 1px solid #f3f8fd; | ||
margin-bottom: 24px; | ||
padding: 12px; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
module Admin | ||
class NewslettersController < AdminController | ||
|
||
def index | ||
@newsletters = Newsletter.all | ||
end | ||
|
||
def show | ||
@newsletter = Newsletter.find(params[:id]) | ||
end | ||
|
||
def new | ||
@newsletter = Newsletter.new | ||
end | ||
|
||
def create | ||
@newsletter = Newsletter.new(newsletter_params) | ||
|
||
if @newsletter.save | ||
notice = t("backend.newsletters.create_success") | ||
redirect_to [:admin, @newsletter], notice: notice | ||
else | ||
render :new | ||
end | ||
end | ||
|
||
def edit | ||
@newsletter = Newsletter.find(params[:id]) | ||
end | ||
|
||
def update | ||
@newsletter = Newsletter.find(params[:id]) | ||
|
||
if @newsletter.update(newsletter_params) | ||
redirect_to [:admin, @newsletter], notice: t("backend.newsletters.update_success") | ||
else | ||
render :edit | ||
end | ||
end | ||
|
||
def destroy | ||
@newsletter = Newsletter.find(params[:id]) | ||
@newsletter.destroy | ||
|
||
redirect_to admin_newsletters_path, notice: t("backend.newsletters.delete_success") | ||
end | ||
|
||
def deliver | ||
@newsletter = Newsletter.find(params[:id]) | ||
|
||
if @newsletter.valid? | ||
@newsletter.deliver | ||
@newsletter.update(sent_at: Time.current) | ||
flash[:notice] = t("backend.newsletters.send_success") | ||
else | ||
flash[:error] = t("admin.segment_recipient.invalid_recipients_segment") | ||
end | ||
|
||
redirect_to [:admin, @newsletter] | ||
end | ||
|
||
private | ||
|
||
def newsletter_params | ||
params.require(:newsletter).permit(:subject, :segment_recipient, :from, :body, :interest_id) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
module MailerHelper | ||
|
||
def newsletter? | ||
action_name == "newsletter" | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
require 'rails_rinku' | ||
module TextWithLinksHelper | ||
|
||
def safe_html_with_links(html) | ||
return if html.nil? | ||
Rinku.auto_link(html, :all, 'target="_blank" rel="nofollow"').html_safe | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
class ApplicationMailer < ActionMailer::Base | ||
default from: "no-reply@madrid.es" | ||
layout 'mailer' | ||
add_template_helper(MailerHelper) | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
class Log < ActiveRecord::Base | ||
belongs_to :actionable, polymorphic: true | ||
belongs_to :organization | ||
|
||
def self.activity(organization, action, actionable) | ||
create(organization: organization, action: action.to_s, actionable: actionable) | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
class Newsletter < ActiveRecord::Base | ||
belongs_to :interest | ||
|
||
validates :subject, presence: true | ||
validates :body, presence: true | ||
validates :interest_id, presence: true | ||
|
||
def list_of_recipient_emails | ||
Organization.where(organization_interests: { interest: interest }) | ||
.joins(:organization_interests) | ||
.pluck(:email) << admin_email | ||
end | ||
|
||
def admin_email | ||
"registrodelobbies@madrid.es" | ||
end | ||
|
||
def draft? | ||
sent_at.nil? | ||
end | ||
|
||
def deliver | ||
list_of_recipient_emails.each do |recipient_email| | ||
if valid_email?(recipient_email) | ||
begin | ||
UserMailer.newsletter(self, recipient_email).deliver_now | ||
log_delivery(recipient_email) | ||
rescue | ||
log_delivery(recipient_email, :email_error) | ||
end | ||
end | ||
end | ||
end | ||
|
||
private | ||
|
||
def valid_email?(email) | ||
email.match(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i) | ||
end | ||
|
||
def log_delivery(recipient_email, action=:email) | ||
if recipient_email == admin_email | ||
Log.activity(nil, "admin_email", self) | ||
else | ||
organization = Organization.where(email: recipient_email).first | ||
Log.activity(organization, action, self) | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
<%= form_for [:admin, @newsletter] do |f| %> | ||
|
||
<label><%= t('backend.newsletters.new.category') %></label> | ||
<%= f.select :interest_id, | ||
Interest.all.collect { |interest| [interest.name, interest.id] }, | ||
prompt: t('backend.newsletters.new.select_category') %> | ||
<% if @newsletter.errors.any? %> | ||
<div class="panel alert-box alert radius"> | ||
<strong> | ||
<%= t('activerecord.errors.template.header', | ||
:model => Newsletter.model_name.human, | ||
:count => @newsletter.errors.count) %></strong> | ||
<ul> | ||
<% @newsletter.errors.full_messages.each do |msg| %> | ||
<li><%= msg %></li> | ||
<% end %> | ||
</ul> | ||
</div> | ||
<% end %> | ||
<%= f.label :subject, t('backend.newsletters.new.subject') %> | ||
<%= f.text_field :subject %> | ||
<%= f.label :body, t('backend.newsletters.new.body') %> | ||
<%= f.text_area :body, rows: 10 %> | ||
|
||
<div class="margin-top"> | ||
<%= f.submit class: "button success" %> | ||
</div> | ||
<% end %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<%= link_to t('backend.back'), | ||
admin_newsletters_path , | ||
class: "button tiny radius" %> | ||
|
||
<h2><%= t("backend.newsletters.edit.title") %></h2> | ||
|
||
<%= render "form" %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<h2 class="inline-block"><%= t("backend.newsletters.index.title") %></h2> | ||
<%= link_to t("backend.newsletters.index.new_newsletter"), new_admin_newsletter_path, | ||
class: "button float-right" %> | ||
<% if @newsletters.any? %> | ||
<table id="newsletters"> | ||
<thead> | ||
<tr> | ||
<th class="small-2"><%= t("backend.newsletters.index.subject") %></th> | ||
<th><%= t("backend.newsletters.index.sent") %></th> | ||
<th><%= t("backend.newsletters.index.actions") %></th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<% @newsletters.order(created_at: :desc).each do |newsletter| %> | ||
<tr id="<%= dom_id(newsletter) %>" class="newsletter"> | ||
<td> | ||
<%= newsletter.subject %> | ||
</td> | ||
<td> | ||
<% if newsletter.draft? %> | ||
<%= t("backend.newsletters.index.draft") %> | ||
<% else %> | ||
<%= l newsletter.sent_at.to_date %> | ||
<% end %> | ||
</td> | ||
<td> | ||
<%= link_to t("backend.newsletters.index.edit"), | ||
edit_admin_newsletter_path(newsletter), | ||
class: "button hollow expanded" %> | ||
<%= link_to t("backend.newsletters.index.delete"), | ||
admin_newsletter_path(newsletter), | ||
method: :delete, class: "button hollow alert expanded" %> | ||
<%= link_to t("backend.newsletters.index.preview"), | ||
admin_newsletter_path(newsletter), | ||
class: "button expanded" %> | ||
</td> | ||
</tr> | ||
<% end %> | ||
</tbody> | ||
</table> | ||
<% else %> | ||
<div data-alert class="alert-box radius primary margin-top clear"> | ||
<%= t("backend.newsletters.index.empty_newsletters") %> | ||
</div> | ||
<% end %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<%= link_to t('backend.back'), | ||
admin_newsletters_path , | ||
class: "button tiny radius" %> | ||
|
||
<h2><%= t("backend.newsletters.new.title") %></h2> | ||
|
||
<%= render "form" %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
<%= link_to t('backend.back'), | ||
admin_newsletters_path , | ||
class: "button tiny radius" %> | ||
|
||
<h2><%= t("backend.newsletters.show.title") %></h2> | ||
|
||
<% recipients_count = @newsletter.list_of_recipient_emails.count %> | ||
|
||
<div class="small-12 column callout highlight"> | ||
<div class="small-12 medium-2 column"> | ||
<strong><%= t("backend.newsletters.show.sent_at") %></strong><br> | ||
<% if @newsletter.draft? %> | ||
<%= t("backend.newsletters.index.draft") %> | ||
<% else %> | ||
<%= l @newsletter.sent_at.to_date %> | ||
<% end %> | ||
</div> | ||
<div class="small-12 medium-4 column"> | ||
<strong><%= t("backend.newsletters.show.subject") %></strong><br> | ||
<%= @newsletter.subject %> | ||
</div> | ||
<div class="small-12 medium-4 column"> | ||
<strong><%= t("backend.newsletters.show.category") %></strong> | ||
Asociaciones/Fundaciones | ||
</div> | ||
<div class="small-12 column margin-top"> | ||
<strong><%= t("backend.newsletters.show.segment_recipient") %></strong><br> | ||
<%= t("backend.newsletters.show.affected_users", n: recipients_count) %> | ||
</div> | ||
</div> | ||
|
||
<div class="small-12 column"> | ||
<strong><%= t("backend.newsletters.show.body") %></strong> | ||
<p class="help-text" id="phase-description-help-text"> | ||
<%= t("backend.newsletters.show.body_help_text") %> | ||
</p> | ||
</div> | ||
|
||
<div class="newsletter-body-content"> | ||
|
||
<table cellpadding="0" cellspacing="0" border="0" style="background: #fff; margin: 0 auto; max-width: 800px; width:100%;"> | ||
<thead> | ||
<tr> | ||
<th style="background: #013df5;"> | ||
<%= image_tag 'logo-email.jpg', alt:'¡Madrid' %> | ||
</th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr> | ||
<%= render file: "app/views/user_mailer/newsletter.html.erb" %> | ||
</tr> | ||
<tr> | ||
<td> | ||
<p><%= t('mailers.footer_newsletter') %> | ||
<p><%= t('mailers.footer', year: Date.current.year) %></p> | ||
</td> | ||
</tr> | ||
</tbody> | ||
</table> | ||
</div> | ||
|
||
<% if @newsletter.draft? %> | ||
<div class="samll-12 column margin-top"> | ||
<%= link_to t("backend.newsletters.show.send"), | ||
deliver_admin_newsletter_path(@newsletter), | ||
"data-alert": t("backend.newsletters.show.send_alert", n: recipients_count), | ||
method: :post, | ||
id: "js-send-newsletter-alert", | ||
class: "button success" %> | ||
</div> | ||
<% end %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.