mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-26 20:54:21 +01:00
Merge branch 'dev' for release 6.0.9
This commit is contained in:
commit
8003961e22
@ -1,5 +1,14 @@
|
||||
# Changelog Fab-manager
|
||||
|
||||
## v6.0.9 2023 July 07
|
||||
|
||||
- Fix a bug: unable to show project step image in markdown file
|
||||
- Fix a bug: unable to update Store Order sub type in statistics
|
||||
- Fix a bug: unable to create plan with plan limitation
|
||||
- Ability to show all availabilities in calender for admin
|
||||
- Improved performance when marking all notifications as read
|
||||
- [TODO DEPLOY] `rails fablab:maintenance:regenerate_statistics[2014,1]`
|
||||
|
||||
## v6.0.8 2023 July 03
|
||||
|
||||
- Improved projects list filter
|
||||
|
@ -529,6 +529,7 @@ GEM
|
||||
|
||||
PLATFORMS
|
||||
x86_64-darwin-20
|
||||
x86_64-darwin-21
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
|
@ -65,7 +65,8 @@ class API::NotificationsController < API::APIController
|
||||
end
|
||||
|
||||
def update_all
|
||||
current_user.notifications.where(is_read: false).find_each(&:mark_as_read)
|
||||
current_user.notifications.where(is_read: false)
|
||||
.update_all(is_read: true, updated_at: Time.current) # rubocop:disable Rails/SkipsModelValidations
|
||||
head :no_content
|
||||
end
|
||||
|
||||
|
@ -322,8 +322,8 @@ Application.Controllers.controller('ProjectsController', ['$scope', '$state', 'P
|
||||
$location.$$search.member_id = '';
|
||||
}
|
||||
|
||||
fromDate = $location.$$search.from_date ? new Date($location.$$search.from_date) : undefined;
|
||||
toDate = $location.$$search.to_date ? new Date($location.$$search.to_date) : undefined;
|
||||
const fromDate = $location.$$search.from_date ? new Date($location.$$search.from_date) : undefined;
|
||||
const toDate = $location.$$search.to_date ? new Date($location.$$search.to_date) : undefined;
|
||||
|
||||
// default search parameters
|
||||
$scope.search = {
|
||||
|
@ -16,6 +16,7 @@
|
||||
@include header();
|
||||
padding-top: 0;
|
||||
}
|
||||
label { font-weight: 400; }
|
||||
.switch {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
@ -8,7 +8,7 @@ class PlanLimitation < ApplicationRecord
|
||||
belongs_to :machine, foreign_key: 'limitable_id', inverse_of: :plan_limitations
|
||||
belongs_to :machine_category, foreign_key: 'limitable_id', inverse_of: :plan_limitations
|
||||
|
||||
validates :limitable_id, :limitable_type, :limit, :plan_id, presence: true
|
||||
validates :limitable_id, :limitable_type, :limit, presence: true
|
||||
validates :limitable_id, uniqueness: { scope: %i[limitable_type plan_id] }
|
||||
|
||||
# @return [Array<Machine,Event,Space,Training>]
|
||||
|
@ -22,7 +22,7 @@ class Availabilities::VisibilityService
|
||||
# @return [Array<ActiveSupport::TimeWithZone,Date,Time>] as: [start,end]
|
||||
def visibility(user, available_type, range_start, range_end)
|
||||
if user&.privileged?
|
||||
window_start = [range_start, 1.month.ago].max
|
||||
window_start = range_start
|
||||
window_end = range_end
|
||||
else
|
||||
end_at = @maximum_visibility[:other]
|
||||
|
@ -45,7 +45,13 @@ class Orders::OrderService
|
||||
|
||||
# update in elasticsearch (statistics)
|
||||
stat_order = Stats::Order.search(query: { term: { orderId: order.id } })
|
||||
stat_order.map { |s| s.update(state: state) }
|
||||
sub_type = if state.in?(%w[paid in_progress ready delivered])
|
||||
'paid-processed'
|
||||
elsif state.in?(%w[payment_failed refunded canceled])
|
||||
'aborted'
|
||||
end
|
||||
|
||||
stat_order.map { |s| s.update(subType: sub_type, state: state) } if sub_type.present?
|
||||
|
||||
order
|
||||
end
|
||||
|
@ -24,7 +24,7 @@ class ProjectToMarkdown
|
||||
md << ReverseMarkdown.convert(project_step.description.to_s)
|
||||
|
||||
project_step.project_step_images.each_with_index do |image, i|
|
||||
md << "})"
|
||||
md << "})"
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -85,4 +85,4 @@ class ProjectToMarkdown
|
||||
def full_url(path)
|
||||
"#{Rails.application.routes.url_helpers.root_url[...-1]}#{path}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -415,8 +415,8 @@ fr:
|
||||
add_a_material: "Ajouter un matériau"
|
||||
themes: "Thématiques"
|
||||
add_a_new_theme: "Ajouter une nouvelle thématique"
|
||||
project_categories: "Categories"
|
||||
add_a_new_project_category: "Add a new category"
|
||||
project_categories: "Catégories"
|
||||
add_a_new_project_category: "Ajouter une nouvelle catégorie"
|
||||
licences: "Licences"
|
||||
statuses: "Statuts"
|
||||
description: "Description"
|
||||
@ -447,10 +447,10 @@ fr:
|
||||
open_lab_app_secret: "Secret"
|
||||
openlab_default_info_html: "Dans la galerie de projets, les visiteurs peuvent choisir entre deux vues : tous les projets de l'ensemble du réseau OpenLab, ou uniquement les projets documentés dans votre Fab Lab.<br/>Ici, vous pouvez choisir quelle vue est affichée par défaut."
|
||||
default_to_openlab: "Afficher OpenLab par défaut"
|
||||
filters: Projects list filters
|
||||
project_categories: Categories
|
||||
filters: Affichage des filtres
|
||||
project_categories: Personnalisation du filtre Catégories
|
||||
project_categories:
|
||||
name: "Name"
|
||||
name: "Nom"
|
||||
projects_setting:
|
||||
add: "Ajouter"
|
||||
actions_controls: "Actions"
|
||||
@ -1779,10 +1779,10 @@ fr:
|
||||
extended_prices_in_same_day: "Prix étendus le même jour"
|
||||
public_registrations: "Inscriptions publiques"
|
||||
show_username_in_admin_list: "Afficher le nom d'utilisateur dans la liste"
|
||||
projects_list_member_filter_presence: "Presence of member filter on projects list"
|
||||
projects_list_date_filters_presence: "Presence of date filters on projects list"
|
||||
project_categories_filter_placeholder: "Placeholder for categories filter in project gallery"
|
||||
project_categories_wording: "Wording used to replace \"Categories\" on public pages"
|
||||
projects_list_member_filter_presence: "Permettre la recherche de projets par membre"
|
||||
projects_list_date_filters_presence: "Permettre la recherche de projets par dates"
|
||||
project_categories_filter_placeholder: "Dans la galerie de projets, renommer le filtre \"Toutes les catégories\""
|
||||
project_categories_wording: "Dans la fiche projet, renommer l'intitulé de l'encart Catégories"
|
||||
overlapping_options:
|
||||
training_reservations: "Formations"
|
||||
machine_reservations: "Machines"
|
||||
|
@ -167,7 +167,7 @@ fr:
|
||||
full_price: "Plein tarif : "
|
||||
#projects gallery
|
||||
projects_list:
|
||||
filter: Filter
|
||||
filter: Filtre
|
||||
the_fablab_projects: "Les projets"
|
||||
add_a_project: "Ajouter un projet"
|
||||
network_search: "Réseau Fab-Manager"
|
||||
@ -184,10 +184,10 @@ fr:
|
||||
all_materials: "Tous les matériaux"
|
||||
load_next_projects: "Charger les projets suivants"
|
||||
rough_draft: "Brouillon"
|
||||
filter_by_member: "Filter by member"
|
||||
created_from: Created from
|
||||
created_to: Created to
|
||||
download_archive: Download
|
||||
filter_by_member: "Filtrer par membre"
|
||||
created_from: Créés depuis le
|
||||
created_to: Créés jusqu'au
|
||||
download_archive: Télécharger
|
||||
status_filter:
|
||||
all_statuses: "Tous les statuts"
|
||||
select_status: "Sélectionnez un statut"
|
||||
@ -221,7 +221,7 @@ fr:
|
||||
report: "Signaler"
|
||||
do_you_really_want_to_delete_this_project: "Êtes-vous sur de vouloir supprimer ce projet ?"
|
||||
status: "Statut"
|
||||
markdown_file: "Markdown file"
|
||||
markdown_file: "Fichier Markdown"
|
||||
#list of machines
|
||||
machines_list:
|
||||
the_fablab_s_machines: "Les machines"
|
||||
|
@ -131,7 +131,7 @@ fr:
|
||||
illustration: "Illustration"
|
||||
add_an_illustration: "Ajouter un visuel"
|
||||
CAD_file: "Fichier CAO"
|
||||
CAD_files: "CAD files"
|
||||
CAD_files: "Fichiers CAD"
|
||||
allowed_extensions: "Extensions autorisées :"
|
||||
add_a_new_file: "Ajouter un nouveau fichier"
|
||||
description: "Description"
|
||||
@ -151,7 +151,7 @@ fr:
|
||||
employed_materials: "Matériaux utilisés"
|
||||
employed_machines: "Machines utilisées"
|
||||
collaborators: "Les collaborateurs"
|
||||
author: Author
|
||||
author: Auteur
|
||||
creative_commons_licences: "Licences Creative Commons"
|
||||
licence: "Licence"
|
||||
themes: "Thématiques"
|
||||
|
@ -697,10 +697,10 @@ fr:
|
||||
trainings_authorization_validity_duration: "Durée de la période de validité des formations"
|
||||
trainings_invalidation_rule: "Invalidation automatique des formations"
|
||||
trainings_invalidation_rule_period: "Période de grâce avant d'invalider une formation"
|
||||
projects_list_member_filter_presence: "Presence of member filter on projects list"
|
||||
projects_list_date_filters_presence: "Presence of dates filter on projects list"
|
||||
project_categories_filter_placeholder: "Placeholder for categories filter in project gallery"
|
||||
project_categories_wording: "Wording used to replace \"Categories\" on public pages"
|
||||
projects_list_member_filter_presence: "Permettre la recherche de projets par membre"
|
||||
projects_list_date_filters_presence: "Filtre de présence de dates sur la liste des projets"
|
||||
project_categories_filter_placeholder: "Dans la galerie de projets, renommer le filtre \"Toutes les catégories\""
|
||||
project_categories_wording: "Dans la fiche projet, renommer l'intitulé de l'encart Catégories"
|
||||
#statuses of projects
|
||||
statuses:
|
||||
new: "Nouveau"
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "fab-manager",
|
||||
"version": "6.0.8",
|
||||
"version": "6.0.9",
|
||||
"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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user