removing all tags from redcloth pages
git-svn-id: http://svn.barleysodas.com/barleysodas/trunk@7 0f7b21a7-9e3a-4941-bbeb-ce5c7c368fa7master
parent
da95e5dc7b
commit
77a8931fd8
|
@ -27,7 +27,7 @@ class Page < ActiveRecord::Base
|
|||
#
|
||||
def update_html
|
||||
# need to filter HTML first... remove <script> and chunks and the like...
|
||||
res = RedCloth.new(self.redcloth.to_s, [ :no_span_caps ])
|
||||
res = RedCloth.new(self.redcloth.to_s.strip_tags, [ :no_span_caps ])
|
||||
self.html = res.to_html(
|
||||
# no link references. messes up lines starting with [[WikiWord]]
|
||||
:block_textile_table, :block_textile_lists, :block_textile_prefix,
|
||||
|
|
|
@ -8,3 +8,4 @@ Rails::Initializer.run do |config|
|
|||
end
|
||||
|
||||
require 'redcloth'
|
||||
require 'actionview_text_helper'
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
# ActionView Text Helpers are great!
|
||||
# Let's extend the String class to allow us to call
|
||||
# some of these methods directly on a String.
|
||||
# Note:
|
||||
# - cycle-related methods are not included
|
||||
# - concat is not included
|
||||
# - pluralize is not included because it is in
|
||||
# ActiveSupport String extensions already
|
||||
# (though they differ).
|
||||
# - markdown requires BlueCloth
|
||||
# - textilize methods require RedCloth
|
||||
# Example:
|
||||
# "<b>coolness</b>".strip_tags -> "coolness"
|
||||
require 'singleton'
|
||||
# Singleton to be called in wrapper module
|
||||
class TextHelperSingleton
|
||||
include Singleton
|
||||
include ActionView::Helpers::TextHelper
|
||||
include ActionView::Helpers::TagHelper #tag_options needed by auto_link
|
||||
end
|
||||
# Wrapper module
|
||||
module MyExtensions #:nodoc:
|
||||
module CoreExtensions #:nodoc:
|
||||
module String #:nodoc:
|
||||
module TextHelper
|
||||
def auto_link(link = :all, href_options = {}, &block)
|
||||
TextHelperSingleton.instance.auto_link(self, link, href_options, &block)
|
||||
end
|
||||
def excerpt(phrase, radius = 100, excerpt_string = "…")
|
||||
TextHelperSingleton.instance.excerpt(self, phrase, radius, excerpt_string)
|
||||
end
|
||||
def highlight(phrase, highlighter = '<strong class="highlight">\1</strong>')
|
||||
TextHelperSingleton.instance.highlight(self, phrase, highlighter)
|
||||
end
|
||||
|
||||
begin
|
||||
require_library_or_gem 'bluecloth'
|
||||
def markdown
|
||||
TextHelperSingleton.instance.markdown(self)
|
||||
end
|
||||
rescue LoadError
|
||||
# do nothing. method will be undefined
|
||||
end
|
||||
def sanitize
|
||||
TextHelperSingleton.instance.sanitize(self)
|
||||
end
|
||||
def simple_format
|
||||
TextHelperSingleton.instance.simple_format(self)
|
||||
end
|
||||
def strip_tags
|
||||
TextHelperSingleton.instance.strip_tags(self)
|
||||
end
|
||||
begin
|
||||
require_library_or_gem 'redcloth'
|
||||
def textilize
|
||||
TextHelperSingleton.instance.textilize(self)
|
||||
end
|
||||
def textilize_without_paragraph
|
||||
TextHelperSingleton.instance.textilize_without_paragraph(self)
|
||||
end
|
||||
rescue LoadError
|
||||
# do nothing. methods will be undefined
|
||||
end
|
||||
def truncate(length = 30, truncate_string = "…")
|
||||
TextHelperSingleton.instance.truncate(self, length, truncate_string)
|
||||
end
|
||||
def word_wrap(line_width = 80)
|
||||
TextHelperSingleton.instance.word_wrap(self, line_width)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
# extend String with the TextHelper functions
|
||||
class String #:nodoc:
|
||||
include MyExtensions::CoreExtensions::String::TextHelper
|
||||
end
|
|
@ -10,4 +10,10 @@ class PageTest < Test::Unit::TestCase
|
|||
def test_destroy
|
||||
assert_destroy('Page')
|
||||
end
|
||||
|
||||
def test_no_html_in_tag
|
||||
p = Page.new :title => 'test page', :redcloth => '<ul><li>list</li></ul>'
|
||||
p.save
|
||||
assert p.html !~ /ul/
|
||||
end
|
||||
end
|
||||
|
|
Reference in New Issue