triples_template.rb
1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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 %}
<div>
{{row}}
</div>
{% 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