Commit 53af25959e5523e6051b20d9cc4683522d470f73

Authored by Francisco Júnior
2 parents e517e511 489b677e

Merge branch 'virtuoso_integration' of gitlab.com:participa/noosfero into virtuoso_integration

plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb
1 class VirtuosoPluginAdminController < AdminController 1 class VirtuosoPluginAdminController < AdminController
2 2
3 - #validates :dspace_servers, presence: true  
4 -  
5 def index 3 def index
6 - settings = params[:settings] 4 + settings = params[:settings]
7 settings ||= {} 5 settings ||= {}
8 @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, settings) 6 @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, settings)
9 @harvest_running = VirtuosoPlugin::DspaceHarvest.new(environment).find_job.present? 7 @harvest_running = VirtuosoPlugin::DspaceHarvest.new(environment).find_job.present?
10 if request.post? 8 if request.post?
11 - settings[:dspace_servers].delete_if do | server | 9 + settings[:dspace_servers].delete_if do | server |
12 server[:dspace_uri].empty? 10 server[:dspace_uri].empty?
13 end 11 end
14 @settings.save! 12 @settings.save!
plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb
1 #inspired by https://github.com/code4lib/ruby-oai/blob/master/lib/oai/harvester/harvest.rb 1 #inspired by https://github.com/code4lib/ruby-oai/blob/master/lib/oai/harvester/harvest.rb
2 class VirtuosoPlugin::DspaceHarvest 2 class VirtuosoPlugin::DspaceHarvest
3 3
4 - DC_CONVERSION = [:title, :creator, :subject, :description, :date, :type, :identifier, :language, :rights, :format]  
5 -  
6 - def initialize(environment, dspace_uri = "") 4 + def initialize(environment, dspace_uri = nil)
7 @environment = environment 5 @environment = environment
8 @dspace_uri = dspace_uri 6 @dspace_uri = dspace_uri
9 end 7 end
@@ -69,19 +67,19 @@ class VirtuosoPlugin::DspaceHarvest @@ -69,19 +67,19 @@ class VirtuosoPlugin::DspaceHarvest
69 settings.last_harvest = nil 67 settings.last_harvest = nil
70 settings.save! 68 settings.save!
71 end 69 end
72 - job = VirtuosoPlugin::DspaceHarvest::Job.new(@environment.id) 70 + job = VirtuosoPlugin::DspaceHarvest::Job.new(@environment.id, @dspace_uri)
73 Delayed::Job.enqueue(job) 71 Delayed::Job.enqueue(job)
74 end 72 end
75 end 73 end
76 74
77 def find_job 75 def find_job
78 - Delayed::Job.where(:handler => "--- !ruby/struct:VirtuosoPlugin::DspaceHarvest::Job\nenvironment_id: #{@environment.id}\n") 76 + Delayed::Job.where(:handler => "--- !ruby/struct:VirtuosoPlugin::DspaceHarvest::Job\nenvironment_id: #{@environment.id}\ndspace_uri: #{@dspace_uri}\n")
79 end 77 end
80 78
81 - class Job < Struct.new(:environment_id) 79 + class Job < Struct.new(:environment_id, :dspace_uri)
82 def perform 80 def perform
83 environment = Environment.find(environment_id) 81 environment = Environment.find(environment_id)
84 - harvest = VirtuosoPlugin::DspaceHarvest.new(environment) 82 + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, dspace_uri)
85 harvest.run 83 harvest.run
86 end 84 end
87 end 85 end
plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb
@@ -21,6 +21,7 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article @@ -21,6 +21,7 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article
21 settings_items :query, :type => :string 21 settings_items :query, :type => :string
22 settings_items :template, :type => :string, :default => initial_template 22 settings_items :template, :type => :string, :default => initial_template
23 settings_items :stylesheet, :type => :string 23 settings_items :stylesheet, :type => :string
  24 + settings_items :per_page, :type => :integer, :default => 50
24 25
25 attr_accessible :query, :template, :stylesheet 26 attr_accessible :query, :template, :stylesheet
26 27
@@ -35,12 +36,12 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article @@ -35,12 +36,12 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article
35 @plugin ||= VirtuosoPlugin.new(self) 36 @plugin ||= VirtuosoPlugin.new(self)
36 end 37 end
37 38
38 - def template_content 39 + def template_content(page=1)
39 begin 40 begin
40 - results = plugin.virtuoso_readonly_client.query(query) 41 + results = plugin.virtuoso_readonly_client.query(query).paginate({:per_page => per_page, :page => page})
41 liquid_template = Liquid::Template.parse(template) 42 liquid_template = Liquid::Template.parse(template)
42 - page = liquid_template.render('results' => results)  
43 - transform_html(page) 43 + rendered_template = liquid_template.render('results' => results)
  44 + transform_html(rendered_template)
44 rescue => ex 45 rescue => ex
45 logger.info ex.to_s 46 logger.info ex.to_s
46 "Failed to process the template" 47 "Failed to process the template"
plugins/virtuoso/public/ontology_mapping.js
@@ -2,10 +2,12 @@ jQuery(document).ready(function($) { @@ -2,10 +2,12 @@ jQuery(document).ready(function($) {
2 2
3 $('#new-ontology-button').on('click', function() { 3 $('#new-ontology-button').on('click', function() {
4 $('#ontology-table').append($('#ontology-item-template tr').clone()); 4 $('#ontology-table').append($('#ontology-item-template tr').clone());
  5 + return false;
5 }); 6 });
6 7
7 $('#ontology-table').on('click', '.remove-ontology-button', function() { 8 $('#ontology-table').on('click', '.remove-ontology-button', function() {
8 $(this).parents('tr').remove(); 9 $(this).parents('tr').remove();
  10 + return false;
9 }); 11 });
10 12
11 }); 13 });
plugins/virtuoso/test/functional/virtuoso_plugin_admin_controller_test.rb
@@ -9,17 +9,26 @@ class VirtuosoPluginAdminControllerTest &lt; ActionController::TestCase @@ -9,17 +9,26 @@ class VirtuosoPluginAdminControllerTest &lt; ActionController::TestCase
9 end 9 end
10 10
11 attr_reader :environment 11 attr_reader :environment
12 - 12 +
13 should 'save virtuoso plugin settings' do 13 should 'save virtuoso plugin settings' do
14 - post :index, :settings => {'virtuoso_uri' => 'http://virtuoso.noosfero.com',  
15 - 'virtuoso_username' => 'username',  
16 - 'virtuoso_password' => 'password',  
17 - 'dspace_uri' => 'http://dspace.noosfero.com'} 14 + post :index, :settings =>
  15 + {:virtuoso_uri=>"http://virtuoso.noosfero.com",
  16 + :virtuoso_username=>"username", :virtuoso_password=>"password",
  17 + :virtuoso_readonly_username=>"password",
  18 + :virtuoso_readonly_password=>"password",
  19 + :dspace_servers=>[
  20 + {"dspace_uri"=>"http://dspace1.noosfero.com"},
  21 + {"dspace_uri"=>"http://dspace2.noosfero.com"},
  22 + {"dspace_uri"=>"http://dspace3.noosfero.com"}
  23 + ]
  24 + }
18 @settings = Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin) 25 @settings = Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin)
19 assert_equal 'http://virtuoso.noosfero.com', @settings.settings[:virtuoso_uri] 26 assert_equal 'http://virtuoso.noosfero.com', @settings.settings[:virtuoso_uri]
20 assert_equal 'username', @settings.settings[:virtuoso_username] 27 assert_equal 'username', @settings.settings[:virtuoso_username]
21 assert_equal 'password', @settings.settings[:virtuoso_password] 28 assert_equal 'password', @settings.settings[:virtuoso_password]
22 - assert_equal 'http://dspace.noosfero.com', @settings.settings[:dspace_uri] 29 + assert_equal 'http://dspace1.noosfero.com', @settings.settings[:dspace_servers][0][:dspace_uri]
  30 + assert_equal 'http://dspace2.noosfero.com', @settings.settings[:dspace_servers][1][:dspace_uri]
  31 + assert_equal 'http://dspace3.noosfero.com', @settings.settings[:dspace_servers][2][:dspace_uri]
23 assert_redirected_to :action => 'index' 32 assert_redirected_to :action => 'index'
24 end 33 end
25 34
plugins/virtuoso/views/virtuoso_plugin_admin/_server_list_item.html.erb
1 <div> 1 <div>
2 <% value = server_list_item[:dspace_uri] if server_list_item %> 2 <% value = server_list_item[:dspace_uri] if server_list_item %>
3 - <%= text_field_tag 'settings[dspace_servers][][dspace_uri]', value, { :class => 'link-name', :maxlength => 60 } %> 3 + <%= text_field_tag 'settings[dspace_servers][][dspace_uri]', value, { :class => 'link-name', :maxlength => 60, :size=> 58 } %>
4 <%= button_without_text(:delete, _('Delete'), "#" , :class=>"delete-server-list-row") %> 4 <%= button_without_text(:delete, _('Delete'), "#" , :class=>"delete-server-list-row") %>
5 <BR><BR> 5 <BR><BR>
6 </div> 6 </div>
plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
@@ -5,12 +5,11 @@ @@ -5,12 +5,11 @@
5 5
6 <%= form_for(:settings) do |f| %> 6 <%= form_for(:settings) do |f| %>
7 <strong> 7 <strong>
8 - <%= labelled_form_field _('Virtuoso URL:'), f.text_field(:virtuoso_uri) %>  
9 - <%= labelled_form_field _('Virtuoso Admin Username:'), f.text_field(:virtuoso_username) %>  
10 - <%= labelled_form_field _('Virtuoso Admin Password:'), f.password_field(:virtuoso_password) %>  
11 - <%= labelled_form_field _('Virtuoso Read-Only Username:'), f.text_field(:virtuoso_readonly_username) %>  
12 - <%= labelled_form_field _('Virtuoso Read-Only Password:'), f.password_field(:virtuoso_readonly_password) %>  
13 - <%= labelled_form_field _('DSpace URL:'), f.text_field(:dspace_uri) %> 8 + <%= labelled_form_field _('Virtuoso URL:'), f.text_field(:virtuoso_uri, :size=> 60) %>
  9 + <%= labelled_form_field _('Virtuoso Admin Username:'), f.text_field(:virtuoso_username, :size=> 60) %>
  10 + <%= labelled_form_field _('Virtuoso Admin Password:'), f.password_field(:virtuoso_password, :size=> 60) %>
  11 + <%= labelled_form_field _('Virtuoso Read-Only Username:'), f.text_field(:virtuoso_readonly_username, :size=> 60) %>
  12 + <%= labelled_form_field _('Virtuoso Read-Only Password:'), f.password_field(:virtuoso_readonly_password, :size=> 60) %>
14 </strong> 13 </strong>
15 <BR> 14 <BR>
16 <div class="dspace-servers-config-box" > 15 <div class="dspace-servers-config-box" >
plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/index.html.erb
@@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
12 <div class="actions"> 12 <div class="actions">
13 <%= button :new, _('New'), '#', :id => 'new-ontology-button' %> 13 <%= button :new, _('New'), '#', :id => 'new-ontology-button' %>
14 <%= submit_button :save, _('Save') %> 14 <%= submit_button :save, _('Save') %>
  15 + <%= button 'cancel', _('Cancel'), :controller => 'virtuoso_plugin_admin', :action => 'index' %>
15 </div> 16 </div>
16 <% end %> 17 <% end %>
17 18