diff --git a/plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb b/plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb index a1e5685..ac5dc3b 100644 --- a/plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb +++ b/plugins/virtuoso/controllers/virtuoso_plugin_admin_controller.rb @@ -1,18 +1,16 @@ class VirtuosoPluginAdminController < AdminController + #validates :dspace_servers, presence: true + def index settings = params[:settings] settings ||= {} - -# raise settings.inspect.to_yaml - -# --- ! '{"virtuoso_uri"=>"http://hom.virtuoso.participa.br", "virtuoso_username"=>"dba", -# "virtuoso_password"=>"dasas", "dspace_uri"=>"http://hom.dspace.participa.br"}#' - @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, settings) @harvest_running = VirtuosoPlugin::DspaceHarvest.new(environment).find_job.present? - if request.post? + settings[:dspace_servers].delete_if do | server | + server[:dspace_uri].empty? + end @settings.save! session[:notice] = 'Settings successfully saved.' redirect_to :action => 'index' @@ -20,8 +18,7 @@ class VirtuosoPluginAdminController < AdminController end def force_harvest - harvest = VirtuosoPlugin::DspaceHarvest.new(environment) - harvest.start(params[:from_start]) + VirtuosoPlugin::DspaceHarvest.harverst_all(environment, params[:from_start]) session[:notice] = _('Harvest started') redirect_to :action => :index end diff --git a/plugins/virtuoso/lib/virtuoso_plugin.rb b/plugins/virtuoso/lib/virtuoso_plugin.rb index 20ac28a..7c81908 100644 --- a/plugins/virtuoso/lib/virtuoso_plugin.rb +++ b/plugins/virtuoso/lib/virtuoso_plugin.rb @@ -21,10 +21,6 @@ class VirtuosoPlugin < Noosfero::Plugin def virtuoso_client @virtuoso_client ||= RDF::Virtuoso::Repository.new("#{settings.virtuoso_uri}/sparql", :update_uri => "#{settings.virtuoso_uri}/sparql-auth", :username => settings.virtuoso_username, :password => settings.virtuoso_password, :auth_method => 'digest', :timeout => 30) end - - def js_files - ['edit-server-list'] - end def stylesheet? true diff --git a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb index 0de0c1c..e159fbb 100644 --- a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb +++ b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb @@ -2,9 +2,10 @@ class VirtuosoPlugin::DspaceHarvest DC_CONVERSION = [:title, :creator, :subject, :description, :date, :type, :identifier, :language, :rights, :format] - - def initialize(environment) + + def initialize(environment, dspace_uri = "") @environment = environment + @dspace_uri = dspace_uri end attr_reader :environment @@ -16,7 +17,7 @@ class VirtuosoPlugin::DspaceHarvest delegate :settings, :to => :plugin def dspace_client - @dspace_client ||= OAI::Client.new("#{settings.dspace_uri}/oai/request") + @dspace_client ||= OAI::Client.new("#{@dspace_uri}/oai/request") end def triplify(record) @@ -26,7 +27,7 @@ class VirtuosoPlugin::DspaceHarvest DC_CONVERSION.each do |c| values = [metadata.send(c)].flatten.compact values.each do |value| - query = RDF::Virtuoso::Query.insert_data([RDF::URI.new(metadata.identifier), RDF::URI.new("http://purl.org/dc/elements/1.1/#{c}"), value]).graph(RDF::URI.new(settings.dspace_uri)) + query = RDF::Virtuoso::Query.insert_data([RDF::URI.new(metadata.identifier), RDF::URI.new("http://purl.org/dc/elements/1.1/#{c}"), value]).graph(RDF::URI.new(@dspace_uri)) plugin.virtuoso_client.insert(query) end end @@ -35,7 +36,7 @@ class VirtuosoPlugin::DspaceHarvest def run harvest_time = Time.now.utc params = settings.last_harvest ? {:from => settings.last_harvest.utc} : {} - puts "starting harvest #{params} #{settings.dspace_uri} #{settings.virtuoso_uri}" + puts "starting harvest #{params} #{@dspace_uri} #{settings.virtuoso_uri}" begin records = dspace_client.list_records(params) records.each do |record| @@ -52,14 +53,22 @@ class VirtuosoPlugin::DspaceHarvest settings.save! puts "ending harvest #{harvest_time}" end - + + def self.harvest_all(environment, from_start) + settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin) + settings.dspace_servers.each do |k, v| + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, k[:dspace_uri]) + harvest.start(from_start) + harvest.run + end + end + def start(from_start = false) if find_job.empty? if from_start settings.last_harvest = nil settings.save! end - job = VirtuosoPlugin::DspaceHarvest::Job.new(@environment.id) Delayed::Job.enqueue(job) end diff --git a/plugins/virtuoso/public/edit-server-list.js b/plugins/virtuoso/public/edit-server-list.js index 5026974..129ef4e 100644 --- a/plugins/virtuoso/public/edit-server-list.js +++ b/plugins/virtuoso/public/edit-server-list.js @@ -13,24 +13,21 @@ function send_ajax(source_url) { } }); }, - minLength: 3 }); } function new_server_action(){ send_ajax(jQuery("#page_url").val()); - jQuery(".delete-server-list-row").click(function(){ - jQuery(this).parent().parent().remove(); + jQuery(this).parent().remove(); return false; }); - jQuery(document).scrollTop(jQuery('#dropable-server-list').scrollTop()); } function add_new_server() { - var new_server = jQuery('#edit-server-list-block #new-template>li').clone(); + var new_server = jQuery('#edit-server-list-block #dspace-new-template > div').clone(); new_server.show(); jQuery('#dropable-server-list').append(new_server); new_server_action(); @@ -39,8 +36,8 @@ function add_new_server() { jQuery(document).ready(function(){ new_server_action(); - jQuery("#dropable-server-list").sortable({ - revert: true, - axis: "y" - }); +// jQuery("#dropable-server-list").sortable({ +// revert: true, +// axis: "y" +// }); }); diff --git a/plugins/virtuoso/public/style.css b/plugins/virtuoso/public/style.css index d843f92..582f2a1 100644 --- a/plugins/virtuoso/public/style.css +++ b/plugins/virtuoso/public/style.css @@ -25,3 +25,4 @@ margin-top: 20px; padding-top: 15px; } + diff --git a/plugins/virtuoso/public/virtuoso_plugin_admin.css b/plugins/virtuoso/public/virtuoso_plugin_admin.css new file mode 100644 index 0000000..3b721fd --- /dev/null +++ b/plugins/virtuoso/public/virtuoso_plugin_admin.css @@ -0,0 +1,8 @@ +.dspace-servers-config-box{ + border: 1px solid gray; + padding: 5px; +} + +#dspace-new-template{ + display: none; +} \ No newline at end of file diff --git a/plugins/virtuoso/views/virtuoso_plugin_admin/_server_list_item.html.erb b/plugins/virtuoso/views/virtuoso_plugin_admin/_server_list_item.html.erb index db1f478..3b62040 100644 --- a/plugins/virtuoso/views/virtuoso_plugin_admin/_server_list_item.html.erb +++ b/plugins/virtuoso/views/virtuoso_plugin_admin/_server_list_item.html.erb @@ -1,11 +1,7 @@ -