123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- # Copyright (C) 2012-2016 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
- csv_delete_possible true
- =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,
- }
- )
- 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,
- }
- )
- raise "Can't push text_modules to #{url}: #{result.error}" if !result.success?
- # set new translator_key if given
- if result.data['translator_key']
- 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?(/<.+?>/)
- content.gsub!(/(\r\n|\n\r|\r)/, "\n")
- self.content = content.text2html
- true
- end
- end
|