diff --git a/plugins/virtuoso/controllers/admin/virtuoso_plugin_custom_queries_controller.rb b/plugins/virtuoso/controllers/admin/virtuoso_plugin_custom_queries_controller.rb new file mode 100644 index 0000000..ed696aa --- /dev/null +++ b/plugins/virtuoso/controllers/admin/virtuoso_plugin_custom_queries_controller.rb @@ -0,0 +1,45 @@ +class VirtuosoPluginCustomQueriesController < AdminController + + def index + @custom_queries = environment.virtuoso_plugin_custom_queries.all + end + + def new + @custom_query = VirtuosoPlugin::CustomQuery.new + end + + def edit + @custom_query = VirtuosoPlugin::CustomQuery.find(params[:id]) + end + + def create + @custom_query = VirtuosoPlugin::CustomQuery.new(params[:custom_query]) + @custom_query.environment = environment + + if @custom_query.save + session[:notice] = _('Custom query was successfully created.') + redirect_to :action => :index + else + render action: "new" + end + end + + def update + @custom_query = VirtuosoPlugin::CustomQuery.find(params[:id]) + + if @custom_query.update_attributes(params[:custom_query]) + session[:notice] = 'Custom query was successfully updated.' + redirect_to :action => :index + else + render action: "edit" + end + end + + def destroy + @custom_query = VirtuosoPlugin::CustomQuery.find(params[:id]) + @custom_query.destroy + + redirect_to :action => :index + end + +end diff --git a/plugins/virtuoso/db/migrate/20141113131439_create_custom_queries.rb b/plugins/virtuoso/db/migrate/20141113131439_create_custom_queries.rb new file mode 100644 index 0000000..96e1f0b --- /dev/null +++ b/plugins/virtuoso/db/migrate/20141113131439_create_custom_queries.rb @@ -0,0 +1,14 @@ +class CreateCustomQueries < ActiveRecord::Migration + + def change + create_table :virtuoso_plugin_custom_queries do |t| + t.integer "environment_id", :null => false + t.string :name + t.text :query + t.text :template + t.boolean :enabled, :default => true + t.timestamps + end + end + +end diff --git a/plugins/virtuoso/lib/ext/environment.rb b/plugins/virtuoso/lib/ext/environment.rb new file mode 100644 index 0000000..825c162 --- /dev/null +++ b/plugins/virtuoso/lib/ext/environment.rb @@ -0,0 +1,5 @@ +class Environment + + has_many :virtuoso_plugin_custom_queries, :class_name => "VirtuosoPlugin::CustomQuery" + +end diff --git a/plugins/virtuoso/lib/virtuoso_plugin/custom_query.rb b/plugins/virtuoso/lib/virtuoso_plugin/custom_query.rb new file mode 100644 index 0000000..e86bc09 --- /dev/null +++ b/plugins/virtuoso/lib/virtuoso_plugin/custom_query.rb @@ -0,0 +1,9 @@ +class VirtuosoPlugin::CustomQuery < Noosfero::Plugin::ActiveRecord + + belongs_to :environment + + attr_accessible :enabled, :environment, :query, :template, :name + + validates_presence_of :name + +end diff --git a/plugins/virtuoso/test/functional/virtuoso_plugin_custom_queries_controller_test.rb b/plugins/virtuoso/test/functional/virtuoso_plugin_custom_queries_controller_test.rb new file mode 100644 index 0000000..d9351d5 --- /dev/null +++ b/plugins/virtuoso/test/functional/virtuoso_plugin_custom_queries_controller_test.rb @@ -0,0 +1,45 @@ +require 'test_helper' + +class VirtuosoPluginCustomQueriesControllerTest < ActionController::TestCase + setup do + @custom_query = VirtuosoPlugin::CustomQuery.create!(:name => 'name', :query => 'query', :template => 'template', :environment => Environment.default) + login_as(create_admin_user(Environment.default)) + end + + should "get index" do + get :index + assert_response :success + assert_not_nil assigns(:custom_queries) + end + + should "get new" do + get :new + assert_response :success + end + + should "create custom_query" do + assert_difference('VirtuosoPlugin::CustomQuery.count') do + post :create, custom_query: { name: @custom_query.name, enabled: @custom_query.enabled, query: @custom_query.query, template: @custom_query.template } + end + + assert_redirected_to :action => :index + end + + should "get edit" do + get :edit, id: @custom_query + assert_response :success + end + + should "update custom_query" do + put :update, id: @custom_query, custom_query: { name: @custom_query.name, enabled: @custom_query.enabled, query: @custom_query.query, template: @custom_query.template } + assert_redirected_to :action => :index + end + + should "destroy custom_query" do + assert_difference('VirtuosoPlugin::CustomQuery.count', -1) do + delete :destroy, id: @custom_query + end + + assert_redirected_to :action => :index + end +end diff --git a/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb b/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb index 91a9ce8..24ef897 100644 --- a/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb +++ b/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb @@ -40,5 +40,6 @@
Name | +Enabled | ++ | + |
---|---|---|---|
<%= custom_query.name %> | +<%= custom_query.enabled %> | +<%= link_to 'Edit', :action => :edit, :id => custom_query.id %> | +<%= link_to 'Destroy', :action => :destroy, :id => custom_query.id, method: :delete, data: { confirm: 'Are you sure?' } %> | +