clwiki 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. data/LICENSE +31 -0
  2. data/Rakefile +53 -0
  3. data/app/assets/javascripts/cl_wiki/application.js +29 -0
  4. data/app/assets/stylesheets/cl_wiki/application.css +103 -0
  5. data/app/controllers/cl_wiki/application_controller.rb +4 -0
  6. data/app/controllers/cl_wiki/page_controller.rb +106 -0
  7. data/app/helpers/cl_wiki/application_helper.rb +4 -0
  8. data/app/views/cl_wiki/page/edit.html.erb +8 -0
  9. data/app/views/cl_wiki/page/find.html.erb +27 -0
  10. data/app/views/cl_wiki/page/recent.html.erb +4 -0
  11. data/app/views/cl_wiki/page/recent.rss.builder +18 -0
  12. data/app/views/cl_wiki/page/show.html.erb +1 -0
  13. data/app/views/layouts/cl_wiki/application.html.erb +14 -0
  14. data/config/clwiki.yml +73 -0
  15. data/config/initializers/clwiki.rb +9 -0
  16. data/config/routes.rb +15 -0
  17. data/lib/cl_wiki.rb +12 -0
  18. data/lib/cl_wiki/configuration.rb +171 -0
  19. data/lib/cl_wiki/engine.rb +5 -0
  20. data/lib/cl_wiki/file.rb +171 -0
  21. data/lib/cl_wiki/find_in_file.rb +33 -0
  22. data/lib/cl_wiki/format/format.blockquote.rb +15 -0
  23. data/lib/cl_wiki/format/format.graphviz.digraph.rb +16 -0
  24. data/lib/cl_wiki/format/format.opml.rb +105 -0
  25. data/lib/cl_wiki/format/format.pre.blockquote.rb +15 -0
  26. data/lib/cl_wiki/format/format.simpletable.rb +25 -0
  27. data/lib/cl_wiki/index.rb +455 -0
  28. data/lib/cl_wiki/page.rb +516 -0
  29. data/lib/cl_wiki/tools/cron.reminders.rb +241 -0
  30. data/lib/cl_wiki/tools/movepages.rb +27 -0
  31. data/lib/cl_wiki/tools/pagestomove.txt +56 -0
  32. data/lib/cl_wiki/tools/rublog/clWiki.rb +62 -0
  33. data/lib/cl_wiki/tools/rublog/readme.txt +2 -0
  34. data/lib/cl_wiki/tools/singlepage.rb +58 -0
  35. data/lib/cl_wiki/tools/test/singlepagetest.rb +9 -0
  36. data/lib/cl_wiki/tools/thunderbird.rb +23 -0
  37. data/lib/cl_wiki/version.rb +3 -0
  38. data/test/dummy/README.rdoc +259 -0
  39. data/test/dummy/Rakefile +6 -0
  40. data/test/dummy/app/assets/javascripts/application.js +16 -0
  41. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  42. data/test/dummy/app/controllers/application_controller.rb +5 -0
  43. data/test/dummy/app/helpers/application_helper.rb +2 -0
  44. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  45. data/test/dummy/config.ru +4 -0
  46. data/test/dummy/config/application.rb +37 -0
  47. data/test/dummy/config/boot.rb +9 -0
  48. data/test/dummy/config/database.yml +25 -0
  49. data/test/dummy/config/environment.rb +5 -0
  50. data/test/dummy/config/environments/development.rb +34 -0
  51. data/test/dummy/config/environments/production.rb +81 -0
  52. data/test/dummy/config/environments/test.rb +36 -0
  53. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  54. data/test/dummy/config/initializers/inflections.rb +16 -0
  55. data/test/dummy/config/initializers/locale.rb +7 -0
  56. data/test/dummy/config/initializers/mime_types.rb +5 -0
  57. data/test/dummy/config/initializers/secret_token.rb +12 -0
  58. data/test/dummy/config/initializers/session_store.rb +3 -0
  59. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  60. data/test/dummy/config/locales/en.yml +23 -0
  61. data/test/dummy/config/routes.rb +5 -0
  62. data/test/dummy/db/development.sqlite3 +0 -0
  63. data/test/dummy/log/development.log +1963 -0
  64. data/test/dummy/log/test.log +1340 -0
  65. data/test/dummy/public/404.html +27 -0
  66. data/test/dummy/public/422.html +26 -0
  67. data/test/dummy/public/500.html +26 -0
  68. data/test/dummy/public/favicon.ico +0 -0
  69. data/test/dummy/script/rails +6 -0
  70. data/test/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  71. data/test/dummy/tmp/cache/assets/development/sprockets/17ea26cbf693e610505bdc24be534847 +0 -0
  72. data/test/dummy/tmp/cache/assets/development/sprockets/1883f3d938430da389005555d27c0bad +0 -0
  73. data/test/dummy/tmp/cache/assets/development/sprockets/1b9132b83b822937e80ef987f7da1760 +0 -0
  74. data/test/dummy/tmp/cache/assets/development/sprockets/259fb44b87b29348087957b4937a1953 +0 -0
  75. data/test/dummy/tmp/cache/assets/development/sprockets/37f8e4f0491b6401433af823dfb471d9 +0 -0
  76. data/test/dummy/tmp/cache/assets/development/sprockets/48d7a2c40083020f9e7d97d4d73f26fa +0 -0
  77. data/test/dummy/tmp/cache/assets/development/sprockets/4b0bfb6eb9d6983eb9defa58dd96dae4 +0 -0
  78. data/test/dummy/tmp/cache/assets/development/sprockets/4da11f1195532cd7b80f2dde7cf843d5 +0 -0
  79. data/test/dummy/tmp/cache/assets/development/sprockets/57347ee373d74c87e1515a059c701085 +0 -0
  80. data/test/dummy/tmp/cache/assets/development/sprockets/61b40e54192bf61d97ce2aef71e7d694 +0 -0
  81. data/test/dummy/tmp/cache/assets/development/sprockets/633b01c5a65fcd6457baf30d1cc94148 +0 -0
  82. data/test/dummy/tmp/cache/assets/development/sprockets/6ad8bb345cc43acfca78c043b7bfefae +0 -0
  83. data/test/dummy/tmp/cache/assets/development/sprockets/87a335a43cb68a253dea2b6c0269a4d6 +0 -0
  84. data/test/dummy/tmp/cache/assets/development/sprockets/8a38b2f4390e68175dae4b4b1c144e2e +0 -0
  85. data/test/dummy/tmp/cache/assets/development/sprockets/8ddc1a668acec35c2707ebc47768f59c +0 -0
  86. data/test/dummy/tmp/cache/assets/development/sprockets/8f5ab7b6f73a1e9f16421b299134e39a +0 -0
  87. data/test/dummy/tmp/cache/assets/development/sprockets/9835aec4bc0277b8f02d0e86c977fdba +0 -0
  88. data/test/dummy/tmp/cache/assets/development/sprockets/ae4f771558859f9c120a0f22328e8521 +0 -0
  89. data/test/dummy/tmp/cache/assets/development/sprockets/afed0eaa6fcf7a263498a08a5cc02cf0 +0 -0
  90. data/test/dummy/tmp/cache/assets/development/sprockets/be786e5567855cdc6817603725fd1b8d +0 -0
  91. data/test/dummy/tmp/cache/assets/development/sprockets/bf9b02df32690fb2a936818715d611f3 +0 -0
  92. data/test/dummy/tmp/cache/assets/development/sprockets/c2bf9d91a6a2786263b9912b948f435d +0 -0
  93. data/test/dummy/tmp/cache/assets/development/sprockets/ce4c918439a53cb89d02313ed990d5de +0 -0
  94. data/test/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  95. data/test/dummy/tmp/cache/assets/development/sprockets/d9c791f08c547f30854ad746a89b0bb5 +0 -0
  96. data/test/dummy/tmp/cache/assets/development/sprockets/ddc3a7b5173ff5c911a53004b56e4305 +0 -0
  97. data/test/dummy/tmp/cache/assets/development/sprockets/dfed1391742203d15f08cb07173bccba +0 -0
  98. data/test/dummy/tmp/cache/assets/development/sprockets/e282b6bdaa0e070754f8558b9de5e417 +0 -0
  99. data/test/dummy/tmp/cache/assets/development/sprockets/f0e957c30443ade693f73ff470f0f894 +0 -0
  100. data/test/dummy/tmp/cache/assets/development/sprockets/f6b3cbb9c04d5af74d780464c9a34ee5 +0 -0
  101. data/test/dummy/tmp/cache/assets/development/sprockets/fb41fedee86fd2d10ddd938bf5d68eb7 +0 -0
  102. data/test/dummy/tmp/cache/assets/test/sprockets/1883f3d938430da389005555d27c0bad +0 -0
  103. data/test/dummy/tmp/cache/assets/test/sprockets/48d7a2c40083020f9e7d97d4d73f26fa +0 -0
  104. data/test/dummy/tmp/cache/assets/test/sprockets/61b40e54192bf61d97ce2aef71e7d694 +0 -0
  105. data/test/dummy/tmp/cache/assets/test/sprockets/8f5ab7b6f73a1e9f16421b299134e39a +0 -0
  106. data/test/dummy/tmp/cache/assets/test/sprockets/9835aec4bc0277b8f02d0e86c977fdba +0 -0
  107. data/test/dummy/tmp/cache/assets/test/sprockets/ae4f771558859f9c120a0f22328e8521 +0 -0
  108. data/test/dummy/tmp/cache/assets/test/sprockets/be786e5567855cdc6817603725fd1b8d +0 -0
  109. data/test/dummy/tmp/cache/assets/test/sprockets/c2bf9d91a6a2786263b9912b948f435d +0 -0
  110. data/test/dummy/tmp/cache/assets/test/sprockets/ce4c918439a53cb89d02313ed990d5de +0 -0
  111. data/test/dummy/tmp/cache/assets/test/sprockets/e282b6bdaa0e070754f8558b9de5e417 +0 -0
  112. data/test/dummy/tmp/cache/assets/test/sprockets/f0e957c30443ade693f73ff470f0f894 +0 -0
  113. data/test/dummy/tmp/cache/assets/test/sprockets/f6b3cbb9c04d5af74d780464c9a34ee5 +0 -0
  114. data/test/dummy/tmp/testrep/FooBar.txt +1 -0
  115. data/test/dummy/tmp/testrep/FrontPage.txt +1 -0
  116. data/test/dummy/tmp/testrep/QuuxBaz.txt +1 -0
  117. data/test/dummy/wikirep/AboutClWiki.txt +31 -0
  118. data/test/dummy/wikirep/ChrisMorris.txt +4 -0
  119. data/test/dummy/wikirep/DotTest.txt +6 -0
  120. data/test/dummy/wikirep/FooBar.txt +4 -0
  121. data/test/dummy/wikirep/FooBarQuux.txt +4 -0
  122. data/test/dummy/wikirep/FrontPage.txt +14 -0
  123. data/test/dummy/wikirep/HtmlAreaTest.txt +4 -0
  124. data/test/dummy/wikirep/PreTagsTest.txt +27 -0
  125. data/test/dummy/wikirep/TheMan.txt +4 -0
  126. data/test/helpers/wiki_helper_test.rb +4 -0
  127. data/test/lib/clwiki/clwiki_test_helper.rb +3 -0
  128. data/test/lib/clwiki/file_test.rb +93 -0
  129. data/test/lib/clwiki/find_in_file_test.rb +111 -0
  130. data/test/lib/clwiki/index_test.rb +32 -0
  131. data/test/lib/clwiki/page_test.rb +239 -0
  132. data/test/lib/clwiki/test_base.rb +25 -0
  133. data/test/test_helper.rb +15 -0
  134. metadata +312 -0
data/LICENSE ADDED
@@ -0,0 +1,31 @@
1
+ ---------------------------------------------------------------------------
2
+ Copyright (c) 2001-2013, Chris Morris
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice,
9
+ this list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+
15
+ 3. Neither the names Chris Morris, cLabs nor the names of contributors to
16
+ this software may be used to endorse or promote products derived from this
17
+ software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
20
+ IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
23
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26
+ OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27
+ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ --------------------------------------------------------------------------
31
+ (based on BSD Open Source License)
data/Rakefile ADDED
@@ -0,0 +1,53 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'ClWiki'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+ Bundler::GemHelper.install_tasks
21
+
22
+ require 'rake/testtask'
23
+
24
+ Rake::TestTask.new(:test) do |t|
25
+ t.libs << 'lib'
26
+ t.libs << 'test'
27
+ t.pattern = 'test/**/*_test.rb'
28
+ t.verbose = false
29
+ end
30
+
31
+ # Customized additions to the Rails Engine Rakefile below,
32
+ # since the current frankenstein setup has the core clWiki
33
+ # with Test::Unit tests and the new Rails Engine bits with RSpec.
34
+
35
+ RSpec::Core::RakeTask.new(:spec)
36
+
37
+ task :tests do
38
+ errors = %w(test spec).collect do |task|
39
+ begin
40
+ Rake::Task[task].invoke
41
+ nil
42
+ rescue => e
43
+ { task: task, exception: e }
44
+ end
45
+ end.compact
46
+
47
+ if errors.any?
48
+ puts errors.map { |e| "Errors running #{e[:task]}! #{e[:exception].inspect}" }.join("\n")
49
+ abort
50
+ end
51
+ end
52
+
53
+ task default: :tests
@@ -0,0 +1,29 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
+ // GO AFTER THE REQUIRES BELOW.
12
+ //
13
+ //= require jquery
14
+ //= require jquery_ujs
15
+ //= require turbolinks
16
+ //= require_tree .
17
+
18
+
19
+ function findFocus() {
20
+ if ($('.findResults li').length > 0) {
21
+ $('.findResults li:first a').focus();
22
+ } else {
23
+ $(".findForm input[type='text']").focus();
24
+ }
25
+ }
26
+
27
+ // to cope with rails 4 turbolinks
28
+ $(document).ready(findFocus);
29
+ $(document).on('page:change', findFocus);
@@ -0,0 +1,103 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
11
+
12
+
13
+ */
14
+
15
+
16
+ body {
17
+ font-family: "Verdana", Arial, serif;
18
+ }
19
+
20
+ a:link {
21
+ color: #00f;
22
+ text-decoration: none;
23
+ }
24
+
25
+ a:visited {
26
+ color: #00f;
27
+ }
28
+
29
+ a:hover {
30
+ color: #77f;
31
+ }
32
+
33
+ a:active {
34
+ color: #77f;
35
+ }
36
+
37
+ .wikiBody {
38
+ font-size: 90%;
39
+ padding: 20px 20px 20px 20px;
40
+ }
41
+
42
+ .wikiBody pre {
43
+ font-size: 125%;
44
+ }
45
+
46
+ .wikiPageData {
47
+ font-size: 80%;
48
+ font-style: italic;
49
+ }
50
+
51
+ .wikiHeader {
52
+ font-size: 110%;
53
+ margin-bottom: 5px;
54
+ }
55
+
56
+ .wikiFooter {
57
+ font-size: 90%;
58
+ margin-bottom: 5px;
59
+ }
60
+
61
+ .wikiFooter ul {
62
+ list-style-type: none;
63
+ padding: 0px;
64
+ }
65
+
66
+ .wikiFooter li {
67
+ display: inline;
68
+ padding-right: 10px;
69
+ }
70
+
71
+ .findInput {
72
+ width: 40%;
73
+ margin: 0 auto;
74
+ text-align: center;
75
+ }
76
+
77
+ .findInput div {
78
+ float: left;
79
+ text-align: left;
80
+ padding: 20px;
81
+ }
82
+
83
+ .findForm {
84
+ text-align: right;
85
+ }
86
+
87
+ .findDetails {
88
+ text-align: left;
89
+ font-size: 80%;
90
+ padding-bottom: 10px;
91
+ }
92
+
93
+ .findResults {
94
+ text-align: center;
95
+ width: 50%;
96
+ margin: auto;
97
+ }
98
+
99
+ .findResults li {
100
+ list-style-type: none;
101
+ padding: 15px;
102
+ float: left;
103
+ }
@@ -0,0 +1,4 @@
1
+ module ClWiki
2
+ class ApplicationController < ActionController::Base
3
+ end
4
+ end
@@ -0,0 +1,106 @@
1
+ require 'cl_wiki/page'
2
+
3
+ module ClWiki
4
+ class PageController < ApplicationController
5
+ before_filter :redirect_legacy_cgi_urls
6
+ before_filter :initialize_formatter
7
+ before_filter :assign_page_name
8
+ before_filter :redirect_to_front_page_if_bad_name, :only => :show
9
+
10
+ def show
11
+ @page = ClWiki::Page.new(@page_name)
12
+ @page.read_content
13
+ @page
14
+ end
15
+
16
+ def edit
17
+ @page = ClWiki::Page.new(@page_name)
18
+ @page.read_raw_content
19
+ @page
20
+ end
21
+
22
+ def update
23
+ @page = ClWiki::Page.new(@page_name)
24
+ @page.update_content(params[:page_content], Time.at(params[:client_mod_time].to_s.to_i))
25
+ redirect_to params[:save_and_edit] ? page_edit_url(:page_name => @page.full_name.strip_slash_prefix) : page_show_url(:page_name => @page.full_name.strip_slash_prefix)
26
+ end
27
+
28
+ def find
29
+ @formatter = ClWiki::PageFormatter.new
30
+ @search_text = params[:search_text]
31
+ @results = []
32
+ if @search_text
33
+ hits = search(@search_text)
34
+
35
+ hits.each do |full_name|
36
+ @formatter.fullName = full_name
37
+ @results << "#{@formatter.convertToLink(full_name)}"
38
+ end
39
+ end
40
+ end
41
+
42
+ def search(text)
43
+ case $wiki_conf.useIndex
44
+ when ClWiki::Configuration::USE_INDEX_NO
45
+ finder = FindInFile.new($wiki_path)
46
+ finder.find(text)
47
+ finder.files.collect do |filename|
48
+ filename.sub($wikiPageExt, '')
49
+ end
50
+ else
51
+ ClWiki::IndexClient.new.search(text)
52
+ end
53
+ end
54
+
55
+ def recent
56
+ finder = FindInFile.new($wiki_path)
57
+ finder.find($wiki_conf.publishTag || '.')
58
+ @pages = finder.files.collect do |filename|
59
+ p = ClWiki::Page.new(filename.sub($wikiPageExt, ''))
60
+ p.read_page_attributes
61
+ p
62
+ end
63
+ @pages = @pages.sort { |a, b| b.mtime <=> a.mtime }[0..9]
64
+ without_header_and_footer = false
65
+ @pages.each { |p| p.read_content(without_header_and_footer) }
66
+
67
+ respond_to do |format|
68
+ format.html
69
+ format.rss { render :layout => false }
70
+ end
71
+ end
72
+
73
+ def front_page_name
74
+ 'FrontPage'
75
+ end
76
+
77
+ def redirect_legacy_cgi_urls
78
+ if request.fullpath.start_with?(legacy_path)
79
+ page_name = (params[:page] || front_page_name).split('/')[-1]
80
+ case
81
+ when request.query_parameters.include?('edit')
82
+ redirect_to page_edit_url(:page_name => page_name)
83
+ else
84
+ redirect_to page_show_url(:page_name => page_name)
85
+ end
86
+ end
87
+ end
88
+
89
+ def assign_page_name
90
+ @page_name = params[:page_name]
91
+ @page_name = @page_name.ensure_slash_prefix if @page_name
92
+ end
93
+
94
+ def redirect_to_front_page_if_bad_name
95
+ if ((@page_name.blank?) || (!@formatter.is_wiki_name?(@page_name))) ||
96
+ (!$wiki_conf.editable && !ClWiki::Page.page_exists?(@page_name.ensure_slash_prefix))
97
+ redirect_to page_show_url(:page_name => front_page_name)
98
+ return
99
+ end
100
+ end
101
+
102
+ def initialize_formatter
103
+ @formatter = ClWiki::PageFormatter.new
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,4 @@
1
+ module ClWiki
2
+ module ApplicationHelper
3
+ end
4
+ end
@@ -0,0 +1,8 @@
1
+ <%= form_tag(page_show_path(:page_name => @page.full_name)) do %>
2
+ <%= hidden_field_tag 'client_mod_time', @page.mtime.to_i.to_s %>
3
+
4
+ <%= text_area_tag 'page_content', CGI.escapeHTML(@page.raw_content), rows: $wiki_conf.edit_rows, cols: $wiki_conf.edit_cols %>
5
+ <br/>
6
+ <%= submit_tag 'Save', name: 'save' %>
7
+ <%= submit_tag 'Save and Continue Editing', name: 'save_and_edit' %>
8
+ <% end %>
@@ -0,0 +1,27 @@
1
+ <%= @formatter.header("Find").html_safe %>
2
+
3
+ <div class='findInput'>
4
+ <div class='findForm'>
5
+ <%= form_tag(page_find_path) do %>
6
+ <%= text_field_tag 'search_text', @search_text %>
7
+ <%= submit_tag 'Find', name: 'find' %>
8
+ <% end %>
9
+ </div>
10
+
11
+ <div class='findDetails'>
12
+ <span>"this that" => <i><b>this</b></i> and <b><i>that</i></b></span><br/>
13
+ <span>"the" => <i><b>the</b></i>, <i><b>the</b>ater</i>, <i>soo<b>the</b></i>, <i>o<b>the</b>r</i></span>
14
+ </div>
15
+ </div>
16
+
17
+ <div style='clear: left'></div>
18
+
19
+ <div class='findResults'>
20
+ <ul>
21
+ <% @results.each do |result| %>
22
+ <li><%= result.html_safe %></li>
23
+ <% end %>
24
+ </ul>
25
+ </div>
26
+
27
+ <%= @formatter.footer("Find").html_safe %>
@@ -0,0 +1,4 @@
1
+ <% @pages.each do |page| %>
2
+ <%= @formatter.convertToLink(page.name).html_safe %>
3
+ <%= page.content.html_safe %>
4
+ <% end %>
@@ -0,0 +1,18 @@
1
+ xml.instruct! :xml, :version => "1.0"
2
+ xml.rss :version => "2.0" do
3
+ xml.channel do
4
+ xml.title "clWiki"
5
+ xml.description "clWiki"
6
+ xml.link root_url
7
+
8
+ for page in @pages
9
+ xml.item do
10
+ xml.title page.name
11
+ xml.description page.content
12
+ xml.pubDate page.mtime.to_s(:rfc822)
13
+ xml.link page_show_url(:page_name => page.name)
14
+ xml.guid page_show_url(:page_name => page.name)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1 @@
1
+ <%= @page.content.html_safe %>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>ClWiki</title>
5
+ <%= stylesheet_link_tag "cl_wiki/application", media: "all", "data-turbolinks-track" => true %>
6
+ <%= javascript_include_tag "cl_wiki/application", "data-turbolinks-track" => true %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
data/config/clwiki.yml ADDED
@@ -0,0 +1,73 @@
1
+ production:
2
+ # path to the root directory that stores the page files
3
+ wiki_path: wikirep
4
+
5
+ # useIndex can be one of the three numbers:
6
+ # 0 No Index
7
+ # 1 DRb Index Server
8
+ # 2 Local Index Server
9
+
10
+ useIndex: 0
11
+
12
+ # useIndexForPageExists determines if the index is referenced for
13
+ # determining if a page exists rather than querying the file system. In
14
+ # some cases, the file system (due to OS caching and whatnot) outperforms
15
+ # the index. This option is ignored if useIndex is set to No Index.
16
+
17
+ useIndexForPageExists: false
18
+
19
+ # the port the DRb Index Server uses. This setting is irrelevant if
20
+ # useIndex is anything other than 1
21
+
22
+ # indexPort: 9111
23
+
24
+ # set this to false for a read-only wiki. Useful with Blogki
25
+
26
+ editable: false
27
+
28
+ # enable this option to use an external style sheet
29
+
30
+ # cssHref http://www.my.domain/stylesheet.css
31
+
32
+ # enable this option to have the wiki rendered in a template. See the
33
+ # sample.template.htm file for how to use this option. (NOTE: this is a
34
+ # BETA option -- probably not even a sample.template.htm included in the
35
+ # distribution)
36
+
37
+ # template mytemplate.htm
38
+
39
+ # If you want to restrict the Recent view to only published pages, you
40
+ # can configure a custom tag here. If this isn't defined, then every
41
+ # page will appear on the Recent view.
42
+ #
43
+ # publishTag <publish>
44
+
45
+ # showSourceLink can be turned on to add a page link in the footer that
46
+ # is a file:// url direct to the raw page. Default is false.
47
+ #
48
+ # showSourceLink true
49
+
50
+ # time format for display of last page update
51
+ #
52
+ page_update_format: '%B %d, %Y'
53
+
54
+ # Add directories containing optional custom formatters here.
55
+ #
56
+ custom_formatter_load_path: []
57
+
58
+ test:
59
+ wiki_path: tmp/testrep
60
+ useIndex: 0
61
+ useIndexForPageExists: false
62
+ editable: true
63
+ page_update_format: '%B %d, %Y'
64
+ custom_formatter_load_path: []
65
+
66
+ development:
67
+ # path to the root directory that stores the page files
68
+ wiki_path: wikirep
69
+ useIndex: 0
70
+ useIndexForPageExists: false
71
+ editable: true
72
+ page_update_format: '%B %d, %Y'
73
+ custom_formatter_load_path: []