clwiki 2.0.0

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.
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: []