From 76aa0ada687d279d643468030f86d303ec34af76 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Mon, 10 Nov 2014 19:04:52 -0300 Subject: [PATCH] virtuoso: added a content that display triples results --- plugins/virtuoso/lib/virtuoso_plugin.rb | 12 ++++++++++++ plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb | 12 ++++++------ plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb | 33 +++++++++++++++++++++++++++++++++ plugins/virtuoso/test/unit/virtuoso_plugin_test.rb | 16 ++++++++++++++++ plugins/virtuoso/views/cms/virtuoso_plugin/_triples_template.html.erb | 10 ++++++++++ plugins/virtuoso/views/content_viewer/triples_template.html.erb | 7 +++++++ 6 files changed, 84 insertions(+), 6 deletions(-) create mode 100644 plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb create mode 100644 plugins/virtuoso/test/unit/virtuoso_plugin_test.rb create mode 100644 plugins/virtuoso/views/cms/virtuoso_plugin/_triples_template.html.erb create mode 100644 plugins/virtuoso/views/content_viewer/triples_template.html.erb diff --git a/plugins/virtuoso/lib/virtuoso_plugin.rb b/plugins/virtuoso/lib/virtuoso_plugin.rb index f621956..4699d54 100644 --- a/plugins/virtuoso/lib/virtuoso_plugin.rb +++ b/plugins/virtuoso/lib/virtuoso_plugin.rb @@ -8,4 +8,16 @@ class VirtuosoPlugin < Noosfero::Plugin _('Virtuoso integration') end + def content_types + [VirtuosoPlugin::TriplesTemplate] + end + + def settings + @settings ||= Noosfero::Plugin::Settings.new(context.environment, VirtuosoPlugin) + end + + 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 + end diff --git a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb index bd52441..2b1313f 100644 --- a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb +++ b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb @@ -7,18 +7,18 @@ class VirtuosoPlugin::DspaceHarvest @environment = environment end - def settings - @settings ||= Noosfero::Plugin::Settings.new(@environment, VirtuosoPlugin) + attr_reader :environment + + def plugin + @plugin ||= VirtuosoPlugin.new(self) end + delegate :settings, :to => :plugin + def dspace_client @dspace_client ||= OAI::Client.new("#{settings.dspace_uri}/oai/request") end - 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 triplify(record) metadata = VirtuosoPlugin::DublinCoreMetadata.new(record.metadata) puts "triplify #{record.header.identifier}" diff --git a/plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb b/plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb new file mode 100644 index 0000000..455baa1 --- /dev/null +++ b/plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb @@ -0,0 +1,33 @@ +class VirtuosoPlugin::TriplesTemplate < Article + + def self.short_description + _('Triples template') + end + + def self.description + _('Triples template') + end + + settings_items :query, :type => :string + settings_items :template, :type => :string + + attr_accessible :query, :template + + def to_html(options = {}) + article = self + proc do + render :file => 'content_viewer/triples_template', :locals => {:article => article} + end + end + + def plugin + @plugin ||= VirtuosoPlugin.new(self) + end + + def template_content + plugin.virtuoso_client.query(query).map do |r| + template % r + end.join + end + +end diff --git a/plugins/virtuoso/test/unit/virtuoso_plugin_test.rb b/plugins/virtuoso/test/unit/virtuoso_plugin_test.rb new file mode 100644 index 0000000..d42a29d --- /dev/null +++ b/plugins/virtuoso/test/unit/virtuoso_plugin_test.rb @@ -0,0 +1,16 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class VirtuosoPluginTest < ActiveSupport::TestCase + + def setup + @environment = Environment.default + @plugin = VirtuosoPlugin.new + end + + attr_reader :plugin + + should 'define a new content' do + assert_equal [VirtuosoPlugin::TriplesTemplate], plugin.content_types + end + +end diff --git a/plugins/virtuoso/views/cms/virtuoso_plugin/_triples_template.html.erb b/plugins/virtuoso/views/cms/virtuoso_plugin/_triples_template.html.erb new file mode 100644 index 0000000..e25b895 --- /dev/null +++ b/plugins/virtuoso/views/cms/virtuoso_plugin/_triples_template.html.erb @@ -0,0 +1,10 @@ +<%= required_fields_message %> + +<%= render :file => 'shared/tiny_mce' %> + +<%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64', :maxlength => 150)) %> +<%= labelled_form_field(_('SPARQL Query'), text_area(:article, :query, :style => 'width: 98%; height: 120px;')) %> +<%= labelled_form_field(_('Template'), text_area(:article, :template, :style => 'width: 98%; height: 200px;', :class => 'mceEditor')) %> + +<%= render :partial => 'general_fields' %> +<%= render :partial => 'shared/lead_and_body', :locals => {:tiny_mce => true} %> diff --git a/plugins/virtuoso/views/content_viewer/triples_template.html.erb b/plugins/virtuoso/views/content_viewer/triples_template.html.erb new file mode 100644 index 0000000..51dcf21 --- /dev/null +++ b/plugins/virtuoso/views/content_viewer/triples_template.html.erb @@ -0,0 +1,7 @@ +
+ <%= article.body %> +
+ +
+ <%= article.template_content %> +
-- libgit2 0.21.2