Added autoload of text modules.
This commit is contained in:
parent
e04f9ee74d
commit
1b907f0d73
7 changed files with 136 additions and 2 deletions
|
@ -43,7 +43,6 @@ curl http://localhost/api/v1/getting_started -v -u #{login}:#{password}
|
||||||
end
|
end
|
||||||
|
|
||||||
# return result
|
# return result
|
||||||
Calendar.init_setup(request.remote_ip)
|
|
||||||
render json: {
|
render json: {
|
||||||
setup_done: setup_done,
|
setup_done: setup_done,
|
||||||
import_mode: Setting.get('import_mode'),
|
import_mode: Setting.get('import_mode'),
|
||||||
|
|
|
@ -99,6 +99,7 @@ curl http://localhost/api/v1/text_modules.json -v -u #{login}:#{password} -H "Co
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
deny_if_not_role(Z_ROLENAME_ADMIN)
|
||||||
model_create_render(TextModule, params)
|
model_create_render(TextModule, params)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -128,6 +129,7 @@ curl http://localhost/api/v1/text_modules.json -v -u #{login}:#{password} -H "Co
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
deny_if_not_role(Z_ROLENAME_ADMIN)
|
||||||
model_update_render(TextModule, params)
|
model_update_render(TextModule, params)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -145,6 +147,7 @@ curl http://localhost/api/v1/text_modules.json -v -u #{login}:#{password} -H "Co
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
|
deny_if_not_role(Z_ROLENAME_ADMIN)
|
||||||
model_destory_render(TextModule, params)
|
model_destory_render(TextModule, params)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -186,6 +186,16 @@ class UsersController < ApplicationController
|
||||||
if user.email
|
if user.email
|
||||||
Service::Image.organization_suggest(user.email)
|
Service::Image.organization_suggest(user.email)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# load calendar
|
||||||
|
Calendar.init_setup(request.remote_ip)
|
||||||
|
|
||||||
|
# load text modules
|
||||||
|
begin
|
||||||
|
TextModule.load(request.env['HTTP_ACCEPT_LANGUAGE'] || 'en-us')
|
||||||
|
rescue => e
|
||||||
|
logger.error "Unable to load text modules #{request.env['HTTP_ACCEPT_LANGUAGE'] || 'en-us'}: #{e.message}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# send inviteation if needed / only if session exists
|
# send inviteation if needed / only if session exists
|
||||||
|
|
|
@ -2,6 +2,20 @@
|
||||||
|
|
||||||
class Locale < ApplicationModel
|
class Locale < ApplicationModel
|
||||||
|
|
||||||
|
=begin
|
||||||
|
|
||||||
|
get locals to sync
|
||||||
|
|
||||||
|
all:
|
||||||
|
|
||||||
|
Locale.sync
|
||||||
|
|
||||||
|
returns
|
||||||
|
|
||||||
|
['en-us', 'de-de', ...]
|
||||||
|
|
||||||
|
=end
|
||||||
|
|
||||||
def self.to_sync
|
def self.to_sync
|
||||||
locales = Locale.where(active: true)
|
locales = Locale.where(active: true)
|
||||||
if Rails.env.test?
|
if Rails.env.test?
|
||||||
|
@ -15,6 +29,16 @@ class Locale < ApplicationModel
|
||||||
locales
|
locales
|
||||||
end
|
end
|
||||||
|
|
||||||
|
=begin
|
||||||
|
|
||||||
|
load locales from online
|
||||||
|
|
||||||
|
all:
|
||||||
|
|
||||||
|
Locale.load
|
||||||
|
|
||||||
|
=end
|
||||||
|
|
||||||
def self.load
|
def self.load
|
||||||
url = 'https://i18n.zammad.com/api/v1/locales'
|
url = 'https://i18n.zammad.com/api/v1/locales'
|
||||||
|
|
||||||
|
|
|
@ -4,4 +4,91 @@ class TextModule < ApplicationModel
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
validates :content, presence: true
|
validates :content, presence: true
|
||||||
notify_clients_support
|
notify_clients_support
|
||||||
|
|
||||||
|
=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)
|
||||||
|
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 { |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
|
||||||
|
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 { |text_module|
|
||||||
|
next if !text_module.active
|
||||||
|
text_modules_to_push.push text_module
|
||||||
|
}
|
||||||
|
|
||||||
|
return true if text_modules_to_push.empty?
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -102,7 +102,7 @@ push translations to online
|
||||||
|
|
||||||
return true if translations_to_push.empty?
|
return true if translations_to_push.empty?
|
||||||
|
|
||||||
url = 'https://i18n.zammad.com/api/v1/thanks_for_your_support'
|
url = 'https://i18n.zammad.com/api/v1/translations/thanks_for_your_support'
|
||||||
|
|
||||||
translator_key = Setting.get('translator_key')
|
translator_key = Setting.get('translator_key')
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,17 @@ returns
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# load text modules
|
||||||
|
if auto_wizard_hash['TextModuleLocale']
|
||||||
|
if auto_wizard_hash['TextModuleLocale']['Locale']
|
||||||
|
begin
|
||||||
|
TextModule.load(auto_wizard_hash['TextModuleLocale']['Locale'])
|
||||||
|
rescue => e
|
||||||
|
Rails.logger.error "Unable to load text modules #{auto_wizard_hash['TextModuleLocale']['Locale']}: #{e.message}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# set Settings
|
# set Settings
|
||||||
if auto_wizard_hash['Settings']
|
if auto_wizard_hash['Settings']
|
||||||
auto_wizard_hash['Settings'].each { |setting_data|
|
auto_wizard_hash['Settings'].each { |setting_data|
|
||||||
|
|
Loading…
Reference in a new issue