Commit a26c1d6863f320757722f681af9c4cf58e2e9f81

Authored by Antonio Terceiro
1 parent 73c0b43f

AntiSpam plugin administrative interface

ActionItem2306
plugins/anti_spam/controllers/anti_spam_plugin_admin_controller.rb 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +class AntiSpamPluginAdminController < AdminController
  2 + append_view_path File.join(File.dirname(__FILE__) + '/../views')
  3 +
  4 + def index
  5 + @settings = AntiSpamPlugin::Settings.new(environment, params[:settings])
  6 + if request.post?
  7 + @settings.save!
  8 + redirect_to :action => 'index'
  9 + end
  10 + end
  11 +
  12 +end
... ...
plugins/anti_spam/lib/anti_spam_plugin.rb 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +class AntiSpamPlugin < Noosfero::Plugin
  2 +
  3 + def self.plugin_name
  4 + "AntiSpam"
  5 + end
  6 +
  7 + def self.plugin_description
  8 + _("Checks comments against a spam checking service compatible with the Akismet API")
  9 + end
  10 +
  11 +end
... ...
plugins/anti_spam/lib/anti_spam_plugin/settings.rb 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +class AntiSpamPlugin::Settings
  2 +
  3 + def initialize(environment, attributes = nil)
  4 + @environment = environment
  5 + attributes ||= {}
  6 + attributes.each do |k,v|
  7 + self.send("#{k}=", v)
  8 + end
  9 + end
  10 +
  11 + def settings
  12 + @environment.settings[:anti_spam_plugin] ||= {}
  13 + end
  14 +
  15 + def host
  16 + settings[:host] ||= 'api.antispam.typepad.com'
  17 + end
  18 +
  19 + def host=(value)
  20 + settings[:host] = value
  21 + end
  22 +
  23 + def api_key
  24 + settings[:api_key]
  25 + end
  26 +
  27 + def api_key=(value)
  28 + settings[:api_key] = value
  29 + end
  30 +
  31 + def save!
  32 + @environment.save!
  33 + end
  34 +
  35 +end
... ...
plugins/anti_spam/test/unit/anti_spam_plugin/settings_test.rb 0 → 100644
... ... @@ -0,0 +1,29 @@
  1 +require 'test_helper'
  2 +
  3 +class AntiSpamSettingsTest < ActiveSupport::TestCase
  4 +
  5 + def setup
  6 + @environment = Environment.new
  7 + @settings = AntiSpamPlugin::Settings.new(@environment)
  8 + end
  9 +
  10 + should 'store setttings in environment' do
  11 + @settings.host = 'foo.com'
  12 + @settings.api_key = '1234567890'
  13 + assert_equal 'foo.com', @environment.settings[:anti_spam_plugin][:host]
  14 + assert_equal '1234567890', @environment.settings[:anti_spam_plugin][:api_key]
  15 + assert_equal 'foo.com', @settings.host
  16 + assert_equal '1234567890', @settings.api_key
  17 + end
  18 +
  19 + should 'save environment on save' do
  20 + @environment.expects(:save!)
  21 + @settings.save!
  22 + end
  23 +
  24 + should 'use TypePad AntiSpam by default' do
  25 + assert_equal 'api.antispam.typepad.com', @settings.host
  26 + end
  27 +
  28 +
  29 +end
... ...
plugins/anti_spam/views/anti_spam_plugin_admin/index.rhtml 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +<h1><%= _('AntiSpam settings')%></h1>
  2 +
  3 +<% form_for(:settings) do |f| %>
  4 +
  5 + <%= labelled_form_field _('Host'), f.text_field(:host) %>
  6 +
  7 + <%= labelled_form_field _('API key'), f.text_field (:api_key) %>
  8 +
  9 + <% button_bar do %>
  10 + <%= submit_button(:save, _('Save'), :cancel => {:controller => 'plugins', :action => 'index'}) %>
  11 + <% end %>
  12 +
  13 +<% end %>
  14 +
... ...