1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-30 19:52:20 +01:00

Merge pull request #51 from kennethlimcp/fix/locale/en

fixing documentation typo
This commit is contained in:
Sylvain 2016-10-07 11:50:17 +02:00 committed by GitHub
commit f7d2d8a878
24 changed files with 71 additions and 71 deletions

View File

@ -39,14 +39,14 @@ Some other used libraries/components are licenced under the terms of the
Errors and omissions excepted, the other external libraries used in this Errors and omissions excepted, the other external libraries used in this
project are licenced under the terms of the [MIT Licence](https://opensource.org/licenses/MIT). project are licenced under the terms of the [MIT Licence](https://opensource.org/licenses/MIT).
Please refer to the libraries documentation for more informations about Please refer to the libraries documentation for more information about
their licences. their licences.
Complete lists of used libraries are available in `bower.json` for the Complete lists of used libraries are available in `bower.json` for the
EcmaScript libraries and in `Gemfile` for Ruby libraries. EcmaScript libraries and in `Gemfile` for Ruby libraries.
GNU AFFERO GENERAL PUBLIC LICENSE GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007 Version 3, 19 November 2007
@ -666,4 +666,4 @@ an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee. copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS

View File

@ -159,7 +159,7 @@ This value is only used when deploying with Docker, otherwise this is configured
POSTGRES_PASSWORD POSTGRES_PASSWORD
Password for the PostgreSQL user, as specified in `database.yml`. Password for the PostgreSQL user, as specified in `database.yml`.
Please see [Setup the FabManager database in PostgreSQL](#setup-fabmanager-in-postgresql) for informations on how to create a user and set his password. Please see [Setup the FabManager database in PostgreSQL](#setup-fabmanager-in-postgresql) for information on how to create a user and set his password.
This value is only used when deploying with Docker, otherwise this is configured in `config/database.yml`. This value is only used when deploying with Docker, otherwise this is configured in `config/database.yml`.
REDIS_HOST REDIS_HOST
@ -222,11 +222,11 @@ Identifier of your Google Analytics account.
Unique identifier of your [Disqus](http://www.disqus.com) forum. Unique identifier of your [Disqus](http://www.disqus.com) forum.
Disqus forums are used to allow visitors to comment on projects. Disqus forums are used to allow visitors to comment on projects.
See https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname- for more informations. See https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname- for more information.
TWITTER_NAME TWITTER_NAME
Identifier of the Twitter account, from witch the last tweet will be fetched and displayed on the home page. Identifier of the Twitter account, from witch the last tweet will be fetched and displayed on the home page.
It will also be used for [Twitter Card analytics](https://dev.twitter.com/cards/analytics). It will also be used for [Twitter Card analytics](https://dev.twitter.com/cards/analytics).
TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_ACCESS_TOKEN & TWITTER_ACCESS_TOKEN_SECRET TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_ACCESS_TOKEN & TWITTER_ACCESS_TOKEN_SECRET
@ -241,8 +241,8 @@ If you do so, you'll be able to customize and get statistics about project share
LOG_LEVEL LOG_LEVEL
This parameter configures the logs verbosity. This parameter configures the logs verbosity.
Available log levels can be found [here](http://guides.rubyonrails.org/debugging_rails_applications.html#log-levels). Available log levels can be found [here](http://guides.rubyonrails.org/debugging_rails_applications.html#log-levels).
ALLOWED_EXTENSIONS ALLOWED_EXTENSIONS
@ -361,7 +361,7 @@ To create it, please follow these instructions:
ALTER USER sleede WITH ENCRYPTED PASSWORD 'sleede'; ALTER USER sleede WITH ENCRYPTED PASSWORD 'sleede';
``` ```
6. Finally, have a look at the [PostgreSQL Limitations](#postgresql-limitations) section or some errors will occurs preventing you from finishing the installation procedure. 6. Finally, have a look at the [PostgreSQL Limitations](#postgresql-limitations) section or some errors will occurs preventing you from finishing the installation procedure.
<a name="postgresql-limitations"></a> <a name="postgresql-limitations"></a>
### PostgreSQL Limitations ### PostgreSQL Limitations
@ -370,14 +370,14 @@ To create it, please follow these instructions:
So here's your choices, mainly depending on your security requirements: So here's your choices, mainly depending on your security requirements:
- Use the default PostgreSQL super-user (postgres) as the database user of fab-manager. - Use the default PostgreSQL super-user (postgres) as the database user of fab-manager.
- Set your user as _SUPERUSER_; run the following command in `psql` (after replacing `sleede` with you user name): - Set your user as _SUPERUSER_; run the following command in `psql` (after replacing `sleede` with you user name):
```sql ```sql
ALTER USER sleede WITH SUPERUSER; ALTER USER sleede WITH SUPERUSER;
``` ```
- Install and configure the PostgreSQL extension [pgextwlist](https://github.com/dimitri/pgextwlist). - Install and configure the PostgreSQL extension [pgextwlist](https://github.com/dimitri/pgextwlist).
Please follow the instructions detailed on the extension website to whitelist `unaccent` and `trigram` for the user configured in `config/database.yml`. Please follow the instructions detailed on the extension website to whitelist `unaccent` and `trigram` for the user configured in `config/database.yml`.
- Some users may want to use another DBMS than PostgreSQL. - Some users may want to use another DBMS than PostgreSQL.
This is currently not supported, because of some PostgreSQL specific instructions that cannot be efficiently handled with the ActiveRecord ORM: This is currently not supported, because of some PostgreSQL specific instructions that cannot be efficiently handled with the ActiveRecord ORM:
- `app/controllers/api/members_controllers.rb@list` is using `ILIKE` - `app/controllers/api/members_controllers.rb@list` is using `ILIKE`
- `app/controllers/api/invoices_controllers.rb@list` is using `ILIKE` and `date_trunc()` - `app/controllers/api/invoices_controllers.rb@list` is using `ILIKE` and `date_trunc()`
@ -386,8 +386,8 @@ To create it, please follow these instructions:
- `db/migrate/20150604131525_add_meta_data_to_notifications.rb` is using [jsonb](https://www.postgresql.org/docs/9.4/static/datatype-json.html), a PostgreSQL 9.4+ datatype. - `db/migrate/20150604131525_add_meta_data_to_notifications.rb` is using [jsonb](https://www.postgresql.org/docs/9.4/static/datatype-json.html), a PostgreSQL 9.4+ datatype.
- `db/migrate/20160915105234_add_transformation_to_o_auth2_mapping.rb` is using [jsonb](https://www.postgresql.org/docs/9.4/static/datatype-json.html), a PostgreSQL 9.4+ datatype. - `db/migrate/20160915105234_add_transformation_to_o_auth2_mapping.rb` is using [jsonb](https://www.postgresql.org/docs/9.4/static/datatype-json.html), a PostgreSQL 9.4+ datatype.
- If you intend to contribute to the project code, you will need to run the test suite with `rake test`. - If you intend to contribute to the project code, you will need to run the test suite with `rake test`.
This also requires your user to have the _SUPERUSER_ role. This also requires your user to have the _SUPERUSER_ role.
Please see the [known issues](#known-issues) section for more informations about this. Please see the [known issues](#known-issues) section for more information about this.
<a name="elasticsearch"></a> <a name="elasticsearch"></a>
## ElasticSearch ## ElasticSearch
@ -518,7 +518,7 @@ Back-end translations uses the [Ruby on Rails syntax](http://guides.rubyonrails.
In each cases, some inline comments are included in the localisation files. In each cases, some inline comments are included in the localisation files.
They can be recognized as they start with the sharp character (#). They can be recognized as they start with the sharp character (#).
These comments are not required to be translated, they are intended to help the translator to have some context informations about the sentence to translate. These comments are not required to be translated, they are intended to help the translator to have some context information about the sentence to translate.
<a name="i18n-configuration"></a> <a name="i18n-configuration"></a>
@ -652,7 +652,7 @@ Fab-manager can be connected to a [Single Sign-On](https://en.wikipedia.org/wiki
Currently OAuth 2 is the only supported protocol for SSO authentication. Currently OAuth 2 is the only supported protocol for SSO authentication.
For an example of how to use configure a SSO in Fab-manager, please read [sso_with_github.md](doc/sso_with_github.md). For an example of how to use configure a SSO in Fab-manager, please read [sso_with_github.md](doc/sso_with_github.md).
Developers may find informations on how to implement their own authentication protocol in [sso_authentication.md](doc/sso_authentication.md). Developers may find information on how to implement their own authentication protocol in [sso_authentication.md](doc/sso_authentication.md).
<a name="known-issues"></a> <a name="known-issues"></a>
## Known issues ## Known issues
@ -692,10 +692,10 @@ Developers may find informations on how to implement their own authentication pr
DO NOT do this in a production environment, unless you know what you're doing: this could lead to a serious security issue. DO NOT do this in a production environment, unless you know what you're doing: this could lead to a serious security issue.
- With Ubuntu 16.04, ElasticSearch may refuse to start even after having configured the service with systemd. - With Ubuntu 16.04, ElasticSearch may refuse to start even after having configured the service with systemd.
To solve this issue, you may have to set `START_DAEMON` to `true` in `/etc/default/elasticsearch`. To solve this issue, you may have to set `START_DAEMON` to `true` in `/etc/default/elasticsearch`.
Then reload ElasticSearch with: Then reload ElasticSearch with:
```bash ```bash
sudo systemctl restart elasticsearch.service sudo systemctl restart elasticsearch.service
``` ```

View File

@ -71,7 +71,7 @@ config(['$httpProvider', 'AuthProvider', "growlProvider", "unsavedWarningsConfig
// Angular-xeditable (click-to-edit elements, used in admin backoffice) // Angular-xeditable (click-to-edit elements, used in admin backoffice)
editableOptions.theme = 'bs3'; editableOptions.theme = 'bs3';
// Alter the UI-Router's $state, registering into some informations concerning the previous $state. // Alter the UI-Router's $state, registering into some information concerning the previous $state.
// This is used to allow the user to navigate to the previous state // This is used to allow the user to navigate to the previous state
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){ $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
$state.prevState = fromState; $state.prevState = fromState;

View File

@ -217,7 +217,7 @@ Application.Controllers.controller "GraphsController", ["$scope", "$state", "$ro
for it_st in [0.. cur_type.subtypes.length-1] by 1 # when we've found it, iterate over its subtypes ... for it_st in [0.. cur_type.subtypes.length-1] by 1 # when we've found it, iterate over its subtypes ...
cur_subtype = cur_type.subtypes[it_st] cur_subtype = cur_type.subtypes[it_st]
if subgroup.key == cur_subtype.key # ... which match $SUBTYPE if subgroup.key == cur_subtype.key # ... which match $SUBTYPE
# then we construct NVD3 dataSource according to these informations # then we construct NVD3 dataSource according to these information
dataSource = dataSource =
values: [] values: []
key: cur_subtype.label key: cur_subtype.label

View File

@ -125,7 +125,7 @@ Application.Controllers.controller "InvoicesController", ["$scope", "$state", 'I
sample = sample.replace(/y+(?![^\[]*])/g, (match, offset, string) -> sample = sample.replace(/y+(?![^\[]*])/g, (match, offset, string) ->
padWithZeros(8, match.length) padWithZeros(8, match.length)
) )
# date informations # date information
sample = sample.replace(/[YMD]+(?![^\[]*])/g, (match, offset, string) -> sample = sample.replace(/[YMD]+(?![^\[]*])/g, (match, offset, string) ->
$scope.today.format(match) $scope.today.format(match)
) )
@ -163,7 +163,7 @@ Application.Controllers.controller "InvoicesController", ["$scope", "$state", 'I
sample = sample.replace(/d+(?![^\[]*])/g, (match, offset, string) -> sample = sample.replace(/d+(?![^\[]*])/g, (match, offset, string) ->
padWithZeros(2, match.length) padWithZeros(2, match.length)
) )
# date informations # date information
sample = sample.replace(/[YMD]+(?![^\[]*])/g, (match, offset, string) -> sample = sample.replace(/[YMD]+(?![^\[]*])/g, (match, offset, string) ->
$scope.today.format(match) $scope.today.format(match)
) )
@ -334,7 +334,7 @@ Application.Controllers.controller "InvoicesController", ["$scope", "$state", 'I
## ##
# Callback to save the value of the legal informations zone when editing is done # Callback to save the value of the legal information zone when editing is done
## ##
$scope.legalsEditEnd = (event) -> $scope.legalsEditEnd = (event) ->
parsed = parseHtml($scope.invoice.legals.content) parsed = parseHtml($scope.invoice.legals.content)

View File

@ -303,7 +303,7 @@ Application.Controllers.controller "ReserveMachineController", ["$scope", "$stat
## fullCalendar event. An already booked slot that the user want to modify ## fullCalendar event. An already booked slot that the user want to modify
$scope.slotToModify = null $scope.slotToModify = null
## indicates the state of the current view : calendar or plans informations ## indicates the state of the current view : calendar or plans information
$scope.plansAreShown = false $scope.plansAreShown = false
## will store the user's plan if he choosed to buy one ## will store the user's plan if he choosed to buy one

View File

@ -14,10 +14,10 @@ Application.Controllers.controller "MembersController", ["$scope", 'Member', 'me
### PUBLIC SCOPE ### ### PUBLIC SCOPE ###
## currently displayed page of members ## currently displayed page of members
$scope.page = 1 $scope.page = 1
## members list ## members list
$scope.members = membersPromise $scope.members = membersPromise
@ -31,12 +31,12 @@ Application.Controllers.controller "MembersController", ["$scope", 'Member', 'me
$scope.showNextMembers = -> $scope.showNextMembers = ->
$scope.page += 1 $scope.page += 1
Member.query { Member.query {
requested_attributes:'[profile]', requested_attributes:'[profile]',
page: $scope.page, page: $scope.page,
size: MEMBERS_PER_PAGE size: MEMBERS_PER_PAGE
}, (members) -> }, (members) ->
$scope.members = $scope.members.concat(members) $scope.members = $scope.members.concat(members)
if (!members[0] || members[0].maxMembers <= $scope.members.length) if (!members[0] || members[0].maxMembers <= $scope.members.length)
$scope.noMoreResults = true $scope.noMoreResults = true
@ -260,7 +260,7 @@ Application.Controllers.controller "EditProfileController", ["$scope", "$rootSco
## ##
Application.Controllers.controller "ShowProfileController", ["$scope", 'memberPromise', 'SocialNetworks', ($scope, memberPromise, SocialNetworks) -> Application.Controllers.controller "ShowProfileController", ["$scope", 'memberPromise', 'SocialNetworks', ($scope, memberPromise, SocialNetworks) ->
## Selected user's informations ## Selected user's information
$scope.user = memberPromise # DEPENDENCY WITH NAVINUM GAMIFICATION PLUGIN !!!! $scope.user = memberPromise # DEPENDENCY WITH NAVINUM GAMIFICATION PLUGIN !!!!
## List of social networks associated with this user and toggle 'show all' state ## List of social networks associated with this user and toggle 'show all' state

View File

@ -20,13 +20,13 @@ Application.Controllers.controller "CompleteProfileController", ["$scope", "$roo
## name of the current fablab application (eg. "Fablab de la Casemate") ## name of the current fablab application (eg. "Fablab de la Casemate")
$scope.fablabName = settingsPromise.fablab_name $scope.fablabName = settingsPromise.fablab_name
## informations from the current SSO provider ## information from the current SSO provider
$scope.activeProvider = activeProviderPromise $scope.activeProvider = activeProviderPromise
## list of user's groups (student/standard/...) ## list of user's groups (student/standard/...)
$scope.groups = groupsPromise $scope.groups = groupsPromise
## current user, contains informations retrieved from the SSO ## current user, contains information retrieved from the SSO
$scope.user = memberPromise $scope.user = memberPromise
## disallow the user to change his password as he connect from SSO ## disallow the user to change his password as he connect from SSO
@ -177,4 +177,4 @@ Application.Controllers.controller "CompleteProfileController", ["$scope", "$roo
## !!! MUST BE CALLED AT THE END of the controller ## !!! MUST BE CALLED AT THE END of the controller
initialize() initialize()
] ]

View File

@ -109,7 +109,7 @@ Application.Controllers.controller "ReserveTrainingController", ["$scope", "$sta
groupObj.plans.push(plan) if plan.group_id == group.id groupObj.plans.push(plan) if plan.group_id == group.id
$scope.plansClassifiedByGroup.push(groupObj) $scope.plansClassifiedByGroup.push(groupObj)
## indicates the state of the current view : calendar or plans informations ## indicates the state of the current view : calendar or plans information
$scope.plansAreShown = false $scope.plansAreShown = false
## indicates if the selected training was validated (ie. added to the shopping cart) ## indicates if the selected training was validated (ie. added to the shopping cart)

View File

@ -1,4 +1,4 @@
<h2 translate>{{ 'general_informations' }}</h2> <h2 translate>{{ 'general_information' }}</h2>
<input type="hidden" name="_method" value="{{method}}"> <input type="hidden" name="_method" value="{{method}}">
<div class="form-group" ng-class="{'has-error': planForm['plan[base_name]'].$dirty && planForm['plan[base_name]'].$invalid}"> <div class="form-group" ng-class="{'has-error': planForm['plan[base_name]'].$dirty && planForm['plan[base_name]'].$invalid}">
@ -155,4 +155,4 @@
<span ng-repeat="partner in plan.partners"> <span ng-repeat="partner in plan.partners">
<input type="text" class="form-control" disabled value="{{ partner.first_name}} {{partner.last_name }}"> <input type="text" class="form-control" disabled value="{{ partner.first_name}} {{partner.last_name }}">
</span> </span>
</div> </div>

View File

@ -68,7 +68,7 @@
<section class="widget panel b-a m m-t-lg"> <section class="widget panel b-a m m-t-lg">
<div class="panel-heading b-b small"> <div class="panel-heading b-b small">
<h3 translate>{{ 'informations_and_booking' }}</h3> <h3 translate>{{ 'information_and_booking' }}</h3>
</div> </div>
<div class="panel-content wrapper"> <div class="panel-content wrapper">

View File

@ -61,7 +61,7 @@
</div> </div>
<br ng-show="!plan.plan_file_url"> <!-- TODO Refacto with CSS --> <br ng-show="!plan.plan_file_url"> <!-- TODO Refacto with CSS -->
<a ng-href="{{ plan.plan_file_url }}" ng-show="plan.plan_file_url" target="_blank" translate>{{ 'more_informations' }}</a> <a ng-href="{{ plan.plan_file_url }}" ng-show="plan.plan_file_url" target="_blank" translate>{{ 'more_information' }}</a>
</div> </div>
</div> </div>

View File

@ -313,7 +313,7 @@
<!-- allow receive newsletter --> <!-- allow receive newsletter -->
<div class="form-group"> <div class="form-group">
<label for="allowNewsletter" translate>{{ 'i_accept_to_receive_informations_from_the_fablab' }}</label> <label for="allowNewsletter" translate>{{ 'i_accept_to_receive_information_from_the_fablab' }}</label>
<input bs-switch <input bs-switch
ng-model="user.is_allow_newsletter" ng-model="user.is_allow_newsletter"
id="allowNewsletter" id="allowNewsletter"

View File

@ -213,7 +213,7 @@ class User < ActiveRecord::Base
where(provider: auth.provider, uid: auth.uid).first_or_create.tap do |user| where(provider: auth.provider, uid: auth.uid).first_or_create.tap do |user|
# execute this regardless of whether record exists or not (-> User#tap) # execute this regardless of whether record exists or not (-> User#tap)
# this will init or update the user thanks to the informations retrieved from the SSO # this will init or update the user thanks to the information retrieved from the SSO
user.profile ||= Profile.new user.profile ||= Profile.new
auth.info.mapping.each do |key, value| auth.info.mapping.each do |key, value|
user.set_data_from_sso_mapping(key, value) user.set_data_from_sso_mapping(key, value)

View File

@ -27,7 +27,7 @@ module PDF
image StringIO.new( Base64.decode64(img_b64.value) ), :fit => [415,40] image StringIO.new( Base64.decode64(img_b64.value) ), :fit => [415,40]
move_down 20 move_down 20
font('Open-Sans', :size => 10) do font('Open-Sans', :size => 10) do
# general informations # general information
if invoice.is_a?(Avoir) if invoice.is_a?(Avoir)
text I18n.t('invoices.refund_invoice_reference', REF:invoice.reference), :leading => 3 text I18n.t('invoices.refund_invoice_reference', REF:invoice.reference), :leading => 3
else else
@ -47,7 +47,7 @@ module PDF
text I18n.t('invoices.invoice_issued_on_DATE', DATE:I18n.l(invoice.created_at.to_date)) text I18n.t('invoices.invoice_issued_on_DATE', DATE:I18n.l(invoice.created_at.to_date))
end end
# user/organization's informations # user/organization's information
if invoice&.user&.profile&.organization if invoice&.user&.profile&.organization
name = invoice.user.profile.organization.name name = invoice.user.profile.organization.name
else else
@ -261,7 +261,7 @@ module PDF
end end
text payment_verbose text payment_verbose
# important informations # important information
move_down 40 move_down 40
txt = parse_html(Setting.find_by({name: 'invoice_text'}).value) txt = parse_html(Setting.find_by({name: 'invoice_text'}).value)
txt.each_line do |line| txt.each_line do |line|
@ -269,7 +269,7 @@ module PDF
end end
# address and legals informations # address and legals information
move_down 40 move_down 40
txt = parse_html(Setting.find_by({name: 'invoice_legals'}).value) txt = parse_html(Setting.find_by({name: 'invoice_legals'}).value)
txt.each_line do |line| txt.each_line do |line|

View File

@ -1,5 +1,5 @@
json.title notification.notification_type json.title notification.notification_type
json.description t('.account_imported_from_PROVIDER_(UID)_has_completed_its_informations_html', json.description t('.account_imported_from_PROVIDER_(UID)_has_completed_its_information_html',
PROVIDER: notification.attached_object.provider, PROVIDER: notification.attached_object.provider,
UID: notification.attached_object.uid) UID: notification.attached_object.uid)
json.url notification_url(notification, format: :json) json.url notification_url(notification, format: :json)

View File

@ -4,7 +4,7 @@
<p><%= t('.body.new_account_imported', ID: @attached_object.id, PROVIDER: provider.name) %><br/> <p><%= t('.body.new_account_imported', ID: @attached_object.id, PROVIDER: provider.name) %><br/>
<%= t('.body.provider_uid', UID:@attached_object.uid) %></p> <%= t('.body.provider_uid', UID:@attached_object.uid) %></p>
<% if provider.sso_fields.size > 1 %> <% if provider.sso_fields.size > 1 %>
<p><%= t('.body.known_informations') %></p> <p><%= t('.body.known_information') %></p>
<ul> <ul>
<% for field in provider.sso_fields %> <% for field in provider.sso_fields %>
<% value = @attached_object.get_data_from_sso_mapping(field) %> <% value = @attached_object.get_data_from_sso_mapping(field) %>

View File

@ -80,7 +80,7 @@ en:
phone_number: "Phone number" phone_number: "Phone number"
phone_number_is_required: "Phone number is required." phone_number_is_required: "Phone number is required."
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I authorize FabLab users, registered on the site, to contact me" i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "I authorize FabLab users, registered on the site, to contact me"
i_accept_to_receive_informations_from_the_fablab: "I accept to receive informations from the FabLab" 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" i_ve_read_and_i_accept_: "I've read and I accept"
_the_fablab_policy: "the FabLab policy" _the_fablab_policy: "the FabLab policy"
@ -200,7 +200,7 @@ en:
i_choose_that_plan: "I choose that plan" i_choose_that_plan: "I choose that plan"
i_subscribe_online: "I subscribe online" i_subscribe_online: "I subscribe online"
i_already_subscribed: "I already subscribed" i_already_subscribed: "I already subscribed"
more_informations: "More informations" more_information: "More information"
your_subscription_expires_on_the_DATE: "Your subscription expires on the {{DATE}}" # angular interpolation your_subscription_expires_on_the_DATE: "Your subscription expires on the {{DATE}}" # angular interpolation
my_group: "My group" my_group: "My group"
his_group: "{GENDER, select, male{His} female{Her} other{Its}} group" # messageFormat interpolation his_group: "{GENDER, select, male{His} female{Her} other{Its}} group" # messageFormat interpolation

View File

@ -80,7 +80,7 @@ fr:
phone_number: "Numéro de téléphone" phone_number: "Numéro de téléphone"
phone_number_is_required: "Le numéro de téléphone est requis." phone_number_is_required: "Le numéro de téléphone est requis."
i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "J'autorise les utilisateurs du Fab Lab inscrits sur le site à me contacter" i_authorize_Fablab_users_registered_on_the_site_to_contact_me: "J'autorise les utilisateurs du Fab Lab inscrits sur le site à me contacter"
i_accept_to_receive_informations_from_the_fablab: "J'accepte de recevoir des informations du Fab Lab" 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" i_ve_read_and_i_accept_: "J'ai lu et j'accepte"
_the_fablab_policy: "la charte d'utilisation du Fab Lab" _the_fablab_policy: "la charte d'utilisation du Fab Lab"
@ -201,7 +201,7 @@ fr:
i_choose_that_plan: "Je choisis cette formule" i_choose_that_plan: "Je choisis cette formule"
i_subscribe_online: "Je m'abonne en ligne" i_subscribe_online: "Je m'abonne en ligne"
i_already_subscribed: "Je suis déjà abonné" i_already_subscribed: "Je suis déjà abonné"
more_informations: "Plus d'infos" more_information: "Plus d'infos"
your_subscription_expires_on_the_DATE: "Votre abonnement expire au {{DATE}}" # angular interpolation your_subscription_expires_on_the_DATE: "Votre abonnement expire au {{DATE}}" # angular interpolation
my_group: "Mon groupe" my_group: "Mon groupe"
his_group: "Son groupe" # messageFormat interpolation his_group: "Son groupe" # messageFormat interpolation
@ -228,7 +228,7 @@ fr:
# détails d'un événement et réservation # détails d'un événement et réservation
event_description: "Description de l'évènement" event_description: "Description de l'évènement"
downloadable_documents: "Documents à télécharger" downloadable_documents: "Documents à télécharger"
informations_and_booking: "Informations et réservation" information_and_booking: "Informations et réservation"
beginning: "Début :" beginning: "Début :"
ending: "Fin :" ending: "Fin :"
opening_hours: "Horaires :" opening_hours: "Horaires :"

View File

@ -199,7 +199,7 @@ en:
plan: plan:
# subscription plan edition form # subscription plan edition form
general_informations: "General informations" general_information: "General information"
name_length_must_be_less_than_24_characters: "Name length must be less than 24 characters." name_length_must_be_less_than_24_characters: "Name length must be less than 24 characters."
type_is_required: "Type is required." type_is_required: "Type is required."
group: "Group" group: "Group"
@ -368,4 +368,4 @@ en:
unable_to_apply_the_coupon_because_expired: "Unable to apply the coupon: this code has expired." unable_to_apply_the_coupon_because_expired: "Unable to apply the coupon: this code has expired."
unable_to_apply_the_coupon_because_sold_out: "Unable to apply the coupon: this code reached its quota." unable_to_apply_the_coupon_because_sold_out: "Unable to apply the coupon: this code reached its quota."
unable_to_apply_the_coupon_because_already_used: "Unable to apply the coupon: you have already used this code once before." unable_to_apply_the_coupon_because_already_used: "Unable to apply the coupon: you have already used this code once before."
unable_to_apply_the_coupon_because_rejected: "This code does not exists." unable_to_apply_the_coupon_because_rejected: "This code does not exists."

View File

@ -186,7 +186,7 @@ en:
notify_admin_member_create_reservation: notify_admin_member_create_reservation:
a_RESERVABLE_reservation_was_made_by_USER_html: "A <strong><em>%{RESERVABLE}</em></strong> reservation was made by <strong><em>%{USER}</em></strong>." a_RESERVABLE_reservation_was_made_by_USER_html: "A <strong><em>%{RESERVABLE}</em></strong> reservation was made by <strong><em>%{USER}</em></strong>."
notify_admin_profile_complete: notify_admin_profile_complete:
account_imported_from_PROVIDER_(UID)_has_completed_its_informations_html: "Account imported from <strong><em>%{PROVIDER} </strong> (%{UID})</em> has completed its informations." account_imported_from_PROVIDER_(UID)_has_completed_its_information_html: "Account imported from <strong><em>%{PROVIDER} </strong> (%{UID})</em> has completed its information."
notify_admin_slot_is_canceled: notify_admin_slot_is_canceled:
USER_s_reservation_on_the_DATE_was_cancelled_remember_to_generate_a_refund_invoice_if_applicable_html: "<strong><em>%{USER}</em></strong>'s reservation, on the %{DATE}, was cancelled. Remember to generate a refund invoice if applicable." USER_s_reservation_on_the_DATE_was_cancelled_remember_to_generate_a_refund_invoice_if_applicable_html: "<strong><em>%{USER}</em></strong>'s reservation, on the %{DATE}, was cancelled. Remember to generate a refund invoice if applicable."
notify_admin_slot_is_modified: notify_admin_slot_is_modified:
@ -320,4 +320,4 @@ en:
price_category: price_category:
# initial price's category for events, created to replace the old "reduced amount" property # initial price's category for events, created to replace the old "reduced amount" property
reduced_fare: "Reduced fare" reduced_fare: "Reduced fare"
reduced_fare_if_you_are_under_25_student_or_unemployed: "Reduced fare if you are under 25, student or unemployed." reduced_fare_if_you_are_under_25_student_or_unemployed: "Reduced fare if you are under 25, student or unemployed."

View File

@ -198,7 +198,7 @@ en:
body: body:
new_account_imported: "A new user account (ID: %{ID}) has been imported to the website via %{PROVIDER}." new_account_imported: "A new user account (ID: %{ID}) has been imported to the website via %{PROVIDER}."
provider_uid: "its provider ID is: " provider_uid: "its provider ID is: "
known_informations: "Here is what we know about this provider:" known_information: "Here is what we know about this provider:"
address_already_used: "This address is already associated with another user" address_already_used: "This address is already associated with another user"
no_more_info_available: "No other info about this user can be provided before he completes his profile." no_more_info_available: "No other info about this user can be provided before he completes his profile."

View File

@ -198,7 +198,7 @@ fr:
body: body:
new_account_imported: "Un nouveau compte utilisateur (ID: %{ID}) vient d'être importé sur la plate-forme via %{PROVIDER}." new_account_imported: "Un nouveau compte utilisateur (ID: %{ID}) vient d'être importé sur la plate-forme via %{PROVIDER}."
provider_uid: "Son identifiant fournisseur est %{UID}." provider_uid: "Son identifiant fournisseur est %{UID}."
known_informations: "Voici les informations connues à son propos :" known_information: "Voici les informations connues à son propos :"
address_already_used: "Cette adresse est déjà associée à un autre utilisateur" address_already_used: "Cette adresse est déjà associée à un autre utilisateur"
no_more_info_available: "Aucune autre information sur cet utilisateur n'est disponible tant que celui-ci n'aura pas complété son profil." no_more_info_available: "Aucune autre information sur cet utilisateur n'est disponible tant que celui-ci n'aura pas complété son profil."

View File

@ -9,13 +9,13 @@ For this guide, we will use [GitHub](https://developer.github.com/v3/oauth/) as
Visit https://github.com/settings/applications/new to register your instance. Visit https://github.com/settings/applications/new to register your instance.
- In `Application name`, we advise you to set the same name as your fab-manager's instance title. - In `Application name`, we advise you to set the same name as your fab-manager's instance title.
- In `Homepage URL`, put the public URL where your fab-manager's instance is located (eg. https://example.com). - In `Homepage URL`, put the public URL where your fab-manager's instance is located (eg. https://example.com).
- In `Authorization callback URL`, you must specify an URL that will match this scheme: https://example.com/users/auth/oauth2-github/callback - In `Authorization callback URL`, you must specify an URL that will match this scheme: https://example.com/users/auth/oauth2-github/callback
- **example.com** is your own fab-manager's address - **example.com** is your own fab-manager's address
- **oauth2-github** match the provider's "strategy name" in the fab-manager. - **oauth2-github** match the provider's "strategy name" in the fab-manager.
It is composed of: **SSO's protocol**, _dash_, **slug of the provider's name**. It is composed of: **SSO's protocol**, _dash_, **slug of the provider's name**.
If you have a doubt about what it will be, start by creating the authentication provider in your fab-manager (see below), then the strategy's name will be shown in the providers list. If you have a doubt about what it will be, start by creating the authentication provider in your fab-manager (see below), then the strategy's name will be shown in the providers list.
- You'll be redirected to a page displaying two important informations: your **Client ID** and your **Client Secret**. - You'll be redirected to a page displaying two important information: your **Client ID** and your **Client Secret**.
- Now go to your fab-manager's instance, login as an administrator, go to `Users management` and `Authentication`. - Now go to your fab-manager's instance, login as an administrator, go to `Users management` and `Authentication`.
Click `Add a new authentication provider`, and select _OAuth 2.0_ in the `Authentication type` drop-down list. Click `Add a new authentication provider`, and select _OAuth 2.0_ in the `Authentication type` drop-down list.
@ -27,7 +27,7 @@ For this guide, we will use [GitHub](https://developer.github.com/v3/oauth/) as
- Fulfill the form with the following parameters: - Fulfill the form with the following parameters:
- **Common URL**: `https://github.com/login/oauth/` This is the common part in the URLs of the two following parameters. - **Common URL**: `https://github.com/login/oauth/` This is the common part in the URLs of the two following parameters.
- **Authorization endpoint**: `authorize` This URL can be found [here](https://developer.github.com/v3/oauth/). - **Authorization endpoint**: `authorize` This URL can be found [here](https://developer.github.com/v3/oauth/).
- **Token Acquisition Endpoint**: `access_token` This URL can be found [here](https://developer.github.com/v3/oauth/). - **Token Acquisition Endpoint**: `access_token` This URL can be found [here](https://developer.github.com/v3/oauth/).
- **Profile edition URL**: `https://github.com/settings/profile` This is the URL where you are directed when you click on `Edit profile` in your GitHub dashboard. - **Profile edition URL**: `https://github.com/settings/profile` This is the URL where you are directed when you click on `Edit profile` in your GitHub dashboard.
- **Client identifier**: Your Client ID, collected just before. - **Client identifier**: Your Client ID, collected just before.
- **Client secret**: Your Client Secret, collected just before. - **Client secret**: Your Client Secret, collected just before.
@ -40,23 +40,23 @@ For this guide, we will use [GitHub](https://developer.github.com/v3/oauth/) as
- **API endpoint URL**: `https://api.github.com/user` Here you can set a complete URL **OR** only an endpoint referring to the previously set **Common URL**. - **API endpoint URL**: `https://api.github.com/user` Here you can set a complete URL **OR** only an endpoint referring to the previously set **Common URL**.
- **API type**: `JSON` Only JSON API are currently supported - **API type**: `JSON` Only JSON API are currently supported
- **API fields**: `id` According to the GitHub API documentation, this is the name of the JSON field which uniquely identify the user. - **API fields**: `id` According to the GitHub API documentation, this is the name of the JSON field which uniquely identify the user.
Once you have completed and validated the mapping's line, an information button will be available. Once you have completed and validated the mapping's line, an information button will be available.
A click on it will show you the type of data expected from the API and, in some cases, you'll be able to configure a transformation. A click on it will show you the type of data expected from the API and, in some cases, you'll be able to configure a transformation.
For example, the `Profile.gender` field require a boolean attribute but your API may return strings like `man / woman`. For example, the `Profile.gender` field require a boolean attribute but your API may return strings like `man / woman`.
In this case, you'll be able to configure a transformation for `man` <-> `true` and `woman` <-> `false`. In this case, you'll be able to configure a transformation for `man` <-> `true` and `woman` <-> `false`.
Now, you are free to map more fields, like `Profile.github` to `html_url`, or `Profile.avatar` to `avatar_url`... Now, you are free to map more fields, like `Profile.github` to `html_url`, or `Profile.avatar` to `avatar_url`...
- Once you are done, your newly created authentication provider, will be marked as **Pending** in the authentication providers list. - Once you are done, your newly created authentication provider, will be marked as **Pending** in the authentication providers list.
To set it as the current active provider, you must open a terminal on the hosting server (and/or container) and run the following commands: To set it as the current active provider, you must open a terminal on the hosting server (and/or container) and run the following commands:
```bash ```bash
# replace GitHub with the name of the provider you just created # replace GitHub with the name of the provider you just created
rake fablab:switch_auth_provider[GitHub] rake fablab:switch_auth_provider[GitHub]
``` ```
- As the command just prompted you, you have to re-compile the assets - As the command just prompted you, you have to re-compile the assets
- In development, `rake tmp:clear` will do the job. - In development, `rake tmp:clear` will do the job.
- In production with Docker, `rm -rf public/assets`, followed by `docker-compose run --rm fabmanager bundle exec rake assets:precompile` - In production with Docker, `rm -rf public/assets`, followed by `docker-compose run --rm fabmanager bundle exec rake assets:precompile`
- Then restart the web-server or the container. - Then restart the web-server or the container.