From 14b5363d6eccde2944178b9558352f3b6bf354b2 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Tue, 18 Nov 2014 11:01:03 -0300 Subject: [PATCH] virtuoso: added ontology mapping management --- plugins/virtuoso/controllers/admin/virtuoso_plugin_ontology_mapping_controller.rb | 13 +++++++++++++ plugins/virtuoso/public/ontology_mapping.js | 11 +++++++++++ plugins/virtuoso/test/functional/virtuoso_plugin_ontology_mapping_controller.rb | 32 ++++++++++++++++++++++++++++++++ plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb | 1 + plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/_ontology_mapping_item.html.erb | 5 +++++ plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/index.html.erb | 22 ++++++++++++++++++++++ 6 files changed, 84 insertions(+), 0 deletions(-) create mode 100644 plugins/virtuoso/controllers/admin/virtuoso_plugin_ontology_mapping_controller.rb create mode 100644 plugins/virtuoso/public/ontology_mapping.js create mode 100644 plugins/virtuoso/test/functional/virtuoso_plugin_ontology_mapping_controller.rb create mode 100644 plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/_ontology_mapping_item.html.erb create mode 100644 plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/index.html.erb diff --git a/plugins/virtuoso/controllers/admin/virtuoso_plugin_ontology_mapping_controller.rb b/plugins/virtuoso/controllers/admin/virtuoso_plugin_ontology_mapping_controller.rb new file mode 100644 index 0000000..531a843 --- /dev/null +++ b/plugins/virtuoso/controllers/admin/virtuoso_plugin_ontology_mapping_controller.rb @@ -0,0 +1,13 @@ +class VirtuosoPluginOntologyMappingController < AdminController + + def index + @settings = VirtuosoPlugin.new(self).settings + if request.post? + @settings.ontology_mapping = params['ontology_mapping'] + @settings.save! + session[:notice] = _('Saved!') + end + @ontology_mapping = @settings.ontology_mapping + end + +end diff --git a/plugins/virtuoso/public/ontology_mapping.js b/plugins/virtuoso/public/ontology_mapping.js new file mode 100644 index 0000000..87fd16e --- /dev/null +++ b/plugins/virtuoso/public/ontology_mapping.js @@ -0,0 +1,11 @@ +jQuery(document).ready(function($) { + + $('#new-ontology-button').on('click', function() { + $('#ontology-table').append($('#ontology-item-template tr').clone()); + }); + + $('#ontology-table').on('click', '.remove-ontology-button', function() { + $(this).parents('tr').remove(); + }); + +}); diff --git a/plugins/virtuoso/test/functional/virtuoso_plugin_ontology_mapping_controller.rb b/plugins/virtuoso/test/functional/virtuoso_plugin_ontology_mapping_controller.rb new file mode 100644 index 0000000..e64de19 --- /dev/null +++ b/plugins/virtuoso/test/functional/virtuoso_plugin_ontology_mapping_controller.rb @@ -0,0 +1,32 @@ +require 'test_helper' + +class VirtuosoPluginOntologyMappingControllerTest < ActionController::TestCase + + setup do + @environment = Environment.default + @plugin = VirtuosoPlugin.new(self) + login_as(create_admin_user(environment)) + @ontology_mapping = [{'source' => 'title', 'target' => 'http://purl.org/dc/elements/1.1/title'}, + {'source' => 'creator', 'target' => 'http://purl.org/dc/elements/1.1/creator'}] + end + + attr_reader :environment, :plugin, :ontology_mapping + + should 'list saved mappings' do + settings = plugin.settings + settings.ontology_mapping = ontology_mapping + settings.save! + get :index + assert_select "#ontology-table tr", 3 do + assert_select "input[name='ontology_mapping[][source]']" + assert_select "input[name='ontology_mapping[][target]']" + end + end + + should 'save ontology mappings' do + post :index, 'ontology_mapping' => ontology_mapping + @environment = environment.reload + assert_equivalent ontology_mapping, plugin.settings.ontology_mapping + 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 c0b4ff7..b864b07 100644 --- a/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb +++ b/plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb @@ -43,5 +43,6 @@
<%= button :edit, _('Triples management'), :action => :triples_management %> <%= button :edit, _('Custom Queries'), :action => :index, :controller => 'virtuoso_plugin_custom_queries' %> + <%= button :edit, _('Ontology mapping'), :action => :index, :controller => 'virtuoso_plugin_ontology_mapping' %>
diff --git a/plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/_ontology_mapping_item.html.erb b/plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/_ontology_mapping_item.html.erb new file mode 100644 index 0000000..f365e0b --- /dev/null +++ b/plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/_ontology_mapping_item.html.erb @@ -0,0 +1,5 @@ + + <%= text_field_tag 'ontology_mapping[][source]', ontology_mapping_item[:source] %> + <%= text_field_tag 'ontology_mapping[][target]', ontology_mapping_item[:target], :style => 'width: 100%' %> + <%= button :remove, _('Remove'), '#', :class => "remove-ontology-button" %> + diff --git a/plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/index.html.erb b/plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/index.html.erb new file mode 100644 index 0000000..9a51a67 --- /dev/null +++ b/plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/index.html.erb @@ -0,0 +1,22 @@ +

<%= _('Ontology Mapping') %>

+ +<%= form_for :ontology_mapping do |f| %> + + + + + + + <%= render :partial => 'ontology_mapping_item', :collection => @ontology_mapping %> +
<%= _('Source') %><%= _('Target') %>
+
+ <%= button :new, _('New'), '#', :id => 'new-ontology-button' %> + <%= submit_button :save, _('Save') %> +
+<% end %> + + + <%= render :partial => 'ontology_mapping_item', :collection => [{:source => '', :target => ''}] %> + + +<%= javascript_include_tag '/plugins/virtuoso/ontology_mapping.js' %> -- libgit2 0.21.2