Add Admin System Emails view & first system email

Admins need to be able to see what a particular System Email looks like
with dummy data.

Also adding the first system email to be managed: the proposal
notification digest.

In case the current admin doesn't have any Notifications from
 ProposalNotifications there will be a crash. We'll solve this in later
 PR's with a system to "inject" sample text in email templates without
 having to generate records in the database.
This commit is contained in:
Bertocq
2018-04-12 19:17:33 +02:00
committed by decabeza
parent b9c6da245a
commit 5c726e0949
7 changed files with 94 additions and 33 deletions

View File

@@ -1,7 +1,22 @@
class Admin::SystemEmailsController < Admin::BaseController
before_action :load_system_email, only: [:view]
def index
@system_emails = %w(proposal_notification_digest)
end
def view
case @system_email
when "proposal_notification_digest"
@notifications = Notification.where(notifiable_type: "ProposalNotification").limit(2)
@subject = t('mailers.proposal_notification_digest.title', org_name: Setting['org_name'])
end
end
private
def load_system_email
@system_email = params[:system_email_id]
end
end

View File

@@ -20,8 +20,6 @@
<td class="text-right">
<%= link_to t("admin.shared.view"), admin_system_email_view_path(system_email),
class: "button hollow" %>
<%= link_to t("admin.shared.preview"), admin_system_email_preview_path(system_email),
class: "button" %>
</td>
</tr>
<% end %>

View File

@@ -0,0 +1,36 @@
<%= back_link_to admin_system_emails_path %>
<h2><%= t("admin.system_emails.#{@system_email}.title") %></h2>
<div class="small-12 column">
<div class="callout highlight">
<div class="row">
<div class="small-12 medium-4 column">
<strong><%= t("admin.newsletters.show.from") %></strong><br>
<%= Setting['mailer_from_address'] %>
</div>
<div class="small-12 medium-8 column">
<strong><%= t("admin.newsletters.show.subject") %></strong><br>
<%= @subject %>
</div>
</div>
</div>
<strong><%= t("admin.newsletters.show.body") %></strong>
<p class="help-text" id="phase-description-help-text">
<%= t("admin.newsletters.show.body_help_text") %>
</p>
<div class="newsletter-body-content">
<%= render file: "app/views/layouts/_mailer_header.html.erb" %>
<table cellpadding="0" cellspacing="0" border="0" style="background: #fff; margin: 0 auto; max-width: 700px; width:100%;">
<tbody>
<tr>
<%= render file: "app/views/mailer/#{@system_email}.html.erb" %>
</tr>
</tbody>
</table>
<%= render file: "app/views/layouts/_mailer_footer.html.erb" %>
</div>
</div>

View File

@@ -53,18 +53,3 @@ en:
recounting_poll: "Recounting Poll"
expired_poll_without_stats: "Expired Poll without Stats & Results"
expired_poll_with_stats: "Expired Poll with Stats & Results"
admin_notifications:
internal_link:
title: 'Do you have a proposal?'
body: 'Remember you can create a proposal with your ideas and people will discuss & support it.'
link: '/proposals'
external_link:
title: Help us translate consul
body: 'If you are proficient in a language, please help us translate consul!.'
link: 'https://crwd.in/consul'
without_link:
title: 'You can now geolocate proposals & investments'
body: 'When you create a proposal or investment you now can specify a point on a map'
not_sent:
title: 'We are closing the Participatory Budget!!'
body: 'Hurry up and create a last proposal before it ends next in few days!'

View File

@@ -53,18 +53,3 @@ es:
recounting_poll: "Votación en Recuento"
expired_poll_without_stats: "Votación Finalizada (sin Estadísticas o Resultados)"
expired_poll_with_stats: "Votación Finalizada (con Estadísticas y Resultado)"
admin_notifications:
internal_link:
title: 'Tienes una propuesta?'
body: 'Recuerda que puedes crear propuestas y los ciudadanos las debatirán y apoyarán.'
link: '/proposals'
external_link:
title: 'Ayúdanos a traducir CONSUL'
body: 'Si dominas un idioma, ayúdanos a completar su traducción en CONSUL.'
link: 'https://crwd.in/consul'
without_link:
title: 'Ahora puedes geolocalizar propuestas y proyectos de inversión'
body: 'Cuando crees una propuesta o proyecto de inversión podrás especificar su localización en el mapa'
not_sent:
title: 'Últimos días para crear proyectos de Presupuestos Participativos'
body: 'Quedan pocos dias para que se cierre el plazo de presentación de proyectos de inversión para los presupuestos participativos!'

View File

@@ -167,7 +167,6 @@ namespace :admin do
resources :system_emails, only: [:index] do
get :view
get :preview
end
resources :emails_download, only: :index do

View File

@@ -0,0 +1,43 @@
require 'rails_helper'
feature "System Emails" do
background do
admin = create(:administrator)
login_as(admin.user)
end
context "Index" do
scenario "Lists all system emails with correct actions" do
visit admin_system_emails_path
within('#proposal_notification_digest') do
expect(page).to have_link('View')
end
end
end
context "View" do
scenario "#proposal_notification_digest" do
proposal_a = create(:proposal, title: 'Proposal A')
proposal_b = create(:proposal, title: 'Proposal B')
proposal_notification_a = create(:proposal_notification, proposal: proposal_a,
title: 'Proposal A Title',
body: 'Proposal A Notification Body')
proposal_notification_b = create(:proposal_notification, proposal: proposal_b,
title: 'Proposal B Title',
body: 'Proposal B Notification Body')
notification_a = create(:notification, notifiable: proposal_notification_a)
notification_b = create(:notification, notifiable: proposal_notification_b)
visit admin_system_email_view_path('proposal_notification_digest')
expect(page).to have_content('Proposal notifications in')
expect(page).to have_link('Proposal A Title', href: notification_url(notification_a))
expect(page).to have_link('Proposal B Title', href: notification_url(notification_b))
expect(page).to have_content('Proposal A Notification Body')
expect(page).to have_content('Proposal B Notification Body')
end
end
end