123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class Ticket::SharedDraftZoom < ApplicationModel
- include HasRichText
- include HasDefaultModelUserRelations
- include CanCloneAttachments
- include ChecksClientNotification
- include HasHistory
- belongs_to :ticket, touch: true
- store :new_article
- store :ticket_attributes
- history_attributes_ignored :new_article,
- :ticket_attributes
- # required by CanCloneAttachments
- def content_type
- 'text/html'
- end
- # Process inline images
- has_rich_text :body
- # has_rich_text cannot process data inside hashes
- # Using a meta attribute instead
- def body
- new_article[:body]
- end
- # has_rich_text cannot process data inside hashes
- # Using a meta attribute instead
- def body=(input)
- new_article[:body] = input
- end
- # Adds backwards compatibility for the old desktop app
- def body_with_base64
- scrubber = HtmlSanitizer::Scrubber::InsertInlineImages.new(attachments)
- sanitized = Loofah
- .fragment(body)
- .scrub!(scrubber)
- sanitized.to_s
- end
- # Returns images with src=/api/v1/attachments/1337
- def content_with_body_urls
- # TODO: new_article + ticket_attributes must be put together.
- output = new_article.deep_dup
- output[:body] = body_with_urls
- output
- end
- # Returns content prepared to be applied to the ticket
- #
- # @param form_id [String] id of the form to attach to
- def content_with_form_id_body_urls(form_id)
- cache = UploadCache.new(form_id)
- article = new_article.deep_dup
- article[:body] = HasRichText.insert_urls(article[:body], cache.attachments)
- {
- article: article,
- ticket: ticket_attributes,
- }
- end
- def history_log_attributes
- {
- related_o_id: self['ticket_id'],
- related_history_object: 'Ticket',
- }
- end
- def history_destroy
- history_log('removed', created_by_id)
- end
- def attributes_with_association_ids
- attrs = super
- attrs.delete 'body'
- attrs['new_article']['body'] = body_with_base64 if attrs.dig('new_article', 'body').present?
- attrs
- end
- end
|