Fix sanitizing lists contents (#11354)
* Add test * Fix code for sanitizing nested lists stripping all tags
This commit is contained in:
		@@ -25,6 +25,8 @@ class Sanitize
 | 
				
			|||||||
      case env[:node_name]
 | 
					      case env[:node_name]
 | 
				
			||||||
      when 'li'
 | 
					      when 'li'
 | 
				
			||||||
        env[:node].traverse do |node|
 | 
					        env[:node].traverse do |node|
 | 
				
			||||||
 | 
					          next unless %w(p ul ol li).include?(node.name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          node.add_next_sibling('<br>') if node.next_sibling
 | 
					          node.add_next_sibling('<br>') if node.next_sibling
 | 
				
			||||||
          node.replace(node.children) unless node.text?
 | 
					          node.replace(node.children) unless node.text?
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,5 +22,9 @@ describe Sanitize::Config do
 | 
				
			|||||||
    it 'converts ul inside ul' do
 | 
					    it 'converts ul inside ul' do
 | 
				
			||||||
      expect(Sanitize.fragment('<ul><li>Foo</li><li><ul><li>Bar</li><li>Baz</li></ul></li></ul>', subject)).to eq '<p>Foo<br>Bar<br>Baz</p>'
 | 
					      expect(Sanitize.fragment('<ul><li>Foo</li><li><ul><li>Bar</li><li>Baz</li></ul></li></ul>', subject)).to eq '<p>Foo<br>Bar<br>Baz</p>'
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it 'keep links in lists' do
 | 
				
			||||||
 | 
					      expect(Sanitize.fragment('<p>Check out:</p><ul><li><a href="https://joinmastodon.org" rel="nofollow noopener" target="_blank">joinmastodon.org</a></li><li>Bar</li></ul>', subject)).to eq '<p>Check out:</p><p><a href="https://joinmastodon.org" rel="nofollow noopener" target="_blank">joinmastodon.org</a><br>Bar</p>'
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user