2009-03-25 19:54:04 +01:00
module PagesHelper
2009-08-11 14:30:35 +02:00
include WikiCloth
2009-03-25 19:54:04 +01:00
2014-01-04 20:12:01 +01:00
def rss_meta_tag
tag ( 'link' , :rel = > " alternate " , :type = > " application/rss+xml " , :title = > " RSS " , :href = > all_pages_rss_url ) . html_safe
end
2009-08-12 19:00:45 +02:00
def wikified_body ( body , title = nil )
2014-09-23 19:04:23 +02:00
WikiCloth . new ( :data = > body + " \n " ,
:link_handler = > Wikilink . new ,
:params = > { :referer = > title } )
. to_html ( wikicloth_render_options )
. html_safe
2013-12-22 23:34:54 +01:00
rescue = > e
" <span class='alert alert-error'> #{ t ( '.wikicloth_exception' , :msg = > e ) } </span> " . html_safe # try the following with line breaks: === one === == two == = three =
2009-06-11 22:40:56 +02:00
end
2009-05-20 14:06:40 +02:00
2009-08-16 01:09:11 +02:00
def link_to_wikipage ( page , text = nil )
if text == nil
2011-05-18 15:25:05 +02:00
link_to page . title , wiki_page_path ( :permalink = > page . permalink )
2009-08-16 01:09:11 +02:00
else
2011-05-18 15:25:05 +02:00
link_to text , wiki_page_path ( :permalink = > page . permalink )
2009-08-16 01:09:11 +02:00
end
2009-08-12 18:41:25 +02:00
end
2009-08-19 22:59:53 +02:00
def link_to_wikipage_by_permalink ( permalink , text = nil )
unless permalink . blank?
page = Page . find_by_permalink ( permalink )
if page . nil?
if text . nil?
link_to permalink , new_page_path ( :title = > permalink )
else
link_to text , new_page_path ( :title = > permalink )
end
else
link_to_wikipage ( page , text )
end
end
end
2009-05-20 14:06:40 +02:00
2009-09-28 14:57:11 +02:00
def generate_toc ( body )
toc = String . new
body . gsub ( / ^([=]{1,6}) \ s*(.*?) \ s*( \ 1) / ) do
number = $1 . length - 1
name = $2
toc << " * " * number + " #{ name } \n "
end
2014-09-23 19:04:23 +02:00
unless toc . blank?
WikiCloth . new ( :data = > toc ,
:link_handler = > Wikilink . new )
. to_html ( wikicloth_render_options )
. gsub ( / <li>([^<> \ n]*) / ) do
2012-10-09 02:31:10 +02:00
name = $1
anchor = name . gsub ( / \ s / , '_' ) . gsub ( / [^a-zA-Z_] / , '' )
" <li><a href=' # #{ anchor } '> #{ name . truncate ( 20 ) } </a> "
2011-05-18 15:25:05 +02:00
end . html_safe
2009-09-28 14:57:11 +02:00
end
end
2010-07-08 10:57:42 +02:00
def parent_pages_to_select ( current_page )
2011-03-09 13:36:02 +01:00
unless current_page . homepage? # Homepage is the page trees root!
Page . non_redirected . reject { | p | p == current_page or p . ancestors . include? ( current_page ) }
else
Array . new
end
2010-07-08 10:57:42 +02:00
end
2014-01-04 20:12:01 +01:00
# return url for all_pages rss feed
def all_pages_rss_url ( options = { } )
token = TokenVerifier . new ( [ 'wiki' , 'all' ] ) . generate
all_pages_url ( { :format = > 'rss' , :token = > token } . merge ( options ) )
end
2014-09-23 19:04:23 +02:00
private
def wikicloth_render_options
{ :locale = > I18n . locale } # workaround for wikicloth 0.8.0 https://github.com/nricciar/wikicloth/pull/59
end
2009-03-25 19:54:04 +01:00
end