trabajo-afectivo/app/models/text_module.rb

127 lines
3 KiB
Ruby

# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
class TextModule < ApplicationModel
include ChecksClientNotification
include ChecksHtmlSanitized
include CanCsvImport
validates :name, presence: true
validates :content, presence: true
before_create :validate_content
before_update :validate_content
sanitized_html :content, :note
csv_delete_possible true
has_and_belongs_to_many :groups, after_add: :cache_update, after_remove: :cache_update, class_name: 'Group'
association_attributes_ignored :user
=begin
load text modules from online
TextModule.load('de-de', overwrite_existing_item) # e. g. 'en-us' or 'de-de'
=end
def self.load(locale, overwrite_existing_item = false)
raise 'Got no locale' if locale.blank?
locale = locale.split(',').first.downcase # in case of accept_language header is given
url = "https://i18n.zammad.com/api/v1/text_modules/#{locale}"
result = UserAgent.get(
url,
{},
{
json: true,
verify_ssl: true,
}
)
raise "Can't load text modules from #{url}" if !result
raise "Can't load text modules from #{url}: #{result.error}" if !result.success?
ActiveRecord::Base.transaction do
result.data.each do |text_module|
exists = TextModule.find_by(foreign_id: text_module['foreign_id'])
if exists
next if !overwrite_existing_item
exists.update!(text_module.symbolize_keys!)
else
text_module[:updated_by_id] = 1
text_module[:created_by_id] = 1
TextModule.create(text_module.symbolize_keys!)
end
end
end
true
end
=begin
push text_modules to online
TextModule.push(locale)
=end
def self.push(locale)
# only push changed text_modules
text_modules = TextModule.all # where(locale: locale)
text_modules_to_push = []
text_modules.each do |text_module|
next if !text_module.active
text_modules_to_push.push text_module
end
return true if text_modules_to_push.blank?
url = 'https://i18n.zammad.com/api/v1/text_modules/thanks_for_your_support'
translator_key = Setting.get('translator_key')
result = UserAgent.post(
url,
{
locale: locale,
text_modules: text_modules_to_push,
fqdn: Setting.get('fqdn'),
translator_key: translator_key,
},
{
json: true,
open_timeout: 6,
read_timeout: 16,
verify_ssl: true,
}
)
raise "Can't push text_modules to #{url}: #{result.error}" if !result.success?
# set new translator_key if given
if result.data['translator_key']
Setting.set('translator_key', result.data['translator_key'])
end
true
end
private
def validate_content
return true if content.blank?
return true if content.match?(%r{<.+?>})
content.gsub!(%r{(\r\n|\n\r|\r)}, "\n")
self.content = content.text2html
true
end
end