diff --git a/scripts/wp-init-local.sh b/scripts/wp-init-local.sh index c96dff81..f0fbba84 100755 --- a/scripts/wp-init-local.sh +++ b/scripts/wp-init-local.sh @@ -6,7 +6,7 @@ set -e # INSTALL DEV ENVIRONMENT # ########################### # Install theme dependencies with composer -docker exec --user 1000:1000 wp_docker_les_verts bash -c "cd /var/www/html/wp-content/themes/les-verts && composer install" +docker exec --user $(id -u):$(id -g) wp_docker_les_verts bash -c "cd /var/www/html/wp-content/themes/les-verts && composer install" # Install wp core docker exec wp_docker_les_verts wp core install --url=localhost --title=LesVERTS --admin_user=admin --admin_password=admin --admin_email=admin@gruene.ch @@ -21,7 +21,7 @@ docker exec wp_docker_les_verts bash -c "chmod +x wp-configure.sh && export WPCL yarn install && yarn build # Create dist symlink -docker exec --user 1000:1000 wp_docker_les_verts bash -c "cd wp-content/themes/les-verts && ln -sf styleguide/dist/static static" +docker exec --user $(id -u):$(id -g) wp_docker_les_verts bash -c "cd wp-content/themes/les-verts && ln -sf styleguide/dist/static static" # Import demo content docker cp scripts/wp-add-demo-content.sh wp_docker_les_verts:/var/www/html/wp-add-demo-content.sh diff --git a/wordpress/wp-content/themes/les-verts/composer.lock b/wordpress/wp-content/themes/les-verts/composer.lock index 1d3fce1c..fa72c120 100644 --- a/wordpress/wp-content/themes/les-verts/composer.lock +++ b/wordpress/wp-content/themes/les-verts/composer.lock @@ -1341,16 +1341,16 @@ }, { "name": "twig/twig", - "version": "v2.15.6", + "version": "v2.16.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "ad637405a828601a56f32ccab9a85541c4b66c9d" + "reference": "0c9cc7ef2e0ec6d20c5af1200522a89ba101f623" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/ad637405a828601a56f32ccab9a85541c4b66c9d", - "reference": "ad637405a828601a56f32ccab9a85541c4b66c9d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/0c9cc7ef2e0ec6d20c5af1200522a89ba101f623", + "reference": "0c9cc7ef2e0ec6d20c5af1200522a89ba101f623", "shasum": "" }, "require": { @@ -1366,7 +1366,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.15-dev" + "dev-master": "2.16-dev" } }, "autoload": { @@ -1405,7 +1405,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.15.6" + "source": "https://github.com/twigphp/Twig/tree/v2.16.0" }, "funding": [ { @@ -1417,7 +1417,7 @@ "type": "tidelift" } ], - "time": "2023-11-21T17:34:48+00:00" + "time": "2023-12-22T07:22:15+00:00" }, { "name": "upstatement/routes", diff --git a/wordpress/wp-content/themes/les-verts/languages/de_DE.mo b/wordpress/wp-content/themes/les-verts/languages/de_DE.mo index 16c6cdcd..c5e06f57 100644 Binary files a/wordpress/wp-content/themes/les-verts/languages/de_DE.mo and b/wordpress/wp-content/themes/les-verts/languages/de_DE.mo differ diff --git a/wordpress/wp-content/themes/les-verts/languages/de_DE.po b/wordpress/wp-content/themes/les-verts/languages/de_DE.po index ba674961..b61d594e 100644 --- a/wordpress/wp-content/themes/les-verts/languages/de_DE.po +++ b/wordpress/wp-content/themes/les-verts/languages/de_DE.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: 2018gruenech\n" "POT-Creation-Date: 2023-11-03 19:25+0100\n" -"PO-Revision-Date: 2023-11-03 18:28\n" +"PO-Revision-Date: 2024-02-02 15:17\n" "Last-Translator: Cyrill Bolliger \n" "Language-Team: German\n" "MIME-Version: 1.0\n" @@ -2315,7 +2315,7 @@ msgstr "E-Mailvorlage" #: lib/form/include/Mailer.php:228 #, php-format msgid "%s: ERROR while sending mail" -msgstr "" +msgstr "%s: ERROR beim Senden einer Mail" #: lib/form/include/Mailer.php:234 #, php-format @@ -2331,7 +2331,18 @@ msgid "Hi Admin of %s\n\n" "Your Website - %s\n\n" "Error message:\n" "%s" -msgstr "" +msgstr "Hallo Admin von %s\n\n" +"Beim Versenden der folgenden Mail ist ein FEHLER aufgetreten und wir konnten sie nicht in der Warteschlange speichern. Die Mail:\n\n" +"---\n\n" +"an: %s\n" +"subject: %s\n" +"body: %s\n\n" +"---\n\n" +"Mehr Details in der Fehlermeldung unten.\n\n" +"Einen schönen Tag noch.\n" +"Deine Website - %s\n\n" +"Fehlermeldung:\n" +"%s" #: lib/form/include/SubmissionExport.php:92 msgid "Website export" @@ -2629,12 +2640,12 @@ msgstr "Die 'tag not in' Funktion wird nicht unterstützt." #: lib/tweaks/limit-image-upload-dims.php:39 #, php-format msgid "PNG images must not exceed the area of %d * %d pixels. Reduce the image dimensions or convert it to JPEG." -msgstr "" +msgstr "PNG-Bilder dürfen die Fläche von %d * %d Pixel nicht überschreiten. Verkleinere die Bildgrösse oder wandle sie in JPEG um." #: lib/tweaks/limit-image-upload-dims.php:48 #, php-format msgid "Images must not exceed the area of %d * %d pixels. Please reduce the image dimensions and try again." -msgstr "" +msgstr "Die Bilder dürfen die Fläche von %d * %d nicht überschreiten. Bitte reduziere die Bildgrösse und versuche es erneut." #: lib/widgets/ButtonWidget.php:27 msgid "Show your main calls to action" diff --git a/wordpress/wp-content/themes/les-verts/languages/fr_FR.mo b/wordpress/wp-content/themes/les-verts/languages/fr_FR.mo index 7fee0488..3a8fb6b6 100644 Binary files a/wordpress/wp-content/themes/les-verts/languages/fr_FR.mo and b/wordpress/wp-content/themes/les-verts/languages/fr_FR.mo differ diff --git a/wordpress/wp-content/themes/les-verts/languages/fr_FR.po b/wordpress/wp-content/themes/les-verts/languages/fr_FR.po index 8143eef7..fd232aed 100644 --- a/wordpress/wp-content/themes/les-verts/languages/fr_FR.po +++ b/wordpress/wp-content/themes/les-verts/languages/fr_FR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: 2018gruenech\n" "POT-Creation-Date: 2023-11-03 19:25+0100\n" -"PO-Revision-Date: 2023-11-03 18:28\n" +"PO-Revision-Date: 2024-01-12 12:27\n" "Last-Translator: Cyrill Bolliger \n" "Language-Team: French\n" "MIME-Version: 1.0\n" @@ -1895,7 +1895,7 @@ msgstr "Sera affiché sous la zone de saisie du texte (en petits caractères)" #: lib/form/acf/input.php:156 msgid "Please add Hallo, Liebe, Lieber or salut, chère, cher. All other values will be ignored!" -msgstr "Merci d'insérer Hallo, Liebe, Lieber ou salut, chère, cher. Toutes les autres valeurs seront ignorées!" +msgstr "Merci d'insérer Hallo, Liebe, Lieber ou Salut, Chère, Cher. Toutes les autres valeurs seront ignorées!" #: lib/form/acf/input.php:162 msgid "Choices" diff --git a/wordpress/wp-content/themes/les-verts/lib/form/include/CrmSaver.php b/wordpress/wp-content/themes/les-verts/lib/form/include/CrmSaver.php index f4136e48..2f156127 100644 --- a/wordpress/wp-content/themes/les-verts/lib/form/include/CrmSaver.php +++ b/wordpress/wp-content/themes/les-verts/lib/form/include/CrmSaver.php @@ -286,7 +286,7 @@ public function queue() { if ( ! empty( $data ) ) { $item = new CrmQueueItem( $data, $this->submission ); - $this->queue->push( $item ); + $this->queue->push_if_not_in_queue( $item ); if ( defined( 'SUPT_FORM_ASYNC' ) && ! SUPT_FORM_ASYNC ) { do_action( self::CRON_HOOK_CRM_SAVE ); diff --git a/wordpress/wp-content/themes/les-verts/lib/form/include/Mailer.php b/wordpress/wp-content/themes/les-verts/lib/form/include/Mailer.php index 6b7b3f6e..7a2465a4 100644 --- a/wordpress/wp-content/themes/les-verts/lib/form/include/Mailer.php +++ b/wordpress/wp-content/themes/les-verts/lib/form/include/Mailer.php @@ -89,7 +89,7 @@ private function queue_confirmation() { $this->submission->meta_get_referer() ); - $this->queue->push( $confirmation ); + $this->queue->push_if_not_in_queue( $confirmation ); } } @@ -111,7 +111,7 @@ private function queue_notification() { $this->submission->meta_get_referer() ); - $this->queue->push( $notification ); + $this->queue->push_if_not_in_queue( $notification ); } } @@ -199,7 +199,7 @@ public static function send_mails() { // requeue mail on error if number of retries is not exceeded if ( $mail->get_sending_attempts() < self::SENDING_RETRIES ) { try { - $queue->push( $mail ); + $queue->push_if_not_in_queue( $mail ); } catch ( Exception $e ) { self::send_error_notification( $mail, $e ); } diff --git a/wordpress/wp-content/themes/les-verts/lib/form/include/QueueDao.php b/wordpress/wp-content/themes/les-verts/lib/form/include/QueueDao.php index 5a181df2..17ed8b4c 100644 --- a/wordpress/wp-content/themes/les-verts/lib/form/include/QueueDao.php +++ b/wordpress/wp-content/themes/les-verts/lib/form/include/QueueDao.php @@ -40,16 +40,23 @@ public function __construct( $key ) { * * @param mixed $item * + * @return void * @throws Exception */ public function push( $item ) { - $this->lock(); - $queue = $this->get_all(); - if ( ! in_array( $item, $queue, true ) ) { - $queue[] = $item; - $this->save( $queue ); - } - $this->unlock(); + $this->_push( $item, true ); + } + + /** + * Add item to the end of the queue if not yet in queue + * + * @param mixed $item + * + * @return void + * @throws Exception + */ + public function push_if_not_in_queue( $item ) { + $this->_push( $item, false ); } /** @@ -182,4 +189,41 @@ private function get_lock_name(): string { return DB_NAME . '.' . $wpdb->postmeta . '.' . $this->key; } + + /** + * Add item to the end of the queue + * + * @param mixed $item + * @param bool $allow_duplicates prevent adding the same item twice + * + * @return void + * @throws Exception + */ + private function _push( $item, $allow_duplicates ) { + $this->lock(); + $queue = $this->get_all(); + if ( $allow_duplicates || ! $this->contains( $queue, $item ) ) { + $queue[] = $item; + $this->save( $queue ); + } + $this->unlock(); + } + + /** + * Check if all_items contains item by comparing the values. + * + * @param $all_items + * @param $item + * + * @return bool + */ + private function contains( $all_items, $item ) { + if ( is_scalar( $item ) ) { + // strict: true => prevent type coercion + return in_array( $item, $all_items, true ); + } + + // strict: false => compare objects / arrays by value + return in_array( $item, $all_items, false ); + } } diff --git a/wordpress/wp-content/themes/les-verts/lib/form/include/SubmissionModel.php b/wordpress/wp-content/themes/les-verts/lib/form/include/SubmissionModel.php index 5155e22b..06f4f062 100644 --- a/wordpress/wp-content/themes/les-verts/lib/form/include/SubmissionModel.php +++ b/wordpress/wp-content/themes/les-verts/lib/form/include/SubmissionModel.php @@ -244,7 +244,7 @@ public function meta_get_linked_email() { $predecessor = $predecessor->meta_get_predecessor(); } - return false; + return $email ?? false; } /** diff --git a/wordpress/wp-content/themes/les-verts/style.css b/wordpress/wp-content/themes/les-verts/style.css index cfd5e42c..2e477772 100644 --- a/wordpress/wp-content/themes/les-verts/style.css +++ b/wordpress/wp-content/themes/les-verts/style.css @@ -2,7 +2,7 @@ * Theme Name: Les Verts * Description: Custom theme for the GREENS of Switzerland. Designed by superhuit.ch, built by gruene.ch on top of superhuit's stack. * Author: superhuit.ch & gruene.ch - * Version: 0.38.1 + * Version: 0.38.2 * Requires PHP: 7.4 * Requires at least: 5.0 * Theme URI: https://github.com/grueneschweiz/2018.gruene.ch/ diff --git a/wordpress/wp-content/themes/les-verts/templates/atoms/form-elements/a-checkoption.twig b/wordpress/wp-content/themes/les-verts/templates/atoms/form-elements/a-checkoption.twig index 47345e00..09c0725d 100644 --- a/wordpress/wp-content/themes/les-verts/templates/atoms/form-elements/a-checkoption.twig +++ b/wordpress/wp-content/themes/les-verts/templates/atoms/form-elements/a-checkoption.twig @@ -1,6 +1,6 @@ {# Parameters: -- id: string (optional, name is used if id is not provided) +- id: string (optional, `{{ default_id_prefix }}-{{ uniqueid }}-{{ name }}` is used if id is not provided) - classes: string (optional, appended) - name: string must be unique in form - label: string @@ -9,10 +9,11 @@ Parameters: - type: string. accepted values 'radio' and 'checkbox' - checked: bool (optional) - modifiers_classes: string (optional) +- default_id_prefix: string #} {% if not id %} - {% set id = name|uniqueid %} + {% set id = default_id_prefix|uniqueid ~ "-" ~ name %} {% endif %}
@@ -26,14 +27,15 @@ Parameters: class="a-checkoption__field"> {% else %} {# make sure unchecked elements still show up in post data #} - {% endif %} -
diff --git a/wordpress/wp-content/themes/les-verts/templates/atoms/form-elements/a-input.twig b/wordpress/wp-content/themes/les-verts/templates/atoms/form-elements/a-input.twig index 64a6945a..d40d0441 100644 --- a/wordpress/wp-content/themes/les-verts/templates/atoms/form-elements/a-input.twig +++ b/wordpress/wp-content/themes/les-verts/templates/atoms/form-elements/a-input.twig @@ -1,6 +1,6 @@ {# Parameters: -- id: string (optional, name is used if id is not provided) +- id: string (optional, `{{ default_id_prefix }}-{{ uniqueid }}-{{ name }}` is used if id is not provided) - classes: string (optional, appended) - name: string must be unique in form - label: string @@ -11,18 +11,24 @@ Parameters: - required: bool - modifiers_classes: string (optional) - type: string. accepted values 'textarea' and the html5 input types +- default_id_prefix: string #} + +{% if not id %} + {% set id = default_id_prefix|uniqueid ~ "-" ~ name %} +{% endif %} +
-