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 @@
<%= _('Source') %> | +<%= _('Target') %> | ++ |
---|