Soks 0.0.2
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/LICENSE.txt +60 -0
- data/README.txt +65 -0
- data/bin/soks-create-wiki.rb +41 -0
- data/contrib/diff/lcs.rb +1105 -0
- data/contrib/diff/lcs/array.rb +21 -0
- data/contrib/diff/lcs/block.rb +51 -0
- data/contrib/diff/lcs/callbacks.rb +322 -0
- data/contrib/diff/lcs/change.rb +169 -0
- data/contrib/diff/lcs/hunk.rb +257 -0
- data/contrib/diff/lcs/ldiff.rb +226 -0
- data/contrib/diff/lcs/string.rb +19 -0
- data/contrib/diff_licence.txt +76 -0
- data/contrib/redcloth-2.0.11.rb +894 -0
- data/contrib/redcloth-3.0.1.rb +1019 -0
- data/contrib/redcloth_license.txt +27 -0
- data/lib/authenticators.rb +79 -0
- data/lib/soks-helpers.rb +321 -0
- data/lib/soks-model.rb +208 -0
- data/lib/soks-servlet.rb +125 -0
- data/lib/soks-utils.rb +80 -0
- data/lib/soks-view.rb +424 -0
- data/lib/soks.rb +19 -0
- data/template/attachment/logo.png +0 -0
- data/template/attachment/stylesheet.css +63 -0
- data/template/content/How%20to%20export%20a%20site%20from%20this%20wiki.textile +5 -0
- data/template/content/How%20to%20hack%20soks.textile +60 -0
- data/template/content/How%20to%20import%20a%20site%20from%20instiki.textile +13 -0
- data/template/content/Improving%20the%20style%20of%20this%20wiki.textile +30 -0
- data/template/content/Picture%20of%20a%20pair%20of%20soks.textile +1 -0
- data/template/content/Pointers%20on%20adjusting%20the%20settings.textile +39 -0
- data/template/content/Pointers%20on%20how%20to%20use%20this%20wiki.textile +21 -0
- data/template/content/Recent%20Changes%20to%20This%20Site.textile +203 -0
- data/template/content/Soks%20Licence.textile +64 -0
- data/template/content/home%20page.textile +18 -0
- data/template/start.rb +74 -0
- data/template/views/AttachmentPage_edit.rhtml +36 -0
- data/template/views/ImagePage_edit.rhtml +36 -0
- data/template/views/Page_content.rhtml +1 -0
- data/template/views/Page_edit.rhtml +34 -0
- data/template/views/Page_print.rhtml +5 -0
- data/template/views/Page_revisions.rhtml +18 -0
- data/template/views/Page_rss.rhtml +34 -0
- data/template/views/Page_search_results.rhtml +19 -0
- data/template/views/Page_view.rhtml +3 -0
- data/template/views/frame.rhtml +34 -0
- metadata +88 -0
@@ -0,0 +1,64 @@
|
|
1
|
+
h1. Soks is licensed under the The Ruby License
|
2
|
+
|
3
|
+
Note: This licence applies to all that is contained in this distribution EXCEPT files within the contrib folder which may be under different licences.
|
4
|
+
|
5
|
+
Soks is copyrighted (c) 2004, 2005 free software by Thomas Counsell tamc@rubyforge.org.
|
6
|
+
|
7
|
+
<pre>
|
8
|
+
|
9
|
+
You can redistribute it and/or modify it under either the terms of the
|
10
|
+
GPL (see the file GPL), or the conditions below:
|
11
|
+
|
12
|
+
1. You may make and give away verbatim copies of the source form of the
|
13
|
+
software without restriction, provided that you duplicate all of the
|
14
|
+
original copyright notices and associated disclaimers.
|
15
|
+
|
16
|
+
2. You may modify your copy of the software in any way, provided that
|
17
|
+
you do at least ONE of the following:
|
18
|
+
|
19
|
+
a) place your modifications in the Public Domain or otherwise
|
20
|
+
make them Freely Available, such as by posting said
|
21
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
22
|
+
the author to include your modifications in the software.
|
23
|
+
|
24
|
+
b) use the modified software only within your corporation or
|
25
|
+
organization.
|
26
|
+
|
27
|
+
c) rename any non-standard executables so the names do not conflict
|
28
|
+
with standard executables, which must also be provided.
|
29
|
+
|
30
|
+
d) make other distribution arrangements with the author.
|
31
|
+
|
32
|
+
3. You may distribute the software in object code or executable
|
33
|
+
form, provided that you do at least ONE of the following:
|
34
|
+
|
35
|
+
a) distribute the executables and library files of the software,
|
36
|
+
together with instructions (in the manual page or equivalent)
|
37
|
+
on where to get the original distribution.
|
38
|
+
|
39
|
+
b) accompany the distribution with the machine-readable source of
|
40
|
+
the software.
|
41
|
+
|
42
|
+
c) give non-standard executables non-standard names, with
|
43
|
+
instructions on where to get the original software distribution.
|
44
|
+
|
45
|
+
d) make other distribution arrangements with the author.
|
46
|
+
|
47
|
+
4. You may modify and include the part of the software into any other
|
48
|
+
software (possibly commercial). But some files in the distribution
|
49
|
+
are not written by the author, so that they are not under these terms.
|
50
|
+
|
51
|
+
For the list of those files and their copying conditions, see the
|
52
|
+
contrib directory.
|
53
|
+
|
54
|
+
5. The scripts and library files supplied as input to or produced as
|
55
|
+
output from the software do not automatically fall under the
|
56
|
+
copyright of the software, but belong to whomever generated them,
|
57
|
+
and may be sold commercially, and may be aggregated with this
|
58
|
+
software.
|
59
|
+
|
60
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
61
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
62
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
63
|
+
PURPOSE.
|
64
|
+
</pre>
|
@@ -0,0 +1,18 @@
|
|
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. In particular, I have only really used it with ruby 1.8.2 on Mac OS X 10.3. If you have any success or failure on other platforms, please let me know.
|
4
|
+
|
5
|
+
For further information see:
|
6
|
+
* Pointers on how to use this wiki
|
7
|
+
* Improving the style of this wiki
|
8
|
+
* Pointers on adjusting the settings such as the url, or the port, or 'advanced' features such as automatic calendars and summaries.
|
9
|
+
* How to import a site from instiki
|
10
|
+
* How to export a site from this wiki
|
11
|
+
* [[How to hack soks]]
|
12
|
+
|
13
|
+
Feedback
|
14
|
+
* Please send me your feedback. tamc@rubyforge.com.
|
15
|
+
* Or submit a bug at http://rubyforge.org/projects/soks/.
|
16
|
+
* 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.
|
17
|
+
|
18
|
+
[[insert picture of a pair of soks]]
|
data/template/start.rb
ADDED
@@ -0,0 +1,74 @@
|
|
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
|
+
CUSTOMSETTINGS = {
|
14
|
+
:root_directory => '<%= settings[:root_directory] %>',
|
15
|
+
# :name => 'test',
|
16
|
+
# :description => 'A Soks Wiki',
|
17
|
+
# :url => 'http://localhost:8000',
|
18
|
+
# :port => 8000,
|
19
|
+
# :dont_authenticate => ['view','rss'], # To allow anyone to read
|
20
|
+
# :dont_authenticate => [], # Require authentication for reading as well as editing
|
21
|
+
# :authenticator => WEBrick::HTTPAuth::NotAuthentication.new( 'No password, just enter a name'), # Doesn't require a passwrod
|
22
|
+
# :authenticator => WEBrick::HTTPAuth::OnePasswordAuthentication.new( 'password', 'Enter the site wide password (password by default!)' ), # One group wide password
|
23
|
+
# :authenticator => WEBrick::HTTPAuth::BasicAuth.new( :UserDB => htpasswd, :Realm => realm ) # See webrick documentation
|
24
|
+
# :authenticator => WEBrick::HTTPAuth::DigestAuth.new( :UserDB => htpdigest, :Realm => realm ) # See webrick documentation
|
25
|
+
}
|
26
|
+
|
27
|
+
def self.start
|
28
|
+
start_wiki( CUSTOMSETTINGS ) do |wiki|
|
29
|
+
AutomaticUpdateCrossLinks.new( wiki )
|
30
|
+
AutomaticRecentChanges.new( wiki )
|
31
|
+
|
32
|
+
AutomaticOnePageIndex.new( wiki ) # Index on one page, best for small wikis
|
33
|
+
# AutomaticMultiPageIndex.new( wiki ) # One page per letter index, best for large wikis
|
34
|
+
|
35
|
+
# calendar = AutomaticCalendar.new( wiki ) # Adds a series of calendar pages to the wiki
|
36
|
+
# AutomaticUpcomingEvents.new( wiki, calendar ) # Creates a page with the next weeks events drawn from the calendar pages
|
37
|
+
|
38
|
+
=begin
|
39
|
+
# Example of an automatically generated summary of any new pages whose title starts with 'news'
|
40
|
+
AutomaticSummary.new( wiki,
|
41
|
+
:regexp_for_pages => /^NNews/i,
|
42
|
+
:max_pages_to_show => 10,
|
43
|
+
:pagename => 'Recent News',
|
44
|
+
:lines_to_include => 10,
|
45
|
+
:only_new_pages => true
|
46
|
+
)
|
47
|
+
=end
|
48
|
+
|
49
|
+
=begin
|
50
|
+
# Example of an automatically generated summary of any new pages whose title starts with 'blog'
|
51
|
+
AutomaticSummary.new( wiki,
|
52
|
+
:regexp_for_pages => /^NBlog/i,
|
53
|
+
:max_pages_to_show => 10,
|
54
|
+
:pagename => 'Recent Blog Entries',
|
55
|
+
:only_new_pages => true
|
56
|
+
)
|
57
|
+
=end
|
58
|
+
=begin
|
59
|
+
# Example of an automatically generated summary of all recently updated pages
|
60
|
+
AutomaticSummary.new( wiki,
|
61
|
+
:regexp_for_pages => /.*/i,
|
62
|
+
:max_pages_to_show => 10,
|
63
|
+
:pagename => 'New or Updated Pages',
|
64
|
+
:lines_to_include => 10
|
65
|
+
)
|
66
|
+
=end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
if $0 == __FILE__ then
|
73
|
+
StartSoks::start
|
74
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<span class='pagename'><%= pagename %><%= page.deleted? ? "(Deleted)" : '' %></span>
|
2
|
+
|
3
|
+
<form action='/upload/<%= pagename %>' method=post enctype=multipart/form-data >
|
4
|
+
<input type=hidden name='titleprefix' value='Attached ' />
|
5
|
+
<table>
|
6
|
+
<tr><td>Title:</td><td>Attached <input name='newtitle' size = '52' value='<%= pagename[ 9..-1].strip %>' onClick="this.value == 'Type a title here' ? this.value = '' : true"/></td></tr>
|
7
|
+
<tr><td valign='top'>File:</td><td><input name='file' type=file /></td></tr>
|
8
|
+
<tr><td>Author:</td><td><a href='/<%= person %>'><%= person %></a> Quit browser to log out.</td>
|
9
|
+
<tr><td></td><td><input name=action value='Save changes' type=submit accesskey="S"> <a href='/<%= pagename %>' accesskey="C" >(Cancel)</a> or <a href='/delete/<%= pagename %>' accesskey='D'>(Delete)</a> this page.</td></tr>
|
10
|
+
</table>
|
11
|
+
</form>
|
12
|
+
<hr>
|
13
|
+
<% unless page.empty? %>
|
14
|
+
<p>The most recent change was made by <a href='/<%= page.author %>'><%= page.author %></a> who changed:</p>
|
15
|
+
<%
|
16
|
+
page.changes.each do |change_group|
|
17
|
+
change_group.each do |change|
|
18
|
+
case change[0]
|
19
|
+
when "-" %>
|
20
|
+
<del><%= change[1] %>. <%= change[2] %></del><br/>
|
21
|
+
<% when "+" %>
|
22
|
+
<%= change[1] %>. <%= change[2] %><br/>
|
23
|
+
<%
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
%>
|
28
|
+
<p>
|
29
|
+
<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> or
|
30
|
+
<% if page.watching? person %>
|
31
|
+
<a href='/unwatch/<%= pagename %>' accesskey="E" >(Don't e-mail when this page changes)</a>
|
32
|
+
<% else %>
|
33
|
+
<a href='/watch/<%= pagename %>' accesskey="E" >(E-mail when this page changes)</a>
|
34
|
+
<% end %>
|
35
|
+
</p>
|
36
|
+
<% end %>
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<span class='pagename'><%= pagename %><%= page.deleted? ? "(Deleted)" : '' %></span>
|
2
|
+
|
3
|
+
<form action='/upload/<%= pagename %>' method=post enctype=multipart/form-data >
|
4
|
+
<input type=hidden name='titleprefix' value='Picture of ' />
|
5
|
+
<table>
|
6
|
+
<tr><td>Title:</td><td>Picture of <input name='newtitle' size = '51' value='<%= pagename[ 10..-1].strip %>' onClick="this.value == 'Type a title here' ? this.value = '' : true"/></td></tr>
|
7
|
+
<tr><td valign='top'>File:</td><td><input name='file' type=file /></td></tr>
|
8
|
+
<tr><td>Author:</td><td><a href='/<%= person %>'><%= person %></a> Quit browser to log out.</td>
|
9
|
+
<tr><td></td><td><input name=action value='Save changes' type=submit accesskey="S"> <a href='/<%= pagename %>' accesskey="C" >(Cancel)</a> or <a href='/delete/<%= pagename %>' accesskey='D'>(Delete)</a> this page.</td></tr>
|
10
|
+
</table>
|
11
|
+
</form>
|
12
|
+
<hr>
|
13
|
+
<% unless page.empty? %>
|
14
|
+
<p>The most recent change was made by <a href='/<%= page.author %>'><%= page.author %></a> who changed:</p>
|
15
|
+
<%
|
16
|
+
page.changes.each do |change_group|
|
17
|
+
change_group.each do |change|
|
18
|
+
case change[0]
|
19
|
+
when "-" %>
|
20
|
+
<del><%= change[1] %>. <%= change[2] %></del><br/>
|
21
|
+
<% when "+" %>
|
22
|
+
<%= change[1] %>. <%= change[2] %><br/>
|
23
|
+
<%
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
%>
|
28
|
+
<p>
|
29
|
+
<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> or
|
30
|
+
<% if page.watching? person %>
|
31
|
+
<a href='/unwatch/<%= pagename %>' accesskey="E" >(Don't e-mail when this page changes)</a>
|
32
|
+
<% else %>
|
33
|
+
<a href='/watch/<%= pagename %>' accesskey="E" >(E-mail when this page changes)</a>
|
34
|
+
<% end %>
|
35
|
+
</p>
|
36
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= page.content %>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<span class='pagename'><%= pagename %> <%= page.deleted? ? "(Deleted)" : '' %></span>
|
2
|
+
<form method=post action='/save/<%= pagename %>' >
|
3
|
+
<table>
|
4
|
+
<tr><td>Title:</td><td><input name='newtitle' size = '60' value='<%= pagename %>' onClick="this.value == 'Type a title here' ? this.value = '' : true"/></td></tr>
|
5
|
+
<tr><td valign='top'>Content:</td><td><textarea name='content' rows=30 cols=60 onClick="this.value == 'Type what you want here and click save' ? this.value = '' : true" ><%= page.content %></textarea></td></tr>
|
6
|
+
<tr><td>Author:</td><td><a href='/<%= person %>'><%= person %></a> Quit browser to log out.</td>
|
7
|
+
<tr><td></td><td><input name=action value='Save changes' 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></tr>
|
8
|
+
</table>
|
9
|
+
</form>
|
10
|
+
<hr>
|
11
|
+
<% unless page.empty? %>
|
12
|
+
<p>The most recent change was made by <a href='/<%= page.author %>'><%= page.author %></a> who changed:</p>
|
13
|
+
<%
|
14
|
+
page.changes.each do |change_group|
|
15
|
+
change_group.each do |change|
|
16
|
+
case change[0]
|
17
|
+
when "-" %>
|
18
|
+
<del><%= change[1] %>. <%= change[2] %></del><br/>
|
19
|
+
<% when "+" %>
|
20
|
+
<%= change[1] %>. <%= change[2] %><br/>
|
21
|
+
<%
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
%>
|
26
|
+
<p>
|
27
|
+
<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> or
|
28
|
+
<% if page.watching? person %>
|
29
|
+
<a href='/unwatch/<%= pagename %>' accesskey="E" >(Don't e-mail when this page changes)</a>
|
30
|
+
<% else %>
|
31
|
+
<a href='/watch/<%= pagename %>' accesskey="E" >(E-mail when this page changes)</a>
|
32
|
+
<% end %>
|
33
|
+
</p>
|
34
|
+
<% end %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<span class='pagename'><%= pagename %></span>
|
2
|
+
<div class="undochange">
|
3
|
+
<% page.revisions.reverse_each do |revision| %>
|
4
|
+
<p><b><%= revision.number %>. On <%= revision.created_at %> <a href='/<%= revision.author %>'><%= revision.author %></a> changed:</b> <a href='/rollback/<%= pagename %>?revision=<%= revision.number %>' >(return to this version)</a><br/>
|
5
|
+
<% revision.changes.each do |change_group| %>
|
6
|
+
<% change_group.each do |change|
|
7
|
+
case change[0]
|
8
|
+
when "-" %>
|
9
|
+
<del><%= change[1] %>. <%= change[2] %></del><br/>
|
10
|
+
<% when "+" %>
|
11
|
+
<%= change[1] %>. <%= change[2] %><br/>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
15
|
+
</p>
|
16
|
+
<% end %>
|
17
|
+
<br/>(<a href='/edit/<%= pagename %>' accesskey="R" >Return to editing</a>)
|
18
|
+
</div>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
3
|
+
<channel>
|
4
|
+
<title><%= $SETTINGS[:name] %>:<%= pagename %></title>
|
5
|
+
<link><%= $SETTINGS[:url] %></link>
|
6
|
+
<description><%= $SETTINGS[:description] %></description>
|
7
|
+
<language>en-us</language>
|
8
|
+
<% count = 0 %>
|
9
|
+
<% for revision in page.revisions %>
|
10
|
+
<% count += 1 %>
|
11
|
+
<% break if count > 15 %>
|
12
|
+
<item>
|
13
|
+
<title><%= revision.author %></title>
|
14
|
+
<link><%= $SETTINGS[:url] %>/<%= pagename %></link>
|
15
|
+
<description>
|
16
|
+
<p>
|
17
|
+
<% revision.changes.each do |change_group| %>
|
18
|
+
<% change_group.each do |change|
|
19
|
+
case change[0]
|
20
|
+
when "-" %>
|
21
|
+
<del><%= change[1] %>. <%= change[2] %></del><br/>
|
22
|
+
<% when "+" %>
|
23
|
+
<%= change[1] %>. <%= change[2] %><br/>
|
24
|
+
<% end %>
|
25
|
+
<% end %>
|
26
|
+
<% end %>
|
27
|
+
</p>
|
28
|
+
</description>
|
29
|
+
<dc:date><%= page.created_at.strftime "%a, %e %b %Y %H:%M:%S %Z" %></dc:date>
|
30
|
+
<dc:creator><%= revision.author %></dc:creator>
|
31
|
+
</item>
|
32
|
+
<% end %>
|
33
|
+
</channel>
|
34
|
+
</rss>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<span class='pagename'><%= pagename %></span>
|
2
|
+
<h1>Results of Search for “<%= pagename %>”</h1>
|
3
|
+
<% unless title_results.empty? %>
|
4
|
+
<h2>Matches in the titles of pages</h2>
|
5
|
+
<ul>
|
6
|
+
<% title_results.each do |name, page| %>
|
7
|
+
<li><a href='/<%= name %>' ><%= name %></a></li>
|
8
|
+
<% end %>
|
9
|
+
</ul>
|
10
|
+
<% end %>
|
11
|
+
<% unless text_results.empty? %>
|
12
|
+
<h2>Matches in the text of pages</h2>
|
13
|
+
<ul>
|
14
|
+
<% text_results.each do |name, page| %>
|
15
|
+
<li><a href='/<%= name %>' ><%= name %></a></li>
|
16
|
+
<% end %>
|
17
|
+
</ul>
|
18
|
+
<% end %>
|
19
|
+
<br/>(<a href='/edit/<%= pagename %>' accesskey="E" >Create a page titled “<%= pagename %>”</a>)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title><%= pagename %></title>
|
4
|
+
<style type="text/css" media="screen">@import "/attachment/stylesheet.css";</style>
|
5
|
+
<link rel="alternate" type="application/rss+xml" title="RSS" href="/rss/<%= pagename %>">
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<div id="Content">
|
9
|
+
<%= content_of_page %>
|
10
|
+
</div>
|
11
|
+
<div id="Menu">
|
12
|
+
<a href='/Home Page' accesskey="H" ><img width=149 src='/attachment/logo.png' alt='<%= @wikiname %>' border='0' /></a>
|
13
|
+
<form method=GET action='/find/<%= pagename %>' >
|
14
|
+
<input name=regex value='' size=20 />
|
15
|
+
<input name=action value='search' type=submit>
|
16
|
+
</form>
|
17
|
+
<a href='/site index' accesskey="I" >Site Index</a>
|
18
|
+
<a href='/recent changes to this site' accesskey="R" >Recent Changes</a>
|
19
|
+
<% if page %>
|
20
|
+
<% page.links_to.each do |linkedpage| %>
|
21
|
+
<a href='/<%= linkedpage.name %>'><%= linkedpage.name %></a>
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
<br/>
|
25
|
+
<a href='/edit/Type a title here'>Add a new page</a>
|
26
|
+
<a href='/edit/Picture of Type a title here'>Add a new picture</a>
|
27
|
+
<a href='/edit/Attached Type a title here'>Attach a new file</a>
|
28
|
+
<br/>
|
29
|
+
<span class='disclaimer'>
|
30
|
+
This website can be edited by anyone. It is therefore unlikely to represent the views of anyone named.
|
31
|
+
</span>
|
32
|
+
</div>
|
33
|
+
</body>
|
34
|
+
</html>
|
metadata
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.8.4
|
3
|
+
specification_version: 1
|
4
|
+
name: Soks
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.0.2
|
7
|
+
date: 2005-01-11
|
8
|
+
summary: Yet another wiki.
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
- contrib
|
12
|
+
email: tamc@rubyforge.org
|
13
|
+
homepage: http://rubyforge.org/projects/soks/
|
14
|
+
rubyforge_project:
|
15
|
+
description:
|
16
|
+
autorequire: soks
|
17
|
+
default_executable:
|
18
|
+
bindir: bin
|
19
|
+
has_rdoc: false
|
20
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
21
|
+
requirements:
|
22
|
+
-
|
23
|
+
- ">"
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 0.0.0
|
26
|
+
version:
|
27
|
+
platform: ruby
|
28
|
+
authors:
|
29
|
+
- Tom Counsell
|
30
|
+
files:
|
31
|
+
- bin/soks-create-wiki.rb
|
32
|
+
- contrib/diff
|
33
|
+
- contrib/diff_licence.txt
|
34
|
+
- contrib/redcloth-2.0.11.rb
|
35
|
+
- contrib/redcloth-3.0.1.rb
|
36
|
+
- contrib/redcloth_license.txt
|
37
|
+
- contrib/diff/lcs
|
38
|
+
- contrib/diff/lcs.rb
|
39
|
+
- contrib/diff/lcs/array.rb
|
40
|
+
- contrib/diff/lcs/block.rb
|
41
|
+
- contrib/diff/lcs/callbacks.rb
|
42
|
+
- contrib/diff/lcs/change.rb
|
43
|
+
- contrib/diff/lcs/hunk.rb
|
44
|
+
- contrib/diff/lcs/ldiff.rb
|
45
|
+
- contrib/diff/lcs/string.rb
|
46
|
+
- lib/authenticators.rb
|
47
|
+
- lib/soks-helpers.rb
|
48
|
+
- lib/soks-model.rb
|
49
|
+
- lib/soks-servlet.rb
|
50
|
+
- lib/soks-utils.rb
|
51
|
+
- lib/soks-view.rb
|
52
|
+
- lib/soks.rb
|
53
|
+
- template/attachment
|
54
|
+
- template/content
|
55
|
+
- template/start.rb
|
56
|
+
- template/views
|
57
|
+
- template/attachment/logo.png
|
58
|
+
- template/attachment/stylesheet.css
|
59
|
+
- template/content/home%20page.textile
|
60
|
+
- template/content/How%20to%20export%20a%20site%20from%20this%20wiki.textile
|
61
|
+
- template/content/How%20to%20hack%20soks.textile
|
62
|
+
- template/content/How%20to%20import%20a%20site%20from%20instiki.textile
|
63
|
+
- template/content/Improving%20the%20style%20of%20this%20wiki.textile
|
64
|
+
- template/content/Picture%20of%20a%20pair%20of%20soks.textile
|
65
|
+
- template/content/Pointers%20on%20adjusting%20the%20settings.textile
|
66
|
+
- template/content/Pointers%20on%20how%20to%20use%20this%20wiki.textile
|
67
|
+
- template/content/Recent%20Changes%20to%20This%20Site.textile
|
68
|
+
- template/content/Soks%20Licence.textile
|
69
|
+
- template/views/AttachmentPage_edit.rhtml
|
70
|
+
- template/views/frame.rhtml
|
71
|
+
- template/views/ImagePage_edit.rhtml
|
72
|
+
- template/views/Page_content.rhtml
|
73
|
+
- template/views/Page_edit.rhtml
|
74
|
+
- template/views/Page_print.rhtml
|
75
|
+
- template/views/Page_revisions.rhtml
|
76
|
+
- template/views/Page_rss.rhtml
|
77
|
+
- template/views/Page_search_results.rhtml
|
78
|
+
- template/views/Page_view.rhtml
|
79
|
+
- LICENSE.txt
|
80
|
+
- README.txt
|
81
|
+
test_files: []
|
82
|
+
rdoc_options: []
|
83
|
+
extra_rdoc_files: []
|
84
|
+
executables:
|
85
|
+
- soks-create-wiki.rb
|
86
|
+
extensions: []
|
87
|
+
requirements: []
|
88
|
+
dependencies: []
|