1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-22 11:52:21 +01:00

(merge) merge dev

This commit is contained in:
Du Peng 2023-07-24 18:15:22 +02:00
commit a6947f61f7
38 changed files with 120 additions and 70 deletions

View File

@ -1,8 +1,16 @@
# Changelog Fab-manager
- adds reservation context feature (for machine, training, space)
- Fix a bug: event reserved places compute error
- [TODO DEPLOY] `rails fablab:es:build_stats`
- [TODO DEPLOY] `rails fablab:maintenance:regenerate_statistics[2014,1]`
- [TODO DEPLOY] `rails fablab:setup:build_places_cache`
## v6.0.11 2023 July 21
- Fix a bug: incorrect date range in statistics
- Fix a bug: hide project categories filter if there is no project categories
- Improvement : dialog confirm to remove a project category
## v6.0.10 2023 July 13

View File

@ -7,13 +7,14 @@ import { useTranslation } from 'react-i18next';
interface GenderInputProps<TFieldValues> {
register: UseFormRegister<TFieldValues>,
disabled?: boolean|((id: string) => boolean),
required?: boolean
required?: boolean,
tooltip?: string
}
/**
* Input component to set the gender for the user
*/
export const GenderInput = <TFieldValues extends FieldValues>({ register, disabled = false, required }: GenderInputProps<TFieldValues>) => {
export const GenderInput = <TFieldValues extends FieldValues>({ register, disabled = false, required, tooltip }: GenderInputProps<TFieldValues>) => {
const { t } = useTranslation('shared');
const [isDisabled, setIsDisabled] = useState<boolean>(false);
@ -46,6 +47,10 @@ export const GenderInput = <TFieldValues extends FieldValues>({ register, disabl
disabled={isDisabled}
{...register('statistic_profile_attributes.gender' as FieldPath<TFieldValues>)} />
</label>
{tooltip && <div className="fab-tooltip">
<span className="trigger"><i className="fa fa-question-circle" /></span>
<div className="content">{tooltip}</div>
</div>}
</fieldset>
);
};

View File

@ -184,7 +184,7 @@ export const UserProfileForm: React.FC<UserProfileFormProps> = ({ action, size,
<div className="fields-group">
<div className="personnal-data">
<h4>{t('app.shared.user_profile_form.personal_data')}</h4>
<GenderInput register={register} disabled={isDisabled} required />
<GenderInput register={register} disabled={isDisabled} required tooltip={t('app.shared.user_profile_form.used_for_statistics')} />
<div className="names">
<FormInput id="profile_attributes.last_name"
register={register}
@ -352,8 +352,7 @@ export const UserProfileForm: React.FC<UserProfileFormProps> = ({ action, size,
<FormSwitch control={control}
id="is_allow_newsletter"
disabled={isDisabled}
label={t('app.shared.user_profile_form.allow_newsletter')}
tooltip={t('app.shared.user_profile_form.allow_newsletter_help')} />
label={t('app.shared.user_profile_form.allow_newsletter')} />
</div>
{showGroupInput && <div className="group">
<FormSelect options={groups}

View File

@ -12,8 +12,8 @@
*/
'use strict';
Application.Controllers.controller('AdminProjectsController', ['$scope', '$state', 'Component', 'Licence', 'Theme', 'ProjectCategory', 'componentsPromise', 'licencesPromise', 'themesPromise', 'projectCategoriesPromise', '_t', 'Member', 'uiTourService', 'settingsPromise', 'growl',
function ($scope, $state, Component, Licence, Theme, ProjectCategory, componentsPromise, licencesPromise, themesPromise, projectCategoriesPromise, _t, Member, uiTourService, settingsPromise, growl) {
Application.Controllers.controller('AdminProjectsController', ['$scope', '$state', 'Component', 'Licence', 'Theme', 'ProjectCategory', 'componentsPromise', 'licencesPromise', 'themesPromise', 'projectCategoriesPromise', '_t', 'Member', 'uiTourService', 'settingsPromise', 'growl', 'dialogs',
function ($scope, $state, Component, Licence, Theme, ProjectCategory, componentsPromise, licencesPromise, themesPromise, projectCategoriesPromise, _t, Member, uiTourService, settingsPromise, growl, dialogs) {
// Materials list (plastic, wood ...)
$scope.components = componentsPromise;
@ -136,8 +136,20 @@ Application.Controllers.controller('AdminProjectsController', ['$scope', '$state
* @param index {number} project category index in the $scope.projectCategories array
*/
$scope.removeProjectCategory = function (index) {
ProjectCategory.delete($scope.projectCategories[index]);
return $scope.projectCategories.splice(index, 1);
return dialogs.confirm({
resolve: {
object () {
return {
title: _t('app.admin.project_categories.delete_dialog_title'),
msg: _t('app.admin.project_categories.delete_dialog_info')
};
}
}
}
, function () { // cancel confirmed
ProjectCategory.delete($scope.projectCategories[index]);
$scope.projectCategories.splice(index, 1);
});
};
/**

View File

@ -506,8 +506,8 @@ Application.Controllers.controller('StatisticsController', ['$scope', '$state',
scroll: ES_SCROLL_TIME + 'm',
'stat-type': type,
'custom-query': custom ? JSON.stringify(Object.assign({ exclude: custom.exclude }, buildElasticCustomCriterion(custom))) : '',
'start-date': moment($scope.datePickerStart.selected).format(),
'end-date': moment($scope.datePickerEnd.selected).format(),
'start-date': moment($scope.datePickerStart.selected).format('YYYY-MM-DD'),
'end-date': moment($scope.datePickerEnd.selected).format('YYYY-MM-DD'),
body: buildElasticDataQuery(type, custom, $scope.agePicker.start, $scope.agePicker.end, moment($scope.datePickerStart.selected), moment($scope.datePickerEnd.selected), $scope.sorting)
}
, function (error, response) {
@ -541,8 +541,8 @@ Application.Controllers.controller('StatisticsController', ['$scope', '$state',
{
range: {
date: {
gte: intervalBegin.format(),
lte: intervalEnd.format()
gte: intervalBegin.format('YYYY-MM-DD'),
lte: intervalEnd.format('YYYY-MM-DD')
}
}
}
@ -780,8 +780,8 @@ Application.Controllers.controller('ExportStatisticsController', ['$scope', '$ui
{
range: {
date: {
gte: moment($scope.dates.start).format(),
lte: moment($scope.dates.end).format()
gte: moment($scope.dates.start).format('YYYY-MM-DD'),
lte: moment($scope.dates.end).format('YYYY-MM-DD')
}
}
}

View File

@ -128,7 +128,7 @@ Application.Controllers.controller('ApplicationController', ['$rootScope', '$sco
// default user's parameters
$scope.user = {
is_allow_contact: true,
is_allow_contact: false,
is_allow_newsletter: false,
// reCaptcha response, received from Google (through AJAX) and sent to server for validation
recaptcha: undefined,

View File

@ -1,6 +1,8 @@
.fab-tooltip {
position: relative;
display: inline-block;
cursor: help;
z-index: 10;
.trigger i { display: block; }
.content {

View File

@ -27,6 +27,7 @@
margin: 0;
}
}
.trainings { max-width: none; }
}
.main-actions {

View File

@ -10,12 +10,11 @@
<tbody>
<tr ng-repeat="projectCategory in projectCategories">
<td>
<span editable-text="projectCategory.name" e-name="name" e-form="rowform" e-required>
{{ projectCategory.name }}
</span>
<span editable-text="projectCategory.name" e-name="name" e-form="rowform" e-required>
{{ projectCategory.name }}
</span>
</td>
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveProjectCategory($data, projectCategory.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == projectCategory">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<i class="fa fa-check"></i>

View File

@ -13,7 +13,7 @@
</div>
</section>
<section class="machines"
<section class="machines p-h-lg"
ui-tour="machines"
ui-tour-backdrop="true"
ui-tour-template-url="'/shared/tour-step-template.html'"

View File

@ -61,7 +61,7 @@
<option value="" translate>{{ 'app.public.projects_list.all_themes' }}</option>
</select>
<select ng-model="search.project_category_id" ng-change="setUrlQueryParams(search) && triggerSearch()" class="form-control" ng-options="pc.id as pc.name for pc in projectCategories">
<select ng-show="projectCategories.length" ng-model="search.project_category_id" ng-change="setUrlQueryParams(search) && triggerSearch()" class="form-control" ng-options="pc.id as pc.name for pc in projectCategories">
<option value="" translate>{{ projectCategoriesFilterPlaceholder }}</option>
</select>

View File

@ -23,7 +23,11 @@
ng-model="user.statistic_profile_attributes.gender"
value="false"/> {{ 'app.public.common.woman' | translate }}
</label>
<span class="exponent m-l-xs help-cursor" title="{{ 'app.public.common.used_for_statistics' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<div class="fab-tooltip">
<span class="trigger"><i class="fa fa-question-circle"></i></span>
<div class="content" translate="">{{ 'app.public.common.used_for_statistics' }}</div>
</div>
<span class="exponent m-l-xs"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="help-block" ng-show="signupForm.gender.$dirty && signupForm.gender.$error.required" translate>{{ 'app.public.common.gender_is_required'}}</span>
</div>
</div>
@ -37,7 +41,7 @@
class="form-control"
placeholder="{{ 'app.public.common.your_first_name' | translate }}"
required>
<span class="exponent m-l-xs help-cursor" title="{{ 'app.public.common.used_for_invoicing' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="exponent m-l-xs"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="help-block" ng-show="signupForm.first_name.$dirty && signupForm.first_name.$error.required" translate>{{ 'app.public.common.first_name_is_required' }}</span>
</div>
<div class="m-b visible-xs"></div>
@ -48,7 +52,7 @@
class="form-control"
placeholder="{{ 'app.public.common.your_surname' | translate }}"
required>
<span class="exponent m-l-xs help-cursor" title="{{ 'app.public.common.used_for_invoicing' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="exponent m-l-xs"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="help-block" ng-show="signupForm.last_name.$dirty && signupForm.last_name.$error.required" translate>{{ 'app.public.common.surname_is_required' }}</span>
</div>
</div>
@ -64,7 +68,7 @@
placeholder="{{ 'app.public.common.your_pseudonym' | translate }}"
required>
</div>
<span class="exponent help-cursor" title="{{ 'app.public.common.used_for_profile' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="exponent"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="help-block" ng-show="signupForm.username.$dirty && signupForm.username.$error.required" translate>{{ 'app.public.common.pseudonym_is_required' }}</span>
</div>
</div>
@ -81,7 +85,7 @@
placeholder="{{ 'app.public.common.your_email_address' | translate }}"
required>
</div>
<span class="exponent help-cursor" title="{{ 'app.public.common.used_for_invoicing' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="exponent"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="help-block" ng-show="signupForm.email.$dirty && signupForm.email.$error.required" translate>{{ 'app.public.common.email_is_required' }}</span>
</div>
</div>
@ -130,6 +134,10 @@
ng-model="user.organization"
value="false"/>
<label for="organization" translate>{{ 'app.public.common.i_am_an_organization' }}</label>
<div class="fab-tooltip m-l-xs">
<span class="trigger"><i class="fa fa-question-circle"></i></span>
<div class="content" translate="">{{ 'app.shared.user_profile_form.declare_organization_help' }}</div>
</div>
</div>
</div>
@ -144,7 +152,7 @@
placeholder="{{ 'app.public.common.name_of_your_organization' | translate }}"
ng-required="user.organization">
</div>
<span class="exponent help-cursor" title="{{ 'app.public.common.used_for_invoicing' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="exponent"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="help-block" ng-show="signupForm.organization_name.$dirty && signupForm.organization_name.$error.required" translate>{{ 'app.public.common.organization_name_is_required' }}</span>
</div>
</div>
@ -160,7 +168,7 @@
placeholder="{{ 'app.public.common.address_of_your_organization' | translate }}"
ng-required="user.organization">
</div>
<span class="exponent help-cursor" title="{{ 'app.public.common.used_for_invoicing' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="exponent"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="help-block" ng-show="signupForm.organization_address.$dirty && signupForm.organization_address.$error.required" translate>{{ 'app.public.common.organization_address_is_required' }}</span>
</div>
</div>
@ -177,7 +185,7 @@
placeholder="{{profileCustomField.label}}"
ng-required="profileCustomField.required">
</div>
<span ng-show="profileCustomField.required" class="exponent help-cursor" title="{{ 'app.public.common.used_for_invoicing' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span ng-show="profileCustomField.required" class="exponent"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="help-block" ng-show="signupForm.user_profile_custom_fields{{i}}.$dirty && signupForm.user_profile_custom_fields{{i}}.$error.required" translate translate-values="{FEILD: profileCustomField.label}">{{ 'app.public.common.profile_custom_field_is_required' }}</span>
</div>
</div>
@ -189,7 +197,7 @@
<select ng-model="user.group_id" class="form-control" name="group_id" ng-options="g.id as g.name for g in enabledGroups" required>
<option value="" translate>{{ 'app.public.common.your_user_s_profile' }}</option>
</select>
<span class="exponent exponent-select help-cursor" title="{{ 'app.public.common.used_for_invoicing' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="exponent exponent-select"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
</div>
<span class="help-block" ng-show="signupForm.group_id.$dirty && signupForm.group_id.$error.required" translate>{{ 'app.public.common.user_s_profile_is_required' }}</span>
</div>
@ -216,7 +224,7 @@
ng-click="openDatePicker($event)"
required/>
</div>
<span class="exponent help-cursor" title="{{ 'app.public.common.used_for_statistics' | translate }}"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="exponent"><i class="fa fa-asterisk" aria-hidden="true"></i></span>
<span class="help-block" ng-show="signupForm.birthday.$dirty && signupForm.birthday.$error.required" translate>{{ 'app.public.common.birth_date_is_required' }}</span>
</div>
</div>
@ -263,8 +271,12 @@
name="is_allow_contact"
id="is_allow_contact"
ng-model="user.is_allow_contact"
value="true"/>
<label for="is_allow_contact" class="help-cursor" title="{{ 'app.public.common.public_profile' | translate }}" translate>{{ 'app.public.common.i_authorize_Fablab_users_registered_on_the_site_to_contact_me' }}</label>
value="false"/>
<label for="is_allow_contact" translate>{{ 'app.public.common.i_authorize_Fablab_users_registered_on_the_site_to_contact_me' }}</label>
<div class="fab-tooltip">
<span class="trigger"><i class="fa fa-question-circle"></i></span>
<div class="content" translate="">{{ 'app.public.common.public_profile' }}</div>
</div>
</div>
</div>
@ -274,7 +286,7 @@
name="is_allow_newsletter"
id="is_allow_newsletter"
ng-model="user.is_allow_newsletter"
value="true"/>
value="false"/>
<label for="is_allow_newsletter" translate>{{ 'app.public.common.i_accept_to_receive_information_from_the_fablab' }}</label>
</div>
</div>
@ -285,7 +297,7 @@
name="cgu"
id="cgu"
ng-model="user.cgu"
value="true"
value="false"
ng-required="cgu != null"/>
<label for="cgu">
<span translate>{{ 'app.public.common.i_ve_read_and_i_accept_' }}</span>

View File

@ -32,7 +32,11 @@ class Slots::PlacesCacheService
reserved_places = (reservations[:reservations].count || 0) + (pending[:reservations].count || 0)
if slot.availability.available_type == 'event'
reserved_places = slot.availability.event.nb_total_places - slot.availability.event.nb_free_places
reserved_places = if slot.availability.event.nb_total_places.nil?
0
else
slot.availability.event.nb_total_places - slot.availability.event.nb_free_places
end
end
places.push({
reservable_type: reservable.class.name,

View File

@ -451,6 +451,8 @@ de:
project_categories: Categories
project_categories:
name: "Name"
delete_dialog_title: "Confirmation required"
delete_dialog_info: "The associations between this category and the projects will me deleted."
projects_setting:
add: "Hinzufügen"
actions_controls: "Actions"

View File

@ -459,6 +459,8 @@ en:
project_categories: Categories
project_categories:
name: "Name"
delete_dialog_title: "Confirmation required"
delete_dialog_info: "The associations between this category and the projects will me deleted."
projects_setting:
add: "Add"
actions_controls: "Actions"

View File

@ -451,6 +451,8 @@ es:
project_categories: Categories
project_categories:
name: "Name"
delete_dialog_title: "Confirmation required"
delete_dialog_info: "The associations between this category and the projects will me deleted."
projects_setting:
add: "Add"
actions_controls: "Actions"

View File

@ -459,6 +459,8 @@ fr:
project_categories: Personnalisation du filtre Catégories
project_categories:
name: "Nom"
delete_dialog_title: "Confirmation requise"
delete_dialog_info: "Les associations entre cette catégorie et les projets seront supprimées."
projects_setting:
add: "Ajouter"
actions_controls: "Actions"

View File

@ -451,6 +451,8 @@ it:
project_categories: Categories
project_categories:
name: "Name"
delete_dialog_title: "Confirmation required"
delete_dialog_info: "The associations between this category and the projects will me deleted."
projects_setting:
add: "Aggiungi"
actions_controls: "Azioni"

View File

@ -451,6 +451,8 @@
project_categories: Categories
project_categories:
name: "Name"
delete_dialog_title: "Confirmation required"
delete_dialog_info: "The associations between this category and the projects will me deleted."
projects_setting:
add: "Add"
actions_controls: "Actions"

View File

@ -451,6 +451,8 @@ pt:
project_categories: Categories
project_categories:
name: "Name"
delete_dialog_title: "Confirmation required"
delete_dialog_info: "The associations between this category and the projects will me deleted."
projects_setting:
add: "Add"
actions_controls: "Actions"

View File

@ -451,6 +451,8 @@ zu:
project_categories: crwdns37623:0crwdne37623:0
project_categories:
name: "crwdns37625:0crwdne37625:0"
delete_dialog_title: "crwdns37665:0crwdne37665:0"
delete_dialog_info: "crwdns37667:0crwdne37667:0"
projects_setting:
add: "crwdns36895:0crwdne36895:0"
actions_controls: "crwdns36897:0crwdne36897:0"

View File

@ -93,7 +93,7 @@ de:
phone_number_is_required: "Die Angabe der Telefonnummer ist erforderlich."
address: "Adresse"
address_is_required: "Adresse ist erforderlich"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "Angemeldete Benutzer dürfen mich kontaktieren"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I agree to share my email address with registered users of the site"
i_accept_to_receive_information_from_the_fablab: "Das Fablab darf mir Informationen schicken"
i_ve_read_and_i_accept_: "Ich habe gelesen und akzeptiere"
_the_fablab_policy: "the terms of use"

View File

@ -94,7 +94,7 @@ en:
phone_number_is_required: "Phone number is required."
address: "Address"
address_is_required: "Address is required"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I authorize users, registered on the site, to contact me"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I agree to share my email address with registered users of the site"
i_accept_to_receive_information_from_the_fablab: "I accept to receive information from the FabLab"
i_ve_read_and_i_accept_: "I've read and I accept"
_the_fablab_policy: "the terms of use"

View File

@ -93,7 +93,7 @@ es:
phone_number_is_required: "El número de telefono es obligatorio."
address: "Dirección"
address_is_required: "Address is required"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "Autorizo a los usuarios registrados en el sitio, a contactarme"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I agree to share my email address with registered users of the site"
i_accept_to_receive_information_from_the_fablab: "Acepto recibir información del FabLab"
i_ve_read_and_i_accept_: "He leido y acepto"
_the_fablab_policy: "the terms of use"

View File

@ -94,7 +94,7 @@ fr:
phone_number_is_required: "Le numéro de téléphone est requis."
address: "Adresse"
address_is_required: "L'adresse est requise"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "J'autorise les utilisateurs inscrits sur le site à me contacter"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "J'accepte de partager mon adresse courriel avec les utilisateurs enregistrés sur le site"
i_accept_to_receive_information_from_the_fablab: "J'accepte de recevoir des informations du Fab Lab"
i_ve_read_and_i_accept_: "J'ai lu et j'accepte"
_the_fablab_policy: "les conditions d'utilisation"

View File

@ -93,7 +93,7 @@ it:
phone_number_is_required: "Il numero di telefono è obbligatorio."
address: "Indirizzo"
address_is_required: "L'indirizzo è obbligatorio"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "Autorizzo gli utenti, registrati sul sito, a contattarmi"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I agree to share my email address with registered users of the site"
i_accept_to_receive_information_from_the_fablab: "Autorizzo FabLab all'invio di informative"
i_ve_read_and_i_accept_: "Ho letto e accetto"
_the_fablab_policy: "le condizioni di utilizzo"

View File

@ -93,7 +93,7 @@
phone_number_is_required: "Telefonnummer er påkrevd."
address: "Adresse"
address_is_required: "Adresse er påkrevd"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I authorize users, registered on the site, to contact me"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I agree to share my email address with registered users of the site"
i_accept_to_receive_information_from_the_fablab: "Jeg aksepterer å motta informasjon"
i_ve_read_and_i_accept_: "Jeg har lest og aksepterer"
_the_fablab_policy: "the terms of use"

View File

@ -93,7 +93,7 @@ pt:
phone_number_is_required: "Número de telefone é obrigatório."
address: "Endereço"
address_is_required: "O endereço é necessário"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "Eu autorizo usuários, registrados no site, a entrarem em contato comigo"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I agree to share my email address with registered users of the site"
i_accept_to_receive_information_from_the_fablab: "Eu aceito receber informações do FabLab"
i_ve_read_and_i_accept_: "Eu li e aceito"
_the_fablab_policy: "os termos de uso"

View File

@ -93,7 +93,7 @@ zu:
phone_number_is_required: "crwdns27938:0crwdne27938:0"
address: "crwdns27940:0crwdne27940:0"
address_is_required: "crwdns27942:0crwdne27942:0"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "crwdns36223:0crwdne36223:0"
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "crwdns37669:0crwdne37669:0"
i_accept_to_receive_information_from_the_fablab: "crwdns27946:0crwdne27946:0"
i_ve_read_and_i_accept_: "crwdns27948:0crwdne27948:0"
_the_fablab_policy: "crwdns36225:0crwdne36225:0"

View File

@ -86,10 +86,9 @@ de:
address: "Address"
phone_number: "Phone number"
phone_number_invalid: "Phone number is invalid."
allow_public_profile: "I authorize users, registered on the site, to contact me"
allow_public_profile_help: "Your profile will be visible to other users and you'll be able to collaborate on projects."
allow_public_profile: "I agree to share my email address with registered users of the site"
allow_public_profile_help: "You will have a public profile and other users will be able to associate you in their projects."
allow_newsletter: "I accept to receive information from the FabLab"
allow_newsletter_help: "You may receive the newsletter."
used_for_statistics: "This data will be used for statistical purposes"
used_for_invoicing: "This data will be used for billing purposes"
used_for_reservation: "This data will be used in case of change on one of your bookings"

View File

@ -86,10 +86,9 @@ en:
address: "Address"
phone_number: "Phone number"
phone_number_invalid: "Phone number is invalid."
allow_public_profile: "I authorize users, registered on the site, to contact me"
allow_public_profile_help: "Your profile will be visible to other users and you'll be able to collaborate on projects."
allow_public_profile: "I agree to share my email address with registered users of the site"
allow_public_profile_help: "You will have a public profile and other users will be able to associate you in their projects."
allow_newsletter: "I accept to receive information from the FabLab"
allow_newsletter_help: "You may receive the newsletter."
used_for_statistics: "This data will be used for statistical purposes"
used_for_invoicing: "This data will be used for billing purposes"
used_for_reservation: "This data will be used in case of change on one of your bookings"

View File

@ -86,10 +86,9 @@ es:
address: "Address"
phone_number: "Phone number"
phone_number_invalid: "Phone number is invalid."
allow_public_profile: "I authorize users, registered on the site, to contact me"
allow_public_profile_help: "Your profile will be visible to other users and you'll be able to collaborate on projects."
allow_public_profile: "I agree to share my email address with registered users of the site"
allow_public_profile_help: "You will have a public profile and other users will be able to associate you in their projects."
allow_newsletter: "I accept to receive information from the FabLab"
allow_newsletter_help: "You may receive the newsletter."
used_for_statistics: "This data will be used for statistical purposes"
used_for_invoicing: "This data will be used for billing purposes"
used_for_reservation: "This data will be used in case of change on one of your bookings"

View File

@ -86,10 +86,9 @@ fr:
address: "Adresse"
phone_number: "Numéro de téléphone"
phone_number_invalid: "Le numéro de téléphone n'est pas valide."
allow_public_profile: "J'autorise les utilisateurs inscrits sur le site à me contacter"
allow_public_profile_help: "Votre profil sera visible par les autres utilisateurs et vous pourrez collaborer aux projets."
allow_public_profile: "J'accepte de partager mon adresse courriel avec les utilisateurs enregistrés sur le site"
allow_public_profile_help: "Vous aurez un profil public et les autres utilisateurs pourront vous associer à leurs projets."
allow_newsletter: "J'accepte de recevoir des informations du Fab Lab"
allow_newsletter_help: "Vous pourriez recevoir la newsletter."
used_for_statistics: "Cette donnée sera utilisée à des fins statistiques"
used_for_invoicing: "Cette donnée sera utilisée à des fins de facturation"
used_for_reservation: "Cette donnée sera utilisée en cas de changement sur une de vos réservations"

View File

@ -86,10 +86,9 @@ it:
address: "Indirizzo"
phone_number: "Numero di telefono"
phone_number_invalid: "Numero di telefono non valido."
allow_public_profile: "Autorizzo gli utenti, registrati sul sito, a contattarmi"
allow_public_profile_help: "Il tuo profilo sarà visibile ad altri utenti e sarai in grado di collaborare ai progetti."
allow_public_profile: "I agree to share my email address with registered users of the site"
allow_public_profile_help: "You will have a public profile and other users will be able to associate you in their projects."
allow_newsletter: "Accetto di ricevere informative da FabLab"
allow_newsletter_help: "Potresti ricevere la newsletter."
used_for_statistics: "Questi dati saranno utilizzati a fini statistici"
used_for_invoicing: "Questi dati saranno utilizzati per la fatturazione"
used_for_reservation: "Questi dati saranno utilizzati in caso di modifica di una delle tue prenotazioni"

View File

@ -86,10 +86,9 @@
address: "Address"
phone_number: "Phone number"
phone_number_invalid: "Phone number is invalid."
allow_public_profile: "I authorize users, registered on the site, to contact me"
allow_public_profile_help: "Your profile will be visible to other users and you'll be able to collaborate on projects."
allow_public_profile: "I agree to share my email address with registered users of the site"
allow_public_profile_help: "You will have a public profile and other users will be able to associate you in their projects."
allow_newsletter: "I accept to receive information from the FabLab"
allow_newsletter_help: "You may receive the newsletter."
used_for_statistics: "This data will be used for statistical purposes"
used_for_invoicing: "This data will be used for billing purposes"
used_for_reservation: "This data will be used in case of change on one of your bookings"

View File

@ -86,10 +86,9 @@ pt:
address: "Endereço"
phone_number: "Número de telefone"
phone_number_invalid: "O número de telefone é inválido."
allow_public_profile: "Eu autorizo usuários do FabLab, registrados no site, a entrarem em contato comigo"
allow_public_profile_help: "Seu perfil ficará visível para outros usuários e você poderá colaborar em projetos."
allow_public_profile: "I agree to share my email address with registered users of the site"
allow_public_profile_help: "You will have a public profile and other users will be able to associate you in their projects."
allow_newsletter: "Eu aceito receber informações do FabLab"
allow_newsletter_help: "Você poderá receber a newsletter."
used_for_statistics: "Estes dados serão utilizados para fins estatísticos"
used_for_invoicing: "Esses dados serão usados para fins de faturamento"
used_for_reservation: "Estes dados serão utilizados em caso de alteração em uma das suas reservas"

View File

@ -86,10 +86,9 @@ zu:
address: "crwdns28670:0crwdne28670:0"
phone_number: "crwdns28672:0crwdne28672:0"
phone_number_invalid: "crwdns28674:0crwdne28674:0"
allow_public_profile: "crwdns28676:0crwdne28676:0"
allow_public_profile_help: "crwdns28678:0crwdne28678:0"
allow_public_profile: "crwdns37671:0crwdne37671:0"
allow_public_profile_help: "crwdns37673:0crwdne37673:0"
allow_newsletter: "crwdns28680:0crwdne28680:0"
allow_newsletter_help: "crwdns28682:0crwdne28682:0"
used_for_statistics: "crwdns28684:0crwdne28684:0"
used_for_invoicing: "crwdns28686:0crwdne28686:0"
used_for_reservation: "crwdns28688:0crwdne28688:0"

View File

@ -1,6 +1,6 @@
{
"name": "fab-manager",
"version": "6.0.10",
"version": "6.0.11",
"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",