From a26c1d6863f320757722f681af9c4cf58e2e9f81 Mon Sep 17 00:00:00 2001 From: Antonio Terceiro Date: Tue, 7 Aug 2012 21:07:15 -0300 Subject: [PATCH] AntiSpam plugin administrative interface --- plugins/anti_spam/controllers/anti_spam_plugin_admin_controller.rb | 12 ++++++++++++ plugins/anti_spam/lib/anti_spam_plugin.rb | 11 +++++++++++ plugins/anti_spam/lib/anti_spam_plugin/settings.rb | 35 +++++++++++++++++++++++++++++++++++ plugins/anti_spam/test/unit/anti_spam_plugin/settings_test.rb | 29 +++++++++++++++++++++++++++++ plugins/anti_spam/views/anti_spam_plugin_admin/index.rhtml | 14 ++++++++++++++ 5 files changed, 101 insertions(+), 0 deletions(-) create mode 100644 plugins/anti_spam/controllers/anti_spam_plugin_admin_controller.rb create mode 100644 plugins/anti_spam/lib/anti_spam_plugin.rb create mode 100644 plugins/anti_spam/lib/anti_spam_plugin/settings.rb create mode 100644 plugins/anti_spam/test/unit/anti_spam_plugin/settings_test.rb create mode 100644 plugins/anti_spam/views/anti_spam_plugin_admin/index.rhtml diff --git a/plugins/anti_spam/controllers/anti_spam_plugin_admin_controller.rb b/plugins/anti_spam/controllers/anti_spam_plugin_admin_controller.rb new file mode 100644 index 0000000..f749546 --- /dev/null +++ b/plugins/anti_spam/controllers/anti_spam_plugin_admin_controller.rb @@ -0,0 +1,12 @@ +class AntiSpamPluginAdminController < AdminController + append_view_path File.join(File.dirname(__FILE__) + '/../views') + + def index + @settings = AntiSpamPlugin::Settings.new(environment, params[:settings]) + if request.post? + @settings.save! + redirect_to :action => 'index' + end + end + +end diff --git a/plugins/anti_spam/lib/anti_spam_plugin.rb b/plugins/anti_spam/lib/anti_spam_plugin.rb new file mode 100644 index 0000000..b03e935 --- /dev/null +++ b/plugins/anti_spam/lib/anti_spam_plugin.rb @@ -0,0 +1,11 @@ +class AntiSpamPlugin < Noosfero::Plugin + + def self.plugin_name + "AntiSpam" + end + + def self.plugin_description + _("Checks comments against a spam checking service compatible with the Akismet API") + end + +end diff --git a/plugins/anti_spam/lib/anti_spam_plugin/settings.rb b/plugins/anti_spam/lib/anti_spam_plugin/settings.rb new file mode 100644 index 0000000..0ab31c5 --- /dev/null +++ b/plugins/anti_spam/lib/anti_spam_plugin/settings.rb @@ -0,0 +1,35 @@ +class AntiSpamPlugin::Settings + + def initialize(environment, attributes = nil) + @environment = environment + attributes ||= {} + attributes.each do |k,v| + self.send("#{k}=", v) + end + end + + def settings + @environment.settings[:anti_spam_plugin] ||= {} + end + + def host + settings[:host] ||= 'api.antispam.typepad.com' + end + + def host=(value) + settings[:host] = value + end + + def api_key + settings[:api_key] + end + + def api_key=(value) + settings[:api_key] = value + end + + def save! + @environment.save! + end + +end diff --git a/plugins/anti_spam/test/unit/anti_spam_plugin/settings_test.rb b/plugins/anti_spam/test/unit/anti_spam_plugin/settings_test.rb new file mode 100644 index 0000000..612ce80 --- /dev/null +++ b/plugins/anti_spam/test/unit/anti_spam_plugin/settings_test.rb @@ -0,0 +1,29 @@ +require 'test_helper' + +class AntiSpamSettingsTest < ActiveSupport::TestCase + + def setup + @environment = Environment.new + @settings = AntiSpamPlugin::Settings.new(@environment) + end + + should 'store setttings in environment' do + @settings.host = 'foo.com' + @settings.api_key = '1234567890' + assert_equal 'foo.com', @environment.settings[:anti_spam_plugin][:host] + assert_equal '1234567890', @environment.settings[:anti_spam_plugin][:api_key] + assert_equal 'foo.com', @settings.host + assert_equal '1234567890', @settings.api_key + end + + should 'save environment on save' do + @environment.expects(:save!) + @settings.save! + end + + should 'use TypePad AntiSpam by default' do + assert_equal 'api.antispam.typepad.com', @settings.host + end + + +end diff --git a/plugins/anti_spam/views/anti_spam_plugin_admin/index.rhtml b/plugins/anti_spam/views/anti_spam_plugin_admin/index.rhtml new file mode 100644 index 0000000..4112347 --- /dev/null +++ b/plugins/anti_spam/views/anti_spam_plugin_admin/index.rhtml @@ -0,0 +1,14 @@ +

<%= _('AntiSpam settings')%>

+ +<% form_for(:settings) do |f| %> + + <%= labelled_form_field _('Host'), f.text_field(:host) %> + + <%= labelled_form_field _('API key'), f.text_field (:api_key) %> + + <% button_bar do %> + <%= submit_button(:save, _('Save'), :cancel => {:controller => 'plugins', :action => 'index'}) %> + <% end %> + +<% end %> + -- libgit2 0.21.2