class VirtuosoPlugin::TriplesTemplate < Article def self.short_description _('Triples template') end def self.description _('Triples template') end def self.initial_template ' {% for row in results %}
{{row}}
{% endfor %} ' end settings_items :query, :type => :string settings_items :template, :type => :string, :default => initial_template settings_items :stylesheet, :type => :string settings_items :per_page, :type => :integer, :default => 50 attr_accessible :query, :template, :stylesheet def to_html(options = {}) article = self proc do render :file => 'content_viewer/triples_template', :locals => {:article => article, :page => params[:npage]} end end def plugin @plugin ||= VirtuosoPlugin.new(self) end attr_reader :results def template_content(page=1) begin @results ||= plugin.virtuoso_readonly_client.query(query).paginate({:per_page => per_page, :page => page}) liquid_template = Liquid::Template.parse(template) rendered_template = liquid_template.render('results' => results, 'total_pages' => results.total_pages, 'current_page' => results.current_page, 'per_page' => results.per_page, 'total_entries' => results.total_entries, 'page_offset' => (results.current_page-1)*results.per_page) transform_html(rendered_template) rescue => ex logger.info ex.to_s "Failed to process the template" end end protected def transform_html(html) document = Roadie::Document.new(html) document.add_css(stylesheet) if stylesheet.present? document.transform end end