Welcome to mirror list, hosted at ThFree Co, Russian Federation.

project_wiki_actions.rb « concerns « controllers « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 304e16a894adaf014e031100e7c0d9ad1abaf378 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# frozen_string_literal: true

# Controllers that include this concern must provide:
#  * project
#  * current_user
module ProjectWikiActions
  extend ActiveSupport::Concern

  included do
    before_action :authorize_read_wiki!
    before_action :init_wiki_actions

    attr_accessor :project_wiki, :sidebar_page, :sidebar_wiki_entries
  end

  def init_wiki_actions
    load_project_wiki
    load_wiki_sidebar
  rescue ProjectWiki::CouldNotCreateWikiError
    flash[:notice] = _("Could not create Wiki Repository at this time. Please try again later.")
    redirect_to project_path(project)
  end

  def load_project_wiki
    self.project_wiki = load_wiki
  end

  def load_wiki_sidebar
    self.sidebar_page = project_wiki.find_sidebar(params[:version_id])

    return if sidebar_page.present?

    # Fallback to default sidebar
    self.sidebar_wiki_entries = WikiDirectory.group_by_directory(project_wiki.list_pages(limit: 15))
  end

  def load_wiki
    # Call #wiki to make sure the Wiki Repo is initialized
    ProjectWiki.new(project, current_user).tap(&:wiki)
  end
end