Commit 0a2b497f3eb552e8d17f7eb69e7bc9cf71d286f6
1 parent
170a723e
Exists in
staging
and in
4 other branches
virtuoso: add options for insert / remove triple individually
Showing
8 changed files
with
139 additions
and
7 deletions
Show diff stats
plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
@@ -20,7 +20,7 @@ class VirtuosoPluginAdminController < AdminController | @@ -20,7 +20,7 @@ class VirtuosoPluginAdminController < AdminController | ||
20 | redirect_to :action => :index | 20 | redirect_to :action => :index |
21 | end | 21 | end |
22 | 22 | ||
23 | - def triple_management | 23 | + def triples_management |
24 | triples_management = VirtuosoPlugin::TriplesManagement.new(environment) | 24 | triples_management = VirtuosoPlugin::TriplesManagement.new(environment) |
25 | @triples = [] | 25 | @triples = [] |
26 | if request.post? | 26 | if request.post? |
@@ -45,4 +45,36 @@ class VirtuosoPluginAdminController < AdminController | @@ -45,4 +45,36 @@ class VirtuosoPluginAdminController < AdminController | ||
45 | redirect_to :action => :triple_management | 45 | redirect_to :action => :triple_management |
46 | end | 46 | end |
47 | 47 | ||
48 | + def add_triple | ||
49 | + if request.post? | ||
50 | + | ||
51 | + triple = VirtuosoPlugin::Triple.new | ||
52 | + triple.graph = params[:triple][:graph] | ||
53 | + triple.subject = params[:triple][:subject] | ||
54 | + triple.predicate = params[:triple][:predicate] | ||
55 | + triple.object = params[:triple][:object] | ||
56 | + | ||
57 | + triples_management = VirtuosoPlugin::TriplesManagement.new(environment) | ||
58 | + triples_management.add_triple(triple) | ||
59 | + | ||
60 | + @triples = [] | ||
61 | + | ||
62 | + session[:notice] = _('Triple succesfully added.') | ||
63 | + render :action => :triple_management | ||
64 | + end | ||
65 | + end | ||
66 | + | ||
67 | + def remove_triple | ||
68 | + triple = VirtuosoPlugin::Triple.new | ||
69 | + triple.graph = params[:triple][:graph] | ||
70 | + triple.subject = params[:triple][:subject] | ||
71 | + triple.predicate = params[:triple][:predicate] | ||
72 | + triple.object = params[:triple][:object] | ||
73 | + | ||
74 | + triples_management = VirtuosoPlugin::TriplesManagement.new(environment) | ||
75 | + triples_management.remove_triple(triple) | ||
76 | + | ||
77 | + render json: { :ok => true, :message => _('Triple succesfully removed.') } | ||
78 | + end | ||
79 | + | ||
48 | end | 80 | end |
@@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
1 | +class VirtuosoPlugin::Triple | ||
2 | + | ||
3 | + attr_accessor :graph, :subject, :predicate, :object | ||
4 | + | ||
5 | + def object=(value) | ||
6 | + @object = format_triple_term(value) | ||
7 | + end | ||
8 | + | ||
9 | + protected | ||
10 | + | ||
11 | + def format_triple_term(term) | ||
12 | + term =~ /^(http|https):\/\// ? "<#{term}>" : "'#{term}'" | ||
13 | + end | ||
14 | + | ||
15 | +end | ||
16 | + |
plugins/virtuoso/lib/virtuoso_plugin/triples_management.rb
@@ -29,6 +29,16 @@ class VirtuosoPlugin::TriplesManagement | @@ -29,6 +29,16 @@ class VirtuosoPlugin::TriplesManagement | ||
29 | plugin.virtuoso_client.query(query) | 29 | plugin.virtuoso_client.query(query) |
30 | end | 30 | end |
31 | 31 | ||
32 | + def add_triple(triple) | ||
33 | + query = "WITH <#{triple.graph}> INSERT { <#{triple.subject}> <#{triple.predicate}> #{triple.object} }" | ||
34 | + plugin.virtuoso_client.query(query) | ||
35 | + end | ||
36 | + | ||
37 | + def remove_triple(triple) | ||
38 | + query = "WITH <#{triple.graph}> DELETE { <#{triple.subject}> <#{triple.predicate}> #{triple.object} }" | ||
39 | + plugin.virtuoso_client.query(query) | ||
40 | + end | ||
41 | + | ||
32 | protected | 42 | protected |
33 | 43 | ||
34 | def format_triple_term(term) | 44 | def format_triple_term(term) |
plugins/virtuoso/public/style.css
@@ -0,0 +1,37 @@ | @@ -0,0 +1,37 @@ | ||
1 | +function remove_triple(triple_id) { | ||
2 | + graph = jQuery("input#graph_uri").val(); | ||
3 | + subject = jQuery("input#triples_triple" + triple_id + "_from_subject").val(); | ||
4 | + predicate = jQuery("input#triples_triple" + triple_id + "_from_predicate").val(); | ||
5 | + object = jQuery("input#triples_triple" + triple_id + "_from_object").val(); | ||
6 | + | ||
7 | + var formData = { triple: { graph: graph, subject: subject, predicate: predicate, object: object } } | ||
8 | + | ||
9 | + jQuery.ajax({ | ||
10 | + cache: false, | ||
11 | + type: 'POST', | ||
12 | + url: '/admin/plugin/virtuoso/remove_triple', | ||
13 | + data: formData, | ||
14 | + dataType: 'json', | ||
15 | + success: function(data, status, ajax){ | ||
16 | + if ( !data.ok ) { | ||
17 | + display_notice(data.error.message); | ||
18 | + } | ||
19 | + else { | ||
20 | + display_notice(data.message); | ||
21 | + jQuery("li#triple-" + triple_id).fadeOut(700, function() { | ||
22 | + if (jQuery("ul#triples-list > li").length == 1) { | ||
23 | + jQuery("form#form-triples-edit").remove(); | ||
24 | + } | ||
25 | + else { | ||
26 | + jQuery("li#triple-" + triple_id).remove(); | ||
27 | + } | ||
28 | + }); | ||
29 | + } | ||
30 | + }, | ||
31 | + error: function(ajax, status, errorThrown) { | ||
32 | + alert('Send request - HTTP '+status+': '+errorThrown); | ||
33 | + } | ||
34 | + }); | ||
35 | + | ||
36 | + return false; | ||
37 | +} |
plugins/virtuoso/views/virtuoso_plugin_admin/add_triple.html.erb
0 → 100644
@@ -0,0 +1,27 @@ | @@ -0,0 +1,27 @@ | ||
1 | +<div id="virtuoso-triples-management"> | ||
2 | + <h1><%= _('Virtuoso settings » Triples Management » Add Triple')%></h1> | ||
3 | + | ||
4 | + <%= form_tag('/admin/plugin/virtuoso/add_triple', :method => 'post') do %> | ||
5 | + | ||
6 | + <ul> | ||
7 | + <li> | ||
8 | + <%= labelled_form_field(_('Graph:'), text_field_tag('triple[graph]', '') ) %> | ||
9 | + </li> | ||
10 | + <li> | ||
11 | + <%= labelled_form_field(_('Subject:'), text_field_tag('triple[subject]', '') ) %> | ||
12 | + </li> | ||
13 | + <li> | ||
14 | + <%= labelled_form_field(_('Predicate:'), text_field_tag('triple[predicate]', '') ) %> | ||
15 | + </li> | ||
16 | + <li> | ||
17 | + <%= labelled_form_field(_('Object:'), text_field_tag('triple[object]', '') ) %> | ||
18 | + </li> | ||
19 | + </ul> | ||
20 | + | ||
21 | + <% button_bar do %> | ||
22 | + <%= submit_button(:save, _('Save')) %> | ||
23 | + <% end %> | ||
24 | + | ||
25 | + <% end %> | ||
26 | + | ||
27 | +</div> |
plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
@@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
39 | 39 | ||
40 | <div class="triple-management"> | 40 | <div class="triple-management"> |
41 | <div class="actions"> | 41 | <div class="actions"> |
42 | - <%= button :edit, _('Triple management'), :action => :triple_management %> | 42 | + <%= button :edit, _('Triples management'), :action => :triples_management %> |
43 | <%= button :edit, _('Custom Queries'), :action => :index, :controller => 'virtuoso_plugin_custom_queries' %> | 43 | <%= button :edit, _('Custom Queries'), :action => :index, :controller => 'virtuoso_plugin_custom_queries' %> |
44 | </div> | 44 | </div> |
45 | </div> | 45 | </div> |
plugins/virtuoso/views/virtuoso_plugin_admin/triple_management.html.erb
1 | <div id="virtuoso-triples-management"> | 1 | <div id="virtuoso-triples-management"> |
2 | <h1><%= _('Virtuoso settings » Triples Management')%></h1> | 2 | <h1><%= _('Virtuoso settings » Triples Management')%></h1> |
3 | 3 | ||
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) ) %> | 4 | + <%= form_tag('/admin/plugin/virtuoso/triples_management', :method => 'post') do %> |
5 | + <%= labelled_form_field(_('Graph URI:'), text_field_tag(:graph_uri, @graph_uri) ) %> | ||
6 | <%= labelled_form_field(_('Query SPARQL:'), text_area_tag(:query, @query, :rows => 7)) %> | 6 | <%= labelled_form_field(_('Query SPARQL:'), text_area_tag(:query, @query, :rows => 7)) %> |
7 | <% button_bar do %> | 7 | <% button_bar do %> |
8 | - <%= submit_button(:search, _('Search')) %> | 8 | + <%= submit_button(:search, _('Search triples')) %> |
9 | + <%= button :add, _('Add triple'), :action => :add_triple %> | ||
9 | <% end %> | 10 | <% end %> |
10 | <% end %> | 11 | <% end %> |
11 | 12 | ||
12 | <% unless @triples.empty? %> | 13 | <% unless @triples.empty? %> |
13 | 14 | ||
14 | - <%= form_tag('/admin/plugin/virtuoso/triple_update', :method => 'post') do %> | 15 | + <%= form_tag('/admin/plugin/virtuoso/triple_update', :method => 'post', :id => 'form-triples-edit') do %> |
15 | <%= hidden_field_tag(:graph_uri, @graph_uri) %> | 16 | <%= hidden_field_tag(:graph_uri, @graph_uri) %> |
16 | 17 | ||
17 | <ul id="triples-list"> | 18 | <ul id="triples-list"> |
@@ -20,7 +21,7 @@ | @@ -20,7 +21,7 @@ | ||
20 | 21 | ||
21 | <% @triples.each { |triple| %> | 22 | <% @triples.each { |triple| %> |
22 | 23 | ||
23 | - <li> | 24 | + <li id="triple-<%=triple_counter%>"> |
24 | <ul class="triple"> | 25 | <ul class="triple"> |
25 | <li> | 26 | <li> |
26 | <%= hidden_field_tag("triples[triple#{triple_counter}[from][subject]]", triple[:s].to_s) %> | 27 | <%= hidden_field_tag("triples[triple#{triple_counter}[from][subject]]", triple[:s].to_s) %> |
@@ -34,6 +35,9 @@ | @@ -34,6 +35,9 @@ | ||
34 | <%= hidden_field_tag("triples[triple#{triple_counter}[from][object]]", triple[:o].to_s) %> | 35 | <%= 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 | <%= labelled_form_field(_('Object:'), text_field_tag("triples[triple#{triple_counter}[to][object]]", triple[:o].to_s) ) %> |
36 | </li> | 37 | </li> |
38 | + <li class="triple-actions"> | ||
39 | + <%= button :remove, _('Remove triple'), {}, :href => '#', :onclick => "remove_triple(#{triple_counter}); return false;" %> | ||
40 | + </li> | ||
37 | </ul> | 41 | </ul> |
38 | </li> | 42 | </li> |
39 | 43 | ||
@@ -52,3 +56,5 @@ | @@ -52,3 +56,5 @@ | ||
52 | <% end %> | 56 | <% end %> |
53 | 57 | ||
54 | </div> | 58 | </div> |
59 | + | ||
60 | +<%= javascript_include_tag '/plugins/virtuoso/triples_management.js' %> |