scinote-web/app/serializers/checklist_item_serializer.rb
2023-09-22 12:07:56 +02:00

46 lines
1.5 KiB
Ruby

# frozen_string_literal: true
class ChecklistItemSerializer < ActiveModel::Serializer
include Canaid::Helpers::PermissionsHelper
include Rails.application.routes.url_helpers
include ApplicationHelper
include ActionView::Helpers::TextHelper
attributes :id, :text, :checked, :position, :urls, :sa_text, :with_paragraphs
def with_paragraphs
object.text.include?("\n")
end
def sa_text
@user = scope[:user] || @instance_options[:user]
custom_auto_link(object.text,
simple_format: false,
tags: %w(img),
team: object.checklist.step.protocol.team)
end
def urls
urls_list = {}
return urls_list if object.destroyed? || !object.persisted?
step = object.checklist.step
my_module = object.checklist.step.protocol.my_module
if can_manage_step?(scope[:user] || @instance_options[:user], step)
urls_list[:update_url] = step_checklist_checklist_item_path(step, object.checklist, object)
urls_list[:delete_url] = step_checklist_checklist_item_path(step, object.checklist, object)
end
return urls_list unless my_module
if !object.checked && can_check_my_module_steps?(scope[:user] || @instance_options[:user], my_module) ||
object.checked && can_uncheck_my_module_steps?(scope[:user] || @instance_options[:user], my_module)
urls_list[:toggle_url] =
toggle_step_checklist_checklist_item_path(step, object.checklist, object)
end
urls_list
end
end