trabajo-afectivo/app/models/text_module.rb

121 lines
2.7 KiB
Ruby
Raw Normal View History

2016-10-19 03:11:36 +00:00
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
2012-10-22 13:00:26 +00:00
class TextModule < ApplicationModel
include ChecksClientNotification
include ChecksHtmlSanitized
include CanCsvImport
validates :name, presence: true
validates :content, presence: true
2016-07-25 20:13:38 +00:00
before_create :validate_content
before_update :validate_content
sanitized_html :content
csv_delete_possible true
2016-07-25 20:13:38 +00:00
=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
2016-07-25 20:13:38 +00:00
url = "https://i18n.zammad.com/api/v1/text_modules/#{locale}"
result = UserAgent.get(
url,
{},
{
json: 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|
2016-07-25 20:13:38 +00:00
exists = TextModule.find_by(foreign_id: text_module['foreign_id'])
if exists
next if !overwrite_existing_item
exists.update!(text_module.symbolize_keys!)
2016-07-25 20:13:38 +00:00
else
text_module[:updated_by_id] = 1
text_module[:created_by_id] = 1
TextModule.create(text_module.symbolize_keys!)
end
end
2016-07-25 20:13:38 +00:00
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|
2016-07-25 20:13:38 +00:00
next if !text_module.active
2016-07-25 20:13:38 +00:00
text_modules_to_push.push text_module
end
2016-07-25 20:13:38 +00:00
return true if text_modules_to_push.blank?
2016-07-25 20:13:38 +00:00
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'),
2016-07-25 20:13:38 +00:00
translator_key: translator_key,
},
{
json: true,
2016-07-25 20:13:38 +00:00
open_timeout: 6,
read_timeout: 16,
}
)
raise "Can't push text_modules to #{url}: #{result.error}" if !result.success?
# set new translator_key if given
if result.data['translator_key']
2019-06-28 11:38:49 +00:00
Setting.set('translator_key', result.data['translator_key'])
2016-07-25 20:13:38 +00:00
end
true
end
private
def validate_content
return true if content.blank?
return true if content.match?(/<.+?>/)
content.gsub!(/(\r\n|\n\r|\r)/, "\n")
self.content = content.text2html
true
end
end