Merge pull request #2779 from okriuchykhin/ok_SCI_4910

Fix rendering of RTE in API [SCI-4910]
This commit is contained in:
Miha Mencin 2020-08-10 15:26:35 +02:00 committed by GitHub
commit b333700f40
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 46 additions and 16 deletions

View file

@ -3,23 +3,26 @@
module Api module Api
module V1 module V1
class ProtocolsController < BaseController class ProtocolsController < BaseController
before_action :load_team include Api::V1::ExtraParams
before_action :load_project
before_action :load_experiment before_action :load_team, :load_project, :load_experiment, :load_task
before_action :load_task before_action only: :show do
load_protocol(:id)
end
def index def index
protocols = @task.protocols protocols = @task.protocols
.page(params.dig(:page, :number)) .page(params.dig(:page, :number))
.per(params.dig(:page, :size)) .per(params.dig(:page, :size))
render jsonapi: protocols, render jsonapi: protocols,
each_serializer: ProtocolSerializer each_serializer: ProtocolSerializer, rte_rendering: render_rte?, team: @team
end end
private def show
render jsonapi: @protocol, serializer: ProtocolSerializer,
def load_protocol include: include_params,
@protocol = @task.protocols.find(params.require(:id)) rte_rendering: render_rte?,
team: @team
end end
end end
end end

View file

@ -16,13 +16,15 @@ module Api
render jsonapi: steps, each_serializer: StepSerializer, render jsonapi: steps, each_serializer: StepSerializer,
include: include_params, include: include_params,
rte_rendering: render_rte? rte_rendering: render_rte?,
team: @team
end end
def show def show
render jsonapi: @step, serializer: StepSerializer, render jsonapi: @step, serializer: StepSerializer,
include: include_params, include: include_params,
rte_rendering: render_rte? rte_rendering: render_rte?,
team: @team
end end
def create def create

View file

@ -19,11 +19,11 @@ module Api
.page(params.dig(:page, :number)) .page(params.dig(:page, :number))
.per(params.dig(:page, :size)) .per(params.dig(:page, :size))
render jsonapi: tasks, each_serializer: TaskSerializer, rte_rendering: render_rte? render jsonapi: tasks, each_serializer: TaskSerializer, rte_rendering: render_rte?, team: @team
end end
def show def show
render jsonapi: @task, serializer: TaskSerializer, rte_rendering: render_rte? render jsonapi: @task, serializer: TaskSerializer, rte_rendering: render_rte?, team: @team
end end
def create def create

View file

@ -3,6 +3,10 @@
module Api module Api
module V1 module V1
class ProtocolSerializer < ActiveModel::Serializer class ProtocolSerializer < ActiveModel::Serializer
include ApplicationHelper
include ActionView::Helpers::TextHelper
include InputSanitizeHelper
type :protocols type :protocols
attributes :id, :name, :authors, :description, :protocol_type attributes :id, :name, :authors, :description, :protocol_type
has_many :protocol_keywords, has_many :protocol_keywords,
@ -12,6 +16,17 @@ module Api
unless: -> { object.protocol_keywords.empty? } unless: -> { object.protocol_keywords.empty? }
has_many :steps, serializer: StepSerializer, if: -> { object.steps.any? } has_many :steps, serializer: StepSerializer, if: -> { object.steps.any? }
belongs_to :parent, serializer: ProtocolSerializer, if: -> { object.parent.present? } belongs_to :parent, serializer: ProtocolSerializer, if: -> { object.parent.present? }
def description
if instance_options[:rte_rendering]
custom_auto_link(object.tinymce_render(:description),
simple_format: false,
tags: %w(img),
team: instance_options[:team])
else
object.description
end
end
end end
end end
end end

View file

@ -19,7 +19,10 @@ module Api
def description def description
if instance_options[:rte_rendering] if instance_options[:rte_rendering]
custom_auto_link(object.tinymce_render(:description), simple_format: false, tags: %w(img)) custom_auto_link(object.tinymce_render(:description),
simple_format: false,
tags: %w(img),
team: instance_options[:team])
else else
object.description object.description
end end

View file

@ -3,6 +3,10 @@
module Api module Api
module V1 module V1
class TaskSerializer < ActiveModel::Serializer class TaskSerializer < ActiveModel::Serializer
include ApplicationHelper
include ActionView::Helpers::TextHelper
include InputSanitizeHelper
type :tasks type :tasks
attributes :id, :name, :started_on, :due_date, :description, :state, :archived attributes :id, :name, :started_on, :due_date, :description, :state, :archived
has_many :output_tasks, key: :outputs, has_many :output_tasks, key: :outputs,
@ -22,7 +26,10 @@ module Api
def description def description
if instance_options[:rte_rendering] if instance_options[:rte_rendering]
custom_auto_link(object.tinymce_render(:description), simple_format: false, tags: %w(img)) custom_auto_link(object.tinymce_render(:description),
simple_format: false,
tags: %w(img),
team: instance_options[:team])
else else
object.description object.description
end end

View file

@ -716,7 +716,7 @@ Rails.application.routes.draw do
resources :task_tags, only: %i(index show), resources :task_tags, only: %i(index show),
path: 'tags', path: 'tags',
as: :tags as: :tags
resources :protocols, only: %i(index) do resources :protocols, only: %i(index show) do
resources :steps do resources :steps do
resources :assets, only: %i(index show create), path: 'attachments' resources :assets, only: %i(index show create), path: 'attachments'
resources :checklists, path: 'checklists' do resources :checklists, path: 'checklists' do