Changesets can be listed by changeset number.
The Git repository is here.
- Revision:
- 2
- Log:
Initial import of Instiki 0.11.0 sources from a downloaded Tarball.
Instiki is a Ruby On Rails based Wiki clone.
- Author:
- adh
- Date:
- Sat Jul 22 14:54:51 +0100 2006
- Size:
- 3003 Bytes
1 | class Wiki |
2 | |
3 | cattr_accessor :storage_path, :logger |
4 | self.storage_path = "#{RAILS_ROOT}/storage/" |
5 | self.logger = RAILS_DEFAULT_LOGGER |
6 | |
7 | def authenticate(password) |
8 | password == (system.password || 'instiki') |
9 | end |
10 | |
11 | def create_web(name, address, password = nil) |
12 | @webs = nil |
13 | Web.create(:name => name, :address => address, :password => password) |
14 | end |
15 | |
16 | def delete_web(address) |
17 | web = Web.find_by_address(address) |
18 | unless web.nil? |
19 | web.destroy |
20 | @webs = nil |
21 | end |
22 | end |
23 | |
24 | def edit_web(old_address, new_address, name, markup, color, additional_style, safe_mode = false, |
25 | password = nil, published = false, brackets_only = false, count_pages = false, |
26 | allow_uploads = true, max_upload_size = nil) |
27 | |
28 | if not (web = Web.find_by_address(old_address)) |
29 | raise Instiki::ValidationError.new("Web with address '#{old_address}' does not exist") |
30 | end |
31 | |
32 | web.update_attributes(:address => new_address, :name => name, :markup => markup, :color => color, |
33 | :additional_style => additional_style, :safe_mode => safe_mode, :password => password, :published => published, |
34 | :brackets_only => brackets_only, :count_pages => count_pages, :allow_uploads => allow_uploads, :max_upload_size => max_upload_size) |
35 | @webs = nil |
36 | raise Instiki::ValidationError.new("There is already a web with address '#{new_address}'") unless web.errors.on(:address).nil? |
37 | web |
38 | end |
39 | |
40 | def read_page(web_address, page_name) |
41 | self.class.logger.debug "Reading page '#{page_name}' from web '#{web_address}'" |
42 | web = Web.find_by_address(web_address) |
43 | if web.nil? |
44 | self.class.logger.debug "Web '#{web_address}' not found" |
45 | return nil |
46 | else |
47 | page = web.pages.find(:first, :conditions => ['name = ?', page_name]) |
48 | self.class.logger.debug "Page '#{page_name}' #{page.nil? ? 'not' : ''} found" |
49 | return page |
50 | end |
51 | end |
52 | |
53 | def remove_orphaned_pages(web_address) |
54 | web = Web.find_by_address(web_address) |
55 | web.remove_pages(web.select.orphaned_pages) |
56 | end |
57 | |
58 | def revise_page(web_address, page_name, content, revised_at, author, renderer) |
59 | page = read_page(web_address, page_name) |
60 | page.revise(content, revised_at, author, renderer) |
61 | end |
62 | |
63 | def rollback_page(web_address, page_name, revision_number, time, author_id = nil) |
64 | page = read_page(web_address, page_name) |
65 | page.rollback(revision_number, time, author_id) |
66 | end |
67 | |
68 | def setup(password, web_name, web_address) |
69 | system.update_attribute(:password, password) |
70 | create_web(web_name, web_address) |
71 | end |
72 | |
73 | def system |
74 | @system ||= (System.find(:first) || System.create) |
75 | end |
76 | |
77 | def setup? |
78 | Web.count > 0 |
79 | end |
80 | |
81 | def webs |
82 | @webs ||= Web.find(:all).inject({}) { |webs, web| webs.merge(web.address => web) } |
83 | end |
84 | |
85 | def storage_path |
86 | self.class.storage_path |
87 | end |
88 | |
89 | def write_page(web_address, page_name, content, written_on, author, renderer) |
90 | Web.find_by_address(web_address).add_page(page_name, content, written_on, author, renderer) |
91 | end |
92 | end |