Pimki 1.5.092 → 1.6.092
Sign up to get free protection for your applications and to get access to all the features.
- data/README-PIMKI +10 -1
- data/app/controllers/wiki.rb +24 -7
- data/app/models/revision.rb +1 -2
- data/app/models/wiki_service.rb +2 -2
- data/app/views/error.rhtml +35 -0
- data/app/views/menu.rhtml +7 -3
- data/app/views/static_style_sheet.rhtml +4 -3
- data/app/views/top.rhtml +2 -2
- data/app/views/wiki/bliki_edit.rhtml +1 -0
- data/app/views/wiki/bliki_new.rhtml +1 -0
- data/app/views/wiki/edit.rhtml +1 -0
- data/app/views/wiki/edit_menu.rhtml +1 -0
- data/app/views/wiki/edit_web.rhtml +18 -2
- data/app/views/wiki/list.rhtml +3 -3
- data/app/views/wiki/login.rhtml +5 -1
- data/app/views/wiki/mind.rhtml +1 -0
- data/app/views/wiki/new.rhtml +1 -0
- data/app/views/wiki/print.rhtml +1 -0
- data/app/views/wiki/published.rhtml +3 -2
- data/app/views/wiki/rollback.rhtml +1 -0
- data/app/views/wiki/rss_feed.rhtml +15 -3
- data/libraries/action_controller_servlet.rb +7 -1
- data/libraries/madeleine/automatic.rb +1 -1
- data/libraries/madeleine_service.rb +1 -1
- data/pimki.rb +11 -5
- metadata +4 -3
data/README-PIMKI
CHANGED
@@ -68,6 +68,16 @@ version 2.0.11 by default. Version 3.0.1 is a bit experimental. You can select
|
|
68
68
|
which version of redcloth via --redcloth command line argument.
|
69
69
|
|
70
70
|
History:
|
71
|
+
1.6.092 Mainly bug fixes with some minor enhancements
|
72
|
+
- Squashed horrible restart bug
|
73
|
+
- Several bug fixes
|
74
|
+
- Upgraded to RedCloth 3.0.3, which seems stable enough
|
75
|
+
- RSS includes Bliki
|
76
|
+
- Added capacity to stop server through the edit_web template
|
77
|
+
- Added an error reporting template
|
78
|
+
- Can now display just the Mind Map image for printing
|
79
|
+
- Minor improvements to the publish interface, e.g. displaying menu
|
80
|
+
|
71
81
|
1.5.092 Bug fixes & new features release
|
72
82
|
- Several bug fixes
|
73
83
|
- RedCloth is now defaulting to 2.0.11. Controllable thru commandline.
|
@@ -75,7 +85,6 @@ History:
|
|
75
85
|
- c2 wiki links via [c2[PageName]]
|
76
86
|
- FavIcon (working in Firefox)
|
77
87
|
- Madeleine Snapshot Controls (thru edit_web)
|
78
|
-
|
79
88
|
|
80
89
|
1.4.092 New features release
|
81
90
|
- Added a major/minor edit override for the default 'continous edit' when
|
data/app/controllers/wiki.rb
CHANGED
@@ -57,6 +57,21 @@ class WikiController < ActionControllerServlet
|
|
57
57
|
|
58
58
|
def static_style_sheet() render "static_style_sheet" end
|
59
59
|
|
60
|
+
def stop
|
61
|
+
redirect_show("HomePage") unless wiki.authenticate(@params["system_password"])
|
62
|
+
|
63
|
+
begin
|
64
|
+
secs = @params['seconds'].to_i
|
65
|
+
raise if secs.zero?
|
66
|
+
@logger.warn "Pimki server will stop in #{secs} seconds!"
|
67
|
+
WikiService.request_stop
|
68
|
+
render_text "Pimki server will stop in #{secs} seconds!"
|
69
|
+
Thread.new { sleep secs; Kernel.exit! }
|
70
|
+
rescue
|
71
|
+
redirect_show("HomePage")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
60
75
|
# Within a single web ---------------------------------------------------------
|
61
76
|
|
62
77
|
def parse_category
|
@@ -164,6 +179,7 @@ class WikiController < ActionControllerServlet
|
|
164
179
|
|
165
180
|
def rss_with_content
|
166
181
|
@pages_by_revision = web.select.by_revision.first(15)
|
182
|
+
@bliki_entries = web.bliki_entries_by_date
|
167
183
|
@uri = @req.request_uri
|
168
184
|
host = @req.meta_vars["HTTP_X_FORWARDED_HOST"] || "#{@uri.host}:#{@uri.port.to_s}"
|
169
185
|
@web_url = "#{@uri.scheme}://#{host}/#{@web.address}"
|
@@ -188,14 +204,14 @@ class WikiController < ActionControllerServlet
|
|
188
204
|
|
189
205
|
case @req.query['Action']
|
190
206
|
when 'Delete' # Handle page deletion
|
191
|
-
wiki.delete_page(web_address, @req.query['
|
207
|
+
wiki.delete_page(web_address, @req.query['del_sel_page_name'])
|
192
208
|
redirect_action "list/"
|
193
209
|
|
194
210
|
when 'Create' # Handle page creation
|
195
211
|
redirect_show @req.query['newpage']
|
196
212
|
|
197
213
|
when 'Rename' # Handle page rename
|
198
|
-
wiki.rename_page(web_address, @req.query['
|
214
|
+
wiki.rename_page(web_address, @req.query['ren_sel_page_name'], @req.query['newpage'])
|
199
215
|
redirect_action "list/"
|
200
216
|
end
|
201
217
|
end
|
@@ -238,7 +254,7 @@ class WikiController < ActionControllerServlet
|
|
238
254
|
def edit_web #{{{
|
239
255
|
parse_category
|
240
256
|
set_mm_options
|
241
|
-
@snapshot_interval =
|
257
|
+
@snapshot_interval = WikiService.snapshot_interval_hours
|
242
258
|
end #}}}
|
243
259
|
|
244
260
|
def update_web
|
@@ -278,10 +294,10 @@ class WikiController < ActionControllerServlet
|
|
278
294
|
clear_render_cache true
|
279
295
|
|
280
296
|
when 'Force Data Snapshot'
|
281
|
-
|
297
|
+
WikiService.take_snapshot
|
282
298
|
|
283
299
|
when 'Clean Storage'
|
284
|
-
|
300
|
+
WikiService.clean_old_snapshots
|
285
301
|
|
286
302
|
end
|
287
303
|
@message = 'Operation succeeded'
|
@@ -372,7 +388,7 @@ class WikiController < ActionControllerServlet
|
|
372
388
|
redirect_path "/#{web_address}/edit_web/" unless dont_redirect
|
373
389
|
end
|
374
390
|
|
375
|
-
def set_menu_pages #{{{
|
391
|
+
def set_menu_pages published = false #{{{
|
376
392
|
parse_category
|
377
393
|
@all_pages = web.select { true }
|
378
394
|
@menu_pages = case web.menu_type
|
@@ -387,6 +403,7 @@ class WikiController < ActionControllerServlet
|
|
387
403
|
else
|
388
404
|
web.menu_content
|
389
405
|
end
|
406
|
+
@menu_content = @menu_content.gsub('/show/', '/published/').gsub( %r{<a href="../published/.*?">\?</a>}, '') if published
|
390
407
|
nil
|
391
408
|
when 'linkers'
|
392
409
|
web.select { |page|
|
@@ -465,7 +482,6 @@ class WikiController < ActionControllerServlet
|
|
465
482
|
end
|
466
483
|
end #}}}
|
467
484
|
|
468
|
-
|
469
485
|
def edit_menu #{{{
|
470
486
|
@menu_type = web.menu_type
|
471
487
|
@menu_content = web.menu_content
|
@@ -538,6 +554,7 @@ class WikiController < ActionControllerServlet
|
|
538
554
|
end
|
539
555
|
|
540
556
|
def published
|
557
|
+
set_menu_pages true
|
541
558
|
if web.published then @page = wiki.read_page(web_address, page_name || "HomePage") else redirect_show("HomePage") end
|
542
559
|
end
|
543
560
|
|
data/app/models/revision.rb
CHANGED
@@ -80,8 +80,7 @@ class Revision
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def display_published
|
83
|
-
@published_cache
|
84
|
-
@published_cache
|
83
|
+
@published_cache ||= WikiContent.new(self, {:mode => :publish})
|
85
84
|
end
|
86
85
|
|
87
86
|
def display_content_for_export
|
data/app/models/wiki_service.rb
CHANGED
@@ -46,7 +46,7 @@ class WikiService < MadeleineService
|
|
46
46
|
@webs[new_address].address = new_address
|
47
47
|
end
|
48
48
|
|
49
|
-
|
49
|
+
self.class.snapshot_interval_hours = snapshots_interval
|
50
50
|
|
51
51
|
web = @webs[new_address]
|
52
52
|
web.refresh_revisions if settings_changed?(web, markup, safe_mode, brackets_only)
|
@@ -104,7 +104,7 @@ class WikiService < MadeleineService
|
|
104
104
|
def rename_page(web_address, old_page_name, new_page_name) #{{{
|
105
105
|
web = @webs[web_address]
|
106
106
|
page = web.pages.delete(old_page_name)
|
107
|
-
page or raise "unknown page: #{old_page_name.to_s}
|
107
|
+
page or raise "unknown page: #{old_page_name.to_s}; #{web.pages.keys.join(',')}"
|
108
108
|
page.name = new_page_name
|
109
109
|
web.pages[new_page_name] = page
|
110
110
|
end #}}}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<% def html_escape str
|
2
|
+
str.gsub( '<', '<').gsub( '>', '>').gsub('&', '&')
|
3
|
+
end %>
|
4
|
+
|
5
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
7
|
+
<head>
|
8
|
+
<title>Internal Error</title>
|
9
|
+
|
10
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
11
|
+
<link rel="Stylesheet" href="../../static_style_sheet/" type="text/css" media="screen" />
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
|
15
|
+
<h3>An error has occured!</h3>
|
16
|
+
|
17
|
+
<p>We're sorry, we're not perfect... but we want to be! If you have the time, please go to the pimki <a href="http://rubyforge.org/tracker/?atid=1750&group_id=447&func=browse">BUG tracker</a> at RubyForge and open a bug report. Please supply a short description of what you did when this happended, the system you're on, etc. and paste everything below this line in the bug report. It will greatly help in development. Thank you for your efforts!</p>
|
18
|
+
|
19
|
+
<hr />
|
20
|
+
|
21
|
+
<p><b>Error message:</b>
|
22
|
+
<code style="color:red"><%= html_escape @error_details.message %></code>
|
23
|
+
</p>
|
24
|
+
|
25
|
+
<p><b>Action:</b> <%= @action_name %></p>
|
26
|
+
|
27
|
+
<p><b>Backtrace:</b><br />
|
28
|
+
<table border="0">
|
29
|
+
<% for line in @error_details.backtrace %>
|
30
|
+
<tr><td><code><%= line.sub(/(.*)\/(\w+\.rb):(\d+):in (.*)/, '\1/<b>\2</b>:\3:in <b>\4</b>') %></code></td></tr>
|
31
|
+
<% end %>
|
32
|
+
</p>
|
33
|
+
|
34
|
+
</body>
|
35
|
+
</html>
|
data/app/views/menu.rhtml
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
<div id="Menu" width="150">
|
2
2
|
<p>
|
3
3
|
<table>
|
4
|
-
<%
|
4
|
+
<% published = @action_name =~ /published/
|
5
|
+
show_by = published ? '../published/' : '../show/'
|
6
|
+
begin %>
|
5
7
|
<tr><th><%= @web.name %> Quick Links</th></tr>
|
6
|
-
|
8
|
+
<% unless published %>
|
9
|
+
<tr><td><a href='<%= "/#{web.address}/edit_menu/" %>' style="font-size: 9px;">Edit Menu Contents</a></td></tr>
|
10
|
+
<% end %>
|
7
11
|
<tr><td> </td></tr>
|
8
12
|
<% if @menu_pages.nil? %>
|
9
13
|
<tr><td><%= @menu_content %></td></tr>
|
10
14
|
<% else %>
|
11
15
|
<% for page in @menu_pages %>
|
12
|
-
<tr><td><a href="
|
16
|
+
<tr><td><a href="<%= show_by + page.name %>"><%= truncate(page.plain_name, 35) %></a></td></tr>
|
13
17
|
<% end %>
|
14
18
|
<% end %>
|
15
19
|
<% rescue Exception
|
data/app/views/top.rhtml
CHANGED
@@ -32,13 +32,13 @@
|
|
32
32
|
</style>
|
33
33
|
</head>
|
34
34
|
|
35
|
-
<% if @web && @page && @web.enable_dclick_edit %>
|
35
|
+
<% if @web && @page && @web.enable_dclick_edit && @action_name!='edit' %>
|
36
36
|
<body ondblclick="location.href='../edit/<%= @page.name %>'">
|
37
37
|
<% else %>
|
38
38
|
<body>
|
39
39
|
<% end %>
|
40
40
|
|
41
|
-
<%= sub_template "menu" unless @
|
41
|
+
<%= sub_template "menu" unless @hide_menu %>
|
42
42
|
|
43
43
|
<div id="Container">
|
44
44
|
<div id="Content">
|
data/app/views/wiki/edit.rhtml
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
-
<% @title = "Edit Web"
|
1
|
+
<% @title = "Edit Web"
|
2
|
+
@hide_menu = true
|
3
|
+
@style_additions = "#Container { width: 600px; margin-left: 180px;}"
|
4
|
+
%>
|
2
5
|
<%= sub_template "top" %>
|
3
6
|
|
4
7
|
<%= "<p style='font-size: 15px; font-variant: italic; color: red;'>#{@message}</span>" if @message %>
|
@@ -181,7 +184,20 @@
|
|
181
184
|
|
182
185
|
<p style='font-size: 10px;'>...or forget all your changes and <a href="/new_web/">create a new web</a>.</p>
|
183
186
|
|
184
|
-
|
187
|
+
<h2>Stop Pimki</h2>
|
188
|
+
<p style="color:red">Please note that stopping the server will stop all pimki webs running on this server! It is a also a forced exit, so any changes currently being made by other users will be lost!</p>
|
189
|
+
<form action="../stop" id="stop" method="post">
|
190
|
+
<p style="font-size: 10px;">
|
191
|
+
Enter system password
|
192
|
+
<input type="password" id="system_password" name="system_password">
|
193
|
+
and
|
194
|
+
<input type="submit" name='stop' value="Stop Pimki">
|
195
|
+
in
|
196
|
+
<input type="text" name='seconds' value='3' size='5' align='right'>
|
197
|
+
seconds.
|
198
|
+
</p>
|
199
|
+
</form>
|
200
|
+
|
185
201
|
<script>
|
186
202
|
function proposeAddress() {
|
187
203
|
document.getElementById('address').value =
|
data/app/views/wiki/list.rhtml
CHANGED
@@ -78,7 +78,7 @@
|
|
78
78
|
return true;
|
79
79
|
}
|
80
80
|
function validatePageName(fieldID) {
|
81
|
-
if (/^([A-Z][a-z]+[A-Z]\w+)$/.test(document.getElementById(fieldID).value)) {
|
81
|
+
if (/^([A-Z]+[a-z]+[A-Z]\w+)$/.test(document.getElementById(fieldID).value)) {
|
82
82
|
return true;
|
83
83
|
} else {
|
84
84
|
alert('You wrote "' + document.getElementById(fieldID).value + '" as a page name, but it needs to be a wiki word.');
|
@@ -113,7 +113,7 @@
|
|
113
113
|
<!-- Delete Page -->
|
114
114
|
<tr>
|
115
115
|
<td>Delete page:</td>
|
116
|
-
<td><select id="
|
116
|
+
<td><select id="del_sel_page_name" name="del_sel_page_name" size="1" style="width:195">
|
117
117
|
<option value="noselect">------------</option>
|
118
118
|
<% for page in @pages_by_name %>
|
119
119
|
<option value="<%= page.name %>"><%= page.name %></option>
|
@@ -130,7 +130,7 @@
|
|
130
130
|
<!-- Rename Page -->
|
131
131
|
<tr>
|
132
132
|
<td>Rename:</td>
|
133
|
-
<td><select id="
|
133
|
+
<td><select id="ren_sel_page_name" name="ren_sel_page_name" size="1" style="width:195">
|
134
134
|
<option value="noselect">------------</option>
|
135
135
|
<% for page in @pages_by_name %>
|
136
136
|
<option value="<%= page.name %>"><%= page.name %></option>
|
data/app/views/wiki/login.rhtml
CHANGED
data/app/views/wiki/mind.rhtml
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
<%= sub_template "top" %>
|
5
5
|
|
6
6
|
<h4>A "Mind Map" created from the Wiki links.</h4>
|
7
|
+
<p style="font-size: 9px; margin-top: -20px; margin-bottom: 10px;">A printable version (just the image) can be found <a href="../get_map_img">here</a>.</p>
|
7
8
|
|
8
9
|
<img src="../get_map_img" usemap="#graph.map" />
|
9
10
|
<map name="graph.map" id="graph.map">
|
data/app/views/wiki/new.rhtml
CHANGED
data/app/views/wiki/print.rhtml
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
<%
|
2
2
|
@title = @page.plain_name
|
3
3
|
@hide_navigation = true
|
4
|
-
@style_additions = ".newWikiWord { background-color: white; font-style: italic; }
|
4
|
+
@style_additions = ".newWikiWord { background-color: white; font-style: italic; }"
|
5
5
|
#Container, #Content { width: 600px; padding-left: 180px;}"
|
6
6
|
@inline_style = true
|
7
|
-
|
7
|
+
%>
|
8
|
+
<%= sub_template "top" %>
|
8
9
|
|
9
10
|
<%= @page.display_published %>
|
10
11
|
|
@@ -2,6 +2,7 @@
|
|
2
2
|
@title = "Rollback to #{@page.plain_name} Rev ##{@revision.number}"
|
3
3
|
@content_width = 720
|
4
4
|
@hide_navigation = true
|
5
|
+
@hide_menu = true
|
5
6
|
%><%= sub_template "top" %>
|
6
7
|
|
7
8
|
<%= "<p style='color:red'>Please correct the error that caused this error in rendering:<br/><small>#{@params["msg"]}</small></p>" if @params["msg"] %>
|
@@ -3,16 +3,28 @@
|
|
3
3
|
<channel>
|
4
4
|
<title><%= @web.name %></title>
|
5
5
|
<link><%= "#{@web_url}/show/HomePage" %></link>
|
6
|
-
<description>
|
6
|
+
<description>Pimki - a PIM based on Instiki's wiki technology</description>
|
7
7
|
<language>en-us</language>
|
8
8
|
<ttl>40</ttl>
|
9
|
+
<% for entry in @bliki_entries %>
|
10
|
+
<item>
|
11
|
+
<title>Bliki: <%= entry.plain_name %></title>
|
12
|
+
<% unless @hide_description %>
|
13
|
+
<description><%= CGI.escapeHTML(entry.display_content) %></description>
|
14
|
+
<% end %>
|
15
|
+
<pubDate><%= ctime = entry.created_at; ctime.strftime "%a, %e %b %Y %H:%M:%S #{ctime.gmt_offset/3600}" %></pubDate>
|
16
|
+
<guid><%= "#{@web_url}/bliki_revision/#{entry.name}?rev=#{entry.revisions.length-1}" %></guid>
|
17
|
+
<link><%= "#{@web_url}/bliki_revision/#{entry.name}?rev=#{entry.revisions.length-1}" %></link>
|
18
|
+
<dc:creator><%= WikiWords.separate(entry.author) %></dc:creator>
|
19
|
+
</item>
|
20
|
+
<% end %>
|
9
21
|
<% for page in @pages_by_revision %>
|
10
|
-
|
22
|
+
<item>
|
11
23
|
<title><%= page.plain_name %></title>
|
12
24
|
<% unless @hide_description %>
|
13
25
|
<description><%= CGI.escapeHTML(page.display_content) %></description>
|
14
26
|
<% end %>
|
15
|
-
<pubDate><%= page.created_at.strftime "%a, %e %b %Y %H:%M:%S
|
27
|
+
<pubDate><%= ctime = page.created_at; ctime.strftime "%a, %e %b %Y %H:%M:%S #{ctime.gmt_offset/3600}" %></pubDate>
|
16
28
|
<guid><%= "#{@web_url}/show/#{page.name}" %></guid>
|
17
29
|
<link><%= "#{@web_url}/show/#{page.name}" %></link>
|
18
30
|
<dc:creator><%= WikiWords.separate(page.author) %></dc:creator>
|
@@ -137,8 +137,14 @@ class ActionControllerServlet < HTTPServlet::AbstractServlet
|
|
137
137
|
elsif template_exists_for_action
|
138
138
|
render
|
139
139
|
else
|
140
|
-
raise "No action responded to #{action_name}", caller
|
140
|
+
raise RuntimeError, "No action responded to #{action_name}", caller
|
141
141
|
end
|
142
|
+
|
143
|
+
rescue Exception => details
|
144
|
+
raise if ['WEBrick', 'Net'].include? details.class.name.split('::')[0]
|
145
|
+
@error_details = details
|
146
|
+
render 'error'
|
147
|
+
|
142
148
|
end
|
143
149
|
|
144
150
|
def add_instance_variables_to_assigns
|
@@ -179,7 +179,7 @@ module Madeleine
|
|
179
179
|
# outside the system.
|
180
180
|
#
|
181
181
|
def method_missing(symbol, *args, &block)
|
182
|
-
#
|
182
|
+
#print "Sending #{symbol} to #{@thing.to_s}, myid=#{@myid}, sysid=#{@sysid}\n"
|
183
183
|
raise NoMethodError, "Undefined method" unless @thing.respond_to?(symbol)
|
184
184
|
if (Thread.current[:system])
|
185
185
|
@thing.send(symbol, *args, &block)
|
data/pimki.rb
CHANGED
@@ -16,7 +16,8 @@ begin
|
|
16
16
|
|
17
17
|
rescue LoadError => detail
|
18
18
|
# no rubygems, so load from the libraries directory
|
19
|
-
p detail
|
19
|
+
p detail if $DEBUG
|
20
|
+
puts 'Unable to load libraries through RubyGems. Loading from ./libraries directory'
|
20
21
|
require 'bluecloth'
|
21
22
|
require 'zip/zip'
|
22
23
|
end
|
@@ -47,7 +48,7 @@ OPTIONS = {
|
|
47
48
|
:port => 2500,
|
48
49
|
:storage => "#{Dir.pwd}/storage",
|
49
50
|
:pdflatex => pdflatex_available,
|
50
|
-
:redcloth => '
|
51
|
+
:redcloth => '3'
|
51
52
|
}
|
52
53
|
|
53
54
|
ARGV.options do |opts|
|
@@ -65,7 +66,7 @@ ARGV.options do |opts|
|
|
65
66
|
opts.on("-t", "--storage=storage", String,
|
66
67
|
"Makes Instiki use the specified directory for storage.",
|
67
68
|
"Default: [cwd]/storage/[port]\n") { |OPTIONS[:storage]| }
|
68
|
-
opts.on("-r", "--redcloth VERSION",
|
69
|
+
opts.on("-r", "--redcloth VERSION", String,
|
69
70
|
"Makes Instiki use the specified RedCloth version.",
|
70
71
|
"You can specify major version only (2 or 3)",
|
71
72
|
"Default: 2.0.11\n") { |OPTIONS[:redcloth]| }
|
@@ -84,7 +85,11 @@ Socket.do_not_reverse_lookup = true
|
|
84
85
|
|
85
86
|
# RedCloth + Modifications: {{{
|
86
87
|
begin
|
87
|
-
|
88
|
+
if Gem.source_index.search('redcloth').map { |s| s.version.version }.include? OPTIONS[:redcloth]
|
89
|
+
require_gem 'RedCloth', "#{OPTIONS[:redcloth]}"
|
90
|
+
else
|
91
|
+
require_gem 'RedCloth', "~> #{OPTIONS[:redcloth]}"
|
92
|
+
end
|
88
93
|
|
89
94
|
rescue LoadError => detail
|
90
95
|
if OPTIONS[:redcloth] < '3'
|
@@ -148,6 +153,7 @@ if ['3.0.0', '3.0.1'].include? RedCloth::VERSION
|
|
148
153
|
end #}}}
|
149
154
|
end #}}}
|
150
155
|
end #}}}
|
156
|
+
puts RedCloth::VERSION
|
151
157
|
|
152
158
|
# Start the application: {{{
|
153
159
|
storage_dir = OPTIONS[:storage] + "/" + OPTIONS[:port].to_s
|
@@ -159,7 +165,7 @@ WikiController.template_root = "#{cdir}/app/views/"
|
|
159
165
|
|
160
166
|
on_exit = lambda {
|
161
167
|
WebControllerServer::the_active_server.shutdown
|
162
|
-
|
168
|
+
WikiService.request_stop
|
163
169
|
}
|
164
170
|
|
165
171
|
trap "INT", on_exit
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.8.
|
2
|
+
rubygems_version: 0.8.8
|
3
3
|
specification_version: 1
|
4
4
|
name: Pimki
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.
|
7
|
-
date: 2005-
|
6
|
+
version: 1.6.092
|
7
|
+
date: 2005-03-17
|
8
8
|
summary: "A Personal Information Manager (PIM) based on Instiki's Wiki technology."
|
9
9
|
require_paths:
|
10
10
|
- libraries
|
@@ -68,6 +68,7 @@ files:
|
|
68
68
|
- app/models/chunks/wiki_symbols.rb
|
69
69
|
- app/models/chunks/wiki_test.rb
|
70
70
|
- app/views/bottom.rhtml
|
71
|
+
- app/views/error.rhtml
|
71
72
|
- app/views/markdown_help.rhtml
|
72
73
|
- app/views/menu.rhtml
|
73
74
|
- app/views/navigation.rhtml
|