1
0
mirror of https://github.com/projekteuler/projekteuler.git synced 2025-12-10 08:46:41 +01:00

Allow translation content styling through scrubber

This commit is contained in:
Philipp Fischbeck 2019-02-13 09:10:29 +01:00
parent 318590e1c7
commit 7cfbc3d9f8
8 changed files with 37 additions and 6 deletions

View File

@ -0,0 +1,13 @@
class TranslationContentScrubber < Rails::Html::PermitScrubber
def initialize
super
self.tags = %w( strong em b i p code pre tt samp kbd var sub
sup dfn cite big small address hr br div span h1 h2 h3 h4 h5 h6 ul ol li dl dt dd abbr
acronym a img blockquote del ins )
self.attributes = %w( href src width height alt cite datetime title class name xml:lang abbr style )
end
def skip_node?(node)
node.text?
end
end

View File

@ -23,7 +23,7 @@
<%= panel do %> <%= panel do %>
<div class="panel-body problem-content"> <div class="panel-body problem-content">
<%= sanitize @translation.content %> <%= sanitize @translation.content, scrubber: TranslationContentScrubber.new %>
</div> </div>
<% end %> <% end %>
<div class="text-center"> <div class="text-center">

View File

@ -11,7 +11,7 @@
<% end %> <% end %>
<%= panel do %> <%= panel do %>
<div class="panel-body problem-content"> <div class="panel-body problem-content">
<%= sanitize @problem.content %> <%= sanitize @problem.content, scrubber: TranslationContentScrubber.new %>
</div> </div>
<% end %> <% end %>
<div class="text-center"> <div class="text-center">

View File

@ -27,9 +27,9 @@ class Admin::DashboardControllerTest < ActionDispatch::IntegrationTest
test "should fail incorrect problem count" do test "should fail incorrect problem count" do
login_admin login_admin
post admin_dashboard_update_problem_count_url(problem_count: 2) post admin_dashboard_update_problem_count_url(problem_count: 3)
assert_redirected_to admin_dashboard_index_url assert_redirected_to admin_dashboard_index_url
assert_equal 3, Problem.count assert_equal 4, Problem.count
end end
end end

View File

@ -22,4 +22,12 @@ class ProblemsControllerTest < ActionDispatch::IntegrationTest
assert_redirected_to problem_path(id: 2) assert_redirected_to problem_path(id: 2)
end end
test "should contain HTML styles in translation content" do
get problem_url(id: 4)
assert_response :success
assert_select ".problem-content" do
assert_select "b", 1
assert_select 'p[style="text-align:center;"]', 1
end
end
end end

View File

@ -11,3 +11,7 @@ two:
three: three:
id: 3 id: 3
four:
id: 4
translation: translation_with_html

View File

@ -17,3 +17,9 @@ translation_two_alternative:
title: Second title title: Second title
content: The changed content for the second problem content: The changed content for the second problem
status: 0 status: 0
translation_with_html:
problem_id: 4
title: Some title
content: 'p>This is some <b>custom</b> text.</p><p style="text-align:center;">This is centered.</p>'
status: 1

View File

@ -26,7 +26,7 @@ class ProblemTest < ActiveSupport::TestCase
end end
test "should return correct number of translated problems" do test "should return correct number of translated problems" do
assert_equal 2, Problem.translated_count assert_equal 3, Problem.translated_count
end end
test "should allow for problem count updating" do test "should allow for problem count updating" do
@ -44,7 +44,7 @@ class ProblemTest < ActiveSupport::TestCase
assert_raises ArgumentError do assert_raises ArgumentError do
Problem.update_count(1) Problem.update_count(1)
end end
assert_equal 3, Problem.count() assert_equal 4, Problem.count()
assert_equal "First title", Problem.find(1).title assert_equal "First title", Problem.find(1).title
end end
end end