Merge branch 'move_markdown_preview_to_concern' into 'master'
Add support for markdown preview to group milestones Closes #30241 See merge request gitlab-org/gitlab-ce!14806
This commit is contained in:
commit
90f95f2b8c
|
@ -0,0 +1,22 @@
|
||||||
|
module PreviewMarkdown
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
def preview_markdown
|
||||||
|
result = PreviewMarkdownService.new(@project, current_user, params).execute
|
||||||
|
|
||||||
|
markdown_params =
|
||||||
|
case controller_name
|
||||||
|
when 'wikis' then { pipeline: :wiki, project_wiki: @project_wiki, page_slug: params[:id] }
|
||||||
|
when 'snippets' then { skip_project_check: true }
|
||||||
|
else {}
|
||||||
|
end
|
||||||
|
|
||||||
|
render json: {
|
||||||
|
body: view_context.markdown(result[:text], markdown_params),
|
||||||
|
references: {
|
||||||
|
users: result[:users],
|
||||||
|
commands: view_context.markdown(result[:commands])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
|
@ -2,6 +2,7 @@ class GroupsController < Groups::ApplicationController
|
||||||
include IssuesAction
|
include IssuesAction
|
||||||
include MergeRequestsAction
|
include MergeRequestsAction
|
||||||
include ParamsBackwardCompatibility
|
include ParamsBackwardCompatibility
|
||||||
|
include PreviewMarkdown
|
||||||
|
|
||||||
respond_to :html
|
respond_to :html
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
class Projects::WikisController < Projects::ApplicationController
|
class Projects::WikisController < Projects::ApplicationController
|
||||||
|
include PreviewMarkdown
|
||||||
|
|
||||||
before_action :authorize_read_wiki!
|
before_action :authorize_read_wiki!
|
||||||
before_action :authorize_create_wiki!, only: [:edit, :create, :history]
|
before_action :authorize_create_wiki!, only: [:edit, :create, :history]
|
||||||
before_action :authorize_admin_wiki!, only: :destroy
|
before_action :authorize_admin_wiki!, only: :destroy
|
||||||
|
@ -92,17 +94,6 @@ class Projects::WikisController < Projects::ApplicationController
|
||||||
def git_access
|
def git_access
|
||||||
end
|
end
|
||||||
|
|
||||||
def preview_markdown
|
|
||||||
result = PreviewMarkdownService.new(@project, current_user, params).execute
|
|
||||||
|
|
||||||
render json: {
|
|
||||||
body: view_context.markdown(result[:text], pipeline: :wiki, project_wiki: @project_wiki, page_slug: params[:id]),
|
|
||||||
references: {
|
|
||||||
users: result[:users]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def load_project_wiki
|
def load_project_wiki
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
class ProjectsController < Projects::ApplicationController
|
class ProjectsController < Projects::ApplicationController
|
||||||
include IssuableCollections
|
include IssuableCollections
|
||||||
include ExtractsPath
|
include ExtractsPath
|
||||||
|
include PreviewMarkdown
|
||||||
|
|
||||||
before_action :authenticate_user!, except: [:index, :show, :activity, :refs]
|
before_action :authenticate_user!, except: [:index, :show, :activity, :refs]
|
||||||
before_action :project, except: [:index, :new, :create]
|
before_action :project, except: [:index, :new, :create]
|
||||||
|
@ -258,18 +259,6 @@ class ProjectsController < Projects::ApplicationController
|
||||||
render json: options.to_json
|
render json: options.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
def preview_markdown
|
|
||||||
result = PreviewMarkdownService.new(@project, current_user, params).execute
|
|
||||||
|
|
||||||
render json: {
|
|
||||||
body: view_context.markdown(result[:text]),
|
|
||||||
references: {
|
|
||||||
users: result[:users],
|
|
||||||
commands: view_context.markdown(result[:commands])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
# Render project landing depending of which features are available
|
# Render project landing depending of which features are available
|
||||||
|
|
|
@ -4,6 +4,7 @@ class SnippetsController < ApplicationController
|
||||||
include SpammableActions
|
include SpammableActions
|
||||||
include SnippetsActions
|
include SnippetsActions
|
||||||
include RendersBlob
|
include RendersBlob
|
||||||
|
include PreviewMarkdown
|
||||||
|
|
||||||
before_action :snippet, only: [:show, :edit, :destroy, :update, :raw]
|
before_action :snippet, only: [:show, :edit, :destroy, :update, :raw]
|
||||||
|
|
||||||
|
@ -87,17 +88,6 @@ class SnippetsController < ApplicationController
|
||||||
redirect_to snippets_path, status: 302
|
redirect_to snippets_path, status: 302
|
||||||
end
|
end
|
||||||
|
|
||||||
def preview_markdown
|
|
||||||
result = PreviewMarkdownService.new(@project, current_user, params).execute
|
|
||||||
|
|
||||||
render json: {
|
|
||||||
body: view_context.markdown(result[:text], skip_project_check: true),
|
|
||||||
references: {
|
|
||||||
users: result[:users]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def snippet
|
def snippet
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
.form-group.milestone-description
|
.form-group.milestone-description
|
||||||
= f.label :description, "Description", class: "control-label"
|
= f.label :description, "Description", class: "control-label"
|
||||||
.col-sm-10
|
.col-sm-10
|
||||||
= render layout: 'projects/md_preview', locals: { url: '' } do
|
= render layout: 'projects/md_preview', locals: { url: group_preview_markdown_path } do
|
||||||
= render 'projects/zen', f: f, attr: :description, classes: 'note-textarea', placeholder: 'Write milestone description...'
|
= render 'projects/zen', f: f, attr: :description, classes: 'note-textarea', placeholder: 'Write milestone description...'
|
||||||
.clearfix
|
.clearfix
|
||||||
.error-alert
|
.error-alert
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
title: Add support for markdown preview to group milestones
|
||||||
|
merge_request: 14806
|
||||||
|
author: Vitaliy @blackst0ne Klachkov
|
||||||
|
type: fixed
|
|
@ -1,6 +1,8 @@
|
||||||
require 'constraints/group_url_constrainer'
|
require 'constraints/group_url_constrainer'
|
||||||
|
|
||||||
resources :groups, only: [:index, :new, :create]
|
resources :groups, only: [:index, :new, :create] do
|
||||||
|
post :preview_markdown
|
||||||
|
end
|
||||||
|
|
||||||
scope(path: 'groups/*group_id',
|
scope(path: 'groups/*group_id',
|
||||||
module: :groups,
|
module: :groups,
|
||||||
|
|
|
@ -18,6 +18,27 @@ feature 'Group milestones', :js do
|
||||||
visit new_group_milestone_path(group)
|
visit new_group_milestone_path(group)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'renders description preview' do
|
||||||
|
form = find('.gfm-form')
|
||||||
|
|
||||||
|
form.fill_in(:milestone_description, with: '')
|
||||||
|
|
||||||
|
click_link('Preview')
|
||||||
|
|
||||||
|
preview = find('.js-md-preview')
|
||||||
|
|
||||||
|
expect(preview).to have_content('Nothing to preview.')
|
||||||
|
|
||||||
|
click_link('Write')
|
||||||
|
|
||||||
|
form.fill_in(:milestone_description, with: ':+1: Nice')
|
||||||
|
|
||||||
|
click_link('Preview')
|
||||||
|
|
||||||
|
expect(preview).to have_css('gl-emoji')
|
||||||
|
expect(find('#milestone_description', visible: false)).not_to be_visible
|
||||||
|
end
|
||||||
|
|
||||||
it 'creates milestone with start date' do
|
it 'creates milestone with start date' do
|
||||||
fill_in 'Title', with: 'testing'
|
fill_in 'Title', with: 'testing'
|
||||||
find('#milestone_start_date').click
|
find('#milestone_start_date').click
|
||||||
|
|
Loading…
Reference in New Issue