mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-16 06:06:56 +08:00
38 lines
956 B
Ruby
38 lines
956 B
Ruby
# frozen_string_literal: true
|
|
|
|
class StepText < ApplicationRecord
|
|
include TinyMceImages
|
|
include ActionView::Helpers::TextHelper
|
|
|
|
auto_strip_attributes :text, nullify: false
|
|
validates :text, length: { maximum: Constants::RICH_TEXT_MAX_LENGTH }
|
|
|
|
belongs_to :step, inverse_of: :step_texts, touch: true
|
|
has_one :step_orderable_element, as: :orderable, dependent: :destroy
|
|
|
|
scope :asc, -> { order('step_texts.created_at ASC') }
|
|
|
|
def name
|
|
return if text.blank?
|
|
|
|
strip_tags(text.truncate(64))
|
|
end
|
|
|
|
def duplicate(step, position = nil)
|
|
ActiveRecord::Base.transaction do
|
|
new_step_text = step.step_texts.create!(
|
|
text: text
|
|
)
|
|
|
|
# Copy steps tinyMce assets
|
|
clone_tinymce_assets(new_step_text, step.protocol.team)
|
|
|
|
step.step_orderable_elements.create!(
|
|
position: position || step.step_orderable_elements.length,
|
|
orderable: new_step_text
|
|
)
|
|
|
|
new_step_text
|
|
end
|
|
end
|
|
end
|