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 1 class VirtuosoPluginAdminController < AdminController
2 2  
3   - #validates :dspace_servers, presence: true
4   -
5 3 def index
6   - settings = params[:settings]
  4 + settings = params[:settings]
7 5 settings ||= {}
8 6 @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, settings)
9 7 @harvest_running = VirtuosoPlugin::DspaceHarvest.new(environment).find_job.present?
10 8 if request.post?
11   - settings[:dspace_servers].delete_if do | server |
  9 + settings[:dspace_servers].delete_if do | server |
12 10 server[:dspace_uri].empty?
13 11 end
14 12 @settings.save!
... ...
plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb
1 1 #inspired by https://github.com/code4lib/ruby-oai/blob/master/lib/oai/harvester/harvest.rb
2 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 5 @environment = environment
8 6 @dspace_uri = dspace_uri
9 7 end
... ... @@ -69,19 +67,19 @@ class VirtuosoPlugin::DspaceHarvest
69 67 settings.last_harvest = nil
70 68 settings.save!
71 69 end
72   - job = VirtuosoPlugin::DspaceHarvest::Job.new(@environment.id)
  70 + job = VirtuosoPlugin::DspaceHarvest::Job.new(@environment.id, @dspace_uri)
73 71 Delayed::Job.enqueue(job)
74 72 end
75 73 end
76 74  
77 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 77 end
80 78  
81   - class Job < Struct.new(:environment_id)
  79 + class Job < Struct.new(:environment_id, :dspace_uri)
82 80 def perform
83 81 environment = Environment.find(environment_id)
84   - harvest = VirtuosoPlugin::DspaceHarvest.new(environment)
  82 + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, dspace_uri)
85 83 harvest.run
86 84 end
87 85 end
... ...
plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb
... ... @@ -21,6 +21,7 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article
21 21 settings_items :query, :type => :string
22 22 settings_items :template, :type => :string, :default => initial_template
23 23 settings_items :stylesheet, :type => :string
  24 + settings_items :per_page, :type => :integer, :default => 50
24 25  
25 26 attr_accessible :query, :template, :stylesheet
26 27  
... ... @@ -35,12 +36,12 @@ class VirtuosoPlugin::TriplesTemplate &lt; Article
35 36 @plugin ||= VirtuosoPlugin.new(self)
36 37 end
37 38  
38   - def template_content
  39 + def template_content(page=1)
39 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 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 45 rescue => ex
45 46 logger.info ex.to_s
46 47 "Failed to process the template"
... ...
plugins/virtuoso/public/ontology_mapping.js
... ... @@ -2,10 +2,12 @@ jQuery(document).ready(function($) {
2 2  
3 3 $('#new-ontology-button').on('click', function() {
4 4 $('#ontology-table').append($('#ontology-item-template tr').clone());
  5 + return false;
5 6 });
6 7  
7 8 $('#ontology-table').on('click', '.remove-ontology-button', function() {
8 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 9 end
10 10  
11 11 attr_reader :environment
12   -
  12 +
13 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 25 @settings = Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin)
19 26 assert_equal 'http://virtuoso.noosfero.com', @settings.settings[:virtuoso_uri]
20 27 assert_equal 'username', @settings.settings[:virtuoso_username]
21 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 32 assert_redirected_to :action => 'index'
24 33 end
25 34  
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/_server_list_item.html.erb
1 1 <div>
2 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 4 <%= button_without_text(:delete, _('Delete'), "#" , :class=>"delete-server-list-row") %>
5 5 <BR><BR>
6 6 </div>
... ...
plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
... ... @@ -5,12 +5,11 @@
5 5  
6 6 <%= form_for(:settings) do |f| %>
7 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 13 </strong>
15 14 <BR>
16 15 <div class="dspace-servers-config-box" >
... ...
plugins/virtuoso/views/virtuoso_plugin_ontology_mapping/index.html.erb
... ... @@ -12,6 +12,7 @@
12 12 <div class="actions">
13 13 <%= button :new, _('New'), '#', :id => 'new-ontology-button' %>
14 14 <%= submit_button :save, _('Save') %>
  15 + <%= button 'cancel', _('Cancel'), :controller => 'virtuoso_plugin_admin', :action => 'index' %>
15 16 </div>
16 17 <% end %>
17 18  
... ...