Class: ClWiki::PageController

Inherits:
ApplicationController show all
Defined in:
app/controllers/cl_wiki/page_controller.rb

Instance Method Summary collapse

Instance Method Details

#assign_page_nameObject



89
90
91
92
# File 'app/controllers/cl_wiki/page_controller.rb', line 89

def assign_page_name
  @page_name = params[:page_name]
  @page_name = @page_name.ensure_slash_prefix if @page_name
end

#editObject



16
17
18
19
20
# File 'app/controllers/cl_wiki/page_controller.rb', line 16

def edit
  @page = ClWiki::Page.new(@page_name)
  @page.read_raw_content
  @page
end

#findObject



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/controllers/cl_wiki/page_controller.rb', line 28

def find
  @formatter = ClWiki::PageFormatter.new
  @search_text = params[:search_text]
  @results = []
  if @search_text
    hits = search(@search_text)

    hits.each do |full_name|
      @formatter.fullName = full_name
      @results << "#{@formatter.convertToLink(full_name)}"
    end
  end
end

#front_page_nameObject



73
74
75
# File 'app/controllers/cl_wiki/page_controller.rb', line 73

def front_page_name
  'FrontPage'
end

#initialize_formatterObject



102
103
104
# File 'app/controllers/cl_wiki/page_controller.rb', line 102

def initialize_formatter
  @formatter = ClWiki::PageFormatter.new
end

#recentObject



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'app/controllers/cl_wiki/page_controller.rb', line 55

def recent
  finder = FindInFile.new($wiki_path)
  finder.find($wiki_conf.publishTag || '.')
  @pages = finder.files.collect do |filename|
    p = ClWiki::Page.new(filename.sub($wikiPageExt, ''))
    p.read_page_attributes
    p
  end
  @pages = @pages.sort { |a, b| b.mtime <=> a.mtime }[0..9]
  without_header_and_footer = false
  @pages.each { |p| p.read_content(without_header_and_footer) }

  respond_to do |format|
    format.html
    format.rss { render :layout => false }
  end
end

#redirect_legacy_cgi_urlsObject



77
78
79
80
81
82
83
84
85
86
87
# File 'app/controllers/cl_wiki/page_controller.rb', line 77

def redirect_legacy_cgi_urls
  if request.fullpath.start_with?(legacy_path)
    page_name = (params[:page] || front_page_name).split('/')[-1]
    case
      when request.query_parameters.include?('edit')
        redirect_to page_edit_url(:page_name => page_name), status: '301'
      else
        redirect_to page_show_url(:page_name => page_name), status: '301'
    end
  end
end

#redirect_to_front_page_if_bad_nameObject



94
95
96
97
98
99
100
# File 'app/controllers/cl_wiki/page_controller.rb', line 94

def redirect_to_front_page_if_bad_name
  if ((@page_name.blank?) || (!@formatter.is_wiki_name?(@page_name))) ||
      (!$wiki_conf.editable && !ClWiki::Page.page_exists?(@page_name.ensure_slash_prefix))
    redirect_to page_show_url(:page_name => front_page_name)
    return
  end
end

#search(text) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/controllers/cl_wiki/page_controller.rb', line 42

def search(text)
  case $wiki_conf.useIndex
    when ClWiki::Configuration::USE_INDEX_NO
      finder = FindInFile.new($wiki_path)
      finder.find(text)
      finder.files.collect do |filename|
        filename.sub($wikiPageExt, '')
      end
    else
      ClWiki::IndexClient.new.search(text)
  end
end

#showObject



10
11
12
13
14
# File 'app/controllers/cl_wiki/page_controller.rb', line 10

def show
  @page = ClWiki::Page.new(@page_name)
  @page.read_content
  @page
end

#updateObject



22
23
24
25
26
# File 'app/controllers/cl_wiki/page_controller.rb', line 22

def update
  @page = ClWiki::Page.new(@page_name)
  @page.update_content(params[:page_content], Time.at(params[:client_mod_time].to_s.to_i))
  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)
end