Commit 14b5363d6eccde2944178b9558352f3b6bf354b2

Authored by Victor Costa
1 parent fc1168b8

virtuoso: added ontology mapping management

plugins/virtuoso/controllers/admin/virtuoso_plugin_ontology_mapping_controller.rb 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +class VirtuosoPluginOntologyMappingController < AdminController
  2 +
  3 + def index
  4 + @settings = VirtuosoPlugin.new(self).settings
  5 + if request.post?
  6 + @settings.ontology_mapping = params['ontology_mapping']
  7 + @settings.save!
  8 + session[:notice] = _('Saved!')
  9 + end
  10 + @ontology_mapping = @settings.ontology_mapping
  11 + end
  12 +
  13 +end
... ...
plugins/virtuoso/public/ontology_mapping.js 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +jQuery(document).ready(function($) {
  2 +
  3 + $('#new-ontology-button').on('click', function() {
  4 + $('#ontology-table').append($('#ontology-item-template tr').clone());
  5 + });
  6 +
  7 + $('#ontology-table').on('click', '.remove-ontology-button', function() {
  8 + $(this).parents('tr').remove();
  9 + });
  10 +
  11 +});
... ...
plugins/virtuoso/test/functional/virtuoso_plugin_ontology_mapping_controller.rb 0 → 100644
... ... @@ -0,0 +1,32 @@
  1 +require 'test_helper'
  2 +
  3 +class VirtuosoPluginOntologyMappingControllerTest < ActionController::TestCase
  4 +
  5 + setup do
  6 + @environment = Environment.default
  7 + @plugin = VirtuosoPlugin.new(self)
  8 + login_as(create_admin_user(environment))
  9 + @ontology_mapping = [{'source' => 'title', 'target' => 'http://purl.org/dc/elements/1.1/title'},
  10 + {'source' => 'creator', 'target' => 'http://purl.org/dc/elements/1.1/creator'}]
  11 + end
  12 +
  13 + attr_reader :environment, :plugin, :ontology_mapping
  14 +
  15 + should 'list saved mappings' do
  16 + settings = plugin.settings
  17 + settings.ontology_mapping = ontology_mapping
  18 + settings.save!
  19 + get :index
  20 + assert_select "#ontology-table tr", 3 do
  21 + assert_select "input[name='ontology_mapping[][source]']"
  22 + assert_select "input[name='ontology_mapping[][target]']"
  23 + end
  24 + end
  25 +
  26 + should 'save ontology mappings' do
  27 + post :index, 'ontology_mapping' => ontology_mapping
  28 + @environment = environment.reload
  29 + assert_equivalent ontology_mapping, plugin.settings.ontology_mapping
  30 + end
  31 +
  32 +end
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
... ... @@ -43,5 +43,6 @@
43 43 <div class="actions">
44 44 <%= button :edit, _('Triples management'), :action => :triples_management %>
45 45 <%= button :edit, _('Custom Queries'), :action => :index, :controller => 'virtuoso_plugin_custom_queries' %>
  46 + <%= button :edit, _('Ontology mapping'), :action => :index, :controller => 'virtuoso_plugin_ontology_mapping' %>
46 47 </div>
47 48 </div>
... ...
plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/_ontology_mapping_item.html.erb 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +<tr>
  2 + <td><%= text_field_tag 'ontology_mapping[][source]', ontology_mapping_item[:source] %></td>
  3 + <td><%= text_field_tag 'ontology_mapping[][target]', ontology_mapping_item[:target], :style => 'width: 100%' %></td>
  4 + <td><%= button :remove, _('Remove'), '#', :class => "remove-ontology-button" %></td>
  5 +</tr>
... ...
plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/index.html.erb 0 → 100644
... ... @@ -0,0 +1,22 @@
  1 +<h1><%= _('Ontology Mapping') %></h1>
  2 +
  3 +<%= form_for :ontology_mapping do |f| %>
  4 +<table id="ontology-table">
  5 + <tr>
  6 + <th width="30%"><%= _('Source') %></th>
  7 + <th width="70%"><%= _('Target') %></th>
  8 + <th></th>
  9 + </tr>
  10 + <%= render :partial => 'ontology_mapping_item', :collection => @ontology_mapping %>
  11 +</table>
  12 +<div class="actions">
  13 + <%= button :new, _('New'), '#', :id => 'new-ontology-button' %>
  14 + <%= submit_button :save, _('Save') %>
  15 +</div>
  16 +<% end %>
  17 +
  18 +<table id="ontology-item-template" style="display: none">
  19 + <%= render :partial => 'ontology_mapping_item', :collection => [{:source => '', :target => ''}] %>
  20 +</table>
  21 +
  22 +<%= javascript_include_tag '/plugins/virtuoso/ontology_mapping.js' %>
... ...