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:
- 2615 Bytes
1 | class WikiReference < ActiveRecord::Base |
2 | |
3 | LINKED_PAGE = 'L' |
4 | WANTED_PAGE = 'W' |
5 | INCLUDED_PAGE = 'I' |
6 | CATEGORY = 'C' |
7 | AUTHOR = 'A' |
8 | FILE = 'F' |
9 | WANTED_FILE = 'E' |
10 | |
11 | belongs_to :page |
12 | validates_inclusion_of :link_type, :in => [LINKED_PAGE, WANTED_PAGE, INCLUDED_PAGE, CATEGORY, AUTHOR, FILE, WANTED_FILE] |
13 | |
14 | # FIXME all finders below MUST restrict their results to pages belonging to a particular web |
15 | |
16 | def self.link_type(web, page_name) |
17 | web.has_page?(page_name) ? LINKED_PAGE : WANTED_PAGE |
18 | end |
19 | |
20 | def self.pages_that_reference(page_name) |
21 | query = 'SELECT name FROM pages JOIN wiki_references ON pages.id = wiki_references.page_id ' + |
22 | 'WHERE wiki_references.referenced_name = ?' + |
23 | "AND wiki_references.link_type in ('#{LINKED_PAGE}', '#{WANTED_PAGE}', '#{INCLUDED_PAGE}')" |
24 | names = connection.select_all(sanitize_sql([query, page_name])).map { |row| row['name'] } |
25 | end |
26 | |
27 | def self.pages_that_link_to(page_name) |
28 | query = 'SELECT name FROM pages JOIN wiki_references ON pages.id = wiki_references.page_id ' + |
29 | 'WHERE wiki_references.referenced_name = ? ' + |
30 | "AND wiki_references.link_type in ('#{LINKED_PAGE}', '#{WANTED_PAGE}')" |
31 | names = connection.select_all(sanitize_sql([query, page_name])).map { |row| row['name'] } |
32 | end |
33 | |
34 | def self.pages_that_include(page_name) |
35 | query = 'SELECT name FROM pages JOIN wiki_references ON pages.id = wiki_references.page_id ' + |
36 | 'WHERE wiki_references.referenced_name = ? ' + |
37 | "AND wiki_references.link_type = '#{INCLUDED_PAGE}'" |
38 | names = connection.select_all(sanitize_sql([query, page_name])).map { |row| row['name'] } |
39 | end |
40 | |
41 | def self.pages_in_category(category) |
42 | query = |
43 | 'SELECT name FROM pages JOIN wiki_references ON pages.id = wiki_references.page_id ' + |
44 | 'WHERE wiki_references.referenced_name = ? ' + |
45 | "AND wiki_references.link_type = '#{CATEGORY}'" |
46 | names = connection.select_all(sanitize_sql([query, category])).map { |row| row['name'] } |
47 | end |
48 | |
49 | def self.list_categories |
50 | query = "SELECT DISTINCT referenced_name FROM wiki_references WHERE link_type = '#{CATEGORY}'" |
51 | connection.select_all(query).map { |row| row['referenced_name'] } |
52 | end |
53 | |
54 | def wiki_word? |
55 | linked_page? or wanted_page? |
56 | end |
57 | |
58 | def wiki_link? |
59 | linked_page? or wanted_page? or file? or wanted_file? |
60 | end |
61 | |
62 | def linked_page? |
63 | link_type == LINKED_PAGE |
64 | end |
65 | |
66 | def wanted_page? |
67 | link_type == WANTED_PAGE |
68 | end |
69 | |
70 | def included_page? |
71 | link_type == INCLUDED_PAGE |
72 | end |
73 | |
74 | def file? |
75 | link_type == FILE |
76 | end |
77 | |
78 | def wanted_file? |
79 | link_type == WANTED_FILE |
80 | end |
81 | |
82 | end |