Merge pull request #12923 from opf/packaging/47354-ask-default-language-setting-in-packaged-installation

Packaging/47354 ask default language setting in packaged installation
This commit is contained in:
Christophe Bliard
2023-07-04 16:21:33 +02:00
committed by GitHub
5 changed files with 87 additions and 3 deletions
+19 -1
View File
@@ -40,11 +40,26 @@ input_protocol_params() {
input_admin_mail() {
if wiz_get "smtp/admin_email" &>/dev/null ; then
STATE="done"
STATE="input_default_language"
return
fi
wiz_put "openproject/admin_email"
if wiz_ask ; then
STATE="input_default_language"
else
STATE="start"
fi
}
input_default_language() {
# if legacy existing install, or when reconfiguring an existing install, we do not ask for default language again
if ${APP_NAME} config:get HOST &>/dev/null ; then
STATE="done"
return
fi
wiz_put "openproject/default_language"
if wiz_ask ; then
STATE="done"
else
@@ -66,6 +81,9 @@ state_machine() {
"input_admin_mail")
input_admin_mail
;;
"input_default_language")
input_default_language
;;
"done")
echo "DONE"
exit 0
+6 -2
View File
@@ -10,6 +10,10 @@ CLI="${APP_NAME}"
ADMIN_EMAIL="$(wiz_get "openproject/admin_email" || wiz_get "smtp/admin_email")"
${CLI} config:set RECOMPILE_RAILS_ASSETS="true"
# Set the configured default language
# Will be unset at installation postinstall before restart to ensure the setting is writable
${CLI} config:set OPENPROJECT_DEFAULT_LANGUAGE="$(wiz_get "openproject/default_language")"
# Check for custom gems
custom_gemfile=$(${CLI} config:get CUSTOM_PLUGIN_GEMFILE || echo "")
if [ -n "$custom_gemfile" ] && [ -f "$custom_gemfile" ]; then
@@ -103,8 +107,8 @@ ${CLI} run rake "packager:before_postinstall"
# Use the OpenProject internal setup in one environment task
${CLI} run rake "${rake_commands} packager:postinstall"
# For some reason RHEL8 creates files with chmod 0600
find "${APP_HOME}/public" -type f -exec chmod 0644 {} \;
# For some reason RHEL8 creates files with chmod 0600
find "${APP_HOME}/public" -type f -exec chmod 0644 {} \;
# Allow OpenProject to perform custom initialization steps in the context of this installer
if [ -e "${APP_HOME}/packaging/scripts/postinstall" ]; then
+8
View File
@@ -19,3 +19,11 @@ Type: string
Default: admin@example.net
Description: Your email address for the admin account:
Enter the email address to be used for first admin account.
Template: openproject/default_language
Type: select
Choices: af, ar, az, be, bg, ca, ckb-IR, cs, da, de, el, en, eo, es, et, eu, fa, fi, fil, fr, he, hi, hr, hu, id, it, ja, ka, ko, lt, lv, mn, ne, nl, no, pl, pt, ro, ru, rw, si, sk, sl, sr, sv, th, tr, uk, vi, zh-CN, zh-TW
Translations: Afrikaans, العربية, Azərbaycan, Беларуская, Български, Català, کوردیی ناوەندی, Čeština, Dansk, Deutsch, Ελληνικά, English, Esperanto, Español, Eesti, Euskara, فارسی, Suomi, Filipino, Français, עברית, हिन्दी, Hrvatski, Magyar, Indonesia, Italiano, 日本語, ქართული, 한국어, Lietuvių, Latviešu, Монгол, नेपाली, Nederlands, Norsk, Polski, Português, Română, Русский, Kinyarwanda, සිංහල, Slovenčina, Slovenščina, Српски, Svenska, ไทย, Türkçe, Українська, Tiếng việt, 简体中文, 繁体中文
Default: en
Description: Default language of OpenProject:
Choose the language to use by default when accessing your OpenProject instance.
+3
View File
@@ -41,3 +41,6 @@ ${CLI} config:unset SMTP_PORT
${CLI} config:unset SMTP_USERNAME
${CLI} config:unset SMTP_PASSWORD
${CLI} config:unset SMTP_DOMAIN
# Same for default language
${CLI} config:unset OPENPROJECT_DEFAULT_LANGUAGE
+51
View File
@@ -0,0 +1,51 @@
#!/usr/bin/env ruby
# Outputs the Choices and Translations lines for openproject/default_language
# select option in packager installation.
#
# The template is located at packaging/addons/openproject/templates
require 'pathname'
require 'yaml'
class App
class << self
def rails_root
@rails_root ||=
Pathname.new(__dir__)
.ascend
.find { |dir| dir.join('Gemfile').exist? }
.tap { |dir| raise "Unable to find Rails root directory (looking up from #{__dir__})" if dir.nil? }
end
end
end
class PrintPackagerLanguagesChoices
class << self
def call
languages_codes, languages_names = languages_codes_and_names
puts "Choices: #{languages_codes.join(', ')}"
puts "Translations: #{languages_names.join(', ')}"
puts
puts "Now update packaging/addons/openproject/templates with these two lines"
end
def languages_codes_and_names
translations_files
.flat_map { |f| language_code_and_name_from(f) }
.sort
.transpose
end
def translations_files
App.rails_root.glob('config/locales/generated/*.yml')
end
def language_code_and_name_from(translation_file)
YAML.load_file(translation_file.to_s)
.map { |(lang, data)| [lang, data.dig('cldr', 'language_name')] }
end
end
end
PrintPackagerLanguagesChoices.call