1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-11-28 09:24:24 +01:00

Merge branch 'dev' for release 6.3.23

This commit is contained in:
Du Peng 2024-05-20 15:58:53 +02:00
commit 064aac4010
8 changed files with 73 additions and 69 deletions

View File

@ -2,6 +2,11 @@
## Next release
## v6.3.23 2024 May 20
- Fix a bug: unable to update availability slot end time for training
- updates translations
## v6.3.22 2024 Avril 29
- Fix a security issue: updated rails to 7.0.8.1 to fix [CVE-2024-26143](https://github.com/rails/rails/security/advisories/GHSA-9822-6m93-xqf4)

View File

@ -1008,14 +1008,9 @@ Application.Controllers.controller('CreateEventModalController', ['$scope', '$ui
// update availability object
$scope.availability.start_at = $scope.start;
});
// Maintain consistency between the end time and the date object in the availability object
$scope.$watch('end', function (newValue, oldValue, scope) {
if (newValue.valueOf() !== oldValue.valueOf()) {
// we prevent the admin from setting the end of the availability before its beginning
if (moment($scope.start).add($scope.availability.slot_duration, 'minutes').isAfter(newValue)) {
$scope.end = oldValue;
}
// update availability object
$scope.availability.end_at = $scope.end;
}
@ -1031,6 +1026,10 @@ Application.Controllers.controller('CreateEventModalController', ['$scope', '$ui
$scope.start = start.toDate();
$scope.endTime = endTime.toDate();
});
$scope.endTimeChanged = function () {
$scope.end = moment.tz($scope.endTime, moment.tz.guess()).toDate();
};
};
/*

View File

@ -106,7 +106,7 @@
</div>
<span class="col-md-1 m-t-xl m-l" translate>{{ 'app.admin.calendar.to_time' }}</span>
<fieldset ng-disabled="endDateReadOnly" class="col-md-5">
<uib-timepicker ng-model="endTime" hour-step="timepickers.end.hstep" readonly-input="true" minute-step="timepickers.end.mstep" show-meridian="false"></uib-timepicker>
<uib-timepicker ng-model="endTime" hour-step="timepickers.end.hstep" readonly-input="true" minute-step="timepickers.end.mstep" show-meridian="false" ng-change="endTimeChanged()"></uib-timepicker>
</fieldset>
</div>
</div>

View File

@ -929,7 +929,7 @@ de:
settlement_by_debit_card_on_DATE_at_TIME_for_an_amount_of_AMOUNT: "Begleichung mit Debitkarte am {DATE} um {TIME}, über den Betrag von {AMOUNT}"
important_notes: "Wichtige Hinweise"
address_and_legal_information: "Adresse und rechtliche Informationen"
invoice_reference: "Rechnungsbezug"
invoice_reference: "Rechnungsnummer"
invoice_reference_is_required: "Invoice reference is required."
text: "Text"
year: "Jahr"

View File

@ -154,8 +154,8 @@ de:
create_an_account: "Neues Konto einrichten"
discover_members: "Mitglieder entdecken"
#next events summary on the home page
fablab_s_next_events: "Next events"
every_events: "All events"
fablab_s_next_events: "Nächste Veranstaltungen"
every_events: "Alle Veranstaltungen"
event_card:
on_the_date: "Am {DATE}"
from_date_to_date: "Von {START} bis {END}"

View File

@ -23,8 +23,8 @@ de:
you_will_lose_any_unsaved_modification_if_you_reload_this_page: "Ungespeicherte Änderungen gehen verloren, wenn Sie die Seite neu laden"
payment_card_declined: "Deine Kreditkarte wurde abgelehnt."
change_group:
title: "{OPERATOR, select, self{My group} other{User's group}}"
change: "Change {OPERATOR, select, self{my} other{his}} group"
title: "{OPERATOR, select, self{Meine Gruppe} other{Benutzergruppe}}"
change: "Ändere {OPERATOR, select, self{mein} other{Seine}} Gruppe"
cancel: "Cancel"
validate: "Validate group change"
success: "Group successfully changed"

View File

@ -49,7 +49,7 @@ de:
gateway_amount_too_large: "Zahlungen über %{AMOUNT} werden nicht unterstützt. Bitte bestellen Sie direkt an der Rezeption."
product_in_use: "Dieses Produkt wurde bereits bestellt"
slug_already_used: "wird bereits verwendet"
birthday_less_than_18_years_ago: "Birthday must be under 18 years ago"
birthday_less_than_18_years_ago: "Geburtstag muss unter 18 Jahre zurückliegen"
coupon:
code_format_error: "nur Großbuchstaben, Zahlen und Bindestriche sind erlaubt"
apipie:
@ -104,7 +104,7 @@ de:
training_reservation_DESCRIPTION: "Trainingsreservierung - %{DESCRIPTION}"
event_reservation_DESCRIPTION: "Veranstaltungs-Reservierung - %{DESCRIPTION}"
from_payment_schedule: "Fälliger %{NUMBER} von %{TOTAL}, von %{DATE}. Rückzahlungsplan %{SCHEDULE}"
null_invoice: "Invoice at nil, billing jump following a malfunction of the Fab Manager software"
null_invoice: "Rechnung bei Null, Rechnungssprung nach einer Fehlfunktion der Fab Manager-Software"
full_price_ticket:
one: "Ein Vollpreis-Ticket"
other: "%{count} Vollpreis-Tickets"
@ -349,9 +349,9 @@ de:
training_authorization_revoked: "Ihre Berechtigung zur Nutzung von %{MACHINES} wurde widerrufen, da sie abgelaufen ist."
notify_member_training_auto_cancelled:
auto_cancelled_training: "Die %{TRAINING} Schulung, die für %{DATE} geplant war, wurde wegen unzureichender Teilnehmerzahl abgesagt."
auto_refund: "You were refunded on your wallet."
auto_refund: "Sie wurden auf Ihrer Brieftasche zurückerstattet."
notify_member_training_invalidated:
invalidated: "Your authorization to use %{MACHINES} has been invalidated due to a lack of reservations."
invalidated: "Ihre Berechtigung zur Nutzung von %{MACHINES} wurde aufgrund fehlender Reservierungen für ungültig erklärt."
notify_partner_subscribed_plan:
subscription_partner_PLAN_has_been_subscribed_by_USER_html: "Das Partnerabonnement <strong><em>%{PLAN}</em></strong> wurde von <strong><em>%{USER}</strong></em> abonniert."
notify_project_author_when_collaborator_valid:
@ -387,7 +387,7 @@ de:
statistics_subscription: "der Abonnementstatistiken"
statistics_training: "der Schulungsstatistiken"
statistics_space: "der Raumstatistiken"
statistics_order: "of statistics about store orders"
statistics_order: "von Statistiken über Store-Bestellungen"
users_members: "der Mitgliederliste"
users_subscriptions: "der Abonnementliste"
users_reservations: "der Reservierungsliste"
@ -447,52 +447,52 @@ de:
notify_member_reservation_limit_reached:
limit_reached: "Für den %{DATE} haben Sie Ihr tägliches Limit von %{HOURS} Stunden %{ITEM} Reservierung erreicht."
notify_admin_user_supporting_document_files_created:
supporting_document_files_uploaded: "Supporting document uploaded by member <strong><em>%{NAME}</strong></em>."
supporting_document_files_uploaded: "Unterstütze Dokument hochgeladen von Mitglied <strong><em>%{NAME}</strong></em>."
notify_admin_user_supporting_document_files_updated:
supporting_document_files_uploaded: "Supporting document changed by member <strong><em>%{NAME}</strong></em>."
supporting_document_files_uploaded: "Unterstützungsdokument geändert durch Mitglied <strong><em>%{NAME}</strong></em>."
notify_admin_user_child_supporting_document_files_created:
supporting_document_files_uploaded: "Child's <strong><em>%{NAME}</strong></em> supporting document uploaded."
supporting_document_files_uploaded: "Childs <strong><em>%{NAME}</strong></em> unterstützendes Dokument hochgeladen."
notify_admin_user_child_supporting_document_files_updated:
supporting_document_files_uploaded: "Supporting document changed by child <strong><em>%{NAME}</strong></em>."
supporting_document_files_uploaded: "Unterstützungsdokument geändert von Kind <strong><em>%{NAME}</strong></em>."
notify_user_is_validated:
account_validated: "Dein Account ist gültig."
notify_user_is_invalidated:
account_invalidated: "Dein Account ist ungültig."
notify_user_child_is_validated:
child_validated: "Your account child is valid."
child_validated: "Dein Account ist gültig."
notify_user_child_is_invalidated:
child_invalidated: "Your account child is invalid."
child_invalidated: "Dein Account ist ungültig."
notify_user_supporting_document_refusal:
refusal: "Your supporting documents were refused"
refusal: "Ihre Unterstützungsdokumente wurden abgelehnt"
notify_user_supporting_document_reminder:
reminder_message: "This is a reminder for you to upload your supporting documents."
reminder_message: "Dies ist eine Erinnerung daran, dass Sie Ihre Belege hochladen müssen."
notify_admin_user_supporting_document_refusal:
refusal: "Member's supporting document <strong><em>%{NAME}</strong></em> was refused."
refusal: "Antrag des Mitglieds <strong><em>%{NAME}</strong></em> wurde abgelehnt."
notify_user_child_supporting_document_refusal:
refusal: "Your child's supporting documents were refused"
refusal: "Die Begleitdokumente Ihres Kindes wurden abgelehnt"
notify_admin_user_child_supporting_document_refusal:
refusal: "Child's supporting document <strong><em>%{NAME}</strong></em> was refused."
refusal: "Antrag des Mitglieds <strong><em>%{NAME}</strong></em> wurde abgelehnt."
notify_user_order_is_ready:
order_ready: "Your command %{REFERENCE} is ready"
order_ready: "Ihr Befehl %{REFERENCE} ist bereit"
notify_user_order_is_canceled:
order_canceled: "Your command %{REFERENCE} is canceled"
order_canceled: "Ihr Befehl %{REFERENCE} wurde abgebrochen"
notify_user_order_is_refunded:
order_refunded: "Your command %{REFERENCE} is refunded"
order_refunded: "Ihr Befehl %{REFERENCE} wird zurückerstattet"
notify_member_reservation_validated:
your_reservation_RESERVABLE_was_validated_html: "Your reservation <strong><em>%{RESERVABLE}</em></strong> was successfully validated."
your_reservation_RESERVABLE_was_validated_html: "Ihre Schulung <strong><em>%{RESERVABLE}</em></strong> wurde erfolgreich überprüft."
notify_admin_reservation_validated:
a_RESERVABLE_reservation_was_validated_html: "A <strong><em>%{RESERVABLE}</em></strong> reservation of <strong><em>%{NAME}</em></strong> was validated."
a_RESERVABLE_reservation_was_validated_html: "<strong><em>%{RESERVABLE}</em></strong> Reservierung <strong><em>%{NAME}</em></strong> wurde validiert."
notify_member_reservation_invalidated:
your_reservation_RESERVABLE_was_invalidated_html: "Your pre-registration of <strong><em>%{RESERVABLE}</em></strong> wasn't validated."
your_reservation_RESERVABLE_was_invalidated_html: "Ihre Vorregistrierung von <strong><em>%{RESERVABLE}</em></strong> wurde nicht bestätigt."
notify_admin_reservation_invalidated:
a_RESERVABLE_reservation_was_invalidated_html: "A <strong><em>%{RESERVABLE}</em></strong> pre-registration of <strong><em>%{NAME}</em></strong> was invalidated."
a_RESERVABLE_reservation_was_invalidated_html: "A <strong><em>%{RESERVABLE}</em></strong> Vorregistrierung von <strong><em>%{NAME}</em></strong> wurde ungültig."
notify_user_when_child_age_will_be_18:
child_age_will_be_18_years_ago: "Your child %{NAME} will turn 18 on %{DATE}, at which point they will be automatically detached from your Family account. They will need to create their own account in order to make reservations."
child_age_will_be_18_years_ago: "Ihr Kind %{NAME} wird 18 auf %{DATE}aktivieren, und an diesem Punkt werden sie automatisch von Ihrem Familienkonto getrennt. Sie müssen ihr eigenes Konto einrichten, um Reservierungen zu tätigen."
#statistics tools for admins
statistics:
subscriptions: "Abonnements"
machines_hours: "Maschinen-Slots"
machine_dates: "Slots dates"
machine_dates: "Slots-Datum"
space_dates: "Slots-Datum"
spaces: "Räume"
orders: "Bestellungen"
@ -542,39 +542,39 @@ de:
male: "Männlich"
female: "Weiblich"
deleted_user: "Gelöschte Benutzer"
reservation_context: "Reservation context"
reservation_context: "Grund der Reservierung"
coupon: "Coupon"
project_author: Author
project_author: Autor
#initial price's category for events, created to replace the old "reduced amount" property
price_category:
reduced_fare: "Ermäßigter Tarif"
reduced_fare_if_you_are_under_25_student_or_unemployed: "Ermäßigter Tarif, wenn Sie unter 25, studierend oder arbeitslos sind."
cart_items:
free_extension: "Kostenlose Verlängerung eines Abonnements bis %{DATE}"
must_be_after_expiration: "The new expiration date must be set after the current expiration date"
group_subscription_mismatch: "Your group mismatch with your subscription. Please report this error."
must_be_after_expiration: "Das neue Ablaufdatum muss nach dem aktuellen Ablaufdatum festgelegt werden"
group_subscription_mismatch: "Deine Gruppe stimmt nicht mit deinem Abonnement überein. Bitte melde diesen Fehler."
statistic_profile:
birthday_in_past: "Geburtsdatum muss in der Vergangenheit liegen"
order:
please_contact_FABLAB: "Please contact us for withdrawal instructions."
please_contact_FABLAB: "Bitte setzen Sie sich mit uns in Verbindung, um Anweisungen für den Widerruf zu erhalten."
cart_item_validation:
slot: "The slot doesn't exist"
availability: "The availaility doesn't exist"
full: "The slot is already fully reserved"
deadline: "You can't reserve a slot %{MINUTES} minutes prior to its start"
limit_reached: "You have reached the booking limit of %{HOURS}H per day for the %{RESERVABLE}, for your current subscription. Please adjust your reservation."
restricted: "This availability is restricted for subscribers"
plan: "This subscription plan is disabled"
plan_group: "This subscription plan is reserved for members of group %{GROUP}"
reserved: "This slot is already reserved"
pack: "This prepaid pack is disabled"
pack_group: "This prepaid pack is reserved for members of group %{GROUP}"
slot: "Der Slot existiert nicht"
availability: "Die Verfügbarkeit existiert nicht"
full: "Der Slot ist bereits vollständig reserviert"
deadline: "Sie können keinen Slot %{MINUTES} Minuten vor dem Start reservieren"
limit_reached: "Sie haben das Buchungslimit von %{HOURS}H pro Tag für %{RESERVABLE}für Ihr aktuelles Abonnement erreicht. Bitte passen Sie Ihre Reservierung an."
restricted: "Diese Verfügbarkeit ist für Abonnenten beschränkt"
plan: "Dieses Abonnement ist deaktiviert"
plan_group: "Dieses Abonnement ist reserviert für Mitglieder der Gruppe %{GROUP}"
reserved: "Dieser Slot ist bereits reserviert"
pack: "Dieses Prepaid-Paket ist deaktiviert"
pack_group: "Dieses Prepaid-Paket ist reserviert für Mitglieder der Gruppe %{GROUP}"
space: "Dieser Space ist deaktiviert"
machine: "Diese Maschine ist deaktiviert"
reservable: "Diese Maschine ist nicht reservierbar"
blocked_by_another_reservation: "This slot is blocked by another reservation"
blocked_by_another_reservation: "Dieser Slot ist durch eine andere Reservierung gesperrt"
cart_validation:
select_user: "Please select a user before continuing"
select_user: "Bitte wählen Sie einen Benutzer aus, bevor Sie fortfahren"
settings:
locked_setting: "die Einstellung ist gesperrt."
about_title: "Seitentitel \"Über\""
@ -596,12 +596,12 @@ de:
invoice_order-nb: "Bestellnummer der Rechnung"
invoice_VAT-active: "Aktivierung der Mehrwertsteuer"
invoice_VAT-rate: "MwSt.-Satz"
invoice_VAT-rate_Product: "VAT rate for shop's product sales"
invoice_VAT-rate_Event: "VAT rate for event reservations"
invoice_VAT-rate_Machine: "VAT rate for machine reservations"
invoice_VAT-rate_Subscription: "VAT rate for subscriptions"
invoice_VAT-rate_Space: "VAT rate for space reservations"
invoice_VAT-rate_Training: "VAT rate for training reservations"
invoice_VAT-rate_Product: "MwSt.-Satz für Produktverkäufe"
invoice_VAT-rate_Event: "MwSt.-Satz für Event-Reservierungen"
invoice_VAT-rate_Machine: "MwSt.-Satz für Maschinen-Reservierungen"
invoice_VAT-rate_Subscription: "MwSt.-Satz für Abonnements"
invoice_VAT-rate_Space: "MwSt.-Satz für Platzreservierungen"
invoice_VAT-rate_Training: "MwSt.-Satz für Schulungsreservierungen"
invoice_text: "Rechnungstext"
invoice_legals: "Rechtliche Informationen auf den Rechnungen"
booking_window_start: "Öffnungszeit Beginn"
@ -620,11 +620,11 @@ de:
space_explications_alert: "Erklärungstext auf der Seite für die Raum-Reservierung"
visibility_yearly: "Maximale Sichtbarkeit für jährliche Abonnenten"
visibility_others: "Maximale Sichtbarkeit für andere Mitglieder"
reservation_deadline: "Prevent reservation before it starts"
reservation_deadline: "Reservierung vor dem Start verhindern"
display_name_enable: "Namen im Kalender anzeigen"
machines_sort_by: "Anzeigereihenfolge der Maschinen"
accounting_sales_journal_code: "Sales journal code"
accounting_payment_card_code: "Card payments code"
accounting_sales_journal_code: "Code des Verkaufsberichts"
accounting_payment_card_code: "Kartenzahlungscode"
accounting_payment_card_label: "Card payments label"
accounting_payment_card_journal_code: "Card clients journal code"
accounting_payment_wallet_code: "Wallet payments code"
@ -723,11 +723,11 @@ de:
flickr: "Flickr"
machines_module: "Maschinenmodul"
user_change_group: "Allow users to change their group"
store_module: "Store module"
store_withdrawal_instructions: "Withdrawal instructions"
store_hidden: "Store hidden to the public"
advanced_accounting: "Advanced accounting"
external_id: "external identifier"
store_module: "Modul speichern"
store_withdrawal_instructions: "Widerrufsbelehrung"
store_hidden: "Shop für die Öffentlichkeit versteckt"
advanced_accounting: "Erweiterte Buchhaltung"
external_id: "externe Id"
prevent_invoices_zero: "prevent building invoices at 0"
invoice_VAT-name: "VAT name"
trainings_auto_cancel: "Trainings automatic cancellation"

View File

@ -1,6 +1,6 @@
{
"name": "fab-manager",
"version": "6.3.22",
"version": "6.3.23",
"description": "Fab-manager is the FabLab management solution. It provides a comprehensive, web-based, open-source tool to simplify your administrative tasks and your marker's projects.",
"keywords": [
"fablab",