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 @@
<%= button :edit, _('Triple management'), :action => :triple_management %> + <%= button :edit, _('Custom Queries'), :action => :index, :controller => 'virtuoso_plugin_custom_queries' %>
diff --git a/plugins/virtuoso/views/virtuoso_plugin_custom_queries/_form.html.erb b/plugins/virtuoso/views/virtuoso_plugin_custom_queries/_form.html.erb new file mode 100644 index 0000000..dc2b7fa --- /dev/null +++ b/plugins/virtuoso/views/virtuoso_plugin_custom_queries/_form.html.erb @@ -0,0 +1,33 @@ +<%= form_for(:custom_query, :url => {:action => @custom_query.persisted? ? :update : :create, :id => @custom_query.id}) do |f| %> + <% if @custom_query.errors.any? %> +
+

<%= pluralize(@custom_query.errors.count, "error") %>:

+ + +
+ <% end %> + +
+ <%= f.label :name %>
+ <%= f.text_field :name %> +
+
+ <%= f.label :query %>
+ <%= f.text_area :query %> +
+
+ <%= f.label :template %>
+ <%= f.text_area :template %> +
+
+ <%= f.label :enabled %>
+ <%= f.check_box :enabled %> +
+
+ <%= f.submit %> +
+<% end %> diff --git a/plugins/virtuoso/views/virtuoso_plugin_custom_queries/edit.html.erb b/plugins/virtuoso/views/virtuoso_plugin_custom_queries/edit.html.erb new file mode 100644 index 0000000..fe284b7 --- /dev/null +++ b/plugins/virtuoso/views/virtuoso_plugin_custom_queries/edit.html.erb @@ -0,0 +1,5 @@ +

<%= _('Manage Custom Queries - Edit') %>

+ +<%= render 'form' %> + +<%= link_to 'Back', :action => :index %> diff --git a/plugins/virtuoso/views/virtuoso_plugin_custom_queries/index.html.erb b/plugins/virtuoso/views/virtuoso_plugin_custom_queries/index.html.erb new file mode 100644 index 0000000..03e1618 --- /dev/null +++ b/plugins/virtuoso/views/virtuoso_plugin_custom_queries/index.html.erb @@ -0,0 +1,23 @@ +

<%= _('Manage Custom Queries') %>

+ + + + + + + + + +<% @custom_queries.each do |custom_query| %> + + + + + + +<% end %> +
NameEnabled
<%= 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?' } %>
+ +
+ +<%= button :new, _('New'), :action => :new %> diff --git a/plugins/virtuoso/views/virtuoso_plugin_custom_queries/new.html.erb b/plugins/virtuoso/views/virtuoso_plugin_custom_queries/new.html.erb new file mode 100644 index 0000000..b691bf6 --- /dev/null +++ b/plugins/virtuoso/views/virtuoso_plugin_custom_queries/new.html.erb @@ -0,0 +1,5 @@ +

<%= _('Manage Custom Queries - New') %>

+ +<%= render 'form' %> + +<%= link_to 'Back', :action => :index %> -- libgit2 0.21.2