instiki 0.10.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +174 -165
- data/README +68 -68
- data/app/controllers/admin_controller.rb +94 -94
- data/app/controllers/application.rb +135 -131
- data/app/controllers/file_controller.rb +129 -129
- data/app/controllers/wiki_controller.rb +354 -354
- data/app/helpers/application_helper.rb +68 -68
- data/app/models/author.rb +3 -3
- data/app/models/chunks/category.rb +33 -33
- data/app/models/chunks/chunk.rb +86 -86
- data/app/models/chunks/engines.rb +61 -54
- data/app/models/chunks/include.rb +41 -41
- data/app/models/chunks/literal.rb +31 -31
- data/app/models/chunks/nowiki.rb +28 -28
- data/app/models/chunks/test.rb +18 -18
- data/app/models/chunks/uri.rb +182 -182
- data/app/models/chunks/wiki.rb +141 -141
- data/app/models/file_yard.rb +58 -58
- data/app/models/page.rb +112 -112
- data/app/models/page_lock.rb +22 -22
- data/app/models/page_set.rb +89 -89
- data/app/models/revision.rb +123 -123
- data/app/models/web.rb +182 -176
- data/app/models/wiki_content.rb +207 -207
- data/app/models/wiki_service.rb +233 -233
- data/app/models/wiki_words.rb +23 -23
- data/app/views/admin/create_system.rhtml +83 -83
- data/app/views/admin/create_web.rhtml +69 -69
- data/app/views/admin/edit_web.rhtml +137 -136
- data/app/views/file/file.rhtml +18 -18
- data/app/views/file/import.rhtml +22 -22
- data/app/views/layouts/default.rhtml +86 -85
- data/app/views/markdown_help.rhtml +12 -12
- data/app/views/mixed_help.rhtml +6 -6
- data/app/views/navigation.rhtml +30 -30
- data/app/views/rdoc_help.rhtml +12 -12
- data/app/views/textile_help.rhtml +24 -24
- data/app/views/wiki/authors.rhtml +11 -11
- data/app/views/wiki/edit.rhtml +39 -39
- data/app/views/wiki/export.rhtml +12 -12
- data/app/views/wiki/feeds.rhtml +14 -14
- data/app/views/wiki/list.rhtml +64 -64
- data/app/views/wiki/locked.rhtml +23 -23
- data/app/views/wiki/login.rhtml +14 -14
- data/app/views/wiki/new.rhtml +31 -31
- data/app/views/wiki/page.rhtml +115 -115
- data/app/views/wiki/print.rhtml +14 -14
- data/app/views/wiki/published.rhtml +9 -9
- data/app/views/wiki/recently_revised.rhtml +26 -26
- data/app/views/wiki/revision.rhtml +103 -103
- data/app/views/wiki/rollback.rhtml +36 -36
- data/app/views/wiki/rss_feed.rhtml +22 -22
- data/app/views/wiki/search.rhtml +38 -38
- data/app/views/wiki/tex.rhtml +22 -22
- data/app/views/wiki/tex_web.rhtml +34 -34
- data/app/views/wiki/web_list.rhtml +18 -18
- data/app/views/wiki_words_help.rhtml +9 -9
- data/config/environment.rb +82 -82
- data/config/environments/development.rb +5 -5
- data/config/environments/production.rb +4 -4
- data/config/environments/test.rb +17 -17
- data/config/routes.rb +18 -18
- data/lib/active_record_stub.rb +31 -31
- data/lib/bluecloth_tweaked.rb +1127 -0
- data/lib/diff.rb +444 -444
- data/lib/instiki_errors.rb +14 -14
- data/lib/rdocsupport.rb +151 -151
- data/lib/redcloth_for_tex.rb +736 -736
- data/natives/osx/desktop_launcher/AppDelegate.h +18 -18
- data/natives/osx/desktop_launcher/AppDelegate.mm +109 -109
- data/natives/osx/desktop_launcher/Credits.html +15 -15
- data/natives/osx/desktop_launcher/English.lproj/MainMenu.nib/classes.nib +12 -12
- data/natives/osx/desktop_launcher/English.lproj/MainMenu.nib/info.nib +24 -24
- data/natives/osx/desktop_launcher/Info.plist +12 -12
- data/natives/osx/desktop_launcher/Instiki.xcode/project.pbxproj +592 -592
- data/natives/osx/desktop_launcher/Instiki_Prefix.pch +7 -7
- data/natives/osx/desktop_launcher/MakeDMG.sh +9 -9
- data/natives/osx/desktop_launcher/main.mm +14 -14
- data/natives/osx/desktop_launcher/version.plist +16 -16
- data/public/404.html +5 -5
- data/public/500.html +5 -5
- data/public/dispatch.rb +9 -9
- data/public/javascripts/edit_web.js +52 -52
- data/public/javascripts/prototype.js +336 -336
- data/public/stylesheets/instiki.css +222 -222
- data/script/breakpointer +4 -4
- data/script/server +93 -93
- metadata +4 -3
data/app/models/page_lock.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
# Contains all the lock methods to be mixed in with the page
|
2
|
-
module PageLock
|
3
|
-
LOCKING_PERIOD = 30 * 60 # 30 minutes
|
4
|
-
|
5
|
-
attr_reader :locked_by
|
6
|
-
|
7
|
-
def lock(time, locked_by)
|
8
|
-
@locked_at, @locked_by = time, locked_by
|
9
|
-
end
|
10
|
-
|
11
|
-
def lock_duration(time)
|
12
|
-
((time - @locked_at) / 60).to_i unless @locked_at.nil?
|
13
|
-
end
|
14
|
-
|
15
|
-
def unlock
|
16
|
-
@locked_at = nil
|
17
|
-
end
|
18
|
-
|
19
|
-
def locked?(comparison_time)
|
20
|
-
@locked_at + LOCKING_PERIOD > comparison_time unless @locked_at.nil?
|
21
|
-
end
|
22
|
-
|
1
|
+
# Contains all the lock methods to be mixed in with the page
|
2
|
+
module PageLock
|
3
|
+
LOCKING_PERIOD = 30 * 60 # 30 minutes
|
4
|
+
|
5
|
+
attr_reader :locked_by
|
6
|
+
|
7
|
+
def lock(time, locked_by)
|
8
|
+
@locked_at, @locked_by = time, locked_by
|
9
|
+
end
|
10
|
+
|
11
|
+
def lock_duration(time)
|
12
|
+
((time - @locked_at) / 60).to_i unless @locked_at.nil?
|
13
|
+
end
|
14
|
+
|
15
|
+
def unlock
|
16
|
+
@locked_at = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def locked?(comparison_time)
|
20
|
+
@locked_at + LOCKING_PERIOD > comparison_time unless @locked_at.nil?
|
21
|
+
end
|
22
|
+
|
23
23
|
end
|
data/app/models/page_set.rb
CHANGED
@@ -1,89 +1,89 @@
|
|
1
|
-
# Container for a set of pages with methods for manipulation.
|
2
|
-
|
3
|
-
class PageSet < Array
|
4
|
-
attr_reader :web
|
5
|
-
|
6
|
-
def initialize(web, pages = nil, condition = nil)
|
7
|
-
@web = web
|
8
|
-
# if pages is not specified, make a list of all pages in the web
|
9
|
-
if pages.nil?
|
10
|
-
super(web.pages.values)
|
11
|
-
# otherwise use specified pages and condition to produce a set of pages
|
12
|
-
elsif condition.nil?
|
13
|
-
super(pages)
|
14
|
-
else
|
15
|
-
super(pages.select { |page| condition[page] })
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def most_recent_revision
|
20
|
-
self.map { |page| page.created_at }.max || Time.at(0)
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
def by_name
|
25
|
-
PageSet.new(@web, sort_by { |page| page.name })
|
26
|
-
end
|
27
|
-
|
28
|
-
alias :sort :by_name
|
29
|
-
|
30
|
-
def by_revision
|
31
|
-
PageSet.new(@web, sort_by { |page| page.created_at }).reverse
|
32
|
-
end
|
33
|
-
|
34
|
-
def pages_that_reference(page_name)
|
35
|
-
self.select { |page| page.wiki_references.include?(page_name) }
|
36
|
-
end
|
37
|
-
|
38
|
-
def pages_that_link_to(page_name)
|
39
|
-
self.select { |page| page.wiki_words.include?(page_name) }
|
40
|
-
end
|
41
|
-
|
42
|
-
def pages_that_include(page_name)
|
43
|
-
self.select { |page| page.wiki_includes.include?(page_name) }
|
44
|
-
end
|
45
|
-
|
46
|
-
def pages_authored_by(author)
|
47
|
-
self.select { |page| page.authors.include?(author) }
|
48
|
-
end
|
49
|
-
|
50
|
-
def characters
|
51
|
-
self.inject(0) { |chars,page| chars += page.content.size }
|
52
|
-
end
|
53
|
-
|
54
|
-
# Returns all the orphaned pages in this page set. That is,
|
55
|
-
# pages in this set for which there is no reference in the web.
|
56
|
-
# The HomePage and author pages are always assumed to have
|
57
|
-
# references and so cannot be orphans
|
58
|
-
# Pages that refer to themselves and have no links from outside are oprphans.
|
59
|
-
def orphaned_pages
|
60
|
-
never_orphans = web.select.authors + ['HomePage']
|
61
|
-
self.select { |page|
|
62
|
-
if never_orphans.include? page.name
|
63
|
-
false
|
64
|
-
else
|
65
|
-
references = pages_that_reference(page.name)
|
66
|
-
references.empty? or references == [page]
|
67
|
-
end
|
68
|
-
}
|
69
|
-
end
|
70
|
-
|
71
|
-
# Returns all the wiki words in this page set for which
|
72
|
-
# there are no pages in this page set's web
|
73
|
-
def wanted_pages
|
74
|
-
wiki_words - web.select.names
|
75
|
-
end
|
76
|
-
|
77
|
-
def names
|
78
|
-
self.map { |page| page.name }
|
79
|
-
end
|
80
|
-
|
81
|
-
def wiki_words
|
82
|
-
self.inject([]) { |wiki_words, page| wiki_words << page.wiki_words }.flatten.uniq
|
83
|
-
end
|
84
|
-
|
85
|
-
def authors
|
86
|
-
self.inject([]) { |authors, page| authors << page.authors }.flatten.uniq.sort
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
1
|
+
# Container for a set of pages with methods for manipulation.
|
2
|
+
|
3
|
+
class PageSet < Array
|
4
|
+
attr_reader :web
|
5
|
+
|
6
|
+
def initialize(web, pages = nil, condition = nil)
|
7
|
+
@web = web
|
8
|
+
# if pages is not specified, make a list of all pages in the web
|
9
|
+
if pages.nil?
|
10
|
+
super(web.pages.values)
|
11
|
+
# otherwise use specified pages and condition to produce a set of pages
|
12
|
+
elsif condition.nil?
|
13
|
+
super(pages)
|
14
|
+
else
|
15
|
+
super(pages.select { |page| condition[page] })
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def most_recent_revision
|
20
|
+
self.map { |page| page.created_at }.max || Time.at(0)
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
def by_name
|
25
|
+
PageSet.new(@web, sort_by { |page| page.name })
|
26
|
+
end
|
27
|
+
|
28
|
+
alias :sort :by_name
|
29
|
+
|
30
|
+
def by_revision
|
31
|
+
PageSet.new(@web, sort_by { |page| page.created_at }).reverse
|
32
|
+
end
|
33
|
+
|
34
|
+
def pages_that_reference(page_name)
|
35
|
+
self.select { |page| page.wiki_references.include?(page_name) }
|
36
|
+
end
|
37
|
+
|
38
|
+
def pages_that_link_to(page_name)
|
39
|
+
self.select { |page| page.wiki_words.include?(page_name) }
|
40
|
+
end
|
41
|
+
|
42
|
+
def pages_that_include(page_name)
|
43
|
+
self.select { |page| page.wiki_includes.include?(page_name) }
|
44
|
+
end
|
45
|
+
|
46
|
+
def pages_authored_by(author)
|
47
|
+
self.select { |page| page.authors.include?(author) }
|
48
|
+
end
|
49
|
+
|
50
|
+
def characters
|
51
|
+
self.inject(0) { |chars,page| chars += page.content.size }
|
52
|
+
end
|
53
|
+
|
54
|
+
# Returns all the orphaned pages in this page set. That is,
|
55
|
+
# pages in this set for which there is no reference in the web.
|
56
|
+
# The HomePage and author pages are always assumed to have
|
57
|
+
# references and so cannot be orphans
|
58
|
+
# Pages that refer to themselves and have no links from outside are oprphans.
|
59
|
+
def orphaned_pages
|
60
|
+
never_orphans = web.select.authors + ['HomePage']
|
61
|
+
self.select { |page|
|
62
|
+
if never_orphans.include? page.name
|
63
|
+
false
|
64
|
+
else
|
65
|
+
references = pages_that_reference(page.name)
|
66
|
+
references.empty? or references == [page]
|
67
|
+
end
|
68
|
+
}
|
69
|
+
end
|
70
|
+
|
71
|
+
# Returns all the wiki words in this page set for which
|
72
|
+
# there are no pages in this page set's web
|
73
|
+
def wanted_pages
|
74
|
+
wiki_words - web.select.names
|
75
|
+
end
|
76
|
+
|
77
|
+
def names
|
78
|
+
self.map { |page| page.name }
|
79
|
+
end
|
80
|
+
|
81
|
+
def wiki_words
|
82
|
+
self.inject([]) { |wiki_words, page| wiki_words << page.wiki_words }.flatten.uniq
|
83
|
+
end
|
84
|
+
|
85
|
+
def authors
|
86
|
+
self.inject([]) { |authors, page| authors << page.authors }.flatten.uniq.sort
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
data/app/models/revision.rb
CHANGED
@@ -1,123 +1,123 @@
|
|
1
|
-
require 'diff'
|
2
|
-
require 'wiki_content'
|
3
|
-
require 'chunks/wiki'
|
4
|
-
require 'date'
|
5
|
-
require 'author'
|
6
|
-
require 'page'
|
7
|
-
|
8
|
-
class Revision
|
9
|
-
|
10
|
-
attr_accessor :page, :number, :content, :created_at, :author
|
11
|
-
|
12
|
-
def initialize(page, number, content, created_at, author)
|
13
|
-
@page, @number, @created_at, @author = page, number, created_at, author
|
14
|
-
self.content = content
|
15
|
-
@display_cache = nil
|
16
|
-
end
|
17
|
-
|
18
|
-
def created_on
|
19
|
-
Date.new(@created_at.year, @created_at.mon, @created_at.day)
|
20
|
-
end
|
21
|
-
|
22
|
-
def pretty_created_at
|
23
|
-
# Must use DateTime because Time doesn't support %e on at least some platforms
|
24
|
-
DateTime.new(
|
25
|
-
@created_at.year, @created_at.mon, @created_at.day, @created_at.hour, @created_at.min
|
26
|
-
).strftime "%B %e, %Y %H:%M"
|
27
|
-
end
|
28
|
-
|
29
|
-
def next_revision
|
30
|
-
page.revisions[number + 1]
|
31
|
-
end
|
32
|
-
|
33
|
-
def previous_revision
|
34
|
-
number > 0 ? page.revisions[number - 1] : nil
|
35
|
-
end
|
36
|
-
|
37
|
-
# Returns an array of all the WikiIncludes present in the content of this revision.
|
38
|
-
def wiki_includes
|
39
|
-
unless @wiki_includes_cache
|
40
|
-
chunks = display_content.find_chunks(Include)
|
41
|
-
@wiki_includes_cache = chunks.map { |c| ( c.escaped? ? nil : c.page_name ) }.compact.uniq
|
42
|
-
end
|
43
|
-
@wiki_includes_cache
|
44
|
-
end
|
45
|
-
|
46
|
-
# Returns an array of all the WikiReferences present in the content of this revision.
|
47
|
-
def wiki_references
|
48
|
-
unless @wiki_references_cache
|
49
|
-
chunks = display_content.find_chunks(WikiChunk::WikiReference)
|
50
|
-
@wiki_references_cache = chunks.map { |c| ( c.escaped? ? nil : c.page_name ) }.compact.uniq
|
51
|
-
end
|
52
|
-
@wiki_references_cache
|
53
|
-
end
|
54
|
-
|
55
|
-
# Returns an array of all the WikiWords present in the content of this revision.
|
56
|
-
def wiki_words
|
57
|
-
unless @wiki_words_cache
|
58
|
-
wiki_chunks = display_content.find_chunks(WikiChunk::WikiLink)
|
59
|
-
@wiki_words_cache = wiki_chunks.map { |c| ( c.escaped? ? nil : c.page_name ) }.compact.uniq
|
60
|
-
end
|
61
|
-
@wiki_words_cache
|
62
|
-
end
|
63
|
-
|
64
|
-
# Returns an array of all the WikiWords present in the content of this revision.
|
65
|
-
# that already exists as a page in the web.
|
66
|
-
def existing_pages
|
67
|
-
wiki_words.select { |wiki_word| page.web.pages[wiki_word] }
|
68
|
-
end
|
69
|
-
|
70
|
-
# Returns an array of all the WikiWords present in the content of this revision
|
71
|
-
# that *doesn't* already exists as a page in the web.
|
72
|
-
def unexisting_pages
|
73
|
-
wiki_words - existing_pages
|
74
|
-
end
|
75
|
-
|
76
|
-
# Explicit check for new type of display cache with chunks_by_type method.
|
77
|
-
# Ensures new version works with older snapshots.
|
78
|
-
def display_content
|
79
|
-
unless @display_cache && @display_cache.respond_to?(:chunks_by_type)
|
80
|
-
@display_cache = WikiContent.new(self)
|
81
|
-
@display_cache.render!
|
82
|
-
end
|
83
|
-
@display_cache
|
84
|
-
end
|
85
|
-
|
86
|
-
def display_diff
|
87
|
-
previous_revision ? HTMLDiff.diff(previous_revision.display_content, display_content) : display_content
|
88
|
-
end
|
89
|
-
|
90
|
-
def clear_display_cache
|
91
|
-
@wiki_words_cache = @published_cache = @display_cache = @wiki_includes_cache =
|
92
|
-
@wiki_references_cache = nil
|
93
|
-
end
|
94
|
-
|
95
|
-
def display_published
|
96
|
-
unless @published_cache && @published_cache.respond_to?(:chunks_by_type)
|
97
|
-
@published_cache = WikiContent.new(self, {:mode => :publish})
|
98
|
-
@published_cache.render!
|
99
|
-
end
|
100
|
-
@published_cache
|
101
|
-
end
|
102
|
-
|
103
|
-
def display_content_for_export
|
104
|
-
WikiContent.new(self, {:mode => :export} ).render!
|
105
|
-
end
|
106
|
-
|
107
|
-
def force_rendering
|
108
|
-
begin
|
109
|
-
display_content.render!
|
110
|
-
rescue Exception => e
|
111
|
-
ApplicationController.logger.error "Failed rendering page #{@name}"
|
112
|
-
ApplicationController.logger.error e
|
113
|
-
message = e.message.gsub(/\n/, '<br/>')
|
114
|
-
# substitute content with an error message
|
115
|
-
content = <<-EOL
|
116
|
-
<p>Markup engine has failed to render this page, raising the following error:</p>
|
117
|
-
<p>#{message}</p>
|
118
|
-
EOL
|
119
|
-
raise e
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
end
|
1
|
+
require 'diff'
|
2
|
+
require 'wiki_content'
|
3
|
+
require 'chunks/wiki'
|
4
|
+
require 'date'
|
5
|
+
require 'author'
|
6
|
+
require 'page'
|
7
|
+
|
8
|
+
class Revision
|
9
|
+
|
10
|
+
attr_accessor :page, :number, :content, :created_at, :author
|
11
|
+
|
12
|
+
def initialize(page, number, content, created_at, author)
|
13
|
+
@page, @number, @created_at, @author = page, number, created_at, author
|
14
|
+
self.content = content
|
15
|
+
@display_cache = nil
|
16
|
+
end
|
17
|
+
|
18
|
+
def created_on
|
19
|
+
Date.new(@created_at.year, @created_at.mon, @created_at.day)
|
20
|
+
end
|
21
|
+
|
22
|
+
def pretty_created_at
|
23
|
+
# Must use DateTime because Time doesn't support %e on at least some platforms
|
24
|
+
DateTime.new(
|
25
|
+
@created_at.year, @created_at.mon, @created_at.day, @created_at.hour, @created_at.min
|
26
|
+
).strftime "%B %e, %Y %H:%M"
|
27
|
+
end
|
28
|
+
|
29
|
+
def next_revision
|
30
|
+
page.revisions[number + 1]
|
31
|
+
end
|
32
|
+
|
33
|
+
def previous_revision
|
34
|
+
number > 0 ? page.revisions[number - 1] : nil
|
35
|
+
end
|
36
|
+
|
37
|
+
# Returns an array of all the WikiIncludes present in the content of this revision.
|
38
|
+
def wiki_includes
|
39
|
+
unless @wiki_includes_cache
|
40
|
+
chunks = display_content.find_chunks(Include)
|
41
|
+
@wiki_includes_cache = chunks.map { |c| ( c.escaped? ? nil : c.page_name ) }.compact.uniq
|
42
|
+
end
|
43
|
+
@wiki_includes_cache
|
44
|
+
end
|
45
|
+
|
46
|
+
# Returns an array of all the WikiReferences present in the content of this revision.
|
47
|
+
def wiki_references
|
48
|
+
unless @wiki_references_cache
|
49
|
+
chunks = display_content.find_chunks(WikiChunk::WikiReference)
|
50
|
+
@wiki_references_cache = chunks.map { |c| ( c.escaped? ? nil : c.page_name ) }.compact.uniq
|
51
|
+
end
|
52
|
+
@wiki_references_cache
|
53
|
+
end
|
54
|
+
|
55
|
+
# Returns an array of all the WikiWords present in the content of this revision.
|
56
|
+
def wiki_words
|
57
|
+
unless @wiki_words_cache
|
58
|
+
wiki_chunks = display_content.find_chunks(WikiChunk::WikiLink)
|
59
|
+
@wiki_words_cache = wiki_chunks.map { |c| ( c.escaped? ? nil : c.page_name ) }.compact.uniq
|
60
|
+
end
|
61
|
+
@wiki_words_cache
|
62
|
+
end
|
63
|
+
|
64
|
+
# Returns an array of all the WikiWords present in the content of this revision.
|
65
|
+
# that already exists as a page in the web.
|
66
|
+
def existing_pages
|
67
|
+
wiki_words.select { |wiki_word| page.web.pages[wiki_word] }
|
68
|
+
end
|
69
|
+
|
70
|
+
# Returns an array of all the WikiWords present in the content of this revision
|
71
|
+
# that *doesn't* already exists as a page in the web.
|
72
|
+
def unexisting_pages
|
73
|
+
wiki_words - existing_pages
|
74
|
+
end
|
75
|
+
|
76
|
+
# Explicit check for new type of display cache with chunks_by_type method.
|
77
|
+
# Ensures new version works with older snapshots.
|
78
|
+
def display_content
|
79
|
+
unless @display_cache && @display_cache.respond_to?(:chunks_by_type)
|
80
|
+
@display_cache = WikiContent.new(self)
|
81
|
+
@display_cache.render!
|
82
|
+
end
|
83
|
+
@display_cache
|
84
|
+
end
|
85
|
+
|
86
|
+
def display_diff
|
87
|
+
previous_revision ? HTMLDiff.diff(previous_revision.display_content, display_content) : display_content
|
88
|
+
end
|
89
|
+
|
90
|
+
def clear_display_cache
|
91
|
+
@wiki_words_cache = @published_cache = @display_cache = @wiki_includes_cache =
|
92
|
+
@wiki_references_cache = nil
|
93
|
+
end
|
94
|
+
|
95
|
+
def display_published
|
96
|
+
unless @published_cache && @published_cache.respond_to?(:chunks_by_type)
|
97
|
+
@published_cache = WikiContent.new(self, {:mode => :publish})
|
98
|
+
@published_cache.render!
|
99
|
+
end
|
100
|
+
@published_cache
|
101
|
+
end
|
102
|
+
|
103
|
+
def display_content_for_export
|
104
|
+
WikiContent.new(self, {:mode => :export} ).render!
|
105
|
+
end
|
106
|
+
|
107
|
+
def force_rendering
|
108
|
+
begin
|
109
|
+
display_content.render!
|
110
|
+
rescue Exception => e
|
111
|
+
ApplicationController.logger.error "Failed rendering page #{@name}"
|
112
|
+
ApplicationController.logger.error e
|
113
|
+
message = e.message.gsub(/\n/, '<br/>')
|
114
|
+
# substitute content with an error message
|
115
|
+
content = <<-EOL
|
116
|
+
<p>Markup engine has failed to render this page, raising the following error:</p>
|
117
|
+
<p>#{message}</p>
|
118
|
+
EOL
|
119
|
+
raise e
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|