Commit f57b4a6abf8280cf967ec6c8db440d3506833956

Authored by Evandro Jr
2 parents 086350c4 604b5243

Merge branch 'virtuoso_integration' of gitlab.com:participa/noosfero into virtuoso_integration

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/controllers/public/virtuoso_plugin_public_controller.rb 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +class VirtuosoPluginPublicController < PublicController
  2 +
  3 + def custom_query
  4 + render :json => environment.virtuoso_plugin_custom_queries.find(params[:id])
  5 + end
  6 +
  7 +end
... ...
plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
... ... @@ -43,10 +43,8 @@ class VirtuosoPluginAdminController &lt; AdminController
43 43  
44 44 triples_management = VirtuosoPlugin::TriplesManagement.new(environment)
45 45  
46   - triples.each { |triple|
47   - from_triple = triple[:from]
48   - to_triple = triple[:to]
49   - triples_management.update_triple(graph_uri, from_triple, to_triple)
  46 + triples.each { |triple_key, triple_content|
  47 + triples_management.update_triple(graph_uri, triple_content[:from], triple_content[:to])
50 48 }
51 49  
52 50 session[:notice] = _('Triple(s) succesfully updated.')
... ...
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/public/custom_query.js 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +jQuery(document).ready(function($) {
  2 + $('#copy_custom_query').on('click', function() {
  3 + $.getJSON("/plugin/virtuoso/public/custom_query", {id: $('#select_custom_query').val()}, function(data) {
  4 + $('#article_query').val(data.custom_query.query);
  5 + tinymce.get('article_template').setContent(data.custom_query.template);
  6 + });
  7 + });
  8 +});
... ...
plugins/virtuoso/public/style.css
1 1 .virtuoso-triples-template .template {
2 2 margin: 10px 0;
3 3 }
  4 +
  5 +#virtuoso-triples-management input[type="text"] {
  6 + width: 100%
  7 +}
  8 +
  9 +#virtuoso-triples-management textarea {
  10 + width: 99%;
  11 +}
  12 +
  13 +#virtuoso-triples-management ul {
  14 + list-style-type: none;
  15 + padding: 0;
  16 +}
  17 +
  18 +#virtuoso-triples-management #triples-list {
  19 + border-top: 1px solid #CCC;
  20 + padding-top: 15px;
  21 +}
  22 +
  23 +#triples-list > li + li {
  24 + border-top: 1px solid #CCC;
  25 + margin-top: 20px;
  26 + padding-top: 15px;
  27 +}
... ...
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/cms/virtuoso_plugin/_triples_template.html.erb
... ... @@ -4,8 +4,14 @@
4 4 <%= render :file => 'shared/tiny_mce' %>
5 5  
6 6 <%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64', :maxlength => 150)) %>
7   - <%= labelled_form_field(_('SPARQL Query'), text_area(:article, :query, :style => 'width: 98%; height: 120px;')) %>
8 7  
  8 + <div class="custom-query">
  9 + <span class="label"><%= _('Custom Query/Template selection: ') %></span>
  10 + <%= select_tag :select_custom_query, options_from_collection_for_select(environment.virtuoso_plugin_custom_queries, :id, :name) %>
  11 + <%= button :clone, _('Copy'), '#', :id => 'copy_custom_query' %>
  12 + </div>
  13 +
  14 + <%= labelled_form_field(_('SPARQL Query'), text_area(:article, :query, :style => 'width: 98%; height: 120px;')) %>
9 15 <div class="template">
10 16 <span class="label"><%= _('Template') %></span>
11 17 <span class="reference" style="float: right;"><a href="https://github.com/Shopify/liquid/wiki/Liquid-for-Designers"><%= _('Template reference') %></a></span>
... ... @@ -17,3 +23,4 @@
17 23 <%= render :partial => 'shared/lead_and_body', :locals => {:tiny_mce => true} %>
18 24 <%= render :partial => 'general_fields' %>
19 25 </div>
  26 +<%= javascript_include_tag '/plugins/virtuoso/custom_query.js' %>
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
... ... @@ -73,5 +73,6 @@
73 73 <div class="triple-management">
74 74 <div class="actions">
75 75 <%= button :edit, _('Triple management'), :action => :triple_management %>
  76 + <%= button :edit, _('Custom Queries'), :action => :index, :controller => 'virtuoso_plugin_custom_queries' %>
76 77 </div>
77 78 </div>
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/triple_management.html.erb
1   -<h1><%= _('Virtuoso settings : Triples Management')%></h1>
  1 +<div id="virtuoso-triples-management">
  2 + <h1><%= _('Virtuoso settings &raquo; Triples Management')%></h1>
2 3  
3   -<%= form_tag('/admin/plugin/virtuoso/triple_management', :method => 'post') do %>
4   -
5   - <%= labelled_form_field(_('Default Graph IRI:'), text_field_tag(:graph_uri, @graph_uri, :style => 'width: 100%' ) ) %>
6   -
7   - <%= labelled_form_field(_('Query SPARQL:'), text_area_tag(:query, @query, { :rows => 7, :style => 'width: 99%' } )) %>
8   -
9   - <% button_bar do %>
10   - <%= submit_button(:search, _('Search')) %>
  4 + <%= form_tag('/admin/plugin/virtuoso/triple_management', :method => 'post') do %>
  5 + <%= labelled_form_field(_('Default Graph IRI:'), text_field_tag(:graph_uri, @graph_uri) ) %>
  6 + <%= labelled_form_field(_('Query SPARQL:'), text_area_tag(:query, @query, :rows => 7)) %>
  7 + <% button_bar do %>
  8 + <%= submit_button(:search, _('Search')) %>
  9 + <% end %>
11 10 <% end %>
12 11  
13   -<% end %>
14   -
15   -<style>
16   -.triple + .triple {
17   - border-top: 1px solid #CCC;
18   - margin-top: 20px;
19   - padding-top: 15px;
20   -}
21   -</style>
22   -
23   -<% unless @triples.empty? %>
24   -
25   - <hr />
  12 + <% unless @triples.empty? %>
26 13  
27 14 <%= form_tag('/admin/plugin/virtuoso/triple_update', :method => 'post') do %>
28   -
29 15 <%= hidden_field_tag(:graph_uri, @graph_uri) %>
30 16  
31   - <% @triples.each { |triple| %>
32   -
33   - <div class="triple">
34   -
35   - <div class="triple-subject" style="margin: 3px 0 3px 0;">
36   - <label class="formlabel"><%= _('Subject:') %></label>
37   - <%= hidden_field_tag('triples[][from[subject]]', triple[:s].to_s) %>
38   - <%= text_field_tag('triples[][to[subject]]', triple[:s].to_s, :style => 'width: 99%;') %>
39   - </div>
  17 + <ul id="triples-list">
40 18  
41   - <div class="triple-predicate" style="margin: 3px 0 3px 0;">
42   - <label class="formlabel"><%= _('Predicate:') %></label>
43   - <%= hidden_field_tag('triples[][from[predicate]]', triple[:p].to_s) %>
44   - <%= text_field_tag('triples[][to[predicate]]', triple[:p].to_s, :style => 'width: 99%;') %>
45   - </div>
  19 + <% triple_counter = 1 %>
46 20  
47   - <div class="triple-object" style="margin: 3px 0 3px 0;">
48   - <label class="formlabel"><%= _('Object:') %></label>
49   - <%= hidden_field_tag('triples[][from[object]]', triple[:o].to_s) %>
50   - <%= text_field_tag('triples[][to[object]]', triple[:o].to_s, :style => 'width: 99%;') %>
51   - </div>
  21 + <% @triples.each { |triple| %>
52 22  
53   - </div>
  23 + <li>
  24 + <ul class="triple">
  25 + <li>
  26 + <%= hidden_field_tag("triples[triple#{triple_counter}[from][subject]]", triple[:s].to_s) %>
  27 + <%= labelled_form_field(_('Subject:'), text_field_tag("triples[triple#{triple_counter}[to][subject]]", triple[:s].to_s) ) %>
  28 + </li>
  29 + <li>
  30 + <%= hidden_field_tag("triples[triple#{triple_counter}[from][predicate]]", triple[:p].to_s) %>
  31 + <%= labelled_form_field(_('Predicate:'), text_field_tag("triples[triple#{triple_counter}[to][predicate]]", triple[:p].to_s) ) %>
  32 + </li>
  33 + <li>
  34 + <%= hidden_field_tag("triples[triple#{triple_counter}[from][object]]", triple[:o].to_s) %>
  35 + <%= labelled_form_field(_('Object:'), text_field_tag("triples[triple#{triple_counter}[to][object]]", triple[:o].to_s) ) %>
  36 + </li>
  37 + </ul>
  38 + </li>
  39 +
  40 + <% triple_counter += 1 %>
54 41  
55 42 <% } %>
56 43  
  44 + </ul>
  45 +
57 46 <% button_bar do %>
58 47 <%= submit_button(:save, _('Save')) %>
59 48 <% end %>
60 49  
61 50 <% end %>
62 51  
63   -<% end %>
  52 + <% end %>
  53 +
  54 +</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 %>
... ...