-
Notifications
You must be signed in to change notification settings - Fork 0
/
page_utils.rb
116 lines (94 loc) · 3.37 KB
/
page_utils.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# --- Show history of page revisions ------------------------------------------------------
get "/pages/:id/history" do |id|
page = Pages.first(:id => id, :deleted => false)
if (page != nil)
@page_title = page.name
@title = recursive_category_names(page.parent)
@page_name = page.name
@id = id
@current_revision = page.current_revision.to_i
@revisions = Page_revisions.all(:parent => page.id, :order => [ :id.desc ]).collect
erb :show_page_history
else
@page_title = "Stránka nenalezena!"
erb :page_not_found
end
end
# --- Compare two page revisions form ------------------------------------------------------
get "/pages/:id/history/compare" do |id|
page = Pages.first(:id => id, :deleted => false)
if (page != nil)
@page_title = page.name
@title = recursive_category_names(page.parent)
@page_name = page.name
@id = id
@current_revision = page.current_revision.to_i
@revisions = Page_revisions.all(:parent => page.id, :order => [ :id.desc ]).collect
erb :compare_page_revisions_form
else
@page_title = "Stránka nenalezena!"
erb :page_not_found
end
end
# --- Compare two page revisions form ------------------------------------------------------
post "/compare_page_revisions" do
page = Pages.first(:id => params['id'], :deleted => false)
if (page != nil)
@page_title = page.name
@title = recursive_category_names(page.parent)
@page_name = page.name
@id = id
first_revision = Page_revisions.first(:id => params['first'].to_i).text
@first_revision = first_revision
second_revision = Page_revisions.first(:id => params['second'].to_i).text
@second_revision = second_revision
@diff = Diffy::Diff.new(first_revision, second_revision)
erb :compare_page_revisions
else
@page_title = "Stránka nenalezena!"
erb :page_not_found
end
end
# --- Show revision of a page ---------------------------------------------------------------
get "/pages/:id/revision/:revision" do |id,revision|
page = Pages.first(:id => id, :deleted => false)
if (page != nil)
@page_title = page.name
@title = recursive_category_names(page.parent)
@page_name = page.name
@id = id
@revision = revision
if (page.current_revision.to_i == revision.to_i)
@is_current = true
else
@is_current = false
end
@text = wiki_syntax_to_html(Page_revisions.first(:id => revision.to_i).text)
erb :show_page_revision
else
@page_title = "Stránka nenalezena!"
erb :page_not_found
end
end
# --- Show author comment to revision of a page ---------------------------------------------------------------
get "/pages/:id/revision/:revision/comment" do |id,revision|
page = Pages.first(:id => id, :deleted => false)
if (page != nil)
@page_title = page.name
@title = recursive_category_names(page.parent)
@page_name = page.name
@id = id
@text = wiki_syntax_to_html(Page_revisions.first(:id => revision.to_i).comment)
erb :show_page_revision_comment
else
@page_title = "Stránka nenalezena!"
erb :page_not_found
end
end
# --- Mark page as current ---------------------------------------------------------------
post "/pages/revision" do
# Select given revision as current
Pages.first( :id => params['id'].to_i).update( :current_revision => params['revision'].to_i )
# Redirect to revided page
redirect "/pages/#{params['id']}"
end