From b4250b2ce61bcc04294d15d939f0aa4c2073981c Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Mon, 17 Apr 2023 11:29:36 +0200
Subject: [PATCH 01/10] (bug) abus notification error
---
CHANGELOG.md | 2 ++
app/models/project.rb | 2 ++
2 files changed, 4 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 652ceb0f4..5458cd199 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,7 @@
# Changelog Fab-manager
+- Fix a bug: notification is broken when delete a project
+
## v6.0.3 2023 April 12
- Fix a bug: unable to install Fab-manager by setup.sh
diff --git a/app/models/project.rb b/app/models/project.rb
index 860e2f5ad..238353e96 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -40,6 +40,8 @@ class Project < ApplicationRecord
has_many :project_steps, dependent: :destroy
accepts_nested_attributes_for :project_steps, allow_destroy: true
+ has_many :abuses, as: :signaled, dependent: :destroy, class_name: 'Abuse'
+
# validations
validates :author, :name, presence: true
From acc081a41396cceed4c3778653a9848cb03c4189 Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Mon, 17 Apr 2023 12:20:36 +0200
Subject: [PATCH 02/10] (bug) logout error in payment_schedules page
---
.../payment-schedule/payment-schedule-item-actions.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/frontend/src/javascript/components/payment-schedule/payment-schedule-item-actions.tsx b/app/frontend/src/javascript/components/payment-schedule/payment-schedule-item-actions.tsx
index caf059353..7a7e8f307 100644
--- a/app/frontend/src/javascript/components/payment-schedule/payment-schedule-item-actions.tsx
+++ b/app/frontend/src/javascript/components/payment-schedule/payment-schedule-item-actions.tsx
@@ -54,7 +54,7 @@ export const PaymentScheduleItemActions: React.FC {
- return (operator.role === 'admin' || operator.role === 'manager');
+ return (operator?.role === 'admin' || operator?.role === 'manager');
};
/**
From 4c126a63d521a48a3dabc63c3a9e93757bae8010 Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Mon, 17 Apr 2023 12:32:01 +0200
Subject: [PATCH 03/10] (bug) add a task for clean abuse notifications
---
CHANGELOG.md | 1 +
lib/tasks/fablab/maintenance.rake | 7 +++++++
2 files changed, 8 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5458cd199..4b0ef55ef 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
# Changelog Fab-manager
- Fix a bug: notification is broken when delete a project
+- [TODO DEPLOY] `rails fablab:maintenance:clean_abuse_notifications`
## v6.0.3 2023 April 12
diff --git a/lib/tasks/fablab/maintenance.rake b/lib/tasks/fablab/maintenance.rake
index 23a6dc4f7..3402555fa 100644
--- a/lib/tasks/fablab/maintenance.rake
+++ b/lib/tasks/fablab/maintenance.rake
@@ -155,5 +155,12 @@ namespace :fablab do
end_date = args.end == 'today' ? Time.current.end_of_day : start_date.next_month
[start_date, end_date]
end
+
+ desc 'Clean the abuse notifications if signaled object is null'
+ task clean_abuse_notifications: :environment do
+ Abuse.all.each do |abuse|
+ abuse.destroy if abuse.signaled.nil?
+ end
+ end
end
end
From e39c5638b80bf9b3efb7ec5c8316ec07e698a822 Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Tue, 18 Apr 2023 10:07:30 +0200
Subject: [PATCH 04/10] (quality) payzen order status
---
app/controllers/api/payzen_controller.rb | 5 +++--
.../src/javascript/components/payment/payzen/payzen-form.tsx | 2 +-
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/app/controllers/api/payzen_controller.rb b/app/controllers/api/payzen_controller.rb
index 14eaf310b..3583ac12a 100644
--- a/app/controllers/api/payzen_controller.rb
+++ b/app/controllers/api/payzen_controller.rb
@@ -72,7 +72,7 @@ class API::PayzenController < API::PaymentsController
cart = shopping_cart
- if order['answer']['transactions'].any? { |transaction| transaction['status'] == 'PAID' }
+ if order['answer']['transactions'].all? { |transaction| transaction['status'] == 'PAID' }
render on_payment_success(params[:order_id], cart)
else
render json: order['answer'], status: :unprocessable_entity
@@ -86,10 +86,11 @@ class API::PayzenController < API::PaymentsController
client = PayZen::Transaction.new
transaction = client.get(params[:transaction_uuid])
+ order = PayZen::Order.new.get(params[:order_id])
cart = shopping_cart
- if transaction['answer']['status'] == 'PAID'
+ if transaction['answer']['status'] == 'PAID' && order['answer']['transactions'].all? { |t| t['status'] == 'PAID' }
render on_payment_success(params[:order_id], cart)
else
render json: transaction['answer'], status: :unprocessable_entity
diff --git a/app/frontend/src/javascript/components/payment/payzen/payzen-form.tsx b/app/frontend/src/javascript/components/payment/payzen/payzen-form.tsx
index 541880808..7f7a6223b 100644
--- a/app/frontend/src/javascript/components/payment/payzen/payzen-form.tsx
+++ b/app/frontend/src/javascript/components/payment/payzen/payzen-form.tsx
@@ -75,7 +75,7 @@ export const PayzenForm: React.FC = ({ onSubmit, onSuccess, onE
if (updateCard) return onSuccess(null);
const transaction = event.clientAnswer.transactions[0];
- if (event.clientAnswer.orderStatus === 'PAID') {
+ if (event.clientAnswer.orderStatus === 'PAID' && transaction?.status === 'PAID') {
confirmPayment(event, transaction).then((confirmation) => {
PayZenKR.current.removeForms().then(() => {
onSuccess(confirmation);
From 112df59c96254d55116359ef43c034854b065978 Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Thu, 20 Apr 2023 18:57:37 +0200
Subject: [PATCH 05/10] (bug) date shift in event creation/update
---
app/services/event_service.rb | 4 ++--
test/integration/events/timezone_test.rb | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/app/services/event_service.rb b/app/services/event_service.rb
index 639353313..7a6adcaf6 100644
--- a/app/services/event_service.rb
+++ b/app/services/event_service.rb
@@ -33,8 +33,8 @@ class EventService
end
def date_range(starting, ending, all_day)
- start_date = Time.zone.parse(starting[:date])
- end_date = Time.zone.parse(ending[:date])
+ start_date = Date.parse(starting[:date])
+ end_date = Date.parse(ending[:date])
start_time = starting[:time] ? Time.zone.parse(starting[:time]) : nil
end_time = ending[:time] ? Time.zone.parse(ending[:time]) : nil
if all_day || start_time.nil? || end_time.nil?
diff --git a/test/integration/events/timezone_test.rb b/test/integration/events/timezone_test.rb
index 2c2489e41..4f8db9e4a 100644
--- a/test/integration/events/timezone_test.rb
+++ b/test/integration/events/timezone_test.rb
@@ -46,8 +46,8 @@ class Events::TimezoneTest < ActionDispatch::IntegrationTest
e = Event.find_by(id: event[:id])
assert_not_nil e, 'Event was not created in database'
- assert_equal '2023-06-15', e.availability.start_at.to_date.iso8601
- assert_equal '2023-06-15', e.availability.end_at.to_date.iso8601
+ assert_equal '2023-06-14', e.availability.start_at.to_date.iso8601
+ assert_equal '2023-06-14', e.availability.end_at.to_date.iso8601
assert_equal '09:48', e.availability.start_at.strftime('%R')
assert_equal '11:48', e.availability.end_at.strftime('%R')
end
From 57683125a89693f4fc1ccb4689881c100a3424be Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Fri, 21 Apr 2023 19:28:33 +0200
Subject: [PATCH 06/10] (bug) window end time < window start time
---
app/frontend/src/javascript/controllers/admin/settings.js | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/app/frontend/src/javascript/controllers/admin/settings.js b/app/frontend/src/javascript/controllers/admin/settings.js
index 4e07dcc30..e43bca1dc 100644
--- a/app/frontend/src/javascript/controllers/admin/settings.js
+++ b/app/frontend/src/javascript/controllers/admin/settings.js
@@ -487,8 +487,12 @@ Application.Controllers.controller('SettingsController', ['$scope', '$rootScope'
// we prevent the admin from setting the closing time before the opening time
$scope.$watch('windowEnd.value', function (newValue, oldValue, scope) {
- if ($scope.windowStart && moment($scope.windowStart.value).isAfter(newValue)) {
- return $scope.windowEnd.value = oldValue;
+ if (scope.windowStart) {
+ const startTime = moment($scope.windowStart.value).format('HH:mm:ss');
+ const endTime = moment(newValue).format('HH:mm:ss');
+ if (startTime >= endTime) {
+ scope.windowEnd.value = oldValue;
+ }
}
});
From b588f1c78077a07b2de607cf33696f0bc5dc5b41 Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Mon, 24 Apr 2023 19:17:07 +0200
Subject: [PATCH 07/10] (bug) broken notifications email
---
CHANGELOG.md | 1 +
.../notify_admin_low_stock_threshold.html.erb | 4 ++--
.../notify_admin_training_auto_cancelled.html.erb | 2 +-
.../notify_admin_when_user_is_created.html.erb | 2 +-
.../notify_admin_when_user_is_imported.html.erb | 2 +-
.../notify_member_training_authorization_expired.html.erb | 2 +-
.../notify_member_training_auto_cancelled.html.erb | 2 +-
.../notify_member_training_invalidated.html.erb | 2 +-
8 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4b0ef55ef..dd5626219 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
# Changelog Fab-manager
- Fix a bug: notification is broken when delete a project
+- Fix a bug: broken notifications email
- [TODO DEPLOY] `rails fablab:maintenance:clean_abuse_notifications`
## v6.0.3 2023 April 12
diff --git a/app/views/notifications_mailer/notify_admin_low_stock_threshold.html.erb b/app/views/notifications_mailer/notify_admin_low_stock_threshold.html.erb
index 0c1bae992..a5dff9aa3 100644
--- a/app/views/notifications_mailer/notify_admin_low_stock_threshold.html.erb
+++ b/app/views/notifications_mailer/notify_admin_low_stock_threshold.html.erb
@@ -1,10 +1,10 @@
<%= render 'notifications_mailer/shared/hello', recipient: @recipient %>
- <%= t('.body.low_stock', { PRODUCT: @attached_object.name }) %>
+ <%= t('.body.low_stock', **{ PRODUCT: @attached_object.name }) %>
- <%= t('.body.stocks_state_html', { INTERNAL: @attached_object.stock['internal'], EXTERNAL: @attached_object.stock['external'] }) %>
+<%= t('.body.stocks_state_html', **{ INTERNAL: @attached_object.stock['internal'], EXTERNAL: @attached_object.stock['external'] }) %>
<%=link_to( t('.body.manage_stock'), "#{root_url}#!/admin/store/products/#{@attached_object.id}/edit", target: "_blank" )%>
diff --git a/app/views/notifications_mailer/notify_admin_training_auto_cancelled.html.erb b/app/views/notifications_mailer/notify_admin_training_auto_cancelled.html.erb
index 8a62126d3..41b94d0ce 100644
--- a/app/views/notifications_mailer/notify_admin_training_auto_cancelled.html.erb
+++ b/app/views/notifications_mailer/notify_admin_training_auto_cancelled.html.erb
@@ -1,7 +1,7 @@
<%= render 'notifications_mailer/shared/hello', recipient: @recipient %>
- <%= t('.body.cancelled_training', {
+ <%= t('.body.cancelled_training', **{
TRAINING: @attached_object.trainings.first.name,
DATE: I18n.l(@attached_object.start_at.to_date),
START: I18n.l(@attached_object.start_at, format: :hour_minute),
diff --git a/app/views/notifications_mailer/notify_admin_when_user_is_created.html.erb b/app/views/notifications_mailer/notify_admin_when_user_is_created.html.erb
index f994e2be5..6412854e5 100644
--- a/app/views/notifications_mailer/notify_admin_when_user_is_created.html.erb
+++ b/app/views/notifications_mailer/notify_admin_when_user_is_created.html.erb
@@ -6,7 +6,7 @@
- <%= t('.body.user_of_group_html', { GROUP: @attached_object&.group&.name }) %>
+ <%= t('.body.user_of_group_html', GROUP: @attached_object&.group&.name) %>
<% if @attached_object.invoicing_profile.organization %>
diff --git a/app/views/notifications_mailer/notify_admin_when_user_is_imported.html.erb b/app/views/notifications_mailer/notify_admin_when_user_is_imported.html.erb
index eac0434bb..8fe92d867 100644
--- a/app/views/notifications_mailer/notify_admin_when_user_is_imported.html.erb
+++ b/app/views/notifications_mailer/notify_admin_when_user_is_imported.html.erb
@@ -2,7 +2,7 @@
<%= render 'notifications_mailer/shared/hello', recipient: @recipient %>
<%= t('.body.new_account_imported', ID: @attached_object.id, PROVIDER: provider.name) %>
- <%= t('.body.provider_uid', UID:@attached_object.uid) %>
+ <%= t('.body.provider_uid', UID: @attached_object.uid) %>
<% if provider.sso_fields.size > 1 %>
<%= t('.body.known_information') %>
diff --git a/app/views/notifications_mailer/notify_member_training_authorization_expired.html.erb b/app/views/notifications_mailer/notify_member_training_authorization_expired.html.erb
index f4fc020ed..9522275a6 100644
--- a/app/views/notifications_mailer/notify_member_training_authorization_expired.html.erb
+++ b/app/views/notifications_mailer/notify_member_training_authorization_expired.html.erb
@@ -1,6 +1,6 @@
<%= render 'notifications_mailer/shared/hello', recipient: @recipient %>
-<%= t('.body.training_expired_html', {
+<%= t('.body.training_expired_html', **{
TRAINING: @attached_object.name,
MACHINES: @attached_object.machines.map(&:name).join(', '),
DATE: I18n.l((DateTime.current - @attached_object.authorization_period.months).to_date),
diff --git a/app/views/notifications_mailer/notify_member_training_auto_cancelled.html.erb b/app/views/notifications_mailer/notify_member_training_auto_cancelled.html.erb
index ca8144c00..e50d0a0c3 100644
--- a/app/views/notifications_mailer/notify_member_training_auto_cancelled.html.erb
+++ b/app/views/notifications_mailer/notify_member_training_auto_cancelled.html.erb
@@ -1,7 +1,7 @@
<%= render 'notifications_mailer/shared/hello', recipient: @recipient %>
- <%= t('.body.cancelled_training', {
+ <%= t('.body.cancelled_training', **{
TRAINING: @attached_object.reservation.reservable.name,
DATE: I18n.l(@attached_object.start_at.to_date),
START: I18n.l(@attached_object.start_at, format: :hour_minute),
diff --git a/app/views/notifications_mailer/notify_member_training_invalidated.html.erb b/app/views/notifications_mailer/notify_member_training_invalidated.html.erb
index fd6ae0e5f..0390c504a 100644
--- a/app/views/notifications_mailer/notify_member_training_invalidated.html.erb
+++ b/app/views/notifications_mailer/notify_member_training_invalidated.html.erb
@@ -1,6 +1,6 @@
<%= render 'notifications_mailer/shared/hello', recipient: @recipient %>
-<%= t('.body.training_invalidated_html', {
+<%= t('.body.training_invalidated_html', **{
TRAINING: @attached_object.name,
MACHINES: @attached_object.machines.map(&:name).join(', '),
DATE: I18n.l((DateTime.current - @attached_object.authorization_period.months).to_date),
From 5bc34971d124b8de953bc4cf0ba56bc5e647876a Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Tue, 25 Apr 2023 15:11:46 +0200
Subject: [PATCH 08/10] (bug) unable to show calendar
---
CHANGELOG.md | 1 +
app/frontend/src/javascript/controllers/admin/calendar.js | 4 ++--
app/frontend/src/javascript/controllers/admin/settings.js | 4 ++--
app/frontend/src/javascript/controllers/calendar.js | 4 ++--
app/frontend/src/javascript/controllers/machines.js.erb | 4 ++--
app/frontend/src/javascript/controllers/spaces.js.erb | 4 ++--
app/frontend/src/javascript/controllers/trainings.js.erb | 4 ++--
7 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dd5626219..c0075074b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
- Fix a bug: notification is broken when delete a project
- Fix a bug: broken notifications email
+- Fix a bug: unable to show calendar
- [TODO DEPLOY] `rails fablab:maintenance:clean_abuse_notifications`
## v6.0.3 2023 April 12
diff --git a/app/frontend/src/javascript/controllers/admin/calendar.js b/app/frontend/src/javascript/controllers/admin/calendar.js
index cb290a790..bf3363d68 100644
--- a/app/frontend/src/javascript/controllers/admin/calendar.js
+++ b/app/frontend/src/javascript/controllers/admin/calendar.js
@@ -69,8 +69,8 @@ Application.Controllers.controller('AdminCalendarController', ['$scope', '$state
snapDuration: BOOKING_SNAP,
selectable: true,
selectHelper: true,
- minTime: moment.duration(moment(bookingWindowStart.setting.value).format('HH:mm:ss')),
- maxTime: moment.duration(moment(bookingWindowEnd.setting.value).format('HH:mm:ss')),
+ minTime: moment.duration(moment.utc(bookingWindowStart.setting.value).format('HH:mm:ss')),
+ maxTime: moment.duration(moment.utc(bookingWindowEnd.setting.value).format('HH:mm:ss')),
select (start, end, jsEvent, view) {
return calendarSelectCb(start, end, jsEvent, view);
},
diff --git a/app/frontend/src/javascript/controllers/admin/settings.js b/app/frontend/src/javascript/controllers/admin/settings.js
index e43bca1dc..91ffa6818 100644
--- a/app/frontend/src/javascript/controllers/admin/settings.js
+++ b/app/frontend/src/javascript/controllers/admin/settings.js
@@ -71,8 +71,8 @@ Application.Controllers.controller('SettingsController', ['$scope', '$rootScope'
$scope.subscriptionExplicationsAlert = { name: 'subscription_explications_alert', value: settingsPromise.subscription_explications_alert };
$scope.eventExplicationsAlert = { name: 'event_explications_alert', value: settingsPromise.event_explications_alert };
$scope.spaceExplicationsAlert = { name: 'space_explications_alert', value: settingsPromise.space_explications_alert };
- $scope.windowStart = { name: 'booking_window_start', value: settingsPromise.booking_window_start };
- $scope.windowEnd = { name: 'booking_window_end', value: settingsPromise.booking_window_end };
+ $scope.windowStart = { name: 'booking_window_start', value: moment.utc(settingsPromise.booking_window_start).format('YYYY-MM-DD HH:mm:ss') };
+ $scope.windowEnd = { name: 'booking_window_end', value: moment.utc(settingsPromise.booking_window_end).format('YYYY-MM-DD HH:mm:ss') };
$scope.mainColorSetting = { name: 'main_color', value: settingsPromise.main_color };
$scope.secondColorSetting = { name: 'secondary_color', value: settingsPromise.secondary_color };
$scope.nameGenre = { name: 'name_genre', value: settingsPromise.name_genre };
diff --git a/app/frontend/src/javascript/controllers/calendar.js b/app/frontend/src/javascript/controllers/calendar.js
index a4f4ac162..e862a670d 100644
--- a/app/frontend/src/javascript/controllers/calendar.js
+++ b/app/frontend/src/javascript/controllers/calendar.js
@@ -204,8 +204,8 @@ Application.Controllers.controller('CalendarController', ['$scope', '$state', '$
center: 'title',
right: ''
},
- minTime: moment.duration(moment(bookingWindowStart.setting.value).format('HH:mm:ss')),
- maxTime: moment.duration(moment(bookingWindowEnd.setting.value).format('HH:mm:ss')),
+ minTime: moment.duration(moment.utc(bookingWindowStart.setting.value).format('HH:mm:ss')),
+ maxTime: moment.duration(moment.utc(bookingWindowEnd.setting.value).format('HH:mm:ss')),
defaultView: window.innerWidth <= 480 ? 'agendaDay' : 'agendaWeek',
eventClick (event, jsEvent, view) {
return calendarEventClickCb(event, jsEvent, view);
diff --git a/app/frontend/src/javascript/controllers/machines.js.erb b/app/frontend/src/javascript/controllers/machines.js.erb
index c6fa655c9..b62e273f3 100644
--- a/app/frontend/src/javascript/controllers/machines.js.erb
+++ b/app/frontend/src/javascript/controllers/machines.js.erb
@@ -447,8 +447,8 @@ Application.Controllers.controller('ReserveMachineController', ['$scope', '$tran
// fullCalendar (v2) configuration
$scope.calendarConfig = CalendarConfig({
- minTime: moment.duration(moment(settingsPromise.booking_window_start).format('HH:mm:ss')),
- maxTime: moment.duration(moment(settingsPromise.booking_window_end).format('HH:mm:ss')),
+ minTime: moment.duration(moment.utc(settingsPromise.booking_window_start).format('HH:mm:ss')),
+ maxTime: moment.duration(moment.utc(settingsPromise.booking_window_end).format('HH:mm:ss')),
eventClick (event, jsEvent, view) {
return calendarEventClickCb(event, jsEvent, view);
},
diff --git a/app/frontend/src/javascript/controllers/spaces.js.erb b/app/frontend/src/javascript/controllers/spaces.js.erb
index 13899c7c2..fc9586d69 100644
--- a/app/frontend/src/javascript/controllers/spaces.js.erb
+++ b/app/frontend/src/javascript/controllers/spaces.js.erb
@@ -385,8 +385,8 @@ Application.Controllers.controller('ReserveSpaceController', ['$scope', '$transi
// fullCalendar (v2) configuration
$scope.calendarConfig = CalendarConfig({
- minTime: moment.duration(moment(settingsPromise.booking_window_start).format('HH:mm:ss')),
- maxTime: moment.duration(moment(settingsPromise.booking_window_end).format('HH:mm:ss')),
+ minTime: moment.duration(moment.utc(settingsPromise.booking_window_start).format('HH:mm:ss')),
+ maxTime: moment.duration(moment.utc(settingsPromise.booking_window_end).format('HH:mm:ss')),
eventClick (event, jsEvent, view) {
return calendarEventClickCb(event, jsEvent, view);
},
diff --git a/app/frontend/src/javascript/controllers/trainings.js.erb b/app/frontend/src/javascript/controllers/trainings.js.erb
index 929e56148..f051845f5 100644
--- a/app/frontend/src/javascript/controllers/trainings.js.erb
+++ b/app/frontend/src/javascript/controllers/trainings.js.erb
@@ -155,8 +155,8 @@ Application.Controllers.controller('ReserveTrainingController', ['$scope', '$tra
// fullCalendar (v2) configuration
$scope.calendarConfig = CalendarConfig({
- minTime: moment.duration(moment(settingsPromise.booking_window_start).format('HH:mm:ss')),
- maxTime: moment.duration(moment(settingsPromise.booking_window_end).format('HH:mm:ss')),
+ minTime: moment.duration(moment.utc(settingsPromise.booking_window_start).format('HH:mm:ss')),
+ maxTime: moment.duration(moment.utc(settingsPromise.booking_window_end).format('HH:mm:ss')),
eventClick (event, jsEvent, view) {
return calendarEventClickCb(event, jsEvent, view);
},
From b5f4d7a541d2f1b0914666f407511e294b2e5ac4 Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Tue, 25 Apr 2023 15:29:22 +0200
Subject: [PATCH 09/10] (i18n) update locales
---
CHANGELOG.md | 1 +
config/locales/app.admin.it.yml | 14 +++++++-------
config/locales/app.public.it.yml | 8 ++++----
config/locales/app.shared.it.yml | 2 +-
4 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c0075074b..eb44da00b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,7 @@
- Fix a bug: notification is broken when delete a project
- Fix a bug: broken notifications email
- Fix a bug: unable to show calendar
+- Update translations from Crowdin
- [TODO DEPLOY] `rails fablab:maintenance:clean_abuse_notifications`
## v6.0.3 2023 April 12
diff --git a/config/locales/app.admin.it.yml b/config/locales/app.admin.it.yml
index 6398a72a2..4a62c96b2 100644
--- a/config/locales/app.admin.it.yml
+++ b/config/locales/app.admin.it.yml
@@ -112,7 +112,7 @@ it:
create_success: "Lo spazio è stato creato correttamente"
update_success: "Lo spazio è stato aggiornato correttamente"
event_form:
- ACTION_title: "{ACTION, select, create{Nuovo} other{Aggiorna l'}} evento"
+ ACTION_title: "{ACTION, select, create{Nuovo} other{Aggiorna}} evento"
title: "Titolo"
matching_visual: "Corrispondenza illustazione"
description: "Descrizione"
@@ -152,7 +152,7 @@ it:
every_month: "Ogni mese"
every_year: "Ogni anno"
plan_form:
- ACTION_title: "{ACTION, select, create{Nuovo} other{Aggiorna l'}}evento"
+ ACTION_title: "{ACTION, select, create{Nuovo} other{Aggiorna}}evento"
tab_settings: "Impostazioni"
tab_usage_limits: "Limiti di utilizzo"
description: "Descrizione"
@@ -285,7 +285,7 @@ it:
#manage the trainings & machines slots
calendar:
calendar_management: "Gestione calendario"
- trainings: "Certificazioni"
+ trainings: "Abilitazioni"
machines: "Macchine"
spaces: "Spazi"
events: "Eventi"
@@ -416,7 +416,7 @@ it:
themes: "Temi"
add_a_new_theme: "Aggiungi un nuovo tema"
licences: "Licenze"
- statuses: "Statuto"
+ statuses: "Status"
description: "Descrizione"
add_a_new_licence: "Aggiungere una nuova licenza"
manage_abuses: "Gestisci i report"
@@ -1783,7 +1783,7 @@ it:
title: "Titolo"
fablab_title: "Titolo del FabLab"
title_concordance: "Corrispondenza del titolo"
- male: "Machio."
+ male: "Maschio."
female: "Femmina."
neutral: "Neutrale."
eg: "es:"
@@ -1804,7 +1804,7 @@ it:
public_registrations_allowed: "Registrazioni pubbliche consentite"
help: "Aiuto"
feature_tour: "Tour delle funzionalità"
- feature_tour_info_html: "Quando un amministratore o un manager è connesso, un tour di funzionalità verrà attivato la prima volta che visita ogni sezione dell'applicazione. È possibile modificare questo comportamento in uno dei seguenti valori:
- « Una volta » per mantenere il comportamento predefinito.
- « Per sessione » per visualizzare i tour ogni volta che riapri l'applicazione.
- « trigger manuale» per impedire la visualizzazione automatica dei tour. Sarà comunque possibile attivarli premendo il tasto F1 o cliccando su « Aiuto » nel menu dell'utente.
"
+ feature_tour_info_html: "Quando un amministratore o un manager è connesso, un tour di funzionalità verrà attivato la prima volta che visita ogni sezione dell'applicazione. È possibile modificare questo comportamento in uno dei seguenti valori:
- « Una volta » per mantenere il comportamento predefinito.
- « Per sessione » per visualizzare i tour ogni volta che riapri l'applicazione.
- « Trigger manuale» per impedire la visualizzazione automatica dei tour. Sarà comunque possibile attivarli premendo il tasto F1 o cliccando su « Aiuto » nel menu dell'utente.
"
feature_tour_display_mode: "Modalità visualizzazione tour funzionalità"
display_mode:
once: "Una volta"
@@ -2373,7 +2373,7 @@ it:
filter_clear: "Cancella tutto"
filter_apply: "Applica"
filter_ref: "Per riferimento"
- filter_status: "Per stato"
+ filter_status: "Per status"
filter_client: "Per cliente"
filter_period: "Per periodo"
filter_period_from: "Da"
diff --git a/config/locales/app.public.it.yml b/config/locales/app.public.it.yml
index 5c6a0c76f..963c6a577 100644
--- a/config/locales/app.public.it.yml
+++ b/config/locales/app.public.it.yml
@@ -185,12 +185,12 @@ it:
rough_draft: "Bozza preliminare"
status_filter:
all_statuses: "Tutti gli stati"
- select_status: "Seleziona uno stato"
+ select_status: "Seleziona uno status"
#details of a projet
projects_show:
rough_draft: "Bozza"
project_description: "Descrizione del progetto"
- by_name: "Per {NAME}"
+ by_name: "di {NAME}"
step_N: "Fase {INDEX}"
share_on_facebook: "Condividi su Facebook"
share_on_twitter: "Condividi su Twitter"
@@ -237,7 +237,7 @@ it:
all_machines: "Tutte le macchine"
machine_card:
book: "Prenota"
- consult: "Guarda"
+ consult: "Vedi"
#details of a machine
machines_show:
book_this_machine: "Modifica questa macchina"
@@ -549,7 +549,7 @@ it:
content: "Le macchine sono gli utensili a disposizione degli utenti da prenotare."
view:
title: "Visualizza"
- content: "Per modificare o eliminare una macchina, prima clicca qui. Non sarai in grado di eliminare una macchina che è già stata associata a uno slot, ma potrai disattivarla."
+ content: "Per modificare o eliminare una macchina, clicca qui. Non sarai in grado di eliminare una macchina che è già stata associata a uno slot di disponibilità, ma potrai disattivarla."
reserve:
title: "Prenota"
content: "Clicca qui per accedere a un calendario che mostra slot liberi. Questo ti permetterà di prenotare questa macchina per un utente e di gestire le prenotazioni esistenti."
diff --git a/config/locales/app.shared.it.yml b/config/locales/app.shared.it.yml
index 9adae1b81..f136a1376 100644
--- a/config/locales/app.shared.it.yml
+++ b/config/locales/app.shared.it.yml
@@ -4,7 +4,7 @@ it:
#translations of common buttons
buttons:
confirm_changes: "Conferma le modifiche"
- consult: "Guarda"
+ consult: "Vedi"
edit: "Modifica"
change: "Modifica"
delete: "Elimina"
From fe7394d9a84119e705f94638e81586ab59f7e0af Mon Sep 17 00:00:00 2001
From: Du Peng
Date: Tue, 25 Apr 2023 16:00:18 +0200
Subject: [PATCH 10/10] Version 6.0.4
---
CHANGELOG.md | 2 ++
package.json | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index eb44da00b..cccb06abf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,7 @@
# Changelog Fab-manager
+## v6.0.4 2023 April 25
+
- Fix a bug: notification is broken when delete a project
- Fix a bug: broken notifications email
- Fix a bug: unable to show calendar
diff --git a/package.json b/package.json
index 3b042d3a8..82bfc73d6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "fab-manager",
- "version": "6.0.3",
+ "version": "6.0.4",
"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",