From a5cbfad3dc89a590eca58933f050d3e361203190 Mon Sep 17 00:00:00 2001 From: Robles Rodolphe Date: Thu, 13 May 2021 18:49:08 +0200 Subject: [PATCH 01/20] [autopatch] Update issue and PR templates --- .github/ISSUE_TEMPLATE.md | 55 ++++++++++++++++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 16 ++++++++++ pull_request_template.md | 16 ++++------ 3 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..2729a6b --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,55 @@ +--- +name: Bug report +about: When creating a bug report, please use the following template to provide all the relevant information and help debugging efficiently. + +--- + +**How to post a meaningful bug report** +1. *Read this whole template first.* +2. *Determine if you are on the right place:* + - *If you were performing an action on the app from the webadmin or the CLI (install, update, backup, restore, change_url...), you are on the right place!* + - *Otherwise, the issue may be due to the app itself. Refer to its documentation or repository for help.* + - *When in doubt, post here and we will figure it out together.* +3. *Delete the italic comments as you write over them below, and remove this guide.* +--- + +### Describe the bug + +*A clear and concise description of what the bug is.* + +### Context + +- Hardware: *VPS bought online / Old laptop or computer / Raspberry Pi at home / Internet Cube with VPN / Other ARM board / ...* +- YunoHost version: x.x.x +- I have access to my server: *Through SSH | through the webadmin | direct access via keyboard / screen | ...* +- Are you in a special context or did you perform some particular tweaking on your YunoHost instance?: *no / yes* + - If yes, please explain: +- Using, or trying to install package version/branch: +- If upgrading, current package version: *can be found in the admin, or with `yunohost app info $app_id`* + +### Steps to reproduce + +- *If you performed a command from the CLI, the command itself is enough. For example:* + ```sh + sudo yunohost app install the_app + ``` +- *If you used the webadmin, please perform the equivalent command from the CLI first.* +- *If the error occurs in your browser, explain what you did:* + 1. *Go to '...'* + 2. *Click on '...'* + 3. *Scroll down to '...'* + 4. *See error* + +### Expected behavior + +*A clear and concise description of what you expected to happen. You can remove this section if the command above is enough to understand your intent.* + +### Logs + +*When an operation fails, YunoHost provides a simple way to share the logs.* +- *In the webadmin, the error message contains a link to the relevant log page. On that page, you will be able to 'Share with Yunopaste'. If you missed it, the logs of previous operations are also available under Tools > Logs.* +- *In command line, the command to share the logs is displayed at the end of the operation and looks like `yunohost log display [log name] --share`. If you missed it, you can find the log ID of a previous operation using `yunohost log list`.* + +*After sharing the log, please copypaste directly the link provided by YunoHost (to help readability, no need to copypaste the entire content of the log here, just the link is enough...)* + +*If applicable and useful, add screenshots to help explain your problem.* diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ef70e18 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,16 @@ +## Problem + +- *Description of why you made this PR* + +## Solution + +- *And how do you fix that problem* + +## PR Status + +- [ ] Code finished and ready to be reviewed/tested +- [ ] The fix/enhancement were manually tested (if applicable) + +## Automatic tests + +Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization) diff --git a/pull_request_template.md b/pull_request_template.md index b8b0a14..5790981 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -1,18 +1,16 @@ ## Problem + - *Description of why you made this PR* ## Solution + - *And how do you fix that problem* ## PR Status -- [ ] Code finished. -- [ ] Tested with Package_check. -- [ ] Fix or enhancement tested. -- [ ] Upgrade from last version tested. -- [ ] Can be reviewed and tested. -## Package_check results ---- -*If you have access to [App Continuous Integration for packagers](https://yunohost.org/#/packaging_apps_ci) you can provide a link to the package_check results like below, replacing '-NUM-' in this link by the PR number and USERNAME by your username on the ci-apps-dev. Or you provide a screenshot or a pastebin of the results* +- [ ] Code finished and ready to be reviewed/tested +- [ ] The fix/enhancement were manually tested (if applicable) -[![Build Status](https://ci-apps-dev.yunohost.org/jenkins/job/garradin_ynh%20PR-NUM-%20(USERNAME)/badge/icon)](https://ci-apps-dev.yunohost.org/jenkins/job/garradin_ynh%20PR-NUM-%20(USERNAME)/) +## Automatic tests + +Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization) \ No newline at end of file From f7bc34fde98614db5745d497a4d5641a331f2c5e Mon Sep 17 00:00:00 2001 From: tituspijean Date: Sat, 25 Sep 2021 22:13:32 +0200 Subject: [PATCH 02/20] Fix permissions --- scripts/install | 23 ++++++++--------------- scripts/upgrade | 24 +++++++++--------------- 2 files changed, 17 insertions(+), 30 deletions(-) diff --git a/scripts/install b/scripts/install index 5f8d061..1788968 100644 --- a/scripts/install +++ b/scripts/install @@ -64,8 +64,6 @@ ynh_app_setting_set --app=$app --key=final_path --value=$final_path # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" -chown -R $app:$app $final_path - #================================================= # NGINX CONFIGURATION #================================================= @@ -101,19 +99,14 @@ else ynh_replace_string --match_string="//const WWW_URI = '/asso/';" --replace_string="const WWW_URI = '$path_url/';" --target_file="$final_path/config.local.php" fi -# permissions on files and directories -chmod 400 $final_path/config.dist.php $final_path/index.php $final_path/sous-domaine.html $final_path/VERSION -chmod 644 $final_path/config.local.php -find $final_path/scripts -type d -exec chmod 500 {} + -find $final_path/scripts -type f -exec chmod 400 {} + -find $final_path/templates -type d -exec chmod 500 {} + -find $final_path/templates -type f -exec chmod 400 {} + -find $final_path/include -type d -exec chmod 500 {} + -find $final_path/include -type f -exec chmod 400 {} + -find $final_path/data -type d -exec chmod 700 {} + -find $final_path/data -type f -exec chmod 600 {} + -find /var/www/garradin/www -type d -exec chmod 505 {} + -find /var/www/garradin/www -type f -exec chmod 644 {} + +# Permissions on files and directories +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" +find "$final_path" -type d -exec chmod 550 {} + +find "$final_path" -type f -exec chmod 440 {} + +find "$final_path/data" -type d -exec chmod 770 {} + +find "$final_path/data" -type f -exec chmod 660 {} + +chmod 660 "$final_path/config.local.php" #================================================= # SETUP SSOWAT diff --git a/scripts/upgrade b/scripts/upgrade index d251201..8b5a911 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -193,8 +193,6 @@ then ynh_secure_remove $backup_bdd fi -chown -R $app:$app $final_path - #================================================= # ADD A CONFIGURATION #================================================= @@ -209,19 +207,14 @@ else ynh_replace_string --match_string="//const WWW_URI = '/asso/';" --replace_string="const WWW_URI = '$path_url/';" --target_file="$final_path/config.local.php" fi -# Set permissions on app files -chmod 400 $final_path/config.dist.php $final_path/index.php $final_path/sous-domaine.html $final_path/VERSION -chmod 644 $final_path/config.local.php -find $final_path/scripts -type d -exec chmod 500 {} + -find $final_path/scripts -type f -exec chmod 400 {} + -find $final_path/templates -type d -exec chmod 500 {} + -find $final_path/templates -type f -exec chmod 400 {} + -find $final_path/include -type d -exec chmod 500 {} + -find $final_path/include -type f -exec chmod 400 {} + -find $final_path/data -type d -exec chmod 700 {} + -find $final_path/data -type f -exec chmod 600 {} + -find /var/www/garradin/www -type d -exec chmod 505 {} + -find /var/www/garradin/www -type f -exec chmod 644 {} + +# Permissions on files and directories +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" +find "$final_path" -type d -exec chmod 550 {} + +find "$final_path" -type f -exec chmod 440 {} + +find "$final_path/data" -type d -exec chmod 770 {} + +find "$final_path/data" -type f -exec chmod 660 {} + +chmod 660 "$final_path/config.local.php" #================================================= # RELOAD NGINX @@ -236,6 +229,7 @@ ynh_systemd_action --service_name=nginx --action=reload ynh_script_progression --message="Finalise upgrade" --weight=1 ynh_local_curl "/admin/index.php" +chmod 440 "$final_path/config.local.php" #================================================= # END OF SCRIPT From 1e3a7a09b4ef10373f268e70ed1e941024f5d246 Mon Sep 17 00:00:00 2001 From: tituspijean Date: Sat, 25 Sep 2021 22:20:28 +0200 Subject: [PATCH 03/20] Remove ynh_webpath_available --- scripts/install | 2 -- scripts/restore | 2 -- 2 files changed, 4 deletions(-) diff --git a/scripts/install b/scripts/install index 1788968..335a112 100644 --- a/scripts/install +++ b/scripts/install @@ -34,8 +34,6 @@ ynh_script_progression --message="Validating installation parameters..." --weigh final_path=/var/www/$app test ! -e "$final_path" || ynh_die "This path already contains a folder" -# Check web path availability -ynh_webpath_available $domain $path_url # Register (book) web path ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url diff --git a/scripts/restore b/scripts/restore index f23b8ad..030a67d 100644 --- a/scripts/restore +++ b/scripts/restore @@ -34,8 +34,6 @@ phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) #================================================= ynh_script_progression --message="Validating restoration parameters..." --weight=4 -ynh_webpath_available $domain $path_url \ - || ynh_die "Path not available: ${domain}${path_url}" test ! -d $final_path \ || ynh_die "There is already a directory: $final_path " From 2b130e0d3513ba2445486c189398f988641a8467 Mon Sep 17 00:00:00 2001 From: tituspijean Date: Sat, 25 Sep 2021 22:46:35 +0200 Subject: [PATCH 04/20] Fix permissions in restore too --- scripts/install | 2 -- scripts/restore | 8 +++++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/scripts/install b/scripts/install index 335a112..b7447b9 100644 --- a/scripts/install +++ b/scripts/install @@ -77,8 +77,6 @@ ynh_script_progression --message="Configuring PHP-FPM..." --weight=5 # Create a dedicated PHP-FPM config ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION --package="$extra_php_dependencies" -#phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) - #================================================= # ADD A CONFIGURATION diff --git a/scripts/restore b/scripts/restore index 030a67d..4ba8ebe 100644 --- a/scripts/restore +++ b/scripts/restore @@ -65,7 +65,13 @@ ynh_system_user_create --username=$app #================================================= # Restore permissions on app files -chown -R $app:$app $final_path +chmod -R o-rwx "$final_path" +chown -R $app:www-data "$final_path" +find "$final_path" -type d -exec chmod 550 {} + +find "$final_path" -type f -exec chmod 440 {} + +find "$final_path/data" -type d -exec chmod 770 {} + +find "$final_path/data" -type f -exec chmod 660 {} + +chmod 660 "$final_path/config.local.php" #================================================= # RESTORE THE PHP-FPM CONFIGURATION From 5021b9992a11151e038c88c743c74fa1ae68caa1 Mon Sep 17 00:00:00 2001 From: tituspijean Date: Sat, 25 Sep 2021 22:55:29 +0200 Subject: [PATCH 05/20] Appease package linter, remove superfluous example --- manifest.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/manifest.json b/manifest.json index 3e46591..bb35489 100644 --- a/manifest.json +++ b/manifest.json @@ -25,8 +25,7 @@ "install" : [ { "name": "domain", - "type": "domain", - "example": "domain.org" + "type": "domain" }, { "name": "path", From 285974232bdc07b945fb4dd536ef8736fbde92ca Mon Sep 17 00:00:00 2001 From: tituspijean Date: Sat, 25 Sep 2021 23:19:34 +0200 Subject: [PATCH 06/20] Fix change_url --- scripts/change_url | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/change_url b/scripts/change_url index 532750e..54fb322 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -88,8 +88,8 @@ if [ $change_path -eq 1 ] && [ "$new_path" == "/" ]; then ynh_replace_string --match_string="const WWW_URI = '$old_path/';" --replace_string="const WWW_URI = '$new_path';" --target_file="$final_path/config.local.php" elif [ $change_path -eq 1 ] && [ "$old_path" == "/" ]; then ynh_replace_string --match_string="const WWW_URI = '$old_path';" --replace_string="const WWW_URI = '$new_path/';" --target_file="$final_path/config.local.php" -else [ $change_path -eq 1 ] - ynh_replace_string --match_string="const WWW_URI = '$old_path/';" --replace_string="const WWW_URI = '$new_path/';" --target_file="$final_path/config.local.php" +elif [ $change_path -eq 1 ] + ynh_replace_string --match_string="const WWW_URI = '$old_path/';" --replace_string="const WWW_URI = '$new_path/';" --target_file="$final_path/config.local.php" fi # Change the domain for NGINX From 30f93edf17ede59cd596eb1355a2aa71b755b96e Mon Sep 17 00:00:00 2001 From: tituspijean Date: Sat, 25 Sep 2021 23:26:27 +0200 Subject: [PATCH 07/20] =?UTF-8?q?Fix=20change=5Furl=C2=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/change_url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/change_url b/scripts/change_url index 54fb322..594268b 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -88,7 +88,7 @@ if [ $change_path -eq 1 ] && [ "$new_path" == "/" ]; then ynh_replace_string --match_string="const WWW_URI = '$old_path/';" --replace_string="const WWW_URI = '$new_path';" --target_file="$final_path/config.local.php" elif [ $change_path -eq 1 ] && [ "$old_path" == "/" ]; then ynh_replace_string --match_string="const WWW_URI = '$old_path';" --replace_string="const WWW_URI = '$new_path/';" --target_file="$final_path/config.local.php" -elif [ $change_path -eq 1 ] +elif [ $change_path -eq 1 ]; then ynh_replace_string --match_string="const WWW_URI = '$old_path/';" --replace_string="const WWW_URI = '$new_path/';" --target_file="$final_path/config.local.php" fi From e3c6d42ff6de2fe271410f880ce1db9813cf3363 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 25 Sep 2021 23:36:54 +0200 Subject: [PATCH 08/20] Cleaning up --- check_process | 14 +++++++++--- doc/DESCRIPTION.md | 1 + doc/DESCRIPTION_fr.md | 1 + doc/DISCLAIMER.md | 0 manifest.json | 12 ++++++++-- pull_request_template.md | 16 ------------- scripts/install | 4 ++-- scripts/remove | 2 +- scripts/restore | 20 ++++++++-------- scripts/upgrade | 49 +++++++++++++++++++--------------------- 10 files changed, 59 insertions(+), 60 deletions(-) create mode 100644 doc/DESCRIPTION.md create mode 100644 doc/DESCRIPTION_fr.md create mode 100644 doc/DISCLAIMER.md delete mode 100644 pull_request_template.md diff --git a/check_process b/check_process index cc22c57..5eda0e2 100644 --- a/check_process +++ b/check_process @@ -1,8 +1,8 @@ ; Test complet ; Manifest - domain="domain.tld" (DOMAIN) - path="/path" (PATH) - is_public=1 (PUBLIC|public=1|private=0) + domain="domain.tld" + path="/path" + is_public=1 ; Checks pkg_linter=1 setup_sub_dir=1 @@ -11,6 +11,14 @@ setup_private=1 setup_public=1 upgrade=1 + #upgrade=1 from_commit=a36dd8b13d85078ddcee0d6d3146feb107d3e042 backup_restore=1 multi_instance=1 change_url=1 +;;; Options +Email= +Notification=none +;;; Upgrade options + ; commit=a36dd8b13d85078ddcee0d6d3146feb107d3e042 + name=Merge pull request #55 from yunohost-bot/issue-and-pr-template + manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666& diff --git a/doc/DESCRIPTION.md b/doc/DESCRIPTION.md new file mode 100644 index 0000000..20fa158 --- /dev/null +++ b/doc/DESCRIPTION.md @@ -0,0 +1 @@ +Garradin (word meaning money in an aboriginal dialect of northern Australia, pronounced "gar-a-dine" em) is software for associative management. It is the tool of choice for managing an association, a sports club, an NGO, etc. It is designed to meet the needs of a small to medium-sized structure: management of members, accounting, website, note-taking in meetings, archiving and sharing of the association's operating documents, discussion between members, etc. etc. . \ No newline at end of file diff --git a/doc/DESCRIPTION_fr.md b/doc/DESCRIPTION_fr.md new file mode 100644 index 0000000..7f3f080 --- /dev/null +++ b/doc/DESCRIPTION_fr.md @@ -0,0 +1 @@ +Garradin (mot signifiant argent dans un dialecte aborigène du nord de l'Australie, prononcé « gar-a-dine »em) est un logiciel de gestion associative. Il est l'outil de prédilection pour gérer une association, un club sportif, une ONG, etc. Il est conçu pour répondre aux besoins d'une structure de petite à moyenne taille : gestion des adhérents, comptabilité, site web, prise de notes en réunion, archivage et partage des documents de fonctionnement de l'association, discussion entre adhérents, etc etc. \ No newline at end of file diff --git a/doc/DISCLAIMER.md b/doc/DISCLAIMER.md new file mode 100644 index 0000000..e69de29 diff --git a/manifest.json b/manifest.json index bb35489..5ecff41 100644 --- a/manifest.json +++ b/manifest.json @@ -7,14 +7,22 @@ "fr": "Logiciel libre de gestion d'association" }, "version": "1.1.10~ynh1", - "url": "http://garradin.eu/a-propos/", + "url": "http://garradin.eu", + "upstream": { + "license": "GPL-3.0-or-later", + "website": "http://garradin.eu", + "demo": "https://garradin.eu/essai/", + "admindoc": "https://fossil.kd2.org/garradin/wiki?name=Documentation", + "userdoc": "https://yunohost.org/apps", + "code": "https://fossil.kd2.org/garradin/wiki?name=Garradin" + }, "license": "GPL-3.0-or-later", "maintainer": { "name": "frju365", "email": "win10@tutanota.com" }, "requirements": { - "yunohost": ">=4.1.7" + "yunohost": ">=4.2.4" }, "multi_instance": true, "services": [ diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index ef70e18..0000000 --- a/pull_request_template.md +++ /dev/null @@ -1,16 +0,0 @@ -## Problem - -- *Description of why you made this PR* - -## Solution - -- *And how do you fix that problem* - -## PR Status - -- [ ] Code finished and ready to be reviewed/tested -- [ ] The fix/enhancement were manually tested (if applicable) - -## Automatic tests - -Automatic tests can be triggered on https://ci-apps-dev.yunohost.org/ *after creating the PR*, by commenting "!testme", "!gogogadgetoci" or "By the power of systemd, I invoke The Great App CI to test this Pull Request!". (N.B. : for this to work you need to be a member of the Yunohost-Apps organization) diff --git a/scripts/install b/scripts/install index b7447b9..9ed7601 100644 --- a/scripts/install +++ b/scripts/install @@ -76,7 +76,7 @@ ynh_add_nginx_config ynh_script_progression --message="Configuring PHP-FPM..." --weight=5 # Create a dedicated PHP-FPM config -ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION --package="$extra_php_dependencies" +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # ADD A CONFIGURATION @@ -112,7 +112,7 @@ ynh_script_progression --message="Configuring permissions..." --weight=8 # Make app public if necessary if [ $is_public -eq 1 ] then - ynh_permission_update --permission "main" --add "visitors" + ynh_permission_update --permission="main" --add="visitors" fi #================================================= diff --git a/scripts/remove b/scripts/remove index 3f0c7d7..7780ced 100644 --- a/scripts/remove +++ b/scripts/remove @@ -41,7 +41,7 @@ ynh_remove_nginx_config ynh_script_progression --message="Removing PHP-FPM configuration..." --weight=2 # Remove the dedicated PHP-FPM config -ynh_remove_fpm_config --phpversion=$YNH_PHP_VERSION --package="$extra_php_dependencies" +ynh_remove_fpm_config --package="$extra_php_dependencies" #================================================= # GENERIC FINALIZATION diff --git a/scripts/restore b/scripts/restore index 4ba8ebe..d702b05 100644 --- a/scripts/restore +++ b/scripts/restore @@ -45,20 +45,20 @@ test ! -d $final_path \ ynh_restore_file "/etc/nginx/conf.d/$domain.d/$app.conf" -#================================================= -# RESTORE THE APP MAIN DIR -#================================================= -ynh_script_progression --message="Restoring Garradin main directory..." --weight=5 - -ynh_restore_file "$final_path" - #================================================= # RECREATE THE DEDICATED USER #================================================= ynh_script_progression --message="Recreating the dedicated system user..." --weight=3 # Create the dedicated user (if not existing) -ynh_system_user_create --username=$app +ynh_system_user_create --username=$app --home_dir="$final_path" + +#================================================= +# RESTORE THE APP MAIN DIR +#================================================= +ynh_script_progression --message="Restoring Garradin main directory..." --weight=5 + +ynh_restore_file --origin_path="$final_path" #================================================= # RESTORE USER RIGHTS @@ -80,7 +80,7 @@ ynh_script_progression --message="Reconfiguring PHP-FPM..." --weight=6 ynh_restore_file --origin_path="/etc/php/$phpversion/fpm/pool.d/$app.conf" -ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION --package="$extra_php_dependencies" +ynh_add_fpm_config --package="$extra_php_dependencies" #================================================= # GENERIC FINALIZATION @@ -89,7 +89,7 @@ ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION --package="$extra_php_dependenc #================================================= ynh_script_progression --message="Reloading NGINX web server and PHP-FPM..." --weight=1 -ynh_systemd_action --service_name=php${phpversion}-fpm --action=reload +ynh_systemd_action --service_name=php$phpversion-fpm --action=reload ynh_systemd_action --service_name=nginx --action=reload #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 8b5a911..27f5e05 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -31,6 +31,20 @@ else upgrade_type=$(ynh_check_app_version_changed) fi +#================================================= +# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP +#================================================= +ynh_script_progression --message="Backing up Garradin before upgrading (may take a while)..." --weight=30 + +# Backup the current version of the app +ynh_backup_before_upgrade +ynh_clean_setup () { + # restore it if the upgrade fails + ynh_restore_upgradebackup +} +# Exit if an error occurs during the execution of the script +ynh_abort_if_errors + #================================================= # ENSURE DOWNWARD COMPATIBILITY #================================================= @@ -65,21 +79,6 @@ if [ -e "$bdd" ]; then cp -a $bdd /tmp/association.sqlite fi -#================================================= -# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP -#================================================= -ynh_script_progression --message="Backing up Garradin before upgrading (may take a while)..." --weight=30 - -# Backup the current version of the app -ynh_backup_before_upgrade -ynh_clean_setup () { - # restore it if the upgrade fails - ynh_restore_upgradebackup -} -# Exit if an error occurs during the execution of the script -ynh_abort_if_errors - - #================================================= # UPGRADE TO 0.9.8 if necessary #================================================= @@ -136,26 +135,25 @@ then upgrade_type="UPGRADE_APP" fi +#================================================= +# CREATE DEDICATED USER +#================================================= +ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 + +# Create a dedicated user (if not existing) +ynh_system_user_create --username=$app --home_dir="$final_path" + #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_script_progression --message="Upgrading source files..." --weight=5 - if [ "$upgrade_type" == "UPGRADE_APP" ] then # Download, check integrity, uncompress and patch the source from app.src ynh_setup_source --dest_dir="$final_path" fi -#================================================= -# CREATE DEDICATED USER -#================================================= -ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1 - -# Create a dedicated user (if not existing) -ynh_system_user_create --username=$app - #================================================= # NGINX CONFIGURATION #================================================= @@ -170,8 +168,7 @@ ynh_add_nginx_config ynh_script_progression --message="Upgrading PHP-FPM configuration..." --weight=2 # Create a dedicated PHP-FPM config -ynh_add_fpm_config --phpversion=$YNH_PHP_VERSION --package="$extra_php_dependencies" -phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +ynh_add_fpm_config --package="$extra_php_dependencies" #======================================================= # backup bdd, squelettes directory and config.local.php From df3890346af91833de51648ce8eae8c801be3506 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sat, 25 Sep 2021 21:36:59 +0000 Subject: [PATCH 09/20] Auto-update README --- README.md | 56 ++++++++++++++++------------------------------------ README_fr.md | 56 ++++++++++++++-------------------------------------- 2 files changed, 32 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index a1abc22..d630741 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ + + # Garradin for YunoHost [![Integration level](https://dash.yunohost.org/integration/garradin.svg)](https://dash.yunohost.org/appci/app/garradin) ![](https://ci-apps.yunohost.org/ci/badges/garradin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/garradin.maintain.svg) @@ -9,50 +14,21 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/install) to learn how to install it.* ## Overview -Garradin is a free association managing software. -**Shipped version:** 1.1.10 +Garradin (word meaning money in an aboriginal dialect of northern Australia, pronounced "gar-a-dine" em) is software for associative management. It is the tool of choice for managing an association, a sports club, an NGO, etc. It is designed to meet the needs of a small to medium-sized structure: management of members, accounting, website, note-taking in meetings, archiving and sharing of the association's operating documents, discussion between members, etc. etc. . -## Screenshots +**Shipped version:** 1.1.10~ynh1 -![](images/membre-v1.1.png) -![](images/compta.png) -![](images/emails.png) -![](images/edition-site-v1.1.png) -![](images/site.jpg) +**Demo:** https://garradin.eu/essai/ -## Demo +## Documentation and resources -* [Official demo](https://garradin.eu/essai/) - -## Documentation - - * Official documentation: https://fossil.kd2.org/garradin/wiki?name=Documentation - -## YunoHost specific features - -#### Multi-user support - -LDAP is not supported yet. - -#### Supported architectures - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/garradin.svg)](https://ci-apps.yunohost.org/ci/apps/garradin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/garradin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/garradin/) - -## Limitations - -* The application is ONLY translated into french. -* Do not install this application on the default root path's domain name without adding a subpath, otherwise the sso conection page will be substitute by home's garradin page. - -## Links - - * Report a bug: https://github.com/YunoHost-Apps/garradin_ynh/issues - * App website: https://garradin.eu - * Upstream app repository: https://fossil.kd2.org/garradin/wiki?name=Garradin - * YunoHost website: https://yunohost.org/ - ---- +* Official app website: http://garradin.eu +* Official user documentation: https://yunohost.org/apps +* Official admin documentation: https://fossil.kd2.org/garradin/wiki?name=Documentation +* Upstream app code repository: https://fossil.kd2.org/garradin/wiki?name=Garradin +* YunoHost documentation for this app: https://yunohost.org/app_garradin +* Report a bug: https://github.com/YunoHost-Apps/garradin_ynh/issues ## Developer info @@ -64,3 +40,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/garradin_ynh/tree/tes or sudo yunohost app upgrade garradin -u https://github.com/YunoHost-Apps/garradin_ynh/tree/testing --debug ``` + +**More info regarding app packaging:** https://yunohost.org/packaging_apps \ No newline at end of file diff --git a/README_fr.md b/README_fr.md index a1437e6..05460a7 100644 --- a/README_fr.md +++ b/README_fr.md @@ -1,58 +1,30 @@ # Garradin pour YunoHost -[![Niveau d'intégration](https://dash.yunohost.org/integration/garradin.svg)](https://dash.yunohost.org/appci/app/garradin) ![](https://ci-apps.yunohost.org/ci/badges/garradin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/garradin.maintain.svg) +[![Niveau d'intégration](https://dash.yunohost.org/integration/garradin.svg)](https://dash.yunohost.org/appci/app/garradin) ![](https://ci-apps.yunohost.org/ci/badges/garradin.status.svg) ![](https://ci-apps.yunohost.org/ci/badges/garradin.maintain.svg) [![Installer Garradin avec YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=garradin) *[Read this readme in english.](./README.md)* +*[Lire ce readme en français.](./README_fr.md)* > *Ce package vous permet d'installer Garradin rapidement et simplement sur un serveur YunoHost. -Si vous n'avez pas YunoHost, consultez [le guide](https://yunohost.org/install) pour apprendre comment l'installer.* +Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour savoir comment l'installer et en profiter.* ## Vue d'ensemble -Garradin est un logiciel libre de gestion associative. il permet de gérer des membres. -**Version incluse :** 1.1.10 +Garradin (mot signifiant argent dans un dialecte aborigène du nord de l'Australie, prononcé « gar-a-dine »em) est un logiciel de gestion associative. Il est l'outil de prédilection pour gérer une association, un club sportif, une ONG, etc. Il est conçu pour répondre aux besoins d'une structure de petite à moyenne taille : gestion des adhérents, comptabilité, site web, prise de notes en réunion, archivage et partage des documents de fonctionnement de l'association, discussion entre adhérents, etc etc. -## Captures d'écran +**Version incluse :** 1.1.10~ynh1 -![](images/membre-v1.1.png) -![](images/compta.png) -![](images/emails.png) -![](images/edition-site-v1.1.png) -![](images/site.jpg) +**Démo :** https://garradin.eu/essai/ -## Démo +## Documentations et ressources -* [Démo officielle](https://garradin.eu/essai/) - -## Documentation - - * Documentation officielle : https://fossil.kd2.org/garradin/wiki?name=Documentation - -## Caractéristiques spécifiques YunoHost - -#### Support multi-utilisateur - -* L'authentification LDAP n'est pas disponible. - -#### Architectures supportées - -* x86-64 - [![Build Status](https://ci-apps.yunohost.org/ci/logs/garradin.svg)](https://ci-apps.yunohost.org/ci/apps/garradin/) -* ARMv8-A - [![Build Status](https://ci-apps-arm.yunohost.org/ci/logs/garradin.svg)](https://ci-apps-arm.yunohost.org/ci/apps/garradin/) - -## Limitations - -* Garradin n'est disponible qu'en français. -* N'installez pas cette apllication à la racine du domaine par défaut sans ajouter un sous-domaine. Sinon la page de connexion SSO sera remplacée par la page d'accueil de Garradin. - -## Liens - - * Signaler un bug : https://github.com/YunoHost-Apps/garradin_ynh/issues - * Site de l'application : http://garradin.eu - * Dépôt de l'application principale : https://fossil.kd2.org/garradin/wiki?name=Garradin - * Site web YunoHost : https://yunohost.org/ - ---- +* Site officiel de l'app : http://garradin.eu +* Documentation officielle utilisateur : https://yunohost.org/apps +* Documentation officielle de l'admin : https://fossil.kd2.org/garradin/wiki?name=Documentation +* Dépôt de code officiel de l'app : https://fossil.kd2.org/garradin/wiki?name=Garradin +* Documentation YunoHost pour cette app : https://yunohost.org/app_garradin +* Signaler un bug : https://github.com/YunoHost-Apps/garradin_ynh/issues ## Informations pour les développeurs @@ -64,3 +36,5 @@ sudo yunohost app install https://github.com/YunoHost-Apps/garradin_ynh/tree/tes ou sudo yunohost app upgrade garradin -u https://github.com/YunoHost-Apps/garradin_ynh/tree/testing --debug ``` + +**Plus d'infos sur le packaging d'applications :** https://yunohost.org/packaging_apps \ No newline at end of file From 46a585a167a666515d8c27db450cee1e00c40ef8 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 25 Sep 2021 23:39:29 +0200 Subject: [PATCH 10/20] Create screenshot.png --- doc/screenshots/screenshot.png | Bin 0 -> 47936 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/screenshots/screenshot.png diff --git a/doc/screenshots/screenshot.png b/doc/screenshots/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..4aceda2f08438e98bb4527305433e8e5119f023c GIT binary patch literal 47936 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%0D=H173_r?H-H_A0=pU59f$e)LlF)geL7&$b_r zI~7@-`0p0!Bh=-u?orS6&7bvJy2Obk`|B}byr!L?_VUck$FL2{J3J1&bRnfQW5K=OMW_a%2JR5q2T^* z#T2Ai*g8}mj0UHzPJbr5{%HDi-Ir=KUl*Q2epz>$3Sf6>4Sc88STvb@RuInS1hBx0 zLmGDLQ*btoV*h;NeM;PYf5#j=j;3&m>wIF~zyp^8#XhaZ4Xv^)F~Tacg9!kxEMN0Z z@<%pqhIJl$xb)Bw_VJ_Jn3iR6g~!7TaqUKhMudB{2=JVqT~hd%=a(x7 zuCB=819KzGDROtjqw#CJ`4K*oyt3E}rDBLJs%4(p3FhVbAz!Idc#;QKt`R(B>Oy$M z?BITcT;w4&++9rbmku)_{_()CQkt8*0J);Ei7K|w_$CqVIiYMpraC$ai^KS9uO7;h zAr+bLZ<_|AS^d6W#hpob<5M}oXbleyrX+okCX1SzQ$_0ph48@@y3$IrI&RuXn@3lP zp>u&8#y9WSbs8m;@@E8-@Wx9CkV4#2LVRC1sjVJwUO~wCh@Rq@j|B9(45%19l;LWl zwTyUd)wrbD^t!yIzj1>5(NYCE%gVsHRyHuv)Ox`bra_pWPGkUQ^xjo&`K|Id^Xwu7 zr<~^rxe}z>xqvEyG@ys8PPJI{&mJh|82Md(`gnVLW?M_W_;9v+QGgc*ocPdw2!<`? zS(q()DaP_tjqxF-KrsV#ht9k|=T)&?<>RK@c-XRr*Q6Pw^am4kvx1T> zMmy*>>8QF-0qD4wHFkTGrz+hfz~OU5hLW+X>s4ZS_y_|f8y75{#~km}sibsDTQwEE zq8hJR{@K?~eF{M4hIiZUc8c(X7cw;UQNFXr%Q2teJWZ9qjXID%4=sF^pk5e?w%F0; z3YDUa?%Ef!(#^#sqP9Pe=`oW`=jBi6jTiBO{9BXiGC=;#M zZzV^B9Nv;Dur*P;`HT{1FBTvRmXlC70#JH2iP;j+J9vY&hh6pdh;l7kN7G=;g4n2- z-ktjQ^@AJCAYwu8Pj6mHbK=fH7#{nckYVu7{h0OT<5 zh_D>tFU9OsbOd9x>}hVnz)^Z1!OaNWl_SCqSGGS-=3^WYWnl$6I9PW|GG`9o9 z`yA#epGp1DJiAO}9Gj;Vbx~;E8$4(?uTu}*gQzi&CH1M4JG6Pn%f7m$+z1)jPQe%( zbUvw}#} zfz4xajS?uXUFN3)X-?ZVRSD+!ZDsGxTLg%m^HPtd_ju79Do%x!%FZ=8VE}0aY1U}O z0Rdv@E`mEfc!2Vyg?;hk1Up;Aa;!k7hH+4~mIS_o6D!n|lw10|vJ%aEC(G^j{B$_P zPS`G`ph;+Z+v7U8a|A@FsI-{9Roc4ozPQ+-n0;mgCFS=vdmw$844AaxN?9jB8kdUd ze0-vQ|6a7+Wyk|hsm})VyCm>xOjy#%B~-!uF+-#_(J0w1ZTdMVCpnaaD=9DTR0g0W zC!`RF3znt3mI@x^AoFjlC_Z>(_8X8xxIBkKJg#^{Q!HvHbinY`bC0YDY_ePJ!>LgP zeDEaskXv#7XSBnx0m4>^=w z+-2f+4Z!frT-43C zpx}YA9S@F@BMs8iKd-a7xrrx7U{ChB%p^u2ggvdj>7yX>Je<}I+I51as{>4?L@x(V zhhHBl=8_zj1}k1k@#KqJ027 z@pd;!br$O}1URGhc5mO7LFin;oJZ(X0Pmy(^Ny$IR7;hA3O&%7w?OD%KVf398g)Sn zwm&UmgO7mjkQF;2jEMbmZ8dmoH8DF=nN(wsuu;q|C^I;!AP}}^fOj~hOotQJ*8;ER zr&bSY=e9kZq<|hiv+7&NgIY{vb~5uT!JSESe5{RBV>7BSoG}oc-?4W8c@===qtkRx zxUBK&(F*ssKul7y{RPPRI=wgI^OGO6+vxaqd93xa?m@{kb?_HT=+wGYZ_LkBWD+kd zH2OU6smX~wBc%QMp-mI(=G{LL{Yb9AFfLm#elbv&*oJ=w!Fr$dz#y zJd5ApOF2Z#?g8FC)$_bD!59ieV`{_}8Zl~#r=-0yUk@M~o6Mtw2QEDH4jRWW-3ZMj z(y&XZ4ne1;t{D6&%x2h(Imm9^HG42>Hn8{o#)E|S@78Pm(|fyInMt2x1#Z6OguzFjAz`!J0GYAq0NM?c zd`>ke@kT%_0G1T7^+h$m9~5`CS4LUCuj%Wn*|N%5tvnRLf&hLH8pv>s6gR!IAX0a#;~qXmMD8BDpDs z(o0?nk30Lh7rR&@0g*Cx7|)>@VE8IEM35cK4V*;v34B-^ z1*sq!ovl(KpK-O5saA(FMug9eKCPu*C4?xN&Zz*UcaQpwBNgO9x&I5h@qRpiM2wj( zAoX6H5K<}iIKU!n5FZCMYY6B|eW~1vJhH0x4(2l@ljtRFxAQoZEPa9~9#NH;owRo9 zF>GPlU3&$dVbI!$+PZSg=pGT-8DE}9=^eKSD&j0!}CZlL-oh@TcuJ9o1BHCww4lOa{hG-0SPfv89XeG#2>aXPwdUK_Org_7!r= zc-g2&ni>+6H{Z@tQRKOQ{0tPd9aT-vL2KC7o%lO&U+v`rf16 zGVWhHqY}&2ZCS$pOuuPB-h8K1j?gOh1+i?{!z^jjTdi>{f0n%)L7OqANhx}0flXR+ zf!FM9>;iM+)BE%@0o+<+E02`FX|4FPU#CiJ&lm5{^OQkclhlV+X)XeDPY%^& z=ZTK{cVD#$sLr`^5UGpi;Ezf{|;Gym@qD8C3pKM8D zEH|kvLiFxU=F3Vqi&+sa^jCi4f4`-%5le97v`>arO)%4UBl(9Jvd)Vy6(3w6i(I~8 zk{i0ENadJ!#D%@}MNHxJGD0-rCgUe`v(fuKK{=0p9n0(T7X9cf19hDzzc^H>@sO?8 zIN@>2M)b2$-eOhIcVgZP|Bu{>xAZ*(%hZZ%aDC#techC|Np@E(HcZ!apO8Vzy&<(9 zpB%0Co5tT_eBtSjsg38A5%ainZgaD|Z?O2BWP;k~_NG0v1-%Avm_<%i?TZ=L~lauF$?6_)KhybhT_%Z{mN&J(223dgF>w}1XmlRqG`>yoNgJyV!V|( z!;!s?8XiCl((GY^)4U2Mx6>%oE)$-dETPRj~22z40e5kN>vzsD-Oyw z?v=TEN@TO*U2KQFHj3AS{RJDnnCIu9z%X+5QNmiLCtd=U(f$+-ZW1ztmwN zF?Rov1QBuz6MW*(Cu%+zi&?d~zD5Ksn~5%K#>VBL;_a9qeJAxc!U(y+zA`{;a8vnR z=p$QInMQF`C zd1rD~4cj-S5;!g)40ucGHxx-~H#eKmO9Y`gyoWxugK=o7X2qX|+{Do{W1riXQ3Glx z?7;TO98XVPVTM9$_# zY0a$xcwNt(iw{q|533~*qGtYnn4&nu)lEU3{6SRo{Fhe~=4*ex;YY7w!9CPsJOrEb zaCx^PM>2r{a!hkrc!I^5V<35Ifgq#felJM#bXbd`*`N8J>aO62ZfDRk5fRbi9*DK* z9FA>2(twuS9Gk*l*)vZ)%=@Y{M3=4=en0j)#&Wy=?Y8qWojX3{?qR8HVbBFlONXjE zC4Nadc&laGb$AX!=cib7USCF(YT0^#6F-L%*<`q$MC>uF;!$6n04J7}jz?!u_pg+!x|W;zb-SxyT!)E@jFRJs!jtfTI& zw+r&F(7@g9S}W|5JXyh3xA%!OZv4nKm{z0+$?H(o&!T8GHOjh)y33LMG|TdZQqUmy z;ovQOei`9MZ7V@!N>Ux8C3$~#xN<4mb46|bC980e%(n0qhSaqji3JH+`&L%i=z!_v zU_(F#4j_UHZ?B#~#UUM#@FiOOrzX54(D0r$1H$IIh7UbaIx}ov99@#OV~;jS@XdZC zlJi90uN0wDF?cDw`W)0Zc?9S_W+2;_OfDw(btM&9Tcs4lMpvjU8$h*A%CbH2vn zYt~FQL?4`eP*aYque!`RA0hpq>W|_xn>RVH-PQUn#r3g8sbYx$EDTAac-^f_M`8+o zjf&fm5F%iUDE1FAt_0)E2Ux!O&>_)Z#LGI=f^NnYZ@C2dPBS@vg?~4|K}49X&a8$D zu+xxBYZ|^W<9DV`!AjCu;l|ZxSamw}TGh$*pC%@di#f3y618*99d0NJewR5w3?Bif zD!~tDZp9fw;T~{_!2dio?HrzOHJN99D>mOu};V= zFL%V(3nLA%;Dwob*f{#(=L35|cu`{1w=22!6ATL(a zM=TTUG`C%FkY=96^%oynf!M9=6REKTJx;xhKV0rINQS)hQnue^?fKq9R?c$=}(>d1uX!+?#abG2AgraZ7zf z?0O%7J6~LiTrenV;$H6klg#1LBP}zv6Y4#7l@x-gSPWB@AkbMV#YAhE`S&COG3Lw) zg9J>Zh1}ikh=*xI`eXC%hI*eRvORg7=v*F?Jo{G`ptx7#LgdMk#x9q1B?1^sFQ~4L z#|?0CdI&~>66sYb&Z&<*bIEXit2M;Vc^-&HL<;=cAN*B@hJeT}z# zSpu#|YD>Nsp-VvuUbp99;n}yVqafR`_$dL+H%C&JXShclGpzNh-GHTY#djs$38G!gfw>PWUY;PpVT;hY`O#-m zUq^%pJ42oTweH8wY|g0^Z}PruETlhroB7N51DVg^*UJED5GByP7IpIh=bK7;7~tOj z*89pveY?E?9nTm3V2?lS0Qr_P$Mwx;1~mvt$J&$=%X+4tJQ@~ZXyK^a+wS#83mLK* zyk7=WQieWj?2(OxE*(TGg7%113+GL(nuM=Qt^9;5r5SDvZhT)GA0$(OJqYi{` z{#*Ic`$zdXE|x=B{`~dgJaWH4`K}WCZ$BKiwLG=&rh?cv?yIZ|}7!<}j^Br1G8dPlpFA7Dw zpagBB)H=-#u^JUd`p`0mYDx~NAI1tnGy)DO=pCtv5Fu|WHeVN|G8G5-?z9}f;n%x9 z@C`x_C;oVGWafGv>3ub)Q2%6_GZ(yfjS?y6$6+mjxDiTw+b)hty7~)iap}ue{y0l@-J?L& zJW{Q){UYF$^h^JRFe)tl@@+3^pIvm;&XYhe&lsUokfiztYIi_o2`eiIG^(TGxwI99 zt&`RCp@bzjt#_gMSM_&Myq8=bIAnG32}$x-#GUd36yzU2E$!a2+{Iiv`OU7Srb_ua z{|dOe{OmIlA8B93nZLF)x(CRO!ed!Uy597B=TjO;WL>Yb{0MjtFK#xwGWRDh5TyWq z2p^{hKI$W^^yvhUPlbWplf^s4SR2k~c-ZAwe43Ep7=@bT(2+YeTpb-X0IZQ*BS6^j zRF$tME2pP&R{%hLY4-kl(?*(OROF1q77;p2`L$Xk(&AP74Nmok*8|v%Ulx16_pWUJ z|0uP{Q2>*Y8(}M;xO#Dd>6M=0=&FyXtVQnEV~rcE5p?8C8!I1~Zd`rigf}N6G zTJJ{B`*oSTfDfYE0QEQOYHCEzC+F*a#omY(7GTE13y&)UKf0r-kLV?;SNRZpX)ETJ zp7VU$6vCj;q8*BlNpj?yR{JR4ebGA4Ti!E?1@HGh&p*)}*Ig2?p=c*7ILqHuS;s5RCg=uj;rX{Pt*sdXYxit)FU@4Q2nrDBSxOxhzP}@0RrNr?E_n z{pD^>Nm&zi38QPVvfqTG;eWQ{gx`si8d@7P7+!l36?&PeH-e`<++N z!xy=zUv^udu8s;F@eco73H6EmJ>j_e2`#qQ2`HM=){%lHvNBJx~{9b6y^ z=T8u{E044L4NP+*FYHJmdc4=xQ$Nf0UN~J~Bk{O|F!4E02>-a4bY#?*2X3HQqPrg(~7~!~AT8{L_wD}$BBvuj!5SfQT(TyO8d8!R(WHBa%fj@MVN0`C3|L3q!!nrz z=9@rLD)hAw=8)Oyp{itOZb09wZC*PrNImsn38gnukRY|--X^+`loG%u(>dtuWUw6S zd8QOe(f-*FIr_-@kmiM_vg9U>1|IqBxc>JJ>L}7h$P)h>p~B~t<$!<+<_1vu4p$fU z)*b(l?eV$ZM`+$k7kKLz*+CwrGZGQob59Legv0WwjZJLMb@v++xVCgXDbt&Ms{f-H zB^_*_-6-EWJHMJWei^XsgIY8itwY80t?piZzm~n*@H&OK+x+1w3B30WL$e$+kd!2d zbO{USI*hGflHB}e(deWwx&Qut{r)34kr@{l`k!v0<8MWfz6!8b0G}1unmRb8qZgAP zbd9KFLUTeoX0U6U{R4R$_vGyM^l^|kB-ykfbe)=@yP^ozjg+T486a~;mMPO$TQ`bu zxN#I*H@oCX&*x=x@mTW-C8P%1OXi7mqEcZ2<|5#;!thiCerpA)G1DRi_L%r$gF`gF zu)gJdP#Z3DBT6`&3bT<%Ia`*2yih^bWkIx3?&t z(V}C9a^}o;_k^3o@xfs^PIO*d%dsmRl{oDAkkPd$%+J4J)Cb)&z?d?jxFDwKiU z2jz|*^2*GRl7z3Eu=JV zh;h@k&@utvB}8__)sufJa59X#gSXJ zp-)F3E9>*cD4a-xJs+6lMGF0N6-e8cbZ??tqR%1xIa|*HOhpbOfc6l&qw1TTuhk5p z;;9XS&Zph5|KkiJ#%cmoU=g42O7fiAWy41Uq#19*wx=g>np9@#MAn4KNiHZZ7%gA? ztqsZDL09nW3^P<&0rc4L(zB3r&=v3@HsGdN9sO0{v?J0(7&vus#tW900D9HaFhDG5 zezPc79_eoE8GsQdpAqa_OzMWFs}y7g8aHGwEjMT|CqH4h;i$KmP*`k#H6f|}G9pn1 zO8~-AWv!BAi!8NTS9&PsFIRBijuIn=o;U^hkN3|8sph1-b+e`j$rhB3|6-U zV}5ayBla?KD#upRAyD;0q|7yjc~Kx!?~YgJte?|mLrHyR)z9s{B-kTmgpK6kL=9}; za9J|e{qMD$b8u3JuB}I>N$J-1=8l^7t2xS9lQ_3K#VC55RU?yuk@UMXh}SXxZ>lIg z&l{RE((TIt1q8SAk`o&3K14dAh&6s@bg(T>P|1`r5;RRfp3RkZ>B%{F)qj~X zBWn4F+`xAEop6eV*Huhm^Gv6^@WQt~7YmfzhIal_420CNcrQ2v&HNG?(kMMt9ubrM zrfsXUIeK((9v|w%+4Me23(_FXypd>2(<(77&r}HzL)c~@{IXEfA*}Volk1mG@oa zfNAGlev`&lpLM=~@l@gCie51qnrJq0P<60n?8VpxvVd|*q~LFb>RyfG*0wA2KhtiY zzK_2!x^)e%NBGcvJZy5A_^l>4t&ISb-r(!7AaswE2%OaXn)n}SWK5DFAXPQZ;uA|u z8kNmVk=fr6C!E;)A9I~>(^rZ!Eo8-AoNY0C$Lf77y4nz4oh1YdBl7<(*7Mf}fe$g7 zQy3g6&ouxe+O z{~+<9EL=h(KymWZGf+avive@om_mA2Z+;crQSh*n*w?0$C$Gf*{#J_xpODW84XV2p z2L~VXm@x|fv67Y*s^4i(spw1!LND3x0B0yzDG1C#?JXx!D7!h9j#B4h*(mwaV!%RN zr1M%Y>v^oGP>*u+$m26H!UKJ0ib5sSZ_6~b^Fm3CtWsRM-5#5yw9xYB>hQDc3OhK# z|J}iPj;qV`A?m4ak0tfv1A^*U0E?m^%(dp({YQe>9iwW?pUDgCojW&a%j_@RIhvk1e|Q_SW}&-t>}pHt%mtw%wZQe5Z3e;l&Hy#~+)N$c_}~xIS~f$<=gURIx01 z{5)HxnJqs@o;;^OXYiGrYVoj3jO9=e?2A&sa56%tV-45q+!lVd7Q!~r zMZYXg&dUhpd0`#K=LA`Iz7Gjv-W!MogIT{knV&_IT_Q&&>CicxQ~-kpKc1H*x=4W^ zt}yvr2U1#A$)Mqz&b_Uwc4oTgk;8p<8g|3BpUJU_10sZ2%|s8i)U6UWlj%l{eTI8% zmo6rWi^Pyt;lsg{!{-+8Ty%qV<&WF3D?XIu8ddUc@5M}$20Djs|LuCgwb>VZZ!E)J z=DiFa}uhR%J`cH%Q#IlAfG(bw1Bo_S215i_7Kd=N&+f2;L^w3b)(nqoz-?+BK z9qG5l6IBqN$ZhTc<&Dq_)oW};vteyD@6)X(=d4lM^_u%p4JM*pYK3KxRE z#O@pvdNZV^+W6j^8>ttx2;w=s3$G86mb`jJ3K<*lG=upwWJv~@sCa^@-Kdln&aZP+ zU#1=`4D69$RrOyM>pu7gFNV6UMK8mKlup_4Q=D#aIoGEhq}wb@^Q8oA$ItaMYKJVX zei#WZ)-6(3ZOs&v0ko65o<0>(9LY}FU`D9#bI%KSoS$=%)JKX8mWLN<4*jycil|fR zy9;|#_1|evIAcvd54!Sb5(?BGO;PP$2cKcYgV@Kt?kYZX)+F<37bC3Xd?8bvTYUJo zt)cJk%E-w5Z}`0b`v)JieSs&C}tI(Ktq$)E%XtrJ<@PCIV$oR%CB<~!@g z9pDrr!NRpI+Q@(}e-^^|c`Gplojjy1atgp6L6{2}BNTHU%L!2TD?TP}DZVyds#-1q zJnxLL$P#WE%1*>XP@>|M@|RXedw0!18qS9`SGG5lu&)EmlUcI^%C6MHicP^U+ZM^i z7Y^@AQ%KbO)f3*((sFIdQ{nNPyCU}V?UG%|pi4tZ*;jZ7ma6^c2A)59sKOZ>n)jd> zo?PM6+|2!--7F)43)+8ag(Lc3v_d1EXGFK9H|Ey#BbTy_MTk@>B6Lk`2Q@a#z_R@7 zb9*(!E;mL54X1<0JQr>wdF27qEY{7rgW(X&K)q1o##;;C)2@eKzlgC7f;4*fWEzxO z207y@VtH08q}=gtfs5LZIZsJ=pFl;p+s&n4ge|f0E$NWdW3a z3U^RwOMjeGp4;1k<6&rw__f;9wmkWVO}+{^tLtXPa{|aXMcs8#6EqrCq?iiATz$Nb zhozr8_Ms5OK0wq}J`(!ohxY!|tMN`zP4m(a$VUO#dbfJoz4iK}gYlnEE~Nz2@~Iu1 zw$?VI3ar8k%pxL)5~VjO>i4s#Xe%U6te-Ko;+B3w99oZ}6~aRn z_7*)C!rDk9d>(84nhc&+nBit^g*~iBjr-RUg3xc3AjZU-L=eXu&5s?{%&w-V4hGxx z4@SRI%#KMhJS6VFkGd0)o%g%;Jd8t2eQD)CoBCX%2!Y&b0{XyOVH*G{Pw2;2}cXd6I|51QhA4-g9(C`CE(mybI zo^J*)*0IB(-shD*UD?9tvF3B9qV2^y3aJriE~L_r#< zJQ=wc!MYhE8iP`Q8;#K~VhV6V&0hltrhv;(cbMK-^gmqk7Zmbd1g~DTznqN=VCZbe zpJS}1{V%f2U-P9;8!&mEzK?ttKbp<8ZbPw_Q&OCw6-*n{coBa`*mR+$O| z!o|XJyRXSx6{X$P{2GLjv$$o7BnH}PnE5Dl92;gQxpPnZ<^u;N5m#-8wjZ5UDDzbM zk#jWo<|JXK1VrHuqlc6bjcgnF*}DlNI)XJ-sGzq-1XADa0j~5mjIevZ=qNT8zp6~A z6{S~scic_H6gWhL)Bp&?6DOP%WsQ9h&ySD|AQFV_cxN6zsJ7duzB4?-Gf#Usx&XCzPIFA$s z?92u_0oxzZ&4gh3Kibzg1(N8h(g z&(ysB9T|TSO^d3NL39+`{paP+9k%Y7w>O{>zp7i-|rTdUpj4v}ooQ{$^=lUl7Zq zrSDa6Tj?xuLj;Uwe9p|tJPO+|3@NZy6Qt4bc*sP426pfOIa7Y%hyQX|>>q5OxAR9l zT;SMC6G8X*0pq`1A-`!?bUYn1!LlqIM}`x_QU5(L{JI(E@7#s`ois|wVl6RLmlblR zQQ}#smQG6_bf4x~pZlY^IyLjV9E~7^{hX~uoMIySIf~=pi}|_F82yGlzer=_m&A#) zY%w4eH9H|oj}^|h!Tk7&xsBaWO|ygV>vN7>V+-zN>G$!mxw032Tqn+4|1H$^J^dr= z&WuW=&u$$GA+f6FbpXl|x9guop#N{fHOrgpbzB$ppBn7=dnz35cq;UK8FE35Eh_L) z0#R948y{Tww=Hv&fkqT|sae9d%%b?V7s;6~bLb_dfKHosMIpw2iTxRu#1H?!&_~35 zADBO-A#C?SjTygOC3d5}*=Tr4@R<0S{r^%TnNHv$-ZD_b#aeN;3^zyWA)Lc~-3|=A zpb(g6EVEkb4=)$}w#gSxi5zw+_VA=f!?j<=gZ%qy#Ze=7I2^~={MGrOY2(18Uf_6` zptgQFdcvHEFYwf+-a`wN4XwWdn?%NPq1PF?25wA{18dE<`V%a+M9*)c3tWjEM3bIH z1+O*teDXu*{hqpXv#LabCDa}5V)+U65>5h8eX6t?kOgLfQalf>8Z?SDO11jHJpNHU z7);*jjrlwB3bf76y(ouT)Oy-PcfRGpo%3+GKj59VNSy0Cs6z4oOO&SQ$>(;PD^uaW zl_cmn7z)E<4B%W=@sw*3VEexg)f^i-!}GV{X7izsPGkTOWse0_dPu9@eX?Tw9E-M; z`A#D4XcuvpCtjJqC&c+I;5*>--pTW@u&J*|D@k&>IXw>t+rz zdk6rXwqBnJuu!{ks)LUHiE9V`4170qK?c^j*447>CgCHO^)rTY;Sdxbca{PrkLmdBeKi};Y618 zbsy9n`a#zyNebj65em!Ee`2!VAJWo$8V_B7LU$gta$}94X&Um-C;!A`a|2<|k`zG~ zU{fV)ZsZU<8XNIdIkmG}&fTVIm%b!v!g2n!+T5i#f^px1G&Q&F_xqwA$4_{E=bLju zn9KzxD+>6Q&;RCJU=Uv7s{h|BGyhK6T)rjV+vj9<+o5>xWDT!l4~_5ypQ$3BoVh(E z|IW}_6Kh=3&QCfO1qjKb9?+3hE@wkO8z}!VdsrJZ?yRSDIoC=$36F6d=<;@aaxitX zOo!*OuwqqMSv*kgNk!dvo5sE4hY zG`47@r}*FUjY*U4w3l}wNuvTQ{prcOMfM!#Mhz37M9UWDB3Mt+i^RU3 z&*#hwWZ%vlsT?bT`6E8q(uM+m9mFl&yMRKyZqQYYr9h` z{#1V>0WfPF4gYh(rm>;Ou6LwQtBv1K3}r{DR(hawEv0nV1B|vrWuq6pv`E*lL$Cgo z1$cQKT)mf2kvctIVBl|=?Bi!P++0X(-)d*%WSzzM*!1yOx%dgY}ps< z#NQ;eM$CH*sgI+TV+6yW-NT1V*`hEg+sZ<|qTTfL>+KVJ#61ZM0b;)d=53(?2fX;U zkCel@Cf^)?7`CVO&Uq{q%pZTovnY z)%5>_WpOmHKxf!nEWzce!E~Fy?lbW{p?zMyUKOF0uZwd=_1YY`_fyc-FR-@p)tATl zbf%Nck>$<{t2_jPosEp6Qvw&^6T=XqDp~06@xp26?lpMn?r$xGOcm}#;I%n_7hE}B z2jFZ?)h{dIK&d!k;g!8D^W?oh;@`Z(3IncD*fWK_u5-^W2?t{$QEktT+X~+O{oDis zG2`4OO)3uTz1CCv#ogQKVq4JyLXyGsn}p5R4Zqk5XqfAwgUO<#-Ik*Nu3WD)Ko}&` zM%>A{=J6zc`5q^2$M#2&iM2RB)RV+Y6R0@;rgP;`c`1ShLdq?tsifbhi?nB&Qf$t$f zT*F2PGO?oCM$w^hZN2wGNG*61Q2??q_|IA^3G8d?)yjiRbbMS3C+EoBniQqPra;WP zSoDpdaSOeh-q3{kvwKIv|4zqT_&5krOjYt3T#=!Y< zj7#^6UuH7OFR2_C-Pr!5-KHRVEcG9Z7Tun@pC_W2X#3;atgpQJP=n5YWsM=k_NZ{0 zu<4559#VPCO?mz3im}2!JTV1y68*twx&rK-ohwuHK=!kC#2`X-RR~u4L9KKiI#9xW z8#Y8@8gIWt&P#~JyijfV61mUgH##KMdoF<=x-I;#7^a&rI&xOn*i>oa?S~9kj{?yi zLb-xmpE@2^+Q7`aOurc^YEqy3B2dsRdHQ1L4u4qjlcf3q!G`hCoa`?4*}i zIuM1(xWs|v2Dbw(XicoU{T$355t`BXcBkeF^c(UmxTeBh+x~cq^q-2PM9!%(B8owJ z1K@Xkz7TAz@XM)YQV-&d2}eRw7vXowT6@SuRo^u^+&b`#s4STZxx!%aA-o`e&jxeq zcvm9uKMx>LgB|Cb+1$p_7q2FySR}*3yaW-NPnZ4;VWaQ&16|M)=Jz;TzDM!K{n+N@ z-|}T2)d@$v`4991iC1c|`LFZx#)((CV!E3f zM1>R?Hzx+gyD6#qZupybKgUBgtYc7UAs3xPJ4xwX&ca)49ZwO}ZX0Z1jWh;2*XpF< z|Kt-!i!{s&HCU@PkutLRXO^*3w74yYouLwIY5;pjvf~P0ub+lfr2}k384^j7<*-_M zVEYMG-jDVya$@AqdTo=dz4rMIpHA7ss{;zV6Ci{0yuo0!XNf9?+QJ5(>md zM5$rd8Kp$e47&GVCU4hD+6IQsZnRss;OOK%NdACKs^|V`mw|zIbzw}9_W?!D|F#nH z(J1`JN1q#wAaa)x1o2K$%bP+6(|TdtI-Y;(iZs(p9gYvh-r--bUxwA zPB`*P?P*%8o9q?IXo#QTUFt3T)McQjF}K zWvv>6<;oDt5d?X@Ki>Ndqoayqz&|?$ozG~&`>2)n(BH=bn^ySw4w{y37u@MKOL!fx za`5NRPFjjDEv^2P^YyPk+zOM!&$D<=#D}yV-tgA%&k-}zZIaD@{*I)K7My@OIpHAR z*xW;{<`N~d-At)j#zsZh6AztF2-6D2fm9uGh`bg3iC2wRn-I%93^46;Z5eOK-tS>*hE5QMB(O-_kXT;hp2U zkqaL6zORnF>yl3D%TI^ShaN?{&+aBa3VN{pIOgbA{x+ppZlUI85c`Sy?!A>BY7{U1 zs}Ukq(^ttOZoLpppsh=cwoD%VRhWmev=ImybJ&#)mm>lCqUQ;3k^d;dg_9nBf3GG} z-ygN?$TZjweP%ied0|*DVap$w#f&q=R2T0NVJ#b=`&F|Fi4V~~p`;V0)S<9o#ezrU z5-R`N<_gO5q)^1yDGw1ifE|!ZH>0lWK`XcPwDsycNh2Dk?kfSv6ys;k>5I_Ft~NZP zh<_W58(=awF+*1}b`K#6&C^V)30Lit4S06xYvF!yP-z{VOb5Ie3cDo)^EU^&nAimJ zhy)0jX;7qn5wlzKZ~H@%nO>@!yC537T?vrumVsSf>D^7Oh*<$^Dgw#o9Mfle0Me`^ zx%(xsLx1h9ouTXb=dLPObxX_?9v1a84n{jiAxFrC0NS>J&891t5lNPiRR!zWAOp1VKq*xY)iDpO>6TGFBLNaOHFs5` zlzK5PIjKO85~cbH+ELaR#X6chr&MXJKY*j0cJ;hyZz{KVKuQS3`K>@s>^TN|>JhP@ z=t@ot$>OS#bJ%kET9-`=*H!f=K8^9Ob#smu2=;y4_`}ASnC2dZzp6&Krif3H480D* z)RSSEP~;ARKEdcF5g2sP6vpzG8d+pH%Xu|>h97kPpR5kTFUHGy9~MiFmR>^#%1m0G z^rJ0x!$obsSyNzI&zWO%GPCRyU%f;8=;@{FL+{jmpH6T8h$6O;`h>HKLrfBU+j1br z_Fz(iI64P1$El={&*tFYYQBH^4B1pPD-#)lA_K*u(=aii(g-ExVF?fkd$%{#MxD$naH|MI{i}=krulGLI5*6H+wF2LG3qp z5jiM0fz3oZROU3jkDp!eYY2}z5I`-T4D~Ii!aytnj*?_5q zKPr5C-A--Bp^$8QX#<3;DoBw_pwbfQiy9G;8u=go`B86~H3VA+e!oDecNJ{j+D?fz zHBv9r55{nRZA&MXwrf~g6V2Q9)F#8OISI}KN9)}-B}0a-8UPBWi@i-2nMwUhsugin z6(wj&g@#FKxC|oroVAO6(JxZLWN{{$LU6clx5MQe+q5pkx0S;26C(j0wrCQ z(tJ6ojU2NCUQEq*NWKOo2VpkC#(bH<(f5|SN(dR76HnMG>{I85{$^+p));!hxRGKv z-sE#Uj7c@ch&*qRd`KjB_5E`9Zoh?2n6Awery9BATL5w_7|r|A_@OKrh+0};pd6*4 zNQChEd!o%eeITh}mExh3c8wj?hjN>KEUO| z*BV`>?Hsjq8$8l*KitEb;vc%J1#7k%{w3@kitx=YTzNOzO54kJEeO+02av%}i5ja! zOe@A{kPDb`J&XENAFU%&plvH5?MM>DUB>zo%uNUZy2bphv3Vzd&H+}IRHueKD9PS( z_DG6GX!TAL*aih?sHC2L!!=5_;~j#anK~qVWk1+}wPZc@Tms9 z2(c;+DTYPAS93j^M1HQ#xqvhHP_jGU*y9!H&$JHmwPoC(7sOw-&_aCLDzEH?WK_&kDonclJj&wE`1=w`K_&VhFA0&qFQe3i5f= zO!BOWs~+tBgqOpi(LHu$*@x$;!dBpGZ`9TDY-A7*j-J_*t+S!DD~|@(hKK5 zECSOYn&{|y+Jv@RVKWKVr{x`;@8dqrdU;qRu~?RtV#K}Sj$GPW3_Ekc6S zcj1V(dhJ6ya|0j~s!C~7kTUz(C?uRGA}P_)PI}tQN%rLkC%W%@vvKo0_`&dQVi0a- zPX9cxl0U%#yzX#v2#4cbAnS|%L${w*efg_G0M)Y$sJhJbd7kaOv8wg?aGnCaPw58K zVe;&)j%(9I8S^vHAVa7EeTqlh#s>c; zR^_^>z|6(0Z14fY^1zgeCTSSw=&dBq)(SLdEK|uF9jde;U^Rkboa(!z7dtA1rfBhhQjo*4&WLTPHbbkWoHX-u86lzLKkJmHRI_0 zrFv}HN@F{i1I_BMBY^q*UTI`_f4ykf9}6Vut-kP`ML3dxwSCLct3~ISBlp3{$NR6W z;_VDhmckCj$`%AJql$li*|^^rE1LYgI=F+nE8ORmfV3LIpBR}UVL0s5vE?JD+wR?` zXR>4gWLv)Q z)H9f%qRgc(uJ^|UrpI`W>UDBx3Be08u+pD3O3NtQXw?w1vKsbu~^#uUe^X$nR>+w5F ziY?N5e;&iU8M7u?s_$Hn7o~0C>3;H%yR?)Z+Ea8Y5)KLhb~=ltzYBhCM!~RAp|cb4 z2kl!7do{LX;3wjz(?fuBAjrc3#PApqfVcI{OsZAeo}-3~E0j9zk@XU=EPe)+Yv`D- z1~BpY**G?^@6IX}@cInS*n%@X6xP9>@ndFw0Cus~Asj6k#F6F#X*V}v&C*345$OGo zVO?P>2q?sqbE1TevmL*;^aK4Mc{z~7WAwGhu@FL*90ipDO-E7 z7QX1DKi1!%&PV41JH^bJYz1uQH4}AOn2>d63}?i&4YZzS`H@(aae6JGdEd@N$RY@? zUJo*wmsU<4+}!PYcklw_fGfbIAgc*dC;)>PX5|f%(nux1#v%fnV#Pu*2xv7%=CVIR zKwzlz%TP;VJ7$c^;lJ<>_N$5W-tagZ|#0l~1sU0^82L08iw0!TUnT#0!0|Ry4!$NDh!zIWAseB_ST1kXR zuo{aSXv@gu`=Kl1B~+nZ?A8oRJ13vkg3-d7RqYW>bffwA7^UX-qv*w|4ac8I6dVRm z9=RP5z}(ZQtHzSW%D1+N)(JtCn1=63Og*0uNnnu++9SPzXl{AdLMrgIWjH#yCS)_M#iIYF^i0;HMGPoE?D89S_#o?;2n#)N7!FF-qpiZIuwz zaxDH*vmQ_H`I#njwww`cM|IpdfaAB?o0aXYrNX!GTs&zj@7Kg_|9wCw0*{BvI_r(qb_CL4(H(5U=2cvJ`?9{dd>^!7vEv!Q||c zW%}Bo4k8~tl{09DIHrQFmY!U+(P4bsX|jC{=poPiK4t~&QV7r{#_mkj)YoAZ0?^x` zJaZR~pQ#uPPPaLyi^wFM+;fN&!7rLhiA?#QF@_!q8iovZ4#+j)_{FJEOB^9yv(QQ2kNswj$q2Pks$7LX->;uR`bONKlp9FF|(K}6At zmU`R3m;rgo+^P?48VR-#={GuR8f+xNZs(@$dsC6EhW>DC?>^%A*D=}G(Q5;U{+Xrf zF*@pBNt#Uy_gS~XhQs~LjS;Ml`JEL;#az(37J^yDrB?5lPv+ZAQ z`Sb@xi~i*1?D2pqj8O#bdGb=EI?RIx>FXbeWhE@wHX}5oMjjeci&Rvz!i?6rxIj#f ztaX{FRWlE4@hAl2ieS;hsuuI9jw$FeDUKG$M~mN@p^9J2IkkF?9whrDZUna0xdplq zW7|zuSg^5jmjq-%Tptbp4*-JkEPtNUA*CF_tvs9hV;_an3D`?98G{F81_XEzluF-( z`*=U&ypY({jNV0*XTk~rc&fs=q7vT?ou@GevnBHk%=vXUm(oyjoZ>&BPvCc+oWENl zhsO-)X)clT2i|q3EHG;WLN(j5<%y9o*dWr-&2qmZd*kx|g>gCe8$N|qRW^JvmO+R_ag5MgCX1=r5{R6?NcWZKE=a=rg(cr+ z5o>z)v!jlMeyD>ac1W>qiz#3n>(~vS+O?_nCxSgV9>{9yG6p#emx(T}Y2vn@<PC2pIn)E?7S+i;mdtBWqf#T43!^2LV(=5 zpPH;Q|J7~vmGhg4hsi&({tN^{De6c<;EIjp@~sOafse>wV95C&p~V~kk}R^i^TV1y zfJ9;5m~ym^Qi+9x4g_*;xMhY2w@_ofo)+G}L@(&?P?^zR{zf7L?NnN$?Is}qop2`b z+-2Xc7q0K_@S_RK_63J#Ww%|PS{jtI{0G!BhU-;92Lm5GY&J0LU3S0)8p1bjRlND+ zL5%zYV+F@-+40CKB?aV&(T}SS!?018L{wbDL#yuN0j6_bE`ejFldO!7)MjZN0%WL+ zv(7o*R)sPWNSjkqAZp;@&Q?k(S#VucOvW>)o6e?T2cZgDKaqTh%wiJjQm|kd7Y-dK ztGao7D59}S`*_?&a*A4>79ws?crc|2r4=V`-t1J^4G#JarU&kPQUCZ9R>?MOUZ-L~ zj&pGDza)nx!lWO)?}FF^!M1WnBF0p$_AS5Y-oJP3J*``6AG4pt7;yk|`PPRqXLs_I zr<_1sn2}A|%HgKg*|&rMuPOhtfouZZ=R=wUW1${BRnO{ew?_VC{BvYeW(%EV3uoCh zKTZdoP53jB0b*?aJ`0-GMeh9H;)DN656}uA&fDCYx2Frf@?dS4jPjR+0v;YN8vp7sV%SCDi_z6={f0J=Seg-=AQTMF48e~bv?K~K1m$X@m1ewXMU>-+Fc)X;&# z#w|3gGBFhAtrHG)1hbY^L26bA`FqZ*L)qVij0E(L9{j={KhfrwyOaK9QGV;>_hQss z^Mw~I=!XpAMgn+EX3Y8ev{->Jq}AL+@D)(eJ^)|FlGk%yJ|B1iST9&Z=kql0Xa8=e zLs_n)GyjE^PN76ZUPD&EB`QlB%Bv>2?ozp2ZRIkT`0GAWV01HIbi4=_Jgw&O8p+0A z>q;2d0=+tE4=obG^-2F0MTNvGu=MlsjNmKcsL`)c@@vY?aL*G4#Bo*mtda>M0=mjo zX!5pF`?5pd^>e_D5KY*vpB%uvpa2PWhaUC;?S;RT(6UjjRT&s*v=Uj3L~fNHD$K><1PBd*rfl$fQjUpn}>oAf0NbCkvAx1EH7G^Uk3le6o$ z*sfuAFL$y0N*q+;^3mpV2X7apZ0W7B&s3Us}qQ;p1U)LwkqJn*$h#Ut>A zpEhg^YVndAR6^>X zHwx|jYT;V4AO^F!NdEF)#)DmHD_N$#<0JPYS0oMKzb0|6( z7?S8=N~2BP^9-G z$0Bz^Bp35Nj(m;1H+UV2QIs>e%bXaw?|g=?2Hy{EJ|FwT0H%jpij(ojbzi0G*o>&u zdKFQ$Mtp`|G(fb4Qs{(`nBkmLrLDtG7ir6;#Aio3Ft4u6Oy3SX$nVntRTo0GeY|K8 zIWbTn%OE4g+gIg^P#?={r%h!VtU2c{DcGkirNPN4j@>XLskz;FZ%tSpM7vB&bRYmj z-Zr?nT)F;(&CjcbCa}|O^bT4|b@no#woqZEG-X!bO3RbV+7>JR!ASb&vyiS?L9Ti9 z4Iv;5E!RLooE%N1cb_EmmTnti`B0O6i_eDh?I1&APFkg3nba)&;f`sFqAyxmk@eAFWo z8q_8PNOZ2W2C-YFC?Uv!KIg+>LykoIl12VQf*K^B5?4t0#mf85h)jhSirDadt`Yj( zGBmPO`I-`$(DPn=yn z8)vlJ#F4QNQ+=M#bm|`*OY)b5vr$e6#K6i2is`_;rwel_EA^vWn;FZ4p8O*vH?YB*$H802L_3F} z<%-1Eh^4hNA|wn;>j4bNX~GQf2S@1ThcUj=>UenI{g*wcqk?_29XrY1 zwtTWy<+Ek@=SLo5vc`CMoE-7S@9%=%Fre&)39jZ$O-d)ic4G(R_U%c5B7NBDafKIt z9h>u7qi%QkMqU&^$_aZ|m)}5j7>DfTxBj%VRKStgavSfy@QJT19<1ylRtgQGHp;g) z$DOji(nxD$Db3&HcAqeU$&y1Vu^*Lpkn^a=JE&y;<0AgmL;j25Y7y69^l|n!3jn=C z?E|UIFi|6^FHC{9g%_WE5MRFdLO*~+uiYHP@tprz zP>4NhSM$&#`}0;eq<`ICmH)3LF>mXp5{seK%HsbH!1%`E3$D+NW&c&!%pp{yo-0;C zoB1nWD)AqC_z!f3hjdZsI)B)Q7nk`DP!JpIfpHnGsQ99qQ#FmMqA3vZ`PLCtKMWnCub8=gb2BFc2m`*Dg@g0V>Kj*5Qr<>$=wh+oU0X>|^Mt*bHwT&h8h@qGK1S|z*;0d!*Wj%h z4NVdMu$shOC2+wPcpj-t*Duqtth`dL)awb!dXgcgtQJzf{xT)RSJnVZ zE{l~0aEsfx+FIL0FJnrjM18-hTcniSd_Oy=xPRT32rSw7Ofm@UYgH4x&st_a{x#~{ zH&3OkLm*kS!5+lHzeoNKeP#jl%YrC|5S$PnOjvALW%cp#i0o)B*<1%4-mR> zA}nK*PjFC@pxZ`QOApx?9TR3Zx#B0uUTihoFAF#Y?k}S}8;tbjXW`8Yv;Ce=l?4{L z`fQqFrHSc`sLM*f59lH1^(o?BGJ*ob+zq#&V3Xz^N{0x*t(!R@iakjG4dlor?n{Ob zN9`Wg%=Y7aRw}Rm(A`eEK?s^@bNrD3c*bt9QzNYpYV#a#8K;?i%{~lYwh#`GJZ5g& za<+sH`VbObb_@QjG3Nn##@wtFF%SU~in&5FO;A)%E%JS_%z=uKDwJ)yT96-K-yivS zJ$3oZvWL=|KLxU1Av$heg`2{USz+$Z|aHL+fElY`qJ=Jl|(zmvz zuHOt#PPU^j{rUa|Q{|lm17m37X@=1|+&=MI#Mn!7#5O+hT^UGz>eQId)OFDGg*1CDqxdzPi+MFwBE)JA5VYb^m>snB+adcOx1QYFV zH4z}E<%49o&U7Y)mtL|>_EcbM0GSV+!1Y?6<_9iJFFf23jcj|upUdY2B$YMmp@{zf z2O5M5Tk_?(_8XgZt+bv==&S)AS27B=$=&VzM9HZy|Eqn5%Dt&&Up8XTf|kh|Pj~cD z9X!~$b$(iF$;$gnm`E=vqPJHRu=)}?A`9#~TB=1u;+Ars=3>|w?bl{RHFwWOd93vg z=t;C-wNH03fYO8ltY_D&a)GT%E(?hJ{f3%eir2d#2U4Lf?haLi^~hDqG^d3KCi^9k zVr;QkQJo&U-(`?vtqsA@RhFMlge-S)jtpHTBe|dcB_RzOl(%2wuBUN?v`oqxe|qeB z214$lbfO3;`>vxs}Rc|$K5hk?H_LxGA{8&bHBq6-{R4=s+7_bnK8-T z#EiV6jCWK0ZtIZM*8%qf5S>KJTocFtW;+;YU#sBVuo@sM;ZT#dCZ$p{*M6R|?2tvx z9&(;k=s=c-QT2t$I!ZPuspalssN^@;dyC@W{;l?Yw2u*M-@;xIJ7bBO7TqNs9&j#d{@n; znma<&ze?g@4pNhLS(xxPnz@+S=i}@6B+y3_s7m+gzi6QURa7!4n)TXZeUdmxNu3eBvIe)yAxPn&By-{?bar_->`q eiZ?;HKZMZ1XT=`(ZOI6rfA{V_xKpZt3i@xw{E6!T literal 0 HcmV?d00001 From f0bd6e4b6f153b95df9f3911efad906a97c91271 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 25 Sep 2021 23:39:58 +0200 Subject: [PATCH 11/20] Update app.src --- conf/app.src | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/app.src b/conf/app.src index ea10a5d..3e30ce9 100644 --- a/conf/app.src +++ b/conf/app.src @@ -3,4 +3,3 @@ SOURCE_SUM=56785921ce99d8424871bf340a3225016fede10345e3ce9fe51e47facc2e88cc SOURCE_SUM_PRG=sha256sum SOURCE_FORMAT=tar.bz2 SOURCE_IN_SUBDIR=true -SOURCE_FILENAME= From 6fd4b9cc1156e6995f715465cb6ec2dfdcc1a319 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sat, 25 Sep 2021 21:40:05 +0000 Subject: [PATCH 12/20] Auto-update README --- README.md | 4 ++++ README_fr.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/README.md b/README.md index d630741..68e5618 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,10 @@ Garradin (word meaning money in an aboriginal dialect of northern Australia, pro **Demo:** https://garradin.eu/essai/ +## Screenshots + +![](./doc/screenshots/screenshot.png) + ## Documentation and resources * Official app website: http://garradin.eu diff --git a/README_fr.md b/README_fr.md index 05460a7..9eddecd 100644 --- a/README_fr.md +++ b/README_fr.md @@ -17,6 +17,10 @@ Garradin (mot signifiant argent dans un dialecte aborigène du nord de l'Austral **Démo :** https://garradin.eu/essai/ +## Captures d'écran + +![](./doc/screenshots/screenshot.png) + ## Documentations et ressources * Site officiel de l'app : http://garradin.eu From 6fb66c1cf6659bedcf8d5b025ab8364c48a200d0 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sat, 25 Sep 2021 23:41:40 +0200 Subject: [PATCH 13/20] Update install --- scripts/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install b/scripts/install index 9ed7601..056bbe3 100644 --- a/scripts/install +++ b/scripts/install @@ -51,7 +51,7 @@ ynh_app_setting_set --app=$app --key=path --value=$path_url ynh_script_progression --message="Configuring system user..." --weight=3 # Create a system user -ynh_system_user_create --username=$app +ynh_system_user_create --username=$app --home_dir="$final_path" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE From 89c708bbcac00eabbbbb765d20dcae25770ffd6f Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 26 Sep 2021 08:29:22 +0200 Subject: [PATCH 14/20] Update manifest.json --- manifest.json | 1 - 1 file changed, 1 deletion(-) diff --git a/manifest.json b/manifest.json index 5ecff41..cf151b2 100644 --- a/manifest.json +++ b/manifest.json @@ -13,7 +13,6 @@ "website": "http://garradin.eu", "demo": "https://garradin.eu/essai/", "admindoc": "https://fossil.kd2.org/garradin/wiki?name=Documentation", - "userdoc": "https://yunohost.org/apps", "code": "https://fossil.kd2.org/garradin/wiki?name=Garradin" }, "license": "GPL-3.0-or-later", From 299b260a289c1727efc4cb457acff103d26d69f8 Mon Sep 17 00:00:00 2001 From: Yunohost-Bot <> Date: Sun, 26 Sep 2021 06:29:28 +0000 Subject: [PATCH 15/20] Auto-update README --- README.md | 1 - README_fr.md | 1 - 2 files changed, 2 deletions(-) diff --git a/README.md b/README.md index 68e5618..39f59f7 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,6 @@ Garradin (word meaning money in an aboriginal dialect of northern Australia, pro ## Documentation and resources * Official app website: http://garradin.eu -* Official user documentation: https://yunohost.org/apps * Official admin documentation: https://fossil.kd2.org/garradin/wiki?name=Documentation * Upstream app code repository: https://fossil.kd2.org/garradin/wiki?name=Garradin * YunoHost documentation for this app: https://yunohost.org/app_garradin diff --git a/README_fr.md b/README_fr.md index 9eddecd..e76169a 100644 --- a/README_fr.md +++ b/README_fr.md @@ -24,7 +24,6 @@ Garradin (mot signifiant argent dans un dialecte aborigène du nord de l'Austral ## Documentations et ressources * Site officiel de l'app : http://garradin.eu -* Documentation officielle utilisateur : https://yunohost.org/apps * Documentation officielle de l'admin : https://fossil.kd2.org/garradin/wiki?name=Documentation * Dépôt de code officiel de l'app : https://fossil.kd2.org/garradin/wiki?name=Garradin * Documentation YunoHost pour cette app : https://yunohost.org/app_garradin From 03e4c5ffc0aab1806edd04c5e0fe513596eea45a Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 26 Sep 2021 08:34:00 +0200 Subject: [PATCH 16/20] Update change_url --- scripts/change_url | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/change_url b/scripts/change_url index 54fb322..594268b 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -88,7 +88,7 @@ if [ $change_path -eq 1 ] && [ "$new_path" == "/" ]; then ynh_replace_string --match_string="const WWW_URI = '$old_path/';" --replace_string="const WWW_URI = '$new_path';" --target_file="$final_path/config.local.php" elif [ $change_path -eq 1 ] && [ "$old_path" == "/" ]; then ynh_replace_string --match_string="const WWW_URI = '$old_path';" --replace_string="const WWW_URI = '$new_path/';" --target_file="$final_path/config.local.php" -elif [ $change_path -eq 1 ] +elif [ $change_path -eq 1 ]; then ynh_replace_string --match_string="const WWW_URI = '$old_path/';" --replace_string="const WWW_URI = '$new_path/';" --target_file="$final_path/config.local.php" fi From d6fcd29677f75b1b7ac1901d298ddaad500c9e4f Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Sun, 26 Sep 2021 13:55:19 +0200 Subject: [PATCH 17/20] Update upgrade --- scripts/upgrade | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 27f5e05..8528370 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -121,9 +121,10 @@ then ynh_replace_string --match_string="//const WWW_URI = '/asso/';" --replace_string="const WWW_URI = '$path_url/';" --target_file="$final_path/config.local.php" fi chmod 755 $final_path + # Create the visitors permission if needed - if [ $is_public -eq 1 ] - then + visitors_enabled=$(ynh_permission_has_user "main" "visitors") + if [[ $visitors_enabled -eq 0 ]] ynh_permission_update --permission "main" --add "visitors" fi @@ -133,6 +134,11 @@ then sleep 5 ynh_local_curl "/index.php" upgrade_type="UPGRADE_APP" + + if [[ $visitors_enabled -eq 0 ]] + ynh_permission_update --permission "main" --remove "visitors" + fi + fi #================================================= From 864e1f68cfd0e549b57a457a726f92b2d87b4d99 Mon Sep 17 00:00:00 2001 From: tituspijean Date: Sun, 26 Sep 2021 15:45:48 +0200 Subject: [PATCH 18/20] Fix 0.9.8 upgrade's curl --- scripts/upgrade | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 27f5e05..7da4a20 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -121,18 +121,25 @@ then ynh_replace_string --match_string="//const WWW_URI = '/asso/';" --replace_string="const WWW_URI = '$path_url/';" --target_file="$final_path/config.local.php" fi chmod 755 $final_path - # Create the visitors permission if needed - if [ $is_public -eq 1 ] - then - ynh_permission_update --permission "main" --add "visitors" + + # We need to have the app public before finalizing the upgrade + # So let's store its current state and allow visitors if needed + visitors_enabled=$(ynh_permission_has_user --permission=main --user=visitors) + if [ $visitors_enabled -eq 0 ] + ynh_permission_update --permission "main" --remove "visitors" fi ynh_systemd_action --service_name=nginx --action=reload - #finalyse upgrade + # Finalize the upgrade ynh_local_curl "/index.php" sleep 5 ynh_local_curl "/index.php" upgrade_type="UPGRADE_APP" + + # Remove visitors access if they were not allowed initially + if [ $visitors_enabled -eq 0 ] + ynh_permission_update --permission "main" --remove "visitors" + fi fi #================================================= From 557b58fd01c7bb9711678b648219bfa777963605 Mon Sep 17 00:00:00 2001 From: Robles Rodolphe Date: Sun, 26 Sep 2021 16:15:12 +0200 Subject: [PATCH 19/20] conditions fi --- scripts/upgrade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 8528370..36e7dbd 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -124,7 +124,7 @@ then # Create the visitors permission if needed visitors_enabled=$(ynh_permission_has_user "main" "visitors") - if [[ $visitors_enabled -eq 0 ]] + if [[ $visitors_enabled -eq 0 ]]; then ynh_permission_update --permission "main" --add "visitors" fi @@ -135,7 +135,7 @@ then ynh_local_curl "/index.php" upgrade_type="UPGRADE_APP" - if [[ $visitors_enabled -eq 0 ]] + if [[ $visitors_enabled -eq 0 ]]; then ynh_permission_update --permission "main" --remove "visitors" fi From 198e3af8162098ec5f6d2337396cf0af799620a0 Mon Sep 17 00:00:00 2001 From: Robles Rodolphe Date: Mon, 27 Sep 2021 12:49:59 +0200 Subject: [PATCH 20/20] review permissions for upgrade --- scripts/upgrade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index c69be08..f066255 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -121,9 +121,9 @@ then ynh_replace_string --match_string="//const WWW_URI = '/asso/';" --replace_string="const WWW_URI = '$path_url/';" --target_file="$final_path/config.local.php" fi chmod 755 $final_path - + # Create the visitors permission if needed - visitors_enabled=$(ynh_permission_has_user "main" "visitors") + visitors_enabled=$(ynh_permission_has_user "main" "visitors" && echo 0 || echo 1) if [[ $visitors_enabled -eq 0 ]]; then ynh_permission_update --permission "main" --add "visitors" fi