Commit a9b5d7913fd1faeb62a87b8491e93223fe7e576f
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Merge branch 'virtuoso_integration' of gitlab.com:participa/noosfero into virtuoso_integration
Showing
12 changed files
with
86 additions
and
8 deletions
Show diff stats
plugins/virtuoso/Gemfile
plugins/virtuoso/db/migrate/20141113131439_create_custom_queries.rb
... | ... | @@ -0,0 +1,25 @@ |
1 | +Feature: edit template | |
2 | + As a noosfero user | |
3 | + I want to create and edit templates | |
4 | + | |
5 | + Background: | |
6 | + Given I am on the homepage | |
7 | + And plugin Virtuoso is enabled on environment | |
8 | + And the following users | |
9 | + | login | name | | |
10 | + | joaosilva | Joao Silva | | |
11 | + And I am logged in as "joaosilva" | |
12 | + And the following custom queries | |
13 | + | name | query | template | | |
14 | + | Default | query-1 | template-1 | | |
15 | + | |
16 | + @selenium | |
17 | + Scenario: | |
18 | + Given I am on joaosilva's control panel | |
19 | + And I follow "Manage Content" | |
20 | + And I should see "New content" | |
21 | + And I follow "New content" | |
22 | + And I should see "Triples template" within ".article-types" | |
23 | + When I follow "Triples template" within ".article-types" | |
24 | + And I follow "Copy" within ".custom-query" | |
25 | + Then the "SPARQL Query" field should contain "query-1" | ... | ... |
plugins/virtuoso/features/step_definitions/virtuoso_plugin_steps.rb
0 → 100644
plugins/virtuoso/lib/virtuoso_plugin/custom_query.rb
... | ... | @@ -2,7 +2,7 @@ class VirtuosoPlugin::CustomQuery < Noosfero::Plugin::ActiveRecord |
2 | 2 | |
3 | 3 | belongs_to :environment |
4 | 4 | |
5 | - attr_accessible :enabled, :environment, :query, :template, :name | |
5 | + attr_accessible :enabled, :environment, :query, :template, :name, :stylesheet | |
6 | 6 | |
7 | 7 | validates_presence_of :name |
8 | 8 | ... | ... |
plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb
... | ... | @@ -10,8 +10,9 @@ class VirtuosoPlugin::TriplesTemplate < Article |
10 | 10 | |
11 | 11 | settings_items :query, :type => :string |
12 | 12 | settings_items :template, :type => :string |
13 | + settings_items :stylesheet, :type => :string | |
13 | 14 | |
14 | - attr_accessible :query, :template | |
15 | + attr_accessible :query, :template, :stylesheet | |
15 | 16 | |
16 | 17 | def to_html(options = {}) |
17 | 18 | article = self |
... | ... | @@ -28,11 +29,20 @@ class VirtuosoPlugin::TriplesTemplate < Article |
28 | 29 | begin |
29 | 30 | results = plugin.virtuoso_client.query(query) |
30 | 31 | liquid_template = Liquid::Template.parse("{% for row in results %}#{template}{% endfor %}") |
31 | - liquid_template.render('results' => results) | |
32 | + page = liquid_template.render('results' => results) | |
33 | + transform_html(page) | |
32 | 34 | rescue => ex |
33 | 35 | logger.info ex.to_s |
34 | 36 | "Failed to process the template" |
35 | 37 | end |
36 | 38 | end |
37 | 39 | |
40 | + protected | |
41 | + | |
42 | + def transform_html(html) | |
43 | + document = Roadie::Document.new(html) | |
44 | + document.add_css(stylesheet) if stylesheet.present? | |
45 | + document.transform | |
46 | + end | |
47 | + | |
38 | 48 | end | ... | ... |
plugins/virtuoso/public/custom_query.js
... | ... | @@ -2,6 +2,7 @@ jQuery(document).ready(function($) { |
2 | 2 | $('#copy_custom_query').on('click', function() { |
3 | 3 | $.getJSON("/plugin/virtuoso/public/custom_query", {id: $('#select_custom_query').val()}, function(data) { |
4 | 4 | $('#article_query').val(data.custom_query.query); |
5 | + $('#article_stylesheet').val(data.custom_query.stylesheet); | |
5 | 6 | tinymce.get('article_template').setContent(data.custom_query.template); |
6 | 7 | }); |
7 | 8 | }); | ... | ... |
plugins/virtuoso/test/functional/virtuoso_plugin_custom_queries_controller_test.rb
... | ... | @@ -2,7 +2,7 @@ require 'test_helper' |
2 | 2 | |
3 | 3 | class VirtuosoPluginCustomQueriesControllerTest < ActionController::TestCase |
4 | 4 | setup do |
5 | - @custom_query = VirtuosoPlugin::CustomQuery.create!(:name => 'name', :query => 'query', :template => 'template', :environment => Environment.default) | |
5 | + @custom_query = VirtuosoPlugin::CustomQuery.create!(:name => 'name', :query => 'query', :template => 'template', :stylesheet => 'stylesheet', :environment => Environment.default) | |
6 | 6 | login_as(create_admin_user(Environment.default)) |
7 | 7 | end |
8 | 8 | |
... | ... | @@ -19,7 +19,7 @@ class VirtuosoPluginCustomQueriesControllerTest < ActionController::TestCase |
19 | 19 | |
20 | 20 | should "create custom_query" do |
21 | 21 | assert_difference('VirtuosoPlugin::CustomQuery.count') do |
22 | - post :create, custom_query: { name: @custom_query.name, enabled: @custom_query.enabled, query: @custom_query.query, template: @custom_query.template } | |
22 | + post :create, custom_query: { name: @custom_query.name, enabled: @custom_query.enabled, query: @custom_query.query, template: @custom_query.template, stylesheet: @custom_query.stylesheet } | |
23 | 23 | end |
24 | 24 | |
25 | 25 | assert_redirected_to :action => :index |
... | ... | @@ -31,7 +31,7 @@ class VirtuosoPluginCustomQueriesControllerTest < ActionController::TestCase |
31 | 31 | end |
32 | 32 | |
33 | 33 | should "update custom_query" do |
34 | - put :update, id: @custom_query, custom_query: { name: @custom_query.name, enabled: @custom_query.enabled, query: @custom_query.query, template: @custom_query.template } | |
34 | + put :update, id: @custom_query, custom_query: { name: @custom_query.name, enabled: @custom_query.enabled, query: @custom_query.query, template: @custom_query.template, stylesheet: @custom_query.stylesheet } | |
35 | 35 | assert_redirected_to :action => :index |
36 | 36 | end |
37 | 37 | ... | ... |
plugins/virtuoso/test/unit/triples_template_test.rb
... | ... | @@ -14,7 +14,7 @@ class TriplesTemplateTest < ActiveSupport::TestCase |
14 | 14 | article.plugin.virtuoso_client.expects(:query).returns([{'var' => 'Hello '}, {'var' => 'World'}]) |
15 | 15 | article.template = "{{row.var}}" |
16 | 16 | |
17 | - assert_equal 'Hello World', article.template_content | |
17 | + assert_match /Hello World/, article.template_content | |
18 | 18 | end |
19 | 19 | |
20 | 20 | should 'display error message when failed to execute the query' do |
... | ... | @@ -26,4 +26,16 @@ class TriplesTemplateTest < ActiveSupport::TestCase |
26 | 26 | assert_equal "Failed to process the template", article.template_content |
27 | 27 | end |
28 | 28 | |
29 | + should 'transform css into inline stylesheet' do | |
30 | + article.stubs(:plugin).returns(mock) | |
31 | + article.plugin.expects(:virtuoso_client).at_least_once.returns(mock) | |
32 | + article.plugin.virtuoso_client.expects(:query).returns([{'var' => 'Hello '}, {'var' => 'World'}]) | |
33 | + article.template = "<p>{{row.var}}</p>" | |
34 | + article.stylesheet = "p {color: red}" | |
35 | + | |
36 | + content = article.template_content | |
37 | + assert_match /<p style="color:red">Hello <\/p>/, content | |
38 | + assert_match /<p style="color:red">World<\/p>/, content | |
39 | + end | |
40 | + | |
29 | 41 | end | ... | ... |
plugins/virtuoso/views/cms/virtuoso_plugin/_tinymce_template_editor.html.erb
0 → 100644
plugins/virtuoso/views/cms/virtuoso_plugin/_triples_template.html.erb
1 | 1 | <div class="virtuoso-triples-template"> |
2 | 2 | <%= required_fields_message %> |
3 | 3 | |
4 | - <%= render :file => 'shared/tiny_mce' %> | |
4 | + <%= render :partial => 'cms/virtuoso_plugin/tinymce_template_editor' %> | |
5 | 5 | |
6 | 6 | <%= required labelled_form_field(_('Title'), text_field(:article, 'name', :size => '64', :maxlength => 150)) %> |
7 | 7 | |
... | ... | @@ -20,6 +20,13 @@ |
20 | 20 | </span> |
21 | 21 | </div> |
22 | 22 | |
23 | + <div class="stylesheet"> | |
24 | + <span class="label"><%= _('Stylesheet') %></span> | |
25 | + <span> | |
26 | + <%= text_area(:article, :stylesheet, :style => 'width: 98%; height: 100px;') %> | |
27 | + </span> | |
28 | + </div> | |
29 | + | |
23 | 30 | <%= render :partial => 'shared/lead_and_body', :locals => {:tiny_mce => true} %> |
24 | 31 | <%= render :partial => 'general_fields' %> |
25 | 32 | </div> | ... | ... |
plugins/virtuoso/views/virtuoso_plugin_custom_queries/_form.html.erb
... | ... | @@ -24,6 +24,10 @@ |
24 | 24 | <%= f.text_area :template %> |
25 | 25 | </div> |
26 | 26 | <div class="field"> |
27 | + <%= f.label :stylesheet %><br /> | |
28 | + <%= f.text_area :stylesheet %> | |
29 | + </div> | |
30 | + <div class="field"> | |
27 | 31 | <%= f.label :enabled %><br /> |
28 | 32 | <%= f.check_box :enabled %> |
29 | 33 | </div> | ... | ... |