Commit f57b4a6abf8280cf967ec6c8db440d3506833956
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Merge branch 'virtuoso_integration' of gitlab.com:participa/noosfero into virtuoso_integration
Showing
16 changed files
with
269 additions
and
49 deletions
Show diff stats
plugins/virtuoso/controllers/admin/virtuoso_plugin_custom_queries_controller.rb
0 → 100644
@@ -0,0 +1,45 @@ | @@ -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
plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
@@ -43,10 +43,8 @@ class VirtuosoPluginAdminController < AdminController | @@ -43,10 +43,8 @@ class VirtuosoPluginAdminController < AdminController | ||
43 | 43 | ||
44 | triples_management = VirtuosoPlugin::TriplesManagement.new(environment) | 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 | session[:notice] = _('Triple(s) succesfully updated.') | 50 | session[:notice] = _('Triple(s) succesfully updated.') |
plugins/virtuoso/db/migrate/20141113131439_create_custom_queries.rb
0 → 100644
@@ -0,0 +1,14 @@ | @@ -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 |
@@ -0,0 +1,8 @@ | @@ -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 | .virtuoso-triples-template .template { | 1 | .virtuoso-triples-template .template { |
2 | margin: 10px 0; | 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 @@ | @@ -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,8 +4,14 @@ | ||
4 | <%= render :file => 'shared/tiny_mce' %> | 4 | <%= render :file => 'shared/tiny_mce' %> |
5 | 5 | ||
6 | <%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64', :maxlength => 150)) %> | 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 | <div class="template"> | 15 | <div class="template"> |
10 | <span class="label"><%= _('Template') %></span> | 16 | <span class="label"><%= _('Template') %></span> |
11 | <span class="reference" style="float: right;"><a href="https://github.com/Shopify/liquid/wiki/Liquid-for-Designers"><%= _('Template reference') %></a></span> | 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,3 +23,4 @@ | ||
17 | <%= render :partial => 'shared/lead_and_body', :locals => {:tiny_mce => true} %> | 23 | <%= render :partial => 'shared/lead_and_body', :locals => {:tiny_mce => true} %> |
18 | <%= render :partial => 'general_fields' %> | 24 | <%= render :partial => 'general_fields' %> |
19 | </div> | 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,5 +73,6 @@ | ||
73 | <div class="triple-management"> | 73 | <div class="triple-management"> |
74 | <div class="actions"> | 74 | <div class="actions"> |
75 | <%= button :edit, _('Triple management'), :action => :triple_management %> | 75 | <%= button :edit, _('Triple management'), :action => :triple_management %> |
76 | + <%= button :edit, _('Custom Queries'), :action => :index, :controller => 'virtuoso_plugin_custom_queries' %> | ||
76 | </div> | 77 | </div> |
77 | </div> | 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 » 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 | <% end %> | 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 | <%= form_tag('/admin/plugin/virtuoso/triple_update', :method => 'post') do %> | 14 | <%= form_tag('/admin/plugin/virtuoso/triple_update', :method => 'post') do %> |
28 | - | ||
29 | <%= hidden_field_tag(:graph_uri, @graph_uri) %> | 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 | <% button_bar do %> | 46 | <% button_bar do %> |
58 | <%= submit_button(:save, _('Save')) %> | 47 | <%= submit_button(:save, _('Save')) %> |
59 | <% end %> | 48 | <% end %> |
60 | 49 | ||
61 | <% end %> | 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 @@ | @@ -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
plugins/virtuoso/views/virtuoso_plugin_custom_queries/index.html.erb
0 → 100644
@@ -0,0 +1,23 @@ | @@ -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