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

Ability to customize the title of the link to the about page

This commit is contained in:
Sylvain 2020-01-21 16:16:12 +01:00
parent 45e4b5c4bc
commit 15ab3c1305
19 changed files with 142 additions and 75 deletions

View File

@ -12,6 +12,7 @@
- Display indications on required fields in new administrator form
- Administrators can to book machine/space/training slots, until 1 month in the past
- Filter members by non-validated emails or by inactive for 3 years
- Ability to customize the title of the link to the about page
- Automatic version check with security alerts
- Public endpoint to check the system health
- Configuration of phone number in members registration forms: can be required or optional, depending on `PHONE_REQUIRED` configuration

View File

@ -53,6 +53,7 @@ Application.Controllers.controller('SettingsController', ['$scope', '$filter', '
// various configurable settings
$scope.twitterSetting = { name: 'twitter_name', value: settingsPromise.twitter_name };
$scope.linkName = { name: 'link_name', value: settingsPromise.link_name };
$scope.aboutTitleSetting = { name: 'about_title', value: settingsPromise.about_title };
$scope.aboutBodySetting = { name: 'about_body', value: settingsPromise.about_body };
$scope.privacyDpoSetting = { name: 'privacy_dpo', value: settingsPromise.privacy_dpo };

View File

@ -316,8 +316,11 @@ Application.Controllers.controller('ApplicationController', ['$rootScope', '$sco
// we stop polling notifications when the page is not in foreground
onPageVisible(function (state) { $rootScope.toCheckNotifications = (state === 'visible'); });
Setting.get({ name: 'fablab_name' }, function (data) { $scope.fablabName = data.setting.value; });
Setting.get({ name: 'name_genre' }, function (data) { $scope.nameGenre = data.setting.value; });
Setting.query({ names: "['fablab_name', 'name_genre', 'link_name']" }, function (settings) {
$scope.fablabName = settings.fablab_name;
$scope.nameGenre = settings.name_genre;
$scope.linkName = settings.link_name;
});
// shorthands
$scope.isAuthenticated = Auth.isAuthenticated;

View File

@ -43,7 +43,7 @@ angular.module('application.router', ['ui.router'])
CSRF.setMetaTags();
// Application logo
$rootScope.logo = logoFile.custom_asset;
return $rootScope.logoBlack = logoBlackFile.custom_asset;
$rootScope.logoBlack = logoBlackFile.custom_asset;
}]
})
.state('app.public', {
@ -1005,7 +1005,8 @@ angular.module('application.router', ['ui.router'])
'booking_cancel_delay', 'main_color', 'secondary_color', \
'fablab_name', 'name_genre', 'reminder_enable', \
'reminder_delay', 'visibility_yearly', 'visibility_others', \
'display_name_enable', 'machines_sort_by', 'fab_analytics']` }).$promise;
'display_name_enable', 'machines_sort_by', 'fab_analytics', \
'link_name']` }).$promise;
}],
privacyDraftsPromise: ['Setting', function (Setting) { return Setting.get({ name: 'privacy_draft', history: true }).$promise; }],
cguFile: ['CustomAsset', function (CustomAsset) { return CustomAsset.get({ name: 'cgu-file' }).$promise; }],

View File

@ -1,4 +1,27 @@
<div class="panel panel-default m-t-md">
<div class="panel-heading">
<span class="font-sbold" translate>{{ 'app.admin.settings.link' }}</span>
</div>
<div class="panel-body">
<div class="col-md-4">
<form role="form" novalidate>
<label for="linkName" class="control-label m-r" translate>{{ 'app.admin.settings.link_to_about' }}</label>
<div class="form-group">
<div class="input-group">
<div class="input-group-addon"><i class="fa fa-link"></i></div>
<input type="text" id="linkName" ng-model="linkName.value" class="form-control" placeholder="{{ 'app.admin.settings.link_to_about' | translate }}"/>
</div>
</div>
<button name="button" class="btn btn-warning" ng-click="save(linkName)" translate>{{ 'app.shared.buttons.save' }}</button>
</form>
</div>
</div>
</div>
<div class="panel panel-default m-t-md">
<div class="panel-heading">
<span class="font-sbold" translate>{{ 'app.admin.settings.content' }}</span>
</div>
<div class="panel-body">
<div class="row m-t-lg m-b-lg">

View File

@ -23,17 +23,17 @@
<div class="form-group">
<label for="nameGenreMale">
<input type="radio" name="nameGenre" id="nameGenreMale" ng-model="nameGenre.value" ng-value="'male'" />
{{ 'app.admin.settings.male' | translate }} <span style="font-weight: normal">{{ 'app.admin.settings.eg' | translate }} <cite>{{ 'app.admin.settings.about' | translate }} <strong translate>{{ 'app.admin.settings.male_preposition' }}</strong> {{fablabName.value}}</cite></span>
{{ 'app.admin.settings.male' | translate }} <span style="font-weight: normal">{{ 'app.admin.settings.eg' | translate }} <cite>{{ 'app.admin.settings.the_team' | translate }} <strong translate>{{ 'app.admin.settings.male_preposition' }}</strong> {{fablabName.value}}</cite></span>
</label>
<br/>
<label for="nameGenreFemale">
<input type="radio" name="nameGenre" id="nameGenreFemale" ng-model="nameGenre.value" ng-value="'female'" />
{{ 'app.admin.settings.female' | translate }} <span style="font-weight: normal">{{ 'app.admin.settings.eg' | translate }} <cite>{{ 'app.admin.settings.about' | translate }} <strong translate>{{ 'app.admin.settings.female_preposition' }}</strong> {{fablabName.value}}</cite></span>
{{ 'app.admin.settings.female' | translate }} <span style="font-weight: normal">{{ 'app.admin.settings.eg' | translate }} <cite>{{ 'app.admin.settings.the_team' | translate }} <strong translate>{{ 'app.admin.settings.female_preposition' }}</strong> {{fablabName.value}}</cite></span>
</label>
<br/>
<label for="nameGenreNeutral">
<input type="radio" name="nameGenre" id="nameGenreNeutral" ng-model="nameGenre.value" ng-value="'neutral'" />
{{ 'app.admin.settings.neutral' | translate }} <span style="font-weight: normal">{{ 'app.admin.settings.eg' | translate }} <cite>{{ 'app.admin.settings.about' | translate }} <strong translate>{{ 'app.admin.settings.neutral_preposition' }}</strong> {{fablabName.value}}</cite></span>
{{ 'app.admin.settings.neutral' | translate }} <span style="font-weight: normal">{{ 'app.admin.settings.eg' | translate }} <cite>{{ 'app.admin.settings.the_team' | translate }} <strong translate>{{ 'app.admin.settings.neutral_preposition' }}</strong> {{fablabName.value}}</cite></span>
</label>
</div>
<button name="button" class="btn btn-warning" ng-click="save(nameGenre)" translate>{{ 'app.shared.buttons.save' }}</button>

View File

@ -10,7 +10,7 @@
<li>
<a href class="about-link font-sbold text-sm" ng-click="goabout = !goabout" ui-sref="app.public.about" ng-show="!goabout">
<span class="label label-theme rounded text-lg text-white m-r-sm font-ebold">?</span>
{{ 'app.public.common.about_the_fablab' | translate:{ GENDER: nameGenre, NAME: fablabName } }}
{{ linkName }}
</a>
<a href class="about-link font-sbold text-sm" ng-click="goabout = !goabout" ui-sref="app.public.home" ng-show="goabout">
<span class="label label-theme label-icon rounded text-lg text-white m-r-sm font-ebold"><i class="fa fa-caret-up" ng-show="goabout"></i></span>

View File

@ -64,7 +64,8 @@ class Setting < ActiveRecord::Base
accounting_Space_label
hub_last_version
hub_public_key
fab_analytics] }
fab_analytics
link_name] }
after_update :update_stylesheet, :notify_privacy_policy_changed if :value_changed?

View File

@ -855,6 +855,7 @@ en:
neutral: "Neutral."
eg: "eg:"
about: "About"
the_team: "The team of"
male_preposition: "the"
female_preposition: "the"
neutral_preposition: ""
@ -891,6 +892,9 @@ en:
leave_it_empty_to_not_bring_up_any_news_on_the_home_page: "Leave it empty to not bring up any news on the home page"
twitter_stream: "Twitter Stream:"
name_of_the_twitter_account: "Name of the Twitter account"
link: "Link"
link_to_about: 'Link title to the "About" page'
content: "Content"
title_of_the_about_page: "Title of the About page"
shift_enter_to_force_carriage_return: "SHIFT + ENTER to force carriage return"
input_the_main_content: "Input the main content"
@ -926,6 +930,7 @@ en:
secondary_color: "secondary colour"
home_blogpost: "homepage's brief"
twitter_name: "Twitter feed name"
link_name: "link title to the \"About\" page"
about_title: "\"About\" page title"
about_body: "\"About\" page content"
about_contacts: "\"About\" page contacts"
@ -948,6 +953,7 @@ en:
display_name: "Display the name"
display_name_enable: "name display"
machines_sort_by: "machines display order"
fab_analytics: "Fab Analytics"
elements_ordering: "Elements ordering"
machines_order: "Machines order"
display_machines_sorted_by: "Display machines sorted by"
@ -966,6 +972,8 @@ en:
publish_will_notify: "Publish a new version will send a notification to every users."
publish: "Publish"
users_notified: "Platform users will be notified of the update."
about_analytics: "I agree to share anonymous data with the development team to help improve Fab-Manager."
read_more: "Which data do we collect?"
analytics:
intro_analytics_html: "You'll find below a detailed view of all the data, Fab-Manager will collect <strong>if permission is granted.</strong>"
version: "Application version"

View File

@ -357,7 +357,7 @@ es:
invoices:
# list of all invoices & invoicing parameters
invoices: "Facturas"
accounting_periods: "Accounting periods" # missing translation
accounting_periods: "Accounting periods"
invoices_list: "Lista de facturas"
filter_invoices: "Filtrar facturas"
invoice_num_: "Factura #:"
@ -373,7 +373,7 @@ es:
display_more_invoices: "Mostrar más facturas..."
no_invoices_for_now: "Sin facturas por ahora."
invoicing_settings: "Configuración de facturación"
warning_invoices_disabled: "Warning : invoices are not enabled. No invoices will be generated by Fab-manager. Nevertheless, you must correctly fill the information below, especially VAT." # missing translation
warning_invoices_disabled: "Warning : invoices are not enabled. No invoices will be generated by Fab-manager. Nevertheless, you must correctly fill the information below, especially VAT."
change_logo: "Cambio de logotipo"
john_smith: "John Smith"
john_smith_at_example_com: "jean.smith@example.com"
@ -855,6 +855,7 @@ es:
neutral: "Neutral"
eg: "ej:"
about: "Sobre"
the_team: "El equipo"
male_preposition: "el"
female_preposition: "la"
neutral_preposition: ""
@ -891,6 +892,9 @@ es:
leave_it_empty_to_not_bring_up_any_news_on_the_home_page: "Déjelo vacío para no abrir ninguna noticia en la página principal"
twitter_stream: "Twitter Stream:"
name_of_the_twitter_account: "Nombre de la cuenta de Twitter"
link: "Link"
link_to_about: 'Link title to the "About" page'
content: "Content"
title_of_the_about_page: "Título de la página Acerca de"
shift_enter_to_force_carriage_return: "MAYÚS + ENTRAR para forzar el retorno de carro"
input_the_main_content: "Introduzca el contenido principal"
@ -926,6 +930,7 @@ es:
secondary_color: "color secundario"
home_blogpost: "Resumen de la página de inicio"
twitter_name: "Twitter feed name"
link_name: "link title to the \"About\" page"
about_title: "Título de la página \"Acerca de\""
about_body: "Contenido de la página \"Acerca de\""
about_contacts: "Página contactos\"Acerca de\""
@ -948,6 +953,7 @@ es:
display_name: "Mostrar el nombre"
display_name_enable: "la visualización del nombre"
machines_sort_by: "del orden de visualización de las máquinas"
fab_analytics: "Fab Analytics"
elements_ordering: "Orden de visualización de los elementos"
machines_order: "Orden de las máquinas"
display_machines_sorted_by: "Ver máquinas ordenadas por"
@ -966,6 +972,8 @@ es:
publish_will_notify: "Publish a new version will send a notification to every users."
publish: "Publish"
users_notified: "Platform users will be notified of the update."
about_analytics: "I agree to share anonymous data with the development team to help improve Fab-Manager."
read_more: "Which data do we collect?"
analytics:
intro_analytics_html: "You'll find below a detailed view of all the data, Fab-Manager will collect <strong>if permission is granted.</strong>"
version: "Application version"

View File

@ -855,6 +855,7 @@ fr:
neutral: "Neutre."
eg: "ex :"
about: "A propos"
the_team: "L'équipe"
male_preposition: "du"
female_preposition: "de la"
neutral_preposition: ""
@ -891,6 +892,9 @@ fr:
leave_it_empty_to_not_bring_up_any_news_on_the_home_page: "Laisser vide pour ne pas faire apparaître de brève sur la page d'accueil"
twitter_stream: "Flux Twitter :"
name_of_the_twitter_account: "Nom du compte Twitter"
link: "Lien"
link_to_about: 'Titre du lien vers la page "À propos"'
content: "Contenu"
title_of_the_about_page: "Titre page A propos"
shift_enter_to_force_carriage_return: "MAJ. + ENTRÉE pour forcer le retour à la ligne"
input_the_main_content: "Saisir le contenu principal"
@ -926,6 +930,7 @@ fr:
secondary_color: "la couleur secondaire"
home_blogpost: "la brève de la page d'accueil"
twitter_name: "nom du flux Twitter"
link_name: "l'intitulé du lien vers la page \"À propos\""
about_title: "titre de la page \"À propos\""
about_body: "corps de la page \"À propos\""
about_contacts: "contacts sur la page \"À propos\""

View File

@ -357,7 +357,7 @@ pt:
invoices:
# list of all invoices & invoicing parameters
invoices: "Faturas"
accounting_periods: "Accounting periods" # missing translation
accounting_periods: "Accounting periods"
invoices_list: "Lista de faturas"
filter_invoices: "Filtrar faturas"
invoice_num_: "Fatura #:"
@ -373,7 +373,7 @@ pt:
display_more_invoices: "Mostrar mais faturas..."
no_invoices_for_now: "Nenhuma fatura."
invoicing_settings: "Configurações do faturamento"
warning_invoices_disabled: "Warning : invoices are not enabled. No invoices will be generated by Fab-manager. Nevertheless, you must correctly fill the information below, especially VAT." # missing translation
warning_invoices_disabled: "Warning : invoices are not enabled. No invoices will be generated by Fab-manager. Nevertheless, you must correctly fill the information below, especially VAT."
change_logo: "Mudar o logo"
john_smith: "John Smith"
john_smith_at_example_com: "jean.smith@example.com"
@ -852,9 +852,10 @@ pt:
title_concordance: "Tírulo concordância"
male: "Masculino."
female: "Feminino."
neutral: "Neutro." #TODO
neutral: "Neutro."
eg: "ex:"
about: "Sobre"
the_team: "A equipe"
male_preposition: "o"
female_preposition: "a"
neutral_preposition: ""
@ -891,6 +892,9 @@ pt:
leave_it_empty_to_not_bring_up_any_news_on_the_home_page: "Deixe vazio para não abrir nenhuma notícia na home page"
twitter_stream: "Twitter Stream:"
name_of_the_twitter_account: "Nome da conta do Twitter"
link: "Link"
link_to_about: 'Link title to the "About" page'
content: "Content"
title_of_the_about_page: "Título da página sobre"
shift_enter_to_force_carriage_return: "SHIFT + ENTER para forçar o retorno"
input_the_main_content: "Introduza o conteúdo principal"
@ -926,6 +930,7 @@ pt:
secondary_color: "Cor secundária"
home_blogpost: "Resumo da página inicial"
twitter_name: "Nome do feed do Twitter"
link_name: "link title to the \"About\" page"
about_title: "\"Sobre\" título da página"
about_body: "\"Sobre\" conteúdo da página"
about_contacts: "\"Sobre\" página de contatos"
@ -943,19 +948,20 @@ pt:
default_value_is_24_hours: "Se o campo estiver vazio: 24 horas."
visibility_yearly: "visibilidade máxima para assinantes anuais"
visibility_others: "visibilidade máxima para outros membros"
confidentiality: "TODO"
display_machine_reservation_user_name: "TODO"
display_name: "TODO"
display_name_enable: "TODO"
machines_sort_by: "TODO"
elements_ordering: "TODO"
machines_order: "TODO"
display_machines_sorted_by: "TODO"
confidentiality: "Confidentiality"
display_machine_reservation_user_name: "Display the full name of the user who booked a machine slot"
display_name: "Display the name"
display_name_enable: "name display"
machines_sort_by: "machines display order"
fab_analytics: "Fab Analytics"
elements_ordering: "Elements ordering"
machines_order: "Machines order"
display_machines_sorted_by: "Display machines sorted by"
sort_by:
default: "TODO"
default: "Default"
name: "Nome"
created_at: "TODO"
updated_at: "TODO"
created_at: "Creation date"
updated_at: "Last update date"
privacy:
title: "Política de privacidade"
input_the_dpo: "Input the contact of the Data Protection Officer"
@ -966,6 +972,8 @@ pt:
publish_will_notify: "Publish a new version will send a notification to every users."
publish: "Publish"
users_notified: "Platform users will be notified of the update."
about_analytics: "I agree to share anonymous data with the development team to help improve Fab-Manager."
read_more: "Which data do we collect?"
analytics:
intro_analytics_html: "You'll find below a detailed view of all the data, Fab-Manager will collect <strong>if permission is granted.</strong>"
version: "Application version"

View File

@ -68,10 +68,10 @@ es:
an_unexpected_error_prevented_your_group_from_being_changed: "Un error inesperado impidió que su grupo fuese cambiado."
confirmation_required: "Confirmation required"
confirm_delete_your_account: "¿Está seguro de querer eliminar su cuenta?"
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable." # missing translation
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years." # missing translation
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes." # missing translation
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them." # missing translation
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable."
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years."
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes."
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them."
your_user_account_has_been_successfully_deleted_goodbye: "Su cuenta ha sido eliminada con éxito. Adiós"
an_error_occured_preventing_your_account_from_being_deleted: "Un error inesperado impidió que su cuenta fuese eliminada."
used_for_statistics: "This data will be used for statistical purposes"

View File

@ -68,10 +68,10 @@ pt:
an_unexpected_error_prevented_your_group_from_being_changed: "Um erro inesperado impediu o seu grupo de ser alterado."
confirmation_required: "Confirmation required"
confirm_delete_your_account: "Você realmente deseja deletar sua conta?"
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable." # missing translation
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years." # missing translation
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes." # missing translation
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them." # missing translation
all_data_will_be_lost: "All your data will be destroyed and won't be recoverable."
invoicing_data_kept: "According to regulation, all data related to your invoices will be kept separately for 10 years."
statistic_data_anonymized: "Some data (sex, date of birth, group) will be anonymized and kept for statistical purposes."
no_further_access_to_projects: "Your published projects will be anonymized and you won't get any further ability to edit them."
your_user_account_has_been_successfully_deleted_goodbye: "Sua conta de usuário foi excluída com êxito. Até mais."
an_error_occured_preventing_your_account_from_being_deleted: "Ocorreu um erro, impedindo que sua conta fosse excluída."
used_for_statistics: "This data will be used for statistical purposes"

View File

@ -36,13 +36,13 @@ es:
cannot_be_blank_at_same_time: "no puede estar vacío cuando %{field} también está vacío"
cannot_be_in_the_past: "no puede estar en el pasado"
cannot_be_before_previous_value: "No puede estar antes del valor anterior."
cannot_overlap: "can't overlap an existing accounting period" # missing translation
cannot_encompass: "can't encompass an existing accounting period" # missing translation
in_closed_period: "can't be within a closed accounting period" # missing translation
invalid_footprint: "invoice's checksum is invalid" # missing translation
end_before_start: "The end date can't be before the start date. Pick a date after %{START}" # missing translation
invalid_duration: "The allowed duration must be between 1 day and 1 year. Your period is %{DAYS} days long." # missing translation
must_be_in_the_past: "The period must be strictly prior to today's date." # missing translation
cannot_overlap: "can't overlap an existing accounting period"
cannot_encompass: "can't encompass an existing accounting period"
in_closed_period: "can't be within a closed accounting period"
invalid_footprint: "invoice's checksum is invalid"
end_before_start: "The end date can't be before the start date. Pick a date after %{START}"
invalid_duration: "The allowed duration must be between 1 day and 1 year. Your period is %{DAYS} days long."
must_be_in_the_past: "The period must be strictly prior to today's date."
activemodel:
errors:
@ -322,7 +322,7 @@ es:
statistics_global: "de todas las estadísticas"
statistics_account: "de las estadísticas de registro"
statistics_event: "de estadísticas sobre eventos"
statistics_machine: "de estadísticas sobre slots de máquina" # missing translation
statistics_machine: "de estadísticas sobre slots de máquina"
statistics_project: "de estadísticas sobre proyectos"
statistics_subscription: "de estadísticas de suscripción"
statistics_training: "de estadísticas de cursos"
@ -335,29 +335,29 @@ es:
is_over: "se ha acabado."
download_here: "Descargar aquí"
notify_admin_import_complete:
import_over: "%{CATEGORY} import is over. " # missing translation
members: "Members" # missing translation
view_results: "View results." # missing translation
import_over: "%{CATEGORY} import is over. "
members: "Members"
view_results: "View results."
notify_member_about_coupon:
enjoy_a_discount_of_PERCENT_with_code_CODE: "Disfruta de un descuento de %{PERCENT}% con el código %{CODE}"
enjoy_a_discount_of_AMOUNT_with_code_CODE: "Disfruta de un descuento de %{AMOUNT} con el código %{CODE}"
notify_admin_free_disk_space:
warning_free_disk_space: "Warning: the server's available disk space is now %{AVAILABLE} MiB" # missing translation
warning_free_disk_space: "Warning: the server's available disk space is now %{AVAILABLE} MiB"
notify_admin_close_period_reminder:
warning_last_closed_period_over_1_year: "Please remind to periodically close your accounting periods. Last closed period ended at %{LAST_END}" # missing translation
warning_no_closed_periods: "Please remind to periodically close your accounting periods. You have to close periods from %{FIRST_DATE}" # missing translation
notify_admin_archive_complete: # missing translation
archive_complete: "Data archiving from %{START} to %{END} is done. <a href='api/accounting_periods/%{ID}/archive' target='_blank'>click here to download</a>. Remember to save it on an external secured media." # missing translation
warning_last_closed_period_over_1_year: "Please remind to periodically close your accounting periods. Last closed period ended at %{LAST_END}"
warning_no_closed_periods: "Please remind to periodically close your accounting periods. You have to close periods from %{FIRST_DATE}"
notify_admin_archive_complete:
archive_complete: "Data archiving from %{START} to %{END} is done. <a href='api/accounting_periods/%{ID}/archive' target='_blank'>click here to download</a>. Remember to save it on an external secured media."
notify_privacy_policy_changed:
policy_updated: "Privacy policy updated." # missing translation
click_to_show: "Click here to consult" # missing translation
policy_updated: "Privacy policy updated."
click_to_show: "Click here to consult"
notify_admin_refund_created:
refund_created: "A refund of %{AMOUNT} has been created for user %{USER}" # missing translation
refund_created: "A refund of %{AMOUNT} has been created for user %{USER}"
statistics:
# statistics tools for admins
subscriptions: "Suscripciones"
machines_hours: "Machine slots" # missing translation
machines_hours: "Machine slots"
spaces: "Espacios"
trainings: "Cursos"
events: "Eventos"

View File

@ -240,7 +240,7 @@ es:
signaled_by: "marcado por:"
signaled_on: "marcado el:"
message: "Mensaje:"
visit_management_interface: "Refer to the Reporting Management Interface for more information." # missing translation
visit_management_interface: "Refer to the Reporting Management Interface for more information."
notify_user_wallet_is_credited:
subject: "Your wallet has been credited"

View File

@ -240,7 +240,7 @@ pt:
signaled_by: "sinalizado por:"
signaled_on: "sinalizado em:"
message: "Menssagem:"
visit_management_interface: "Refer to the Reporting Management Interface for more information." # missing translation
visit_management_interface: "Refer to the Reporting Management Interface for more information."
notify_user_wallet_is_credited:
subject: "Sua carteira foi creditada"

View File

@ -36,13 +36,13 @@ pt:
cannot_be_blank_at_same_time: "Não pode ficar em branco quando %{field} estiver em branco também"
cannot_be_in_the_past: "não pode ser no passado"
cannot_be_before_previous_value: "não pode ser antes do valor anterior"
cannot_overlap: "can't overlap an existing accounting period" # missing translation
cannot_encompass: "can't encompass an existing accounting period" # missing translation
in_closed_period: "can't be within a closed accounting period" # missing translation
invalid_footprint: "invoice's checksum is invalid" # missing translation
end_before_start: "The end date can't be before the start date. Pick a date after %{START}" # missing translation
invalid_duration: "The allowed duration must be between 1 day and 1 year. Your period is %{DAYS} days long." # missing translation
must_be_in_the_past: "The period must be strictly prior to today's date." # missing translation
cannot_overlap: "can't overlap an existing accounting period"
cannot_encompass: "can't encompass an existing accounting period"
in_closed_period: "can't be within a closed accounting period"
invalid_footprint: "invoice's checksum is invalid"
end_before_start: "The end date can't be before the start date. Pick a date after %{START}"
invalid_duration: "The allowed duration must be between 1 day and 1 year. Your period is %{DAYS} days long."
must_be_in_the_past: "The period must be strictly prior to today's date."
activemodel:
errors:
@ -322,7 +322,7 @@ pt:
statistics_global: "de todas as estatísticas"
statistics_account: "das estatísticas de registro"
statistics_event: "de estatísticas sobre eventos"
statistics_machine: "de estatísticas sobre slots de máquina" # missing translation
statistics_machine: "de estatísticas sobre slots de máquina"
statistics_project: "de estatísticas sobre projetos"
statistics_subscription: "de estatísticas de assinatura"
statistics_training: "de estatísticas sobre treinamentos"
@ -335,29 +335,29 @@ pt:
is_over: "está finalizado."
download_here: "Baixe aqui"
notify_admin_import_complete:
import_over: "%{CATEGORY} import is over. " # missing translation
members: "Members" # missing translation
view_results: "View results." # missing translation
import_over: "%{CATEGORY} import is over. "
members: "Members"
view_results: "View results."
notify_member_about_coupon:
enjoy_a_discount_of_PERCENT_with_code_CODE: "Desfrute de um desconto de %{PERCENT}% com o código %{CODE}"
enjoy_a_discount_of_AMOUNT_with_code_CODE: "Desfrute de um desconto de %{AMOUNT} com o código %{CODE}"
notify_admin_free_disk_space:
warning_free_disk_space: "Warning: the server's available disk space is now %{AVAILABLE} MiB" # missing translation
warning_free_disk_space: "Warning: the server's available disk space is now %{AVAILABLE} MiB"
notify_admin_close_period_reminder:
warning_last_closed_period_over_1_year: "Please remind to periodically close your accounting periods. Last closed period ended at %{LAST_END}" # missing translation
warning_no_closed_periods: "Please remind to periodically close your accounting periods. You have to close periods from %{FIRST_DATE}" # missing translation
notify_admin_archive_complete: # missing translation
archive_complete: "Data archiving from %{START} to %{END} is done. <a href='api/accounting_periods/%{ID}/archive' target='_blank'>click here to download</a>. Remember to save it on an external secured media." # missing translation
warning_last_closed_period_over_1_year: "Please remind to periodically close your accounting periods. Last closed period ended at %{LAST_END}"
warning_no_closed_periods: "Please remind to periodically close your accounting periods. You have to close periods from %{FIRST_DATE}"
notify_admin_archive_complete:
archive_complete: "Data archiving from %{START} to %{END} is done. <a href='api/accounting_periods/%{ID}/archive' target='_blank'>click here to download</a>. Remember to save it on an external secured media."
notify_privacy_policy_changed:
policy_updated: "Privacy policy updated." # missing translation
click_to_show: "Click here to consult" # missing translation
policy_updated: "Privacy policy updated."
click_to_show: "Click here to consult"
notify_admin_refund_created:
refund_created: "A refund of %{AMOUNT} has been created for user %{USER}" # missing translation
refund_created: "A refund of %{AMOUNT} has been created for user %{USER}"
statistics:
# statistics tools for admins
subscriptions: "Assinaturas"
machines_hours: "Slots de máquina" # missing translation
machines_hours: "Slots de máquina"
spaces: "Espaços"
trainings: "Treinamentos"
events: "Eventos"

View File

@ -636,6 +636,14 @@ unless Setting.find_by(name: 'fab_analytics').try(:value)
setting.save
end
unless Setting.find_by(name: 'link_name').try(:value)
name = Setting.find_by(name: 'fablab_name')
gender = Setting.find_by(name: 'name_genre')
setting = Setting.find_or_initialize_by(name: 'link_name')
setting.value = _t('app.public.common.about_the_fablab', NAME: name, GENDER: gender)
setting.save
end
if StatisticCustomAggregation.count.zero?
# available reservations hours for machines
machine_hours = StatisticType.find_by(key: 'hour', statistic_index_id: 2)