From e4980904023c9ca7dfd04f6996e20f0b539d589a Mon Sep 17 00:00:00 2001 From: CodeShakingSheep <19874562+CodeShakingSheep@users.noreply.github.com> Date: Sun, 8 Feb 2026 23:41:43 -0600 Subject: [PATCH] Add config panel for mail address and mail name --- conf/default.env | 4 ++-- config_panel.toml | 18 ++++++++++++++++++ manifest.toml | 16 ++++++++++++++-- scripts/config | 9 +++++++++ scripts/install | 8 +++++--- scripts/upgrade | 23 +++++++++++++++++++++-- tests.toml | 3 +++ 7 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 config_panel.toml create mode 100644 scripts/config diff --git a/conf/default.env b/conf/default.env index dcd6195..0969057 100644 --- a/conf/default.env +++ b/conf/default.env @@ -25,8 +25,8 @@ MAIL_PORT=25 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS='__EMAIL__' -MAIL_FROM_NAME='__EMAIL_FULLNAME__' +MAIL_FROM_ADDRESS='__MAIL_ADDRESS__' +MAIL_FROM_NAME='__MAIL_NAME__' DEMO_MODE=false diff --git a/config_panel.toml b/config_panel.toml new file mode 100644 index 0000000..3cfce15 --- /dev/null +++ b/config_panel.toml @@ -0,0 +1,18 @@ +version = "1.0" +[main] +name = "InvoicNinja configuration" + + [main.config] + name = "Configuration Options" + + [main.config.mail_address] + ask = "from email" + type = "email" + help = "Default email address to use for various automated emails." + bind = "MAIL_FROM_ADDRESS:__INSTALL_DIR__/.env" + + [main.config.mail_name] + ask = "from name" + type = "name" + help = "Default name address to use for various automated names." + bind = "MAIL_FROM_NAME:__INSTALL_DIR__/.env" \ No newline at end of file diff --git a/manifest.toml b/manifest.toml index 0c15a83..7590b8d 100644 --- a/manifest.toml +++ b/manifest.toml @@ -51,10 +51,22 @@ ram.runtime = "50M" type = "user" [install.password] - help.en = "Use the help field to add an information for the admin about this question." - help.fr = "Utilisez le champ aide pour ajouter une information à l'intention de l'administrateur à propos de cette question." + help.en = "The password to login into InvoiceNinja." + help.fr = "Le mot de passe pour se connecter à InvoiceNinja." type = "password" + [install.mail_name] + help.en = "Choose what name will be displayed when InvoiceNinja sends mails." + help.fr = "" + type = "string" + default = "" + + [install.mail_address] + help.en = "Choose from which mail-address emails will be send." + help.fr = "" + type = "email" + default = "" + [resources] [resources.sources] diff --git a/scripts/config b/scripts/config new file mode 100644 index 0000000..ebec969 --- /dev/null +++ b/scripts/config @@ -0,0 +1,9 @@ +# we need to clear invoiceninja's cache after updating vars +# through the config-panel. +ynh_app_config_apply() { + _ynh_app_config_apply + pushd "$install_dir" + # Optimize the framework for better performance + php$phpversion artisan optimize --no-interaction --verbose + popd +} \ No newline at end of file diff --git a/scripts/install b/scripts/install index 1dec766..27e8806 100755 --- a/scripts/install +++ b/scripts/install @@ -14,12 +14,14 @@ api_secret="$(ynh_string_random --length=32)" app_key="$(ynh_string_random --length=32)" phantomjs_key="$(ynh_string_random --length=32)" -email_fullname="$(ynh_user_get_info --username=$admin --key=fullname)" -email="$(ynh_user_get_info --username=$admin --key=mail)" +mail_address=$(ynh_app_setting_get --app=$mail_address --key=mail_address) +mail_name=$(ynh_app_setting_get --app=$mail_name --key=mail_name) ynh_app_setting_set --key=api_secret --value=$api_secret ynh_app_setting_set --key=app_key --value=$app_key ynh_app_setting_set --key=phantomjs_key --value=$phantomjs_key +#ynh_app_setting_set --key=mail_address --value="$mail_address" +#ynh_app_setting_set --key=mail_name --value="$mail_name" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE @@ -55,7 +57,7 @@ ynh_script_progression "Building the application..." pushd "$install_dir" # Run the database migrations and initially fill the db php$php_version artisan migrate:fresh --seed --no-interaction --verbose --force - php$php_version artisan ninja:create-account --email $email --password "$password" --no-interaction --verbose + php$php_version artisan ninja:create-account --email $mail_address --password "$password" --no-interaction --verbose php$php_version artisan optimize --no-interaction --verbose php$php_version artisan view:clear php$php_version artisan cache:clear diff --git a/scripts/upgrade b/scripts/upgrade index 432a1d4..2115299 100755 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -11,14 +11,33 @@ source /usr/share/yunohost/helpers #================================================= ynh_script_progression "Ensuring downward compatibility..." +if [ -z "${mail_address:-}" ]; then + mail_address="true" + ynh_app_setting_set --app=$app --key=mail_address --value=$mail_address +fi + +if [ -z "${mail_name:-}" ]; then + mail_name="true" + ynh_app_setting_set --app=$app --key=mail_name --value=$mail_name +fi + # Delete deprecated `firstname`/`lastname` settings. See upstream https://github.com/YunoHost/yunohost/pull/1516 ynh_app_setting_delete --key=email_firstname ynh_app_setting_delete --key=email_lastname ynh_app_setting_delete --key=email # also delete unnecessary duplicate of state storage # Retrieve `$admin` user settings -ynh_app_setting_set_default --key=email_fullname --value="$(ynh_user_get_info --username=$admin --key=fullname)" -ynh_app_setting_set_default --key=email --value="$(ynh_user_get_info --username=$admin --key=mail)" +mail_from_name=$(ynh_app_setting_get --key=mail_from_name) +if [ -z "$mail_from_name" ]; then + mail_from_name="${app}@${domain}" + ynh_app_setting_set --key=mail_from_name --value="$mail_from_name" +fi + +mail_from_sender=$(ynh_app_setting_get --key=mail_from_sender) +if [ -z "$mail_from_sender" ]; then + mail_from_sender="${app}@${domain}" + ynh_app_setting_set --key=mail_from_sender --value="$mail_from_sender" +fi ynh_app_setting_set_default --key=api_secret --value="$(ynh_string_random --length=32)" ynh_app_setting_set_default --key=app_key --value="$(ynh_string_random --length=32)" diff --git a/tests.toml b/tests.toml index 8829f31..ed7df47 100644 --- a/tests.toml +++ b/tests.toml @@ -12,6 +12,9 @@ test_format = 1.0 # Default args to use for install # ------------------------------- + args.mail_address = "invoiceninja@domain.tld" + args.mail_name = "invoiceninja" + # ------------------------------- # Commits to test upgrade from # -------------------------------