Skip to content

Commit

Permalink
Merge branch 'dev' for release 2.4.1
Browse files Browse the repository at this point in the history
  • Loading branch information
sylvainbx committed Oct 11, 2016
2 parents dff1558 + 1bb05da commit ddde96f
Show file tree
Hide file tree
Showing 31 changed files with 138 additions and 96 deletions.
2 changes: 1 addition & 1 deletion .fabmanager-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.4.0
2.4.1
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog Fab Manager

## v2.4.1 2016 October 11

- Fix a bug: unable to share a project/event without image on social networks
- Fix a bug: after creating an element in the admin calendar, browsing through the calendar and coming back cause the element to appear duplicated
- Fix a bug: after deleting an element in the admin calendar, the confirmation message is wrong and an error is logged in the console
- Fix a bug: erroneous syntax in docker env example file

## v2.4.0 2016 October 4

- RSS feeds to follow new projects and events published
Expand Down
8 changes: 4 additions & 4 deletions LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
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
their licences.
Please refer to the libraries documentation for more information about
their licences.

Complete lists of used libraries are available in `bower.json` for the
EcmaScript libraries and in `Gemfile` for Ruby libraries.




GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Expand Down Expand Up @@ -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
copy of the Program in return for a fee.

END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
32 changes: 16 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ This value is only used when deploying with Docker, otherwise this is configured
POSTGRES_PASSWORD

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`.

REDIS_HOST
Expand Down Expand Up @@ -222,11 +222,11 @@ Identifier of your Google Analytics account.

Unique identifier of your [Disqus](http://www.disqus.com) forum.
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

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).

TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_ACCESS_TOKEN & TWITTER_ACCESS_TOKEN_SECRET
Expand All @@ -241,8 +241,8 @@ If you do so, you'll be able to customize and get statistics about project share

LOG_LEVEL

This parameter configures the logs verbosity.
Available log levels can be found [here](http://guides.rubyonrails.org/debugging_rails_applications.html#log-levels).
This parameter configures the logs verbosity.
Available log levels can be found [here](http://guides.rubyonrails.org/debugging_rails_applications.html#log-levels).

ALLOWED_EXTENSIONS

Expand Down Expand Up @@ -361,7 +361,7 @@ To create it, please follow these instructions:
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.

<a name="postgresql-limitations"></a>
### PostgreSQL Limitations

Expand All @@ -370,14 +370,14 @@ To create it, please follow these instructions:
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.
- Set your user as _SUPERUSER_; run the following command in `psql` (after replacing `sleede` with you user name):

```sql
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`.
- 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:
- `app/controllers/api/members_controllers.rb@list` is using `ILIKE`
- `app/controllers/api/invoices_controllers.rb@list` is using `ILIKE` and `date_trunc()`
Expand All @@ -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/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`.
This also requires your user to have the _SUPERUSER_ role.
Please see the [known issues](#known-issues) section for more informations about this.
This also requires your user to have the _SUPERUSER_ role.
Please see the [known issues](#known-issues) section for more information about this.

<a name="elasticsearch"></a>
## ElasticSearch
Expand Down Expand Up @@ -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.
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>
Expand Down Expand Up @@ -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.
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>
## Known issues
Expand Down Expand Up @@ -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.

- 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`.
Then reload ElasticSearch with:

```bash
sudo systemctl restart elasticsearch.service
```
Expand Down
2 changes: 1 addition & 1 deletion app/assets/javascripts/app.js.erb
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ config(['$httpProvider', 'AuthProvider', "growlProvider", "unsavedWarningsConfig
// Angular-xeditable (click-to-edit elements, used in admin backoffice)
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
$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
$state.prevState = fromState;
Expand Down
19 changes: 15 additions & 4 deletions app/assets/javascripts/controllers/admin/calendar.coffee.erb
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ Application.Controllers.controller "AdminCalendarController", ["$scope", "$state
calendarEventClickCb(event, jsEvent, view)
eventRender: (event, element, view) ->
eventRenderCb(event, element)
loading: (isLoading, view ) ->
loadingCb(isLoading, view)



Expand Down Expand Up @@ -181,11 +183,8 @@ Application.Controllers.controller "AdminCalendarController", ["$scope", "$state
if ($(jsEvent.target).hasClass('remove-event'))
Availability.delete id: event.id, ->
uiCalendarConfig.calendars.calendar.fullCalendar 'removeEvents', event.id
for _event, i in $scope.eventSources[0].events
if _event.id == event.id
$scope.eventSources[0].events.splice(i,1)

growl.success(_t('the_slot_START-END_has_been_successfully_deleted', {START:+moment(event.start).format('LL LT'), END:moment(event.end).format('LT')}))
growl.success(_t('the_slot_START-END_has_been_successfully_deleted', {START:moment(event.start).format('LL LT'), END:moment(event.end).format('LT')}))
,->
growl.error(_t('unable_to_delete_the_slot_START-END_because_it_s_already_reserved_by_a_member', {START:+moment(event.start).format('LL LT'), END:moment(event.end).format('LT')}))
# if the user has only clicked on the event, display its reservations
Expand All @@ -207,8 +206,20 @@ Application.Controllers.controller "AdminCalendarController", ["$scope", "$state
for tag in event.tags
html += "<span class='label label-success text-white'>#{tag.name}</span> "
element.find('.fc-title').append("<br/>"+html)
# force return to prevent coffee-script auto-return to return random value (possiblity falsy)
return



##
# Triggered when resource fetching starts/stops.
# @see https://fullcalendar.io/docs/resource_data/loading/
##
loadingCb = (isLoading, view) ->
if (isLoading)
# we remove existing events when fetching starts to prevent duplicates
uiCalendarConfig.calendars.calendar.fullCalendar('removeEvents')

]


Expand Down
2 changes: 1 addition & 1 deletion app/assets/javascripts/controllers/admin/graphs.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -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 ...
cur_subtype = cur_type.subtypes[it_st]
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 =
values: []
key: cur_subtype.label
Expand Down
6 changes: 3 additions & 3 deletions app/assets/javascripts/controllers/admin/invoices.coffee.erb
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Application.Controllers.controller "InvoicesController", ["$scope", "$state", 'I
sample = sample.replace(/y+(?![^\[]*])/g, (match, offset, string) ->
padWithZeros(8, match.length)
)
# date informations
# date information
sample = sample.replace(/[YMD]+(?![^\[]*])/g, (match, offset, string) ->
$scope.today.format(match)
)
Expand Down Expand Up @@ -163,7 +163,7 @@ Application.Controllers.controller "InvoicesController", ["$scope", "$state", 'I
sample = sample.replace(/d+(?![^\[]*])/g, (match, offset, string) ->
padWithZeros(2, match.length)
)
# date informations
# date information
sample = sample.replace(/[YMD]+(?![^\[]*])/g, (match, offset, string) ->
$scope.today.format(match)
)
Expand Down Expand Up @@ -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) ->
parsed = parseHtml($scope.invoice.legals.content)
Expand Down
2 changes: 1 addition & 1 deletion app/assets/javascripts/controllers/machines.coffee.erb
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ Application.Controllers.controller "ReserveMachineController", ["$scope", "$stat
## fullCalendar event. An already booked slot that the user want to modify
$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

## will store the user's plan if he choosed to buy one
Expand Down
12 changes: 6 additions & 6 deletions app/assets/javascripts/controllers/members.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ Application.Controllers.controller "MembersController", ["$scope", 'Member', 'me


### PUBLIC SCOPE ###

## currently displayed page of members
$scope.page = 1

## members list
$scope.members = membersPromise

Expand All @@ -31,12 +31,12 @@ Application.Controllers.controller "MembersController", ["$scope", 'Member', 'me
$scope.showNextMembers = ->
$scope.page += 1
Member.query {
requested_attributes:'[profile]',
page: $scope.page,
requested_attributes:'[profile]',
page: $scope.page,
size: MEMBERS_PER_PAGE
}, (members) ->
$scope.members = $scope.members.concat(members)

if (!members[0] || members[0].maxMembers <= $scope.members.length)
$scope.noMoreResults = true

Expand Down Expand Up @@ -260,7 +260,7 @@ Application.Controllers.controller "EditProfileController", ["$scope", "$rootSco
##
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 !!!!

## List of social networks associated with this user and toggle 'show all' state
Expand Down
6 changes: 3 additions & 3 deletions app/assets/javascripts/controllers/profile.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ Application.Controllers.controller "CompleteProfileController", ["$scope", "$roo
## name of the current fablab application (eg. "Fablab de la Casemate")
$scope.fablabName = settingsPromise.fablab_name

## informations from the current SSO provider
## information from the current SSO provider
$scope.activeProvider = activeProviderPromise

## list of user's groups (student/standard/...)
$scope.groups = groupsPromise

## current user, contains informations retrieved from the SSO
## current user, contains information retrieved from the SSO
$scope.user = memberPromise

## disallow the user to change his password as he connect from SSO
Expand Down Expand Up @@ -177,4 +177,4 @@ Application.Controllers.controller "CompleteProfileController", ["$scope", "$roo
## !!! MUST BE CALLED AT THE END of the controller
initialize()

]
]
2 changes: 1 addition & 1 deletion app/assets/javascripts/controllers/trainings.coffee.erb
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ Application.Controllers.controller "ReserveTrainingController", ["$scope", "$sta
groupObj.plans.push(plan) if plan.group_id == group.id
$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

## indicates if the selected training was validated (ie. added to the shopping cart)
Expand Down
4 changes: 2 additions & 2 deletions app/assets/templates/admin/plans/_form.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<h2 translate>{{ 'general_informations' }}</h2>
<h2 translate>{{ 'general_information' }}</h2>
<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}">
Expand Down Expand Up @@ -155,4 +155,4 @@
<span ng-repeat="partner in plan.partners">
<input type="text" class="form-control" disabled value="{{ partner.first_name}} {{partner.last_name }}">
</span>
</div>
</div>
2 changes: 1 addition & 1 deletion app/assets/templates/events/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@

<section class="widget panel b-a m m-t-lg">
<div class="panel-heading b-b small">
<h3 translate>{{ 'informations_and_booking' }}</h3>
<h3 translate>{{ 'information_and_booking' }}</h3>
</div>

<div class="panel-content wrapper">
Expand Down
2 changes: 1 addition & 1 deletion app/assets/templates/plans/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
</div>

<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>
Expand Down
2 changes: 1 addition & 1 deletion app/assets/templates/shared/_member_form.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@

<!-- allow receive newsletter -->
<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
ng-model="user.is_allow_newsletter"
id="allowNewsletter"
Expand Down
2 changes: 1 addition & 1 deletion app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ def self.from_omniauth(auth)

where(provider: auth.provider, uid: auth.uid).first_or_create.tap do |user|
# 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
auth.info.mapping.each do |key, value|
user.set_data_from_sso_mapping(key, value)
Expand Down
8 changes: 4 additions & 4 deletions app/pdfs/pdf/invoice.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def initialize(invoice)
image StringIO.new( Base64.decode64(img_b64.value) ), :fit => [415,40]
move_down 20
font('Open-Sans', :size => 10) do
# general informations
# general information
if invoice.is_a?(Avoir)
text I18n.t('invoices.refund_invoice_reference', REF:invoice.reference), :leading => 3
else
Expand All @@ -47,7 +47,7 @@ def initialize(invoice)
text I18n.t('invoices.invoice_issued_on_DATE', DATE:I18n.l(invoice.created_at.to_date))
end

# user/organization's informations
# user/organization's information
if invoice&.user&.profile&.organization
name = invoice.user.profile.organization.name
else
Expand Down Expand Up @@ -261,15 +261,15 @@ def initialize(invoice)
end
text payment_verbose

# important informations
# important information
move_down 40
txt = parse_html(Setting.find_by({name: 'invoice_text'}).value)
txt.each_line do |line|
text line, :style => :bold, :inline_format => true
end


# address and legals informations
# address and legals information
move_down 40
txt = parse_html(Setting.find_by({name: 'invoice_legals'}).value)
txt.each_line do |line|
Expand Down
Loading

0 comments on commit ddde96f

Please sign in to comment.