Soks 0.0.2 → 0.0.3
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/README.txt +5 -4
- data/bin/soks-create-wiki.rb +153 -19
- data/contrib/easyprompt.rb +58 -0
- data/contrib/easyprompt_licence.txt +504 -0
- data/contrib/redcloth-2.0.11.rb +3 -1
- data/lib/authenticators.rb +18 -2
- data/lib/soks-helpers.rb +207 -157
- data/lib/soks-model.rb +131 -114
- data/lib/soks-servlet.rb +54 -35
- data/lib/soks-storage.rb +134 -0
- data/lib/soks-upgrade-0.0.2.rb +70 -0
- data/lib/soks-utils.rb +129 -19
- data/lib/soks-view.rb +136 -62
- data/lib/soks.rb +3 -1
- data/{template → templates/default}/attachment/logo.png +0 -0
- data/templates/default/attachment/logo.tiff +0 -0
- data/templates/default/attachment/newpage.js +41 -0
- data/templates/default/attachment/print_stylesheet.css +7 -0
- data/templates/default/attachment/rss.png +0 -0
- data/{template → templates/default}/attachment/stylesheet.css +44 -17
- data/templates/default/banned_titles.txt +31 -0
- data/templates/default/content/Bug%3A%20In%20a%20list%20of%20links%2C%20the%20last%20link%20is%20sometimes%20not%20linked.textile +10 -0
- data/templates/default/content/Bug%3A%20Symbols%20are%20not%20always%20correctly%20rendered%20in%20html.textile +3 -0
- data/templates/default/content/Bug%3A%20Uploads%20are%20not%20password%20protected.textile +3 -0
- data/templates/default/content/How%20to%20administrate%20this%20wiki.textile +62 -0
- data/templates/default/content/How%20to%20change%20the%20way%20this%20wiki%20looks.textile +30 -0
- data/templates/default/content/How%20to%20export%20a%20site%20from%20this%20wiki.textile +60 -0
- data/{template → templates/default}/content/How%20to%20hack%20soks.textile +3 -2
- data/{template → templates/default}/content/How%20to%20import%20a%20site%20from%20instiki.textile +1 -1
- data/templates/default/content/How%20to%20use%20this%20wiki.textile +27 -0
- data/templates/default/content/List%20of%20changes.textile +35 -0
- data/{template → templates/default}/content/Picture%20of%20a%20pair%20of%20soks.textile +0 -0
- data/{template → templates/default}/content/Soks%20Licence.textile +0 -0
- data/templates/default/content/home%20page.textile +17 -0
- data/templates/default/start.rb +94 -0
- data/templates/default/version.txt +1 -0
- data/{template → templates/default}/views/Page_content.rhtml +0 -0
- data/templates/default/views/Page_edit.rhtml +61 -0
- data/templates/default/views/Page_meta.rhtml +40 -0
- data/templates/default/views/Page_print.rhtml +6 -0
- data/templates/default/views/Page_revisions.rhtml +19 -0
- data/templates/default/views/Page_rss.rhtml +55 -0
- data/{template → templates/default}/views/Page_search_results.rhtml +1 -1
- data/templates/default/views/Page_view.rhtml +4 -0
- data/templates/default/views/UploadPage_edit.rhtml +38 -0
- data/templates/default/views/frame.rhtml +41 -0
- data/templates/default/views/messages.yaml +6 -0
- data/templates/instiki/attachment/header_backdrop.png +0 -0
- data/templates/instiki/attachment/instiki_style_sheet.css +199 -0
- data/templates/instiki/attachment/logo.tiff +0 -0
- data/templates/instiki/attachment/logotext.png +0 -0
- data/templates/instiki/attachment/newpage.js +41 -0
- data/templates/instiki/attachment/rss.png +0 -0
- data/templates/instiki/banned_titles.txt +31 -0
- data/templates/instiki/content/AutomaticSummary.textile +24 -0
- data/templates/instiki/content/How%20to%20export%20a%20site%20from%20this%20wiki.textile +60 -0
- data/templates/instiki/content/How%20to%20hack%20soks.textile +61 -0
- data/templates/instiki/content/How%20to%20import%20a%20site%20from%20instiki.textile +13 -0
- data/{template → templates/instiki}/content/Improving%20the%20style%20of%20this%20wiki.textile +2 -2
- data/templates/instiki/content/Known%20bugs.textile +8 -0
- data/templates/instiki/content/List%20of%20changes.textile +34 -0
- data/templates/instiki/content/Picture%20of%20a%20pair%20of%20soks.textile +1 -0
- data/templates/instiki/content/Pointers%20on%20adjusting%20the%20settings.textile +62 -0
- data/templates/instiki/content/Pointers%20on%20how%20to%20use%20this%20wiki.textile +27 -0
- data/templates/instiki/content/Recent%20Blog%20Entries.textile +3 -0
- data/templates/instiki/content/Recent%20Changes%20to%20This%20Site.textile +48 -0
- data/templates/instiki/content/Site%20Index.textile +16 -0
- data/templates/instiki/content/Soks%20Licence.textile +64 -0
- data/{template → templates/instiki}/content/home%20page.textile +9 -4
- data/templates/instiki/start.rb +85 -0
- data/templates/instiki/version.txt +1 -0
- data/templates/instiki/views/Page_content.rhtml +1 -0
- data/templates/instiki/views/Page_edit.rhtml +8 -0
- data/templates/instiki/views/Page_meta.rhtml +34 -0
- data/templates/instiki/views/Page_print.rhtml +6 -0
- data/templates/instiki/views/Page_revisions.rhtml +17 -0
- data/templates/instiki/views/Page_rss.rhtml +55 -0
- data/templates/instiki/views/Page_search_results.rhtml +18 -0
- data/templates/instiki/views/Page_view.rhtml +2 -0
- data/templates/instiki/views/UploadPage_edit.rhtml +16 -0
- data/templates/instiki/views/frame.rhtml +90 -0
- data/templates/instiki/views/messages.yaml +6 -0
- data/templates/rails/attachment/2colheader.css +77 -0
- data/templates/rails/attachment/basics.css +98 -0
- data/templates/rails/attachment/header_backdrop.png +0 -0
- data/templates/rails/attachment/logo.tiff +0 -0
- data/templates/rails/attachment/logotext.png +0 -0
- data/templates/rails/attachment/newpage.js +41 -0
- data/templates/rails/attachment/rss.png +0 -0
- data/templates/rails/banned_titles.txt +31 -0
- data/templates/rails/content/AutomaticSummary.textile +24 -0
- data/templates/rails/content/How%20to%20export%20a%20site%20from%20this%20wiki.textile +60 -0
- data/templates/rails/content/How%20to%20hack%20soks.textile +61 -0
- data/templates/rails/content/How%20to%20import%20a%20site%20from%20instiki.textile +13 -0
- data/templates/rails/content/Improving%20the%20style%20of%20this%20wiki.textile +30 -0
- data/templates/rails/content/Known%20bugs.textile +8 -0
- data/templates/rails/content/List%20of%20changes.textile +34 -0
- data/templates/rails/content/Picture%20of%20a%20pair%20of%20soks.textile +1 -0
- data/templates/rails/content/Pointers%20on%20adjusting%20the%20settings.textile +62 -0
- data/templates/rails/content/Pointers%20on%20how%20to%20use%20this%20wiki.textile +27 -0
- data/templates/rails/content/Recent%20Blog%20Entries.textile +3 -0
- data/templates/rails/content/Recent%20Changes%20to%20This%20Site.textile +48 -0
- data/templates/rails/content/Site%20Index.textile +16 -0
- data/templates/rails/content/Soks%20Licence.textile +64 -0
- data/templates/rails/content/home%20page.textile +23 -0
- data/templates/rails/start.rb +85 -0
- data/templates/rails/version.txt +1 -0
- data/templates/rails/views/Page_content.rhtml +1 -0
- data/templates/rails/views/Page_edit.rhtml +61 -0
- data/templates/rails/views/Page_meta.rhtml +38 -0
- data/templates/rails/views/Page_print.rhtml +6 -0
- data/templates/rails/views/Page_revisions.rhtml +19 -0
- data/templates/rails/views/Page_rss.rhtml +55 -0
- data/templates/rails/views/Page_search_results.rhtml +19 -0
- data/templates/rails/views/Page_view.rhtml +3 -0
- data/templates/rails/views/UploadPage_edit.rhtml +38 -0
- data/templates/rails/views/frame.rhtml +60 -0
- data/templates/rails/views/messages.yaml +6 -0
- metadata +122 -28
- data/template/content/How%20to%20export%20a%20site%20from%20this%20wiki.textile +0 -5
- data/template/content/Pointers%20on%20adjusting%20the%20settings.textile +0 -39
- data/template/content/Pointers%20on%20how%20to%20use%20this%20wiki.textile +0 -21
- data/template/content/Recent%20Changes%20to%20This%20Site.textile +0 -203
- data/template/start.rb +0 -74
- data/template/views/AttachmentPage_edit.rhtml +0 -36
- data/template/views/ImagePage_edit.rhtml +0 -36
- data/template/views/Page_edit.rhtml +0 -34
- data/template/views/Page_print.rhtml +0 -5
- data/template/views/Page_revisions.rhtml +0 -18
- data/template/views/Page_rss.rhtml +0 -34
- data/template/views/Page_view.rhtml +0 -3
- data/template/views/frame.rhtml +0 -34
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
h1. Welcome!
|
|
2
|
+
|
|
3
|
+
You have succesfully installed soks. Remember it is work in progress, and definitely not fully de-bugged. So don't trust your mission critical sites to it.
|
|
4
|
+
|
|
5
|
+
If you are upgrading from a previous version, you may wish to glance at the list of changes.
|
|
6
|
+
|
|
7
|
+
[[insert Instructions and Howtos]]
|
|
8
|
+
|
|
9
|
+
[[insert known bugs]]
|
|
10
|
+
|
|
11
|
+
h2. Feedback
|
|
12
|
+
|
|
13
|
+
* Please send me your feedback. tamc@rubyforge.com.
|
|
14
|
+
* Or submit a bug at http://rubyforge.org/projects/soks/.
|
|
15
|
+
* To keep track of developments, you may wish to subscribe to the mailing list at http://rubyforge.org/projects/soks to be notified of updates.
|
|
16
|
+
|
|
17
|
+
[[insert picture of a pair of soks]]
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/local/bin/ruby
|
|
2
|
+
|
|
3
|
+
# This file was created automatically on <%= Time.now %>
|
|
4
|
+
# Uncomment different sections to enable features of this wiki.
|
|
5
|
+
|
|
6
|
+
#Add the required libraries to the search path:
|
|
7
|
+
$:.push( "<%= settings[:soks_libraries].join('","') %>" )
|
|
8
|
+
|
|
9
|
+
require 'soks'
|
|
10
|
+
|
|
11
|
+
module StartSoks
|
|
12
|
+
|
|
13
|
+
=begin
|
|
14
|
+
# If you uncomment this, don't forget to uncomment the authenticators line in the CUSTOMSETTINGS hash below!
|
|
15
|
+
# You can choose what level of authentication to apply based on regular expressions matched
|
|
16
|
+
# against the page title. These regexps are tried in order.Defaults are here:
|
|
17
|
+
authenticators = [ [ %r{/(view|rss|print|find|meta)/.*}, WEBrick::HTTPAuth::NoAuthenticationRequired.new ],
|
|
18
|
+
# [ %r{/upload/.*}, WEBrick::HTTPAuth::NotPermitted.new ],
|
|
19
|
+
# [ %r{/(edit|save)/home page}, WEBrick::HTTPAuth::SiteWidePassword.new('password','You need to enter the site wide password to edit the home page') ],
|
|
20
|
+
# [ %r{/(view|edit|save)/private.*},WEBrick::HTTPAuth::BasicAuth.new( :UserDB => htpasswd, :Realm => realm ) ], # See webrick documentation
|
|
21
|
+
[ %r{.*}, WEBrick::HTTPAuth::AskForUserName.new( 'No password, just enter a name') ]
|
|
22
|
+
]
|
|
23
|
+
=end
|
|
24
|
+
|
|
25
|
+
CUSTOMSETTINGS = {
|
|
26
|
+
:root_directory => '<%= settings[:root_directory] %>',
|
|
27
|
+
# :name => 'test',
|
|
28
|
+
# :description => 'A Soks Wiki',
|
|
29
|
+
:url => '<%= settings[:url] %>',
|
|
30
|
+
:port => <%= settings[:port] %>,
|
|
31
|
+
# :authenticators => authenticators
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
def self.start
|
|
35
|
+
start_wiki( CUSTOMSETTINGS ) do |wiki, view|
|
|
36
|
+
AutomaticRecentChanges.new( wiki )
|
|
37
|
+
|
|
38
|
+
AutomaticOnePageIndex.new( wiki ) # Index on one page, best for small wikis
|
|
39
|
+
# AutomaticMultiPageIndex.new( wiki ) # One page per letter index, best for large wikis
|
|
40
|
+
|
|
41
|
+
# calendar = AutomaticCalendar.new( wiki ) # Adds a series of calendar pages to the wiki
|
|
42
|
+
# AutomaticUpcomingEvents.new( wiki, calendar ) # Creates a page with the next weeks events drawn from the calendar pages
|
|
43
|
+
|
|
44
|
+
# Examples of automatically generated summary pages:
|
|
45
|
+
AutomaticSummary.new( wiki,
|
|
46
|
+
:regexp_for_title => /^How to /i,
|
|
47
|
+
:pagename => 'Instructions and Howtos'
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
AutomaticSummary.new( wiki,
|
|
51
|
+
:regexp_for_title => /^Bug:/i,
|
|
52
|
+
:pagename => 'Known bugs',
|
|
53
|
+
:include_metadata => true
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
AutomaticSummary.new( wiki,
|
|
57
|
+
:regexp_for_title => /^Blog:/i,
|
|
58
|
+
:max_pages_to_show => 10,
|
|
59
|
+
:lines_to_include => 10,
|
|
60
|
+
:include_metadata => true,
|
|
61
|
+
:pagename => 'Recent Blog Entries'
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# Possible settings for the Automatic Summary (with defaults)
|
|
66
|
+
# :regexp_for_title => /.*/, # These three regexps act as an AND
|
|
67
|
+
# :regexp_for_author => nil,
|
|
68
|
+
# :regexp_for_content => nil,
|
|
69
|
+
# :max_pages_to_show => nil,
|
|
70
|
+
# :pagename => 'Summary',
|
|
71
|
+
# :author => 'AutomaticSummary',
|
|
72
|
+
# :lines_to_include => nil, # nil puts a link, can pass a block instead to render
|
|
73
|
+
# :only_new_pages => false,
|
|
74
|
+
# :sort_pages_by => :created_on, # Could be :revised_on or :score or :name or :name_for_index, or :author
|
|
75
|
+
# :reverse_sort => false,
|
|
76
|
+
# :include_metadata => false, # Includes author and time in summary
|
|
77
|
+
# :summarise_revisions => false, # If true, then can contain several revisions for same page
|
|
78
|
+
# :remove_deleted_pages => true, # If false will keep references to deleted pages
|
|
79
|
+
|
|
80
|
+
# This is an array of titles that will NOT be automatically linked.
|
|
81
|
+
# Default is the 30 most common words in the english language
|
|
82
|
+
# Note that pages can still be created with these titles, and they can still be manually linked to.
|
|
83
|
+
banned_titles = IO.readlines('<%= settings[:root_directory] %>/banned_titles.txt').map { |title| title.strip }
|
|
84
|
+
|
|
85
|
+
# This takes a while, so do it last. Note that the banned_titles argument is optional.
|
|
86
|
+
AutomaticUpdateCrossLinks.new( wiki, view, banned_titles )
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
if $0 == __FILE__ then
|
|
93
|
+
StartSoks::start
|
|
94
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.0.3
|
|
File without changes
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<span class='pagename'><%= pagename %> <%= page.deleted? ? "(Deleted)" : '' %></span>
|
|
2
|
+
<form method=post action='/save/<%= pagename %>' >
|
|
3
|
+
<table>
|
|
4
|
+
<tr>
|
|
5
|
+
<td>Title:</td>
|
|
6
|
+
<td><input name='newtitle' size = '60' value='<%= pagename %>' onClick="this.value == 'Type a title here' ? this.value = '' : true"/></td>
|
|
7
|
+
</tr>
|
|
8
|
+
|
|
9
|
+
<tr>
|
|
10
|
+
<td valign='top'>Content:</td>
|
|
11
|
+
<td>
|
|
12
|
+
<textarea name='content' rows=30 cols=60 onClick="this.value == 'Type what you want here and click save' ? this.value = '' : true" ><%= page.content %></textarea>
|
|
13
|
+
</td>
|
|
14
|
+
<td valign='top'>
|
|
15
|
+
<div class='tips'>
|
|
16
|
+
<ul>
|
|
17
|
+
<li>h1. big heading</li>
|
|
18
|
+
<li>h2. little heading</li>
|
|
19
|
+
<li>*bold text* = <b>bold text</b></li>
|
|
20
|
+
<li>_italic text_ = <i>italic text</i></li>
|
|
21
|
+
<li>* bullet one = • bullet one<br />
|
|
22
|
+
* bullet two = • bullet two</li>
|
|
23
|
+
<li># list one = 1. list one<br />
|
|
24
|
+
# list two = 2. list two</li>
|
|
25
|
+
<li>Most links are automatic</li>
|
|
26
|
+
<li>[[insert picture of title of picture]]</li>
|
|
27
|
+
<li><a href='http://hobix.com/textile/quick.html' target='textile_ref'>More</a></li>
|
|
28
|
+
</ul>
|
|
29
|
+
</div>
|
|
30
|
+
<td>
|
|
31
|
+
</tr>
|
|
32
|
+
<tr>
|
|
33
|
+
<td>Author:</td>
|
|
34
|
+
<td><a href='/<%= person %>'><%= person %></a> Quit browser to log out.</td>
|
|
35
|
+
</tr>
|
|
36
|
+
<tr>
|
|
37
|
+
<td></td>
|
|
38
|
+
<td><input name=action value='Save' type=submit accesskey="S"> <a href='/<%= pagename %>' accesskey="C" >(Do not Save)</a> or <a href='/delete/<%= pagename %>' accesskey='D'>(Delete)</a> this page.</td>
|
|
39
|
+
</tr>
|
|
40
|
+
</table>
|
|
41
|
+
</form>
|
|
42
|
+
<hr />
|
|
43
|
+
<% unless page.empty? %>
|
|
44
|
+
<p>The most recent change was made by <a href='/<%= page.author %>'><%= page.author %></a> who changed:</p>
|
|
45
|
+
<%
|
|
46
|
+
page.changes.each do |change_group|
|
|
47
|
+
change_group.each do |change|
|
|
48
|
+
case change[0]
|
|
49
|
+
when "-" %>
|
|
50
|
+
<del><%= change[1] %>. <%= change[2] %></del><br />
|
|
51
|
+
<% when "+" %>
|
|
52
|
+
<%= change[1] %>. <%= change[2] %><br />
|
|
53
|
+
<%
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
%>
|
|
58
|
+
<p>
|
|
59
|
+
<a href='/rollback/<%= pagename %>?revision=<%= page.number-1 %>' accesskey="U" >(Undo this change)</a> or <a href='/revisions/<%= pagename %>' accesskey="A" >(Show All changes)</a>
|
|
60
|
+
</p>
|
|
61
|
+
<% end %>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<span class='pagename'><a href='/<%= pagename %>'><%= pagename %></a> <%= page.deleted? ? "(Deleted)" : '' %></span>
|
|
2
|
+
|
|
3
|
+
<h1><%= pagename %></h1>
|
|
4
|
+
|
|
5
|
+
<p>This page was created on <%= page.created_on %> by <%= page.revisions.first.author %>.</p>
|
|
6
|
+
<p>It was last updated on <%= page.revised_on %> by <%= page.author %>.</p>
|
|
7
|
+
<p> It has been changed <%= page.revisions.size %> time(s) (roughly once every <%= (((Time.now-page.created_on)/page.revisions.size)/(60*60*24)).to_i %> days).</p>
|
|
8
|
+
|
|
9
|
+
<div class='metacolumn' >
|
|
10
|
+
<h2>Wiki links from this page</h2>
|
|
11
|
+
|
|
12
|
+
<ul>
|
|
13
|
+
<% page.links_from.each do |linkedpage| %>
|
|
14
|
+
<li><a href='/<%= linkedpage.name %>'><%= linkedpage.name %></a></li>
|
|
15
|
+
<% end %>
|
|
16
|
+
</ul>
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div class='metacolumn' >
|
|
21
|
+
<h2>Wiki links to this page</h2>
|
|
22
|
+
|
|
23
|
+
<ul>
|
|
24
|
+
<% page.links_to.each do |linkedpage| %>
|
|
25
|
+
<li><a href='/<%= linkedpage.name %>'><%= linkedpage.name %></a></li>
|
|
26
|
+
<% end %>
|
|
27
|
+
</ul>
|
|
28
|
+
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div class='metacolumn' >
|
|
32
|
+
<h2>Authors</h2>
|
|
33
|
+
|
|
34
|
+
<ol>
|
|
35
|
+
<% page.revisions.each do |revision| %>
|
|
36
|
+
<li><a href='/<%= revision.author %>'><%= revision.author %></a></li>
|
|
37
|
+
<% end %>
|
|
38
|
+
</ol>
|
|
39
|
+
|
|
40
|
+
</div>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<span class='pagename'><%= pagename %></span>
|
|
2
|
+
<div class="undochange">
|
|
3
|
+
<% page.revisions.reverse_each do |revision| %>
|
|
4
|
+
<p><%= revision.created_on %> by <a href='/<%= revision.author %>'><%= revision.author %></a> <a href='/rollback/<%= pagename %>?revision=<%= revision.number-1 %>' >(undo)</a>:</p>
|
|
5
|
+
<p>
|
|
6
|
+
<% revision.changes.each do |change_group| %>
|
|
7
|
+
<% change_group.each do |change|
|
|
8
|
+
case change[0]
|
|
9
|
+
when "-" %>
|
|
10
|
+
<del><%= change[1] %>. <%= change[2] %></del><br />
|
|
11
|
+
<% when "+" %>
|
|
12
|
+
<%= change[1] %>. <%= change[2] %><br />
|
|
13
|
+
<% end %>
|
|
14
|
+
<% end %>
|
|
15
|
+
<% end %>
|
|
16
|
+
</p>
|
|
17
|
+
<% end %>
|
|
18
|
+
<br />(<a href='/edit/<%= pagename %>' accesskey="R" >Return to editing</a>)
|
|
19
|
+
</div>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<%=
|
|
2
|
+
require "rss/maker"
|
|
3
|
+
|
|
4
|
+
RSS::Maker.make("2.0") do |maker|
|
|
5
|
+
|
|
6
|
+
maker.channel.title = "#{$SETTINGS[:name]} #{pagename}"
|
|
7
|
+
maker.channel.description = $SETTINGS[:description]
|
|
8
|
+
maker.channel.link = $SETTINGS[:url]
|
|
9
|
+
|
|
10
|
+
maker.image.title = "#{$SETTINGS[:name]}"
|
|
11
|
+
maker.image.url = "#{$SETTINGS[:url]}/attachment/logo.png"
|
|
12
|
+
|
|
13
|
+
maker.textinput.title = "Search"
|
|
14
|
+
maker.textinput.description = "Search #{$SETTINGS[:name]}'s text"
|
|
15
|
+
maker.textinput.name = "regex"
|
|
16
|
+
maker.textinput.link = "#{$SETTINGS[:url]}/find/searchpage"
|
|
17
|
+
|
|
18
|
+
maker.items.do_sort = true
|
|
19
|
+
|
|
20
|
+
count = 0
|
|
21
|
+
for revision in page.revisions
|
|
22
|
+
break if (count +=1) == 15
|
|
23
|
+
item = maker.items.new_item
|
|
24
|
+
item.link = "#{$SETTINGS[:url]}/#{pagename}"
|
|
25
|
+
# Get the first change that makes an addition and use as the title
|
|
26
|
+
title = nil
|
|
27
|
+
revision.changes.each do |group|
|
|
28
|
+
group.each do |type,line,text|
|
|
29
|
+
if type == '+' && text != ''
|
|
30
|
+
title = text.gsub(/<.*?>/,'')
|
|
31
|
+
end
|
|
32
|
+
break if title
|
|
33
|
+
end
|
|
34
|
+
break if title
|
|
35
|
+
end
|
|
36
|
+
# If change found, take just the changed text and remove tags.
|
|
37
|
+
# If no change found, then must be because only deleted stuff so give that message
|
|
38
|
+
item.title = title || $MESSAGES[:some_content_has_been_deleted] # Default
|
|
39
|
+
item.date = revision.created_on
|
|
40
|
+
item.author = revision.author
|
|
41
|
+
item.description = ""
|
|
42
|
+
content_deleted = false
|
|
43
|
+
revision.changes.each do |change_group|
|
|
44
|
+
change_group.each do |change|
|
|
45
|
+
case change[0]
|
|
46
|
+
when "-"; content_deleted = true
|
|
47
|
+
when "+"; item.description << "#{change[2]}<br />"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
item.description << "…<br />"
|
|
51
|
+
end
|
|
52
|
+
item.description << "Content was also deleted" if content_deleted
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
%>
|
|
@@ -16,4 +16,4 @@
|
|
|
16
16
|
<% end %>
|
|
17
17
|
</ul>
|
|
18
18
|
<% end %>
|
|
19
|
-
<
|
|
19
|
+
<div class='command'>(<a href='/edit/<%= pagename %>' accesskey="E" >Create a page titled “<%= pagename %>”</a>)</div>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<span class='pagename'><%= pagename %><%= page.deleted? ? "(Deleted)" : '' %></span>
|
|
2
|
+
|
|
3
|
+
<form action='/upload/<%= pagename %>' method=post enctype=multipart/form-data >
|
|
4
|
+
<table>
|
|
5
|
+
<tr><td>Title:</td><td>
|
|
6
|
+
<% if page.is_a? ImagePage %>
|
|
7
|
+
<input type=hidden name='titleprefix' value='Picture of ' />
|
|
8
|
+
Picture of <input name='newtitle' size = '51' value='<%= pagename[ 10..-1].strip %>'
|
|
9
|
+
<% else %>
|
|
10
|
+
<input type=hidden name='titleprefix' value='Attached ' />
|
|
11
|
+
Attached <input name='newtitle' size = '52' value='<%= pagename[ 9..-1].strip %>'
|
|
12
|
+
<% end %>
|
|
13
|
+
onClick="this.value == 'Type a title here' ? this.value = '' : true"/></td></tr>
|
|
14
|
+
<tr><td valign='top'>File:</td><td><input name='file' type=file /></td></tr>
|
|
15
|
+
<tr><td>Author:</td><td><a href='/<%= person %>'><%= person %></a> Quit browser to log out.</td>
|
|
16
|
+
<tr><td></td><td><input name=action value='Save' type=submit accesskey="S"> <a href='/<%= pagename %>' accesskey="C" >(Cancel)</a> or <a href='/delete/<%= pagename %>' accesskey='D'>(Delete)</a> this page.</td></tr>
|
|
17
|
+
</table>
|
|
18
|
+
</form>
|
|
19
|
+
<hr />
|
|
20
|
+
<% unless page.empty? %>
|
|
21
|
+
<p>The most recent change was made by <a href='/<%= page.author %>'><%= page.author %></a> who changed:</p>
|
|
22
|
+
<%
|
|
23
|
+
page.changes.each do |change_group|
|
|
24
|
+
change_group.each do |change|
|
|
25
|
+
case change[0]
|
|
26
|
+
when "-" %>
|
|
27
|
+
<del><%= change[1] %>. <%= change[2] %></del><br />
|
|
28
|
+
<% when "+" %>
|
|
29
|
+
<%= change[1] %>. <%= change[2] %><br />
|
|
30
|
+
<%
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
%>
|
|
35
|
+
<p>
|
|
36
|
+
<a href='/rollback/<%= pagename %>?revision=<%= page.number - 1 %>' accesskey="U" >(Undo this change)</a> or <a href='/revisions/<%= pagename %>' accesskey="A" >(Show All changes)</a>
|
|
37
|
+
</p>
|
|
38
|
+
<% end %>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<title><%= pagename %></title>
|
|
5
|
+
<meta name='description' content='<%= $SETTINGS[:description] %>' />
|
|
6
|
+
<meta name='keywords' content='Soks, <%= $SETTINGS[:name] %>' />
|
|
7
|
+
<link href='/attachment/stylesheet.css' rel='stylesheet' type='text/css' media='screen' />
|
|
8
|
+
<link href='/attachment/print_stylesheet.css' rel='stylesheet' type='text/css' media='print' />
|
|
9
|
+
<link rel='alternate' type='application/rss+xml' title='RSS' href='/rss/<%= pagename %>' />
|
|
10
|
+
<script src='/attachment/newpage.js' type='text/javascript'></script>
|
|
11
|
+
</head>
|
|
12
|
+
<body onkeypress='hotkey(event);'>
|
|
13
|
+
<div id='content'>
|
|
14
|
+
<%= content_of_page %>
|
|
15
|
+
</div>
|
|
16
|
+
<div id='menu'>
|
|
17
|
+
<a href='/Home Page' accesskey='H' ><img width='149' src='/attachment/logo.png' alt='<%= @wikiname %>' /></a>
|
|
18
|
+
<form method='get' action='/find/<%= pagename %>' >
|
|
19
|
+
<input name='regex' value='' size='18' />
|
|
20
|
+
<input name='action' value='search' type='submit' />
|
|
21
|
+
</form>
|
|
22
|
+
<a href='/site index' accesskey='I' >Site Index</a>
|
|
23
|
+
<a href='/recent changes to this site' accesskey='R' >Recent Changes</a>
|
|
24
|
+
<% if page %>
|
|
25
|
+
<% page.links_to.each do |linkedpage| %>
|
|
26
|
+
<a href='/<%= linkedpage.name %>'><%= linkedpage.name %></a>
|
|
27
|
+
<% end %>
|
|
28
|
+
<% end %>
|
|
29
|
+
<br />
|
|
30
|
+
<a href='/edit/Type a title here'>Add a new page</a>
|
|
31
|
+
<a href='/edit/Picture of Type a title here'>Upload a new picture</a>
|
|
32
|
+
<a href='/edit/Attached Type a title here'>Upload a new file</a>
|
|
33
|
+
<br />
|
|
34
|
+
<span class='disclaimer'>
|
|
35
|
+
This website can be edited by anyone. It is therefore unlikely to represent the views of anyone named.
|
|
36
|
+
</span>
|
|
37
|
+
<br />
|
|
38
|
+
<a style='display:inline;' href='/rss/<%= pagename %>'><img src='/attachment/rss.png' alt='rss feed' /></a>
|
|
39
|
+
</div>
|
|
40
|
+
</body>
|
|
41
|
+
</html>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
:some_content_has_been_deleted : "Some content has been deleted"
|
|
2
|
+
:Type_what_you_want_here_and_click_save : "Type what you want here and click save"
|
|
3
|
+
:Create : "Create"
|
|
4
|
+
:page_deleted : "page deleted"
|
|
5
|
+
:content_moved_to : "content moved to"
|
|
6
|
+
:content_moved_from : "content moved from"
|
|
Binary file
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
#Container {
|
|
2
|
+
float: none;
|
|
3
|
+
margin: 0 auto;
|
|
4
|
+
text-align: center;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
#Content {
|
|
8
|
+
margin: 0;
|
|
9
|
+
padding: 5px;
|
|
10
|
+
text-align: left;
|
|
11
|
+
border-top: none;
|
|
12
|
+
float: left;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
body { background-color: #fff; color: #333; }
|
|
16
|
+
|
|
17
|
+
body, p, ol, ul, td {
|
|
18
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
|
19
|
+
font-size: 13px;
|
|
20
|
+
line-height: 18px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
a { color: #000; }
|
|
24
|
+
|
|
25
|
+
.newWikiWord { background-color: #eee; }
|
|
26
|
+
.newWikiWord a:hover { background-color: white; }
|
|
27
|
+
|
|
28
|
+
a:visited { color: #666; }
|
|
29
|
+
a:hover { color: #fff; background-color:#000; }
|
|
30
|
+
|
|
31
|
+
/* a.edit:link, a.edit:visited { color: #DA0006; } */
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
h1, h2, h3 { color: #333; font-family: georgia, verdana; }
|
|
35
|
+
h1 { font-size: 28px }
|
|
36
|
+
h2 { font-size: 19px }
|
|
37
|
+
h3 { font-size: 16px }
|
|
38
|
+
|
|
39
|
+
h1#pageName {
|
|
40
|
+
margin: 5px 0px 0px 0px;
|
|
41
|
+
padding: 0px 0px 0px 0px;
|
|
42
|
+
line-height: 28px;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
h1#pageName small {
|
|
46
|
+
color: grey;
|
|
47
|
+
line-height: 10px;
|
|
48
|
+
font-size: 10px;
|
|
49
|
+
padding: 0px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
a.nav, a.nav:link, a.nav:visited { color: #000; }
|
|
53
|
+
a.nav:hover { color: #fff; background-color:#000; }
|
|
54
|
+
|
|
55
|
+
li { margin-bottom: 7px }
|
|
56
|
+
|
|
57
|
+
.navigation {
|
|
58
|
+
margin-top: 5px;
|
|
59
|
+
font-size : 12px;
|
|
60
|
+
color: #999;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.navigation a:hover { color: #fff; background-color:#000; }
|
|
64
|
+
|
|
65
|
+
.navigation a {
|
|
66
|
+
font-size: 11px;
|
|
67
|
+
color: black;
|
|
68
|
+
font-weight: bold;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.navigation small a {
|
|
72
|
+
font-weight: normal;
|
|
73
|
+
font-size: 11px;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.navOn{
|
|
77
|
+
font-size: 11px;
|
|
78
|
+
color: grey;
|
|
79
|
+
font-weight: bold;
|
|
80
|
+
text-decoration: none;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.help {
|
|
84
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
|
85
|
+
font-size: 11px;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.inputBox {
|
|
89
|
+
font-family: verdana, arial, helvetica, sans-serif;
|
|
90
|
+
font-size: 11px;
|
|
91
|
+
background-color: #eee;
|
|
92
|
+
padding: 5px;
|
|
93
|
+
margin-bottom: 20px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
blockquote {
|
|
97
|
+
display: block;
|
|
98
|
+
margin: 0px 0px 20px 0px;
|
|
99
|
+
padding: 0px 30px;
|
|
100
|
+
font-size:11px;
|
|
101
|
+
line-height:17px;
|
|
102
|
+
font-style: italic;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
pre {
|
|
106
|
+
background-color: #eee;
|
|
107
|
+
padding: 10px;
|
|
108
|
+
font-size: 11px;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
ol.setup {
|
|
112
|
+
font-size: 19px;
|
|
113
|
+
font-family: georgia, verdana;
|
|
114
|
+
padding-left: 25px;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
ol.setup li {
|
|
118
|
+
margin-bottom: 20px
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.byline {
|
|
122
|
+
font-size: 10px;
|
|
123
|
+
font-style: italic;
|
|
124
|
+
margin-bottom: 10px;
|
|
125
|
+
color: #999;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.references {
|
|
129
|
+
font-size: 10px;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.diffdel {
|
|
133
|
+
background: pink;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.diffins {
|
|
137
|
+
background: lightgreen;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
#TextileHelp table {
|
|
141
|
+
margin-bottom: 0;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
#TextileHelp table+h3 {
|
|
145
|
+
margin-top: 11px;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
#TextileHelp table td {
|
|
149
|
+
font-size: 11px;
|
|
150
|
+
padding: 3px;
|
|
151
|
+
vertical-align: top;
|
|
152
|
+
border-top: 1px dotted #ccc;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
#TextileHelp table td.arrow {
|
|
156
|
+
padding-right: 5px;
|
|
157
|
+
padding-left: 10px;
|
|
158
|
+
color: #999;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
#TextileHelp table td.label {
|
|
162
|
+
font-weight: bold;
|
|
163
|
+
white-space: nowrap;
|
|
164
|
+
font-size: 10px;
|
|
165
|
+
padding-right: 15px;
|
|
166
|
+
color: #000;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
#TextileHelp h3 {
|
|
170
|
+
font-size: 11px;
|
|
171
|
+
font-weight: bold;
|
|
172
|
+
font-weight: normal;
|
|
173
|
+
margin: 0 0 5px 0;
|
|
174
|
+
padding: 5px 0 0 0;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
#TextileHelp p {
|
|
178
|
+
font-size: 10px;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.rightHandSide {
|
|
182
|
+
float: right;
|
|
183
|
+
width: 147px;
|
|
184
|
+
margin-left: 10px;
|
|
185
|
+
padding-left: 20px;
|
|
186
|
+
border-left: 1px dotted #ccc;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.rightHandSide p {
|
|
190
|
+
font-size: 10px;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.newsList {
|
|
194
|
+
margin-top: 20px;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.newsList p {
|
|
198
|
+
margin-bottom:30px
|
|
199
|
+
}
|