Feature #2854 ยป wiki_template.txt
| 1 |
# wiki template macro |
|---|---|
| 2 |
desc "Replace token inside a template. Example:\n\n !{{template(WikiTemplatePage,token=foo,token2=bar)}}."
|
| 3 |
macro :template do |obj, args| |
| 4 |
page = Wiki.find_page(args.shift.to_s, :project => @project) |
| 5 |
raise 'Page not found' if page.nil? || !User.current.allowed_to?(:view_wiki_pages, page.wiki.project) |
| 6 |
|
| 7 |
@included_wiki_pages ||= [] |
| 8 |
raise 'Circular inclusion detected' if @included_wiki_pages.include?(page.title) |
| 9 |
@included_wiki_pages << page.title |
| 10 |
out = textilizable(page.content, :text, :attachments => page.attachments) |
| 11 |
@included_wiki_pages.pop |
| 12 |
|
| 13 |
args.collect do |v| |
| 14 |
v[/(\w+)\W*\=\W*(.+)$/] |
| 15 |
key = $1 |
| 16 |
value = $2.strip.gsub("<br />", "")
|
| 17 |
out = out.gsub(key, value) |
| 18 |
end |
| 19 |
out |
| 20 |
end |