diff --git a/app/controllers/projects/wikis_controller.rb b/app/controllers/projects/wikis_controller.rb index 797f3d3dd41..9444d5a6b77 100644 --- a/app/controllers/projects/wikis_controller.rb +++ b/app/controllers/projects/wikis_controller.rb @@ -1,62 +1,67 @@ +require 'project_wiki' + class Projects::WikisController < Projects::ApplicationController before_filter :authorize_read_wiki! before_filter :authorize_write_wiki!, only: [:edit, :create, :history] before_filter :authorize_admin_wiki!, only: :destroy - before_filter :load_gollum_wiki + before_filter :load_project_wiki def pages - @wiki_pages = @gollum_wiki.pages + @wiki_pages = @project_wiki.pages end def show - @wiki = @gollum_wiki.find_page(params[:id], params[:version_id]) + @page = @project_wiki.find_page(params[:id], params[:version_id]) - if @wiki + if @page render 'show' else return render('empty') unless can?(current_user, :write_wiki, @project) - @wiki = WikiPage.new(@gollum_wiki) - @wiki.title = params[:id] + @page = WikiPage.new(@project_wiki) + @page.title = params[:id] render 'edit' end end def edit - @wiki = @gollum_wiki.find_page(params[:id]) + @page = @project_wiki.find_page(params[:id]) end def update - @wiki = @gollum_wiki.find_page(params[:id]) + @page = @project_wiki.find_page(params[:id]) return render('empty') unless can?(current_user, :write_wiki, @project) - if @wiki.update(content, format, message) - redirect_to [@project, @wiki], notice: 'Wiki was successfully updated.' + if @page.update(content, format, message) + redirect_to [@project, @page], notice: 'Wiki was successfully updated.' else render 'edit' end end def create - @wiki = WikiPage.new(@gollum_wiki) + @page = WikiPage.new(@project_wiki) - if @wiki.create(wiki_params) - redirect_to project_wiki_path(@project, @wiki), notice: 'Wiki was successfully updated.' + if @page.create(wiki_params) + redirect_to project_wiki_path(@project, @page), notice: 'Wiki was successfully updated.' else render action: "edit" end end def history - @wiki = @gollum_wiki.find_page(params[:id]) + @page = @project_wiki.find_page(params[:id]) - redirect_to(project_wiki_path(@project, :home), notice: "Page not found") unless @wiki + unless @page + redirect_to(project_wiki_path(@project, :home), notice: "Page not found") + end end def destroy - @wiki = @gollum_wiki.find_page(params[:id]) - @wiki.delete if @wiki + @page = @project_wiki.find_page(params[:id]) + @page.delete if @page + redirect_to project_wiki_path(@project, :home), notice: "Page was successfully deleted" end @@ -65,12 +70,12 @@ class Projects::WikisController < Projects::ApplicationController private - def load_gollum_wiki - @gollum_wiki = GollumWiki.new(@project, current_user) + def load_project_wiki + @project_wiki = ProjectWiki.new(@project, current_user) # Call #wiki to make sure the Wiki Repo is initialized - @gollum_wiki.wiki - rescue GollumWiki::CouldNotCreateWikiError => ex + @project_wiki.wiki + rescue ProjectWiki::CouldNotCreateWikiError => ex flash[:notice] = "Could not create Wiki Repository at this time. Please try again later." redirect_to @project return false @@ -91,5 +96,4 @@ class Projects::WikisController < Projects::ApplicationController def message params[:wiki][:message] end - end diff --git a/app/models/gollum_wiki.rb b/app/models/project_wiki.rb similarity index 99% rename from app/models/gollum_wiki.rb rename to app/models/project_wiki.rb index 62c8b5145dd..163302a18f7 100644 --- a/app/models/gollum_wiki.rb +++ b/app/models/project_wiki.rb @@ -1,4 +1,4 @@ -class GollumWiki +class ProjectWiki include Gitlab::ShellAdapter MARKUPS = { diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index a7e6fea5ad0..431c1e33f55 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -19,7 +19,7 @@ class WikiPage validates :title, presence: true validates :content, presence: true - # The Gitlab GollumWiki instance. + # The Gitlab ProjectWiki instance. attr_reader :wiki # The raw Gollum::Page instance. @@ -118,7 +118,7 @@ class WikiPage # :content - The raw markup content. # :format - Optional symbol representing the # content format. Can be any type - # listed in the GollumWiki::MARKUPS + # listed in the ProjectWiki::MARKUPS # Hash. # :message - Optional commit message to set on # the new page. @@ -135,7 +135,7 @@ class WikiPage # # new_content - The raw markup content to replace the existing. # format - Optional symbol representing the content format. - # See GollumWiki::MARKUPS Hash for available formats. + # See ProjectWiki::MARKUPS Hash for available formats. # message - Optional commit message to set on the new version. # # Returns the String SHA1 of the newly created page @@ -181,5 +181,4 @@ class WikiPage end @persisted end - end diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 4d3d518a509..11b65256502 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -74,8 +74,8 @@ module Projects if @project.wiki_enabled? begin # force the creation of a wiki, - GollumWiki.new(@project, @project.owner).wiki - rescue GollumWiki::CouldNotCreateWikiError => ex + ProjectWiki.new(@project, @project.owner).wiki + rescue ProjectWiki::CouldNotCreateWikiError => ex # Prevent project observer crash # if failed to create wiki nil diff --git a/app/views/projects/wikis/_form.html.haml b/app/views/projects/wikis/_form.html.haml index 06d8660630d..c77ed3433d1 100644 --- a/app/views/projects/wikis/_form.html.haml +++ b/app/views/projects/wikis/_form.html.haml @@ -1,16 +1,16 @@ -= form_for [@project, @wiki], method: @wiki.persisted? ? :put : :post, html: { class: 'form-horizontal' } do |f| - -if @wiki.errors.any? += form_for [@project, @page], method: @page.persisted? ? :put : :post, html: { class: 'form-horizontal' } do |f| + -if @page.errors.any? #error_explanation - %h2= "#{pluralize(@wiki.errors.count, "error")} prohibited this wiki from being saved:" + %h2= "#{pluralize(@page.errors.count, "error")} prohibited this wiki from being saved:" %ul - - @wiki.errors.full_messages.each do |msg| + - @page.errors.full_messages.each do |msg| %li= msg - = f.hidden_field :title, value: @wiki.title + = f.hidden_field :title, value: @page.title .form-group = f.label :format, class: 'control-label' .col-sm-10 - = f.select :format, options_for_select(GollumWiki::MARKUPS, {selected: @wiki.format}), {}, class: "form-control" + = f.select :format, options_for_select(ProjectWiki::MARKUPS, {selected: @page.format}), {}, class: "form-control" .row .col-sm-2 @@ -31,9 +31,9 @@ .col-sm-10= f.text_field :message, class: 'form-control', rows: 18 .form-actions - - if @wiki && @wiki.persisted? + - if @page && @page.persisted? = f.submit 'Save changes', class: "btn-save btn" - = link_to "Cancel", project_wiki_path(@project, @wiki), class: "btn btn-cancel" + = link_to "Cancel", project_wiki_path(@project, @page), class: "btn btn-cancel" - else = f.submit 'Create page', class: "btn-create btn" = link_to "Cancel", project_wiki_path(@project, :home), class: "btn btn-cancel" diff --git a/app/views/projects/wikis/_main_links.html.haml b/app/views/projects/wikis/_main_links.html.haml index 5dd769dcfe1..68d70873231 100644 --- a/app/views/projects/wikis/_main_links.html.haml +++ b/app/views/projects/wikis/_main_links.html.haml @@ -1,8 +1,8 @@ %span.pull-right - - if (@wiki && @wiki.persisted?) - = link_to history_project_wiki_path(@project, @wiki), class: "btn btn-grouped" do + - if (@page && @page.persisted?) + = link_to history_project_wiki_path(@project, @page), class: "btn btn-grouped" do Page History - if can?(current_user, :write_wiki, @project) - = link_to edit_project_wiki_path(@project, @wiki), class: "btn btn-grouped" do + = link_to edit_project_wiki_path(@project, @page), class: "btn btn-grouped" do %i.icon-edit Edit diff --git a/app/views/projects/wikis/edit.html.haml b/app/views/projects/wikis/edit.html.haml index 47b236083b3..49dd7b00ca4 100644 --- a/app/views/projects/wikis/edit.html.haml +++ b/app/views/projects/wikis/edit.html.haml @@ -3,11 +3,11 @@ = render 'main_links' %h3.page-title Editing - - %span.light #{@wiki.title.titleize} + %span.light #{@page.title.titleize} %hr = render 'form' .pull-right - - if @wiki.persisted? && can?(current_user, :admin_wiki, @project) - = link_to project_wiki_path(@project, @wiki), data: { confirm: "Are you sure you want to delete this page?"}, method: :delete, class: "btn btn-small btn-remove" do + - if @page.persisted? && can?(current_user, :admin_wiki, @project) + = link_to project_wiki_path(@project, @page), data: { confirm: "Are you sure you want to delete this page?"}, method: :delete, class: "btn btn-small btn-remove" do Delete this page diff --git a/app/views/projects/wikis/git_access.html.haml b/app/views/projects/wikis/git_access.html.haml index b62c4975416..365edb524f4 100644 --- a/app/views/projects/wikis/git_access.html.haml +++ b/app/views/projects/wikis/git_access.html.haml @@ -3,10 +3,10 @@ .col-sm-6 %h3.page-title Git access for - %strong= @gollum_wiki.path_with_namespace + %strong= @project_wiki.path_with_namespace .col-sm-6 - = render "shared/clone_panel", project: @gollum_wiki + = render "shared/clone_panel", project: @project_wiki .git-empty %fieldset @@ -18,8 +18,8 @@ %legend Clone Your Wiki: %pre.dark :preserve - git clone #{ content_tag(:span, default_url_to_repo(@gollum_wiki), class: 'clone')} - cd #{@gollum_wiki.path} + git clone #{ content_tag(:span, default_url_to_repo(@project_wiki), class: 'clone')} + cd #{@project_wiki.path} %legend Start Gollum And Edit Locally: %pre.dark diff --git a/app/views/projects/wikis/history.html.haml b/app/views/projects/wikis/history.html.haml index 55efb624e23..7001bbd17c1 100644 --- a/app/views/projects/wikis/history.html.haml +++ b/app/views/projects/wikis/history.html.haml @@ -1,7 +1,7 @@ = render 'nav' %h3.page-title %span.light History for - = link_to @wiki.title.titleize, project_wiki_path(@project, @wiki) + = link_to @page.title.titleize, project_wiki_path(@project, @page) %table.table %thead @@ -12,11 +12,11 @@ %th Last updated %th Format %tbody - - @wiki.versions.each do |version| + - @page.versions.each do |version| - commit = version %tr %td - = link_to project_wiki_path(@project, @wiki, version_id: commit.id) do + = link_to project_wiki_path(@project, @page, version_id: commit.id) do = commit.short_id %td = commit_author_link(commit, avatar: true, size: 24) @@ -26,4 +26,4 @@ #{time_ago_with_tooltip(version.date)} %td %strong - = @wiki.page.wiki.page(@wiki.page.name, commit.id).try(:format) + = @page.page.wiki.page(@page.page.name, commit.id).try(:format) diff --git a/app/views/projects/wikis/show.html.haml b/app/views/projects/wikis/show.html.haml index f7d4fe42b57..024ef068d08 100644 --- a/app/views/projects/wikis/show.html.haml +++ b/app/views/projects/wikis/show.html.haml @@ -1,20 +1,20 @@ = render 'nav' %h3.page-title - = @wiki.title.titleize + = @page.title.titleize = render 'main_links' -- if @wiki.historical? +- if @page.historical? .warning_message This is an old version of this page. - You can view the #{link_to "most recent version", project_wiki_path(@project, @wiki)} or browse the #{link_to "history", history_project_wiki_path(@project, @wiki)}. + You can view the #{link_to "most recent version", project_wiki_path(@project, @page)} or browse the #{link_to "history", history_project_wiki_path(@project, @page)}. %hr .wiki-holder .wiki = preserve do - = render_wiki_content(@wiki) + = render_wiki_content(@page) %hr .wiki-last-edit-by - Last edited by #{commit_author_link(@wiki.commit, avatar: true, size: 16)} #{time_ago_with_tooltip(@wiki.commit.created_at)} + Last edited by #{commit_author_link(@page.commit, avatar: true, size: 16)} #{time_ago_with_tooltip(@page.commit.created_at)} diff --git a/features/steps/project/wiki.rb b/features/steps/project/wiki.rb index 6146599cc4a..65e7d094f2d 100644 --- a/features/steps/project/wiki.rb +++ b/features/steps/project/wiki.rb @@ -1,4 +1,4 @@ -class ProjectWiki < Spinach::FeatureSteps +class Spinach::Features::ProjectWiki < Spinach::FeatureSteps include SharedAuthentication include SharedProject include SharedNote @@ -16,7 +16,7 @@ class ProjectWiki < Spinach::FeatureSteps end Given 'I create the Wiki Home page' do - fill_in "Content", with: '[link test](test)' + fill_in "wiki_content", with: '[link test](test)' click_on "Create page" end @@ -87,6 +87,6 @@ class ProjectWiki < Spinach::FeatureSteps end def wiki - @gollum_wiki = GollumWiki.new(project, current_user) + @project_wiki = ProjectWiki.new(project, current_user) end end diff --git a/lib/backup/repository.rb b/lib/backup/repository.rb index 552f7eaa5ce..214d9824ee1 100644 --- a/lib/backup/repository.rb +++ b/lib/backup/repository.rb @@ -24,7 +24,7 @@ module Backup puts "[FAILED]".red end - wiki = GollumWiki.new(project) + wiki = ProjectWiki.new(project) if File.exists?(path_to_repo(wiki)) print " * #{wiki.path_with_namespace} ... " @@ -59,7 +59,7 @@ module Backup puts "[FAILED]".red end - wiki = GollumWiki.new(project) + wiki = ProjectWiki.new(project) if File.exists?(path_to_bundle(wiki)) print " * #{wiki.path_with_namespace} ... " diff --git a/lib/redcarpet/render/gitlab_html.rb b/lib/redcarpet/render/gitlab_html.rb index 86d8b69b0ef..7d9428ff27d 100644 --- a/lib/redcarpet/render/gitlab_html.rb +++ b/lib/redcarpet/render/gitlab_html.rb @@ -60,6 +60,8 @@ class Redcarpet::Render::GitlabHTML < Redcarpet::Render::HTML end def is_wiki? - @template.instance_variable_get("@wiki") + if @template.instance_variable_get("@project_wiki") + @template.instance_variable_get("@page") + end end end diff --git a/spec/models/gollum_wiki_spec.rb b/spec/models/project_wiki_spec.rb similarity index 94% rename from spec/models/gollum_wiki_spec.rb rename to spec/models/project_wiki_spec.rb index 9b9d15b4ff4..32a82470e4f 100644 --- a/spec/models/gollum_wiki_spec.rb +++ b/spec/models/project_wiki_spec.rb @@ -1,6 +1,6 @@ require "spec_helper" -describe GollumWiki do +describe ProjectWiki do def remove_temp_repo(path) FileUtils.rm_rf path @@ -23,7 +23,7 @@ describe GollumWiki do let(:user) { project.owner } let(:gitlab_shell) { Gitlab::Shell.new } - subject { GollumWiki.new(project, user) } + subject { ProjectWiki.new(project, user) } before do create_temp_repo(subject.send(:path_to_repo)) @@ -68,15 +68,15 @@ describe GollumWiki do end it "creates a new wiki repo if one does not yet exist" do - wiki = GollumWiki.new(project, user) + wiki = ProjectWiki.new(project, user) wiki.create_page("index", "test content").should_not == false FileUtils.rm_rf wiki.send(:path_to_repo) end it "raises CouldNotCreateWikiError if it can't create the wiki repository" do - GollumWiki.any_instance.stub(:init_repo).and_return(false) - expect { GollumWiki.new(project, user).wiki }.to raise_exception(GollumWiki::CouldNotCreateWikiError) + ProjectWiki.any_instance.stub(:init_repo).and_return(false) + expect { ProjectWiki.new(project, user).wiki }.to raise_exception(ProjectWiki::CouldNotCreateWikiError) end end diff --git a/spec/models/wiki_page_spec.rb b/spec/models/wiki_page_spec.rb index 1c70edf0d4d..2af164bd99b 100644 --- a/spec/models/wiki_page_spec.rb +++ b/spec/models/wiki_page_spec.rb @@ -22,7 +22,7 @@ describe WikiPage do let(:project) { create(:project) } let(:repository) { project.repository } let(:user) { project.owner } - let(:wiki) { GollumWiki.new(project, user) } + let(:wiki) { ProjectWiki.new(project, user) } subject { WikiPage.new(wiki) } diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb index f2a784df103..38aae452c3c 100644 --- a/spec/services/projects/create_service_spec.rb +++ b/spec/services/projects/create_service_spec.rb @@ -42,7 +42,7 @@ describe Projects::CreateService do context 'wiki_enabled true creates wiki repository directory' do before do @project = create_project(@user, @opts) - @path = GollumWiki.new(@project, @user).send(:path_to_repo) + @path = ProjectWiki.new(@project, @user).send(:path_to_repo) end it { File.exists?(@path).should be_true } @@ -52,7 +52,7 @@ describe Projects::CreateService do before do @opts.merge!(wiki_enabled: false) @project = create_project(@user, @opts) - @path = GollumWiki.new(@project, @user).send(:path_to_repo) + @path = ProjectWiki.new(@project, @user).send(:path_to_repo) end it { File.exists?(@path).should be_false } diff --git a/spec/support/test_env.rb b/spec/support/test_env.rb index d237f7ad094..b1bb65a836e 100644 --- a/spec/support/test_env.rb +++ b/spec/support/test_env.rb @@ -52,7 +52,7 @@ module TestEnv def setup_stubs() # Use tmp dir for FS manipulations repos_path = testing_path() - GollumWiki.any_instance.stub(:init_repo) do |path| + ProjectWiki.any_instance.stub(:init_repo) do |path| create_temp_repo(File.join(repos_path, "#{path}.git")) end