diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/admin_spam_addresses_controller.rb | 27 | ||||
-rw-r--r-- | app/mailers/request_mailer.rb | 2 | ||||
-rw-r--r-- | app/models/spam_address.rb | 11 | ||||
-rw-r--r-- | app/views/admin_request/_incoming_message_actions.html.erb | 7 | ||||
-rw-r--r-- | app/views/admin_spam_addresses/index.html.erb | 51 | ||||
-rw-r--r-- | app/views/layouts/admin.html.erb | 2 | ||||
-rw-r--r-- | app/views/layouts/default.html.erb | 2 | ||||
-rw-r--r-- | app/views/layouts/no_chrome.html.erb | 2 |
8 files changed, 103 insertions, 1 deletions
diff --git a/app/controllers/admin_spam_addresses_controller.rb b/app/controllers/admin_spam_addresses_controller.rb new file mode 100644 index 000000000..f5c7e93da --- /dev/null +++ b/app/controllers/admin_spam_addresses_controller.rb @@ -0,0 +1,27 @@ +class AdminSpamAddressesController < AdminController + + def index + @spam_addresses = SpamAddress.all + @spam_address = SpamAddress.new + end + + def create + @spam_address = SpamAddress.new(params[:spam_address]) + + if @spam_address.save + notice = "#{ @spam_address.email } has been added to the spam addresses list" + redirect_to spam_addresses_path, :notice => notice + else + @spam_addresses = SpamAddress.all + render :index + end + end + + def destroy + @spam_address = SpamAddress.find(params[:id]) + @spam_address.destroy + notice = "#{ @spam_address.email } has been removed from the spam addresses list" + redirect_to spam_addresses_path, :notice => notice + end + +end diff --git a/app/mailers/request_mailer.rb b/app/mailers/request_mailer.rb index af1a75df9..1fd5b9ba7 100644 --- a/app/mailers/request_mailer.rb +++ b/app/mailers/request_mailer.rb @@ -250,7 +250,7 @@ class RequestMailer < ApplicationMailer if reply_info_requests.size == 0 reason = _("Could not identify the request from the email address") request = InfoRequest.holding_pen_request - request.receive(email, raw_email, false, reason) + request.receive(email, raw_email, false, reason) unless SpamAddress.spam?(email.to) return end diff --git a/app/models/spam_address.rb b/app/models/spam_address.rb new file mode 100644 index 000000000..15c9d1ab8 --- /dev/null +++ b/app/models/spam_address.rb @@ -0,0 +1,11 @@ +class SpamAddress < ActiveRecord::Base + attr_accessible :email + + validates_presence_of :email, :message => _('Please enter the email address to mark as spam') + validates_uniqueness_of :email, :message => _('This address is already marked as spam') + + def self.spam?(email_address) + exists?(:email => email_address) + end + +end diff --git a/app/views/admin_request/_incoming_message_actions.html.erb b/app/views/admin_request/_incoming_message_actions.html.erb index 4cf099b53..dd50eb047 100644 --- a/app/views/admin_request/_incoming_message_actions.html.erb +++ b/app/views/admin_request/_incoming_message_actions.html.erb @@ -22,6 +22,13 @@ </div> </div> + <div class="control-group"> + <label class="control-label">Mark <code>To:</code> address as spam</label> + <div class="controls"> + <%= link_to 'Spam Addresses', spam_addresses_path %> + </div> + </div> + <%= form_tag admin_incoming_destroy_path, :class => "form form-inline" do %> <div class="control-group"> <label class="control-label" for="destroy_message_<%= incoming_message.id %>">Destroy message</label> diff --git a/app/views/admin_spam_addresses/index.html.erb b/app/views/admin_spam_addresses/index.html.erb new file mode 100644 index 000000000..9846bc017 --- /dev/null +++ b/app/views/admin_spam_addresses/index.html.erb @@ -0,0 +1,51 @@ +<% @title = 'Spam Addresses' %> + +<h1><%= @title %></h1> + +<div class="row"> + <div class="span12"> + <p> + Incoming mail that gets redirected to the holding pen will be + rejected if it is sent <code>To:</code> an address on this + list. + </p> + </div> +</div> + +<hr /> + +<div class="row"> + <div class="span12"> + <%= form_for(@spam_address, :html => { :class => 'form-inline' }) do |f| -%> + <%= error_messages_for @spam_address %> + <%= f.text_field :email, :class => 'input-xxlarge', :placeholder => 'Enter email' %> + <%= f.submit 'Add Spam Address', :class => 'btn btn-warning' %> + <% end -%> + </div> +</div> + +<hr /> + +<% if @spam_addresses.any? %> + <div class="row"> + <table class="table table-hover span12"> + <thead> + <tr> + <th>Email</th> + <th></th> + </tr> + </thead> + <tbody> + <% @spam_addresses.each do |spam| %> + <tr> + <td><%= spam.email %></td> + <td><%= link_to 'Remove', spam, + :method => :delete, + :confirm => 'This is permanent! Are you sure?', + :class => 'btn btn-mini btn-danger' %></td> + </tr> + <% end %> + </tbody> + </table> + </div> +<% end %> diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb index c1f9335b1..2147f22e1 100644 --- a/app/views/layouts/admin.html.erb +++ b/app/views/layouts/admin.html.erb @@ -2,6 +2,8 @@ <html lang="en-gb"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" > + <%= csrf_meta_tags %> + <title><%= site_name %> admin<%= @title ? ":" : "" %> <%=@title%></title> <%= javascript_include_tag "admin" %> diff --git a/app/views/layouts/default.html.erb b/app/views/layouts/default.html.erb index 52b718be8..6775ed781 100644 --- a/app/views/layouts/default.html.erb +++ b/app/views/layouts/default.html.erb @@ -2,6 +2,8 @@ <html lang="<%= I18n.locale %>"> <head> <meta charset="utf-8"> + <%= csrf_meta_tags %> + <title> <% if @title %> <%=@title%> - <%= site_name %> diff --git a/app/views/layouts/no_chrome.html.erb b/app/views/layouts/no_chrome.html.erb index e613b8ca2..a4278ab24 100644 --- a/app/views/layouts/no_chrome.html.erb +++ b/app/views/layouts/no_chrome.html.erb @@ -2,6 +2,8 @@ <html lang="<%= I18n.locale %>"> <head> <meta charset="utf-8"> + <%= csrf_meta_tags %> + <title> <% if @title %> <%=@title%> - <%= site_name %> |