mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-18 07:01:58 +08:00
42 lines
1 KiB
Ruby
42 lines
1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class StepText < ApplicationRecord
|
|
include TinyMceImages
|
|
include ActionView::Helpers::TextHelper
|
|
|
|
auto_strip_attributes :text, nullify: false
|
|
validates :text, length:
|
|
{
|
|
maximum:
|
|
ENV['STEP_TEXT_MAX_LENGTH'].present? ? ENV['STEP_TEXT_MAX_LENGTH'].to_i : 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
|