Commit d4a3f0fd2ebb4aba4e68e8e76c6af9b309a9ed58

Authored by Victor Costa
1 parent ebabc712

virtuoso: added custom query model

plugins/virtuoso/controllers/admin/virtuoso_plugin_custom_queries_controller.rb 0 → 100644
... ... @@ -0,0 +1,45 @@
  1 +class VirtuosoPluginCustomQueriesController < AdminController
  2 +
  3 + def index
  4 + @custom_queries = environment.virtuoso_plugin_custom_queries.all
  5 + end
  6 +
  7 + def new
  8 + @custom_query = VirtuosoPlugin::CustomQuery.new
  9 + end
  10 +
  11 + def edit
  12 + @custom_query = VirtuosoPlugin::CustomQuery.find(params[:id])
  13 + end
  14 +
  15 + def create
  16 + @custom_query = VirtuosoPlugin::CustomQuery.new(params[:custom_query])
  17 + @custom_query.environment = environment
  18 +
  19 + if @custom_query.save
  20 + session[:notice] = _('Custom query was successfully created.')
  21 + redirect_to :action => :index
  22 + else
  23 + render action: "new"
  24 + end
  25 + end
  26 +
  27 + def update
  28 + @custom_query = VirtuosoPlugin::CustomQuery.find(params[:id])
  29 +
  30 + if @custom_query.update_attributes(params[:custom_query])
  31 + session[:notice] = 'Custom query was successfully updated.'
  32 + redirect_to :action => :index
  33 + else
  34 + render action: "edit"
  35 + end
  36 + end
  37 +
  38 + def destroy
  39 + @custom_query = VirtuosoPlugin::CustomQuery.find(params[:id])
  40 + @custom_query.destroy
  41 +
  42 + redirect_to :action => :index
  43 + end
  44 +
  45 +end
... ...
plugins/virtuoso/db/migrate/20141113131439_create_custom_queries.rb 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +class CreateCustomQueries < ActiveRecord::Migration
  2 +
  3 + def change
  4 + create_table :virtuoso_plugin_custom_queries do |t|
  5 + t.integer "environment_id", :null => false
  6 + t.string :name
  7 + t.text :query
  8 + t.text :template
  9 + t.boolean :enabled, :default => true
  10 + t.timestamps
  11 + end
  12 + end
  13 +
  14 +end
... ...
plugins/virtuoso/lib/ext/environment.rb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +class Environment
  2 +
  3 + has_many :virtuoso_plugin_custom_queries, :class_name => "VirtuosoPlugin::CustomQuery"
  4 +
  5 +end
... ...
plugins/virtuoso/lib/virtuoso_plugin/custom_query.rb 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +class VirtuosoPlugin::CustomQuery < Noosfero::Plugin::ActiveRecord
  2 +
  3 + belongs_to :environment
  4 +
  5 + attr_accessible :enabled, :environment, :query, :template, :name
  6 +
  7 + validates_presence_of :name
  8 +
  9 +end
... ...
plugins/virtuoso/test/functional/virtuoso_plugin_custom_queries_controller_test.rb 0 → 100644
... ... @@ -0,0 +1,45 @@
  1 +require 'test_helper'
  2 +
  3 +class VirtuosoPluginCustomQueriesControllerTest < ActionController::TestCase
  4 + setup do
  5 + @custom_query = VirtuosoPlugin::CustomQuery.create!(:name => 'name', :query => 'query', :template => 'template', :environment => Environment.default)
  6 + login_as(create_admin_user(Environment.default))
  7 + end
  8 +
  9 + should "get index" do
  10 + get :index
  11 + assert_response :success
  12 + assert_not_nil assigns(:custom_queries)
  13 + end
  14 +
  15 + should "get new" do
  16 + get :new
  17 + assert_response :success
  18 + end
  19 +
  20 + should "create custom_query" do
  21 + assert_difference('VirtuosoPlugin::CustomQuery.count') do
  22 + post :create, custom_query: { name: @custom_query.name, enabled: @custom_query.enabled, query: @custom_query.query, template: @custom_query.template }
  23 + end
  24 +
  25 + assert_redirected_to :action => :index
  26 + end
  27 +
  28 + should "get edit" do
  29 + get :edit, id: @custom_query
  30 + assert_response :success
  31 + end
  32 +
  33 + should "update custom_query" do
  34 + put :update, id: @custom_query, custom_query: { name: @custom_query.name, enabled: @custom_query.enabled, query: @custom_query.query, template: @custom_query.template }
  35 + assert_redirected_to :action => :index
  36 + end
  37 +
  38 + should "destroy custom_query" do
  39 + assert_difference('VirtuosoPlugin::CustomQuery.count', -1) do
  40 + delete :destroy, id: @custom_query
  41 + end
  42 +
  43 + assert_redirected_to :action => :index
  44 + end
  45 +end
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
... ... @@ -40,5 +40,6 @@
40 40 <div class="triple-management">
41 41 <div class="actions">
42 42 <%= button :edit, _('Triple management'), :action => :triple_management %>
  43 + <%= button :edit, _('Custom Queries'), :action => :index, :controller => 'virtuoso_plugin_custom_queries' %>
43 44 </div>
44 45 </div>
... ...
plugins/virtuoso/views/virtuoso_plugin_custom_queries/_form.html.erb 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +<%= form_for(:custom_query, :url => {:action => @custom_query.persisted? ? :update : :create, :id => @custom_query.id}) do |f| %>
  2 + <% if @custom_query.errors.any? %>
  3 + <div id="error_explanation">
  4 + <h2><%= pluralize(@custom_query.errors.count, "error") %>:</h2>
  5 +
  6 + <ul>
  7 + <% @custom_query.errors.full_messages.each do |msg| %>
  8 + <li><%= msg %></li>
  9 + <% end %>
  10 + </ul>
  11 + </div>
  12 + <% end %>
  13 +
  14 + <div class="field">
  15 + <%= f.label :name %><br />
  16 + <%= f.text_field :name %>
  17 + </div>
  18 + <div class="field">
  19 + <%= f.label :query %><br />
  20 + <%= f.text_area :query %>
  21 + </div>
  22 + <div class="field">
  23 + <%= f.label :template %><br />
  24 + <%= f.text_area :template %>
  25 + </div>
  26 + <div class="field">
  27 + <%= f.label :enabled %><br />
  28 + <%= f.check_box :enabled %>
  29 + </div>
  30 + <div class="actions">
  31 + <%= f.submit %>
  32 + </div>
  33 +<% end %>
... ...
plugins/virtuoso/views/virtuoso_plugin_custom_queries/edit.html.erb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +<h1><%= _('Manage Custom Queries - Edit') %></h1>
  2 +
  3 +<%= render 'form' %>
  4 +
  5 +<%= link_to 'Back', :action => :index %>
... ...
plugins/virtuoso/views/virtuoso_plugin_custom_queries/index.html.erb 0 → 100644
... ... @@ -0,0 +1,23 @@
  1 +<h1><%= _('Manage Custom Queries') %></h1>
  2 +
  3 +<table>
  4 + <tr>
  5 + <th>Name</th>
  6 + <th>Enabled</th>
  7 + <th></th>
  8 + <th></th>
  9 + </tr>
  10 +
  11 +<% @custom_queries.each do |custom_query| %>
  12 + <tr>
  13 + <td><%= custom_query.name %></td>
  14 + <td><%= custom_query.enabled %></td>
  15 + <td><%= link_to 'Edit', :action => :edit, :id => custom_query.id %></td>
  16 + <td><%= link_to 'Destroy', :action => :destroy, :id => custom_query.id, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  17 + </tr>
  18 +<% end %>
  19 +</table>
  20 +
  21 +<br />
  22 +
  23 +<%= button :new, _('New'), :action => :new %>
... ...
plugins/virtuoso/views/virtuoso_plugin_custom_queries/new.html.erb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +<h1><%= _('Manage Custom Queries - New') %></h1>
  2 +
  3 +<%= render 'form' %>
  4 +
  5 +<%= link_to 'Back', :action => :index %>
... ...