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

Merge branch 'dev' for release 6.3.5

This commit is contained in:
Du Peng 2023-12-04 16:10:41 +01:00
commit 180410c5fd
115 changed files with 454 additions and 332 deletions

View File

@ -1,9 +1,22 @@
# Changelog Fab-manager
## next release
## v6.3.5 2023 December 4
- fix a bug: user was not able to reserve at the same time of an event with pre-registration invalidated
- fix a bug: avoids crash if invoicing_profile has no address associated to it
- improvement: improves how pay_zen transactions are matched with payment_schedule_items
- improvement: improves rrule of pay_zen subscriptions
- improvement: better text contrast on customizable colors. Good for accessibility.
- Improvement: set the number of new attempts available in case the payment is rejected to 1 for PayZen
## v6.3.4 2023 November 23
- fix a bug: wrong amount when pay a reservation with payment schedule
- fix regresion on PaymentScheduleItemWorker from v6.3.2
- fix a bug: regression on PaymentScheduleItemWorker from v6.3.2
- fix a bug: event.pre_registration_end_date (was set to beginning_of_day instead of end_of_day)
## v6.3.3 2023 November 14
@ -29,7 +42,7 @@
- Fix a bug: fix all failing tasks of rake task file chain.rake
- Fix a bug: file_size_validator.rb was broken since ruby v3, see https://github.com/rails/rails/issues/41270
- improvement: pre-registration event reservations ilimit places
- improvement: pre-registration event reservations limit places
- improvement: add including_deleted_users param for open api users
- decreases sidekiq concurrency from 25 to 5, 25 is too much and consumes memory for nothing
- do not log Notifications#polling action anymore, by default, can be enable via env variable ENABLE_NOTIFICATIONS_POLLING_LOGGING=true
@ -52,7 +65,7 @@
## v6.1.2 2023 October 2
- Fix a bug: minor pb (exception raised) when bot hit api/projects#search without beeing authenticated
- Fix a bug: minor pb (exception raised) when bot hit api/projects#search without being authenticated
- Fix a bug: minor pb (exception raised) when a bot or unauthenticated user hit api/auth_providers actions
- Fix a bug: when calling .to_json on an "avoir", there was a bug because order_number delegates on invoice which can be nil, it was causing errors in notifications rendering
- Fix a bug: when getting status of users/subscriptions export
@ -78,9 +91,9 @@
- Cancel payment schedule subscription after update the payment mean
- admin can see reservations of a member
- Fix a bug: unable to update card for payment schedule
- Fix a bug: user is_allow_contact is actived by default
- Fix a bug: unbale to export projects
- Fix a bug: unbale to update card bank of payment schedule
- Fix a bug: user is_allow_contact is active by default
- Fix a bug: unable to export projects
- Fix a bug: unable to update card bank of payment schedule
- Feature: family compte for event
- Feature: pre-registration event
- [TODO DEPLOY] `rails db:seed`
@ -145,7 +158,7 @@
- Improved projects list filter
- Fix a bug: unable to refresh machine/space/training calender after pay an reservation
- Fix a bug: Accouning Line in duplicate
- Fix a bug: Accounting Line in duplicate
- Fix a bug: displays "my orders" link only if store module is active
- [TODO DEPLOY] `rails fablab:setup:build_accounting_lines`
@ -154,7 +167,7 @@
- Fix a bug: OpenAPI accounting gateway_object_id missing error
- Fix a bug: unable to modify the price of prepaid pack
- Fix a bug: notification type missing
- Fix critical bug: Incorrect amount calculation when paying monthly subcription with a wallet for PayZen
- Fix critical bug: Incorrect amount calculation when paying monthly subscription with a wallet for PayZen
## v6.0.6 2023 May 4
@ -245,7 +258,7 @@
- Ability to restrict machine availabilities per plan
- Ability to configure a prior period for each reservation type to prevent booking (#440)
- Admins cannot select the date when creating a refund invoice anymore
- Fix a bug: JS date is initalialized 1 day before in negative timezones (#445)
- Fix a bug: JS date is initialized 1 day before in negative timezones (#445)
- Fix a bug: user's profile field gender is now marked as required
- Fix a bug: logical sequence of invoices references is broken, when using the store module or the payments schedules
- Fix a bug: refund invoices may generate duplicates in invoices references
@ -281,11 +294,11 @@
- OpenAPI reservation endpoint will return details for the reserved slots
- Display info messages if the user cannot buy prepaid packs
- Fix a bug: some OpenAPI endpoints struggle and expire with timeout
- Fix a bug: OpenAPI events endpoint documentation does not refect the returned data
- Fix a bug: OpenAPI events endpoint documentation does not reflect the returned data
- Fix a bug: members can't change/cancel their reservations
- Fix a bug: admin events view should default to the list tab
- Fix a bug: event creation form should not allow setting multiple times the same price category
- Fix a bug: MAX_SIZE env varibles should not be quoted (#438)
- Fix a bug: MAX_SIZE env variables should not be quoted (#438)
- Fix a bug: unable to add OIDC scopes without discovery
- [BREAKING CHANGE] GET `open_api/v1/events` will necessarily be paginated
- [BREAKING CHANGE] GET `open_api/v1/invoices` will necessarily be paginated
@ -324,7 +337,7 @@
- Automatically cancel trainings with insufficient attendees
- Check SCSS syntax before saving home page style
- Use Time instead of DateTime objects
- Fix a bug: missing statististics subtypes
- Fix a bug: missing statistics subtypes
- Fix a bug: wrong times in admin/event monitoring
- Fix a bug: daylight saving time is ignored and result in wrong dates and/or times when dealing around the DST day
- Fix a bug: date shift in event creation/update
@ -359,7 +372,7 @@
- Fix a bug: invalid duration for machine/spaces reservations in statistics, when using slots of not 1 hour
- Fix a bug: invalid month in date format
- Fix a bug: do not show theme and age-range fields in event form if no options were set
- Fix a bug: do not show catgory select in plan form if no options were set
- Fix a bug: do not show category select in plan form if no options were set
- Fix a bug: new setups doesn't log
- [TODO DEPLOY] `rails db:seed`
- [TODO DEPLOY] `rails fablab:es:build_stats` THEN `rails fablab:maintenance:regenerate_statistics[2014,1]`
@ -398,7 +411,7 @@
## v5.6.3 2023 January 9
- Fix a bug: unable to build the docker image (yarn error extracting tar content of undefined failed)
- Fix a security issue: logged users but non-admins can access to analytics data throught the API
- Fix a security issue: logged users but non-admins can access to analytics data through the API
## v5.6.2 2023 January 9
@ -440,7 +453,7 @@
- OpenAPI endpoint to fetch accounting data
- Add reservation deadline parameter (#414)
- Verify current password at server side when changing password
- Password strengh indicator
- Password strength indicator
- Updated OpenAPI documentation
- Updated OpenID Connect documentation
- OpenAPI users endpoint offer ability to filter by created_after
@ -448,7 +461,7 @@
- Default accounting codes and labels if not set
- Active serving static files from the `/public` folder by default from rails
- Display custom error message if the PDF invoice is not found
- Report subsription mismatch with user's group
- Report subscription mismatch with user's group
- Added sentry for error reporting
- Report details of the due for invoices related to a payment schedule
- Migrated plan/machine/space/event forms to react

View File

@ -67,11 +67,10 @@ export const FormInput = <TFieldValues extends FieldValues, TInputType>({ id, re
return num;
}
if (type === 'date') {
const date: Date = new Date(value + 'T00:00:00');
if (Number.isNaN(date) && nullable) {
if (Number.isNaN(value) && nullable) {
return null;
}
return date;
return value;
}
setCharacterCount(value?.length || 0);
return value;

View File

@ -204,13 +204,13 @@ const SupportingDocumentsTypesList: React.FC<SupportingDocumentsTypesListProps>
<p>{t('app.admin.settings.account.supporting_documents_types_list.supporting_documents_type_info')}</p>
<FabAlert level="warning">
<HtmlTranslate trKey="app.admin.settings.account.supporting_documents_types_list.no_groups_info" />
<FabButton onClick={addGroup}>{t('app.admin.settings.account.supporting_documents_types_list.create_groups')}</FabButton>
<FabButton onClick={addGroup} className="is-secondary">{t('app.admin.settings.account.supporting_documents_types_list.create_groups')}</FabButton>
</FabAlert>
</div>
<div className="title">
<h3>{t('app.admin.settings.account.supporting_documents_types_list.supporting_documents_type_title')}</h3>
<FabButton onClick={addType}>{t('app.admin.settings.account.supporting_documents_types_list.add_type')}</FabButton>
<FabButton onClick={addType} className="is-secondary">{t('app.admin.settings.account.supporting_documents_types_list.add_type')}</FabButton>
</div>
<SupportingDocumentsTypeModal isOpen={modalIsOpen}
@ -279,7 +279,7 @@ const SupportingDocumentsTypesList: React.FC<SupportingDocumentsTypesListProps>
<div className="types-list">
<div className="title">
<h3>{t('app.admin.settings.account.supporting_documents_types_list.supporting_documents_type_title')}</h3>
<FabButton onClick={addType}>{t('app.admin.settings.account.supporting_documents_types_list.add_type')}</FabButton>
<FabButton onClick={addType} className='is-secondary'>{t('app.admin.settings.account.supporting_documents_types_list.add_type')}</FabButton>
</div>
<SupportingDocumentsTypeModal isOpen={modalIsOpen}

View File

@ -824,11 +824,12 @@ Application.Controllers.controller('InvoicesController', ['$scope', '$state', 'I
* @param [concat] {boolean} if true, the result will be append to $scope.invoices instead of being affected
*/
const invoiceSearch = function (concat) {
const date = $scope.searchInvoice.date ? $scope.searchInvoice.date.toISOString().slice(0, 10) : null;
Invoice.list({
query: {
number: $scope.searchInvoice.reference,
customer: $scope.searchInvoice.name,
date: $scope.searchInvoice.date,
date,
order_by: $scope.orderInvoice,
page: $scope.page,
size: INVOICES_PER_PAGE

View File

@ -468,7 +468,7 @@ Application.Directives.directive('cart', ['$rootScope', '$uibModal', 'dialogs',
const validateSameTimeReservations = function (slot, callback) {
let sameTimeReservations = $scope.settings.overlapping_categories.split(',').map(function (k) {
return _.filter($scope.user[k], function (sr) {
return !sr.canceled_at && (
return !sr.canceled_at && !(sr.reservable_type === 'Event' && (sr.is_valid === false)) && (
slot.start.isSame(sr.start_at) ||
(slot.end.isAfter(sr.start_at) && slot.end.isBefore(sr.end_at)) ||
(slot.start.isAfter(sr.start_at) && slot.start.isBefore(sr.end_at)) ||

View File

@ -15,8 +15,6 @@
outline: 0;
text-transform: uppercase;
//border: 3px solid $yellow;
//background-color: $yellow;
&:hover {
background-color: white;
}

View File

@ -2,8 +2,8 @@
background-color: $brand-light;
}
//.bg-red { background-color: $red; color: white; }
//.bg-red-dark { background-color: $red-dark; }
.bg-red { background-color: var(--main); color: var(--main-text-color); }
.bg-red-dark { background-color: var(--main-dark); color: var(--main-text-color); }
//.bg-yellow { background-color: $yellow !important; }
.bg-token {
background-color: rgba(230, 208, 137, 0.49);

View File

@ -396,8 +396,13 @@
vertical-align: bottom;
&.label-icon {
width: 2.8rem;
height: 2.8rem;
display: inline-flex;
justify-content: center;
align-items: center;
font-size: rem-calc(22);
padding: 4px 9px 1px 10px;
color: var(--main-text-color);
}
}
}
@ -702,3 +707,7 @@ input[type=date].form-control {
margin-bottom: 0;
}
}
.medium-editor-anchor-preview a:hover {
color: #ffffff;
}

View File

@ -501,26 +501,15 @@
}
#nav {
// border-right: 1px solid $red-dark;
.nav {
//background-color: $red;
> li {
> a {
padding: 13px 17px;
font-weight: 600;
color: white;
&:hover,
&:focus, &.active {
//background-color: $red-light;
color: white;
}
color: var(--main-text-color);
&.active {
border-left: 3px solid;
// #870003;
}
}
}

View File

@ -1,9 +1,9 @@
.fab-button {
min-height: 38px;
margin-bottom: 0;
padding: 6px 12px;
display: inline-flex;
align-items: center;
gap: 0 4px;
border: 1px solid #c9c9c9;
border-radius: 4px;
background-color: #fbfbfb;
@ -35,12 +35,11 @@
}
&[disabled] {
color: #3a3a3a;
}
&[disabled],
&[disabled]:hover {
color: #3a3a3a;
color: inherit;
opacity: 0.65;
cursor: not-allowed;
}
&--icon {
@ -60,12 +59,15 @@
border-color: $color;
background-color: $color;
color: $textColor;
opacity: 0.75;
opacity: 0.65;
}
}
&.is-info {
@include colorVariant(var(--information), var(--gray-soft-lightest));
}
&.is-alert {
@include colorVariant(var(--alert), var(--gray-soft-lightest));
}
&.is-secondary {
@include colorVariant(var(--secondary), var(--secondary-text-color));
}
@ -75,4 +77,25 @@
&.is-main {
@include colorVariant(var(--main), var(--main-text-color));
}
// sizes
&.button-full {
width: 100%;
justify-content: center;
}
&.button-xs {
min-height: auto;
padding: 2px 4px;
font-size: 12px;
}
&.button-s {
min-height: auto;
padding: 4px 8px;
font-size: 14px;
}
}
label.fab-button {
margin-bottom: 0;
}

View File

@ -29,9 +29,6 @@
margin-top: 15px;
margin-right: 20px;
max-width: 200px;
background-color: var(--secondary-dark);
border-color: var(--secondary-dark);
color: var(--secondary-text-color);
}
}
}
@ -49,9 +46,6 @@
.fab-button {
margin-top: 15px;
margin-right: 20px;
background-color: var(--secondary-dark);
border-color: var(--secondary-dark);
color: var(--secondary-text-color);
}
}

View File

@ -25,7 +25,7 @@
<div class="panel-footer no-padder">
<input type="submit" value="{{ 'app.shared.buttons.save' | translate}}" class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c" ng-click="saveAdmin()" ng-disabled="adminForm.$invalid"/>
<input type="submit" value="{{ 'app.shared.buttons.save' | translate}}" class="fab-button is-secondary button-full" ng-click="saveAdmin()" ng-disabled="adminForm.$invalid"/>
</div>
</section>
</form>

View File

@ -7,7 +7,7 @@
</div>
</div>
<div class="col-md-12">
<button type="button" class="btn btn-warning m-t m-b" ui-sref="app.admin.authentication_new" translate>{{ 'app.admin.members.authentication_form.add_a_new_authentication_provider' }}</button>
<button type="button" class="fab-button is-secondary m-t m-b" ui-sref="app.admin.authentication_new" translate>{{ 'app.admin.members.authentication_form.add_a_new_authentication_provider' }}</button>
<table class="table">
<thead>

View File

@ -93,7 +93,7 @@
<span translate ng-if="!r.user.name">{{ 'app.admin.calendar.deleted_user' }}</span>
- <span class="label reservation-time">{{ r.start_at | amDateFormat:'LLL' }} - {{ r.end_at | amDateFormat:'LT' }}</span>
- <span class="label label-success text-white">{{r.reservable.name}}</span>
<span class="btn btn-warning btn-xs" ng-click="cancelBooking(r)" ng-if="!r.canceled_at"><i class="fa fa-times red"></i></span>
<span class="fab-button is-secondary button-xs" ng-click="cancelBooking(r)" ng-if="!r.canceled_at"><i class="fa fa-times red"></i></span>
</li>
</ul>
<div ng-show="reservations.length == 0" translate>{{ 'app.admin.calendar.without_reservation' }}</div>
@ -109,7 +109,7 @@
<ul class="list-unstyled">
<li ng-repeat="m in machines" class="m-b-xs" ng-show="availability.machine_ids.indexOf(m.id) > -1">
{{m.name}}
<span class="btn btn-warning btn-xs" ng-click="removeMachine(m)" ng-if="availability.machine_ids.length > 1"><i class="fa fa-times red"></i></span>
<span class="fab-button is-secondary button-xs" ng-click="removeMachine(m)" ng-if="availability.machine_ids.length > 1"><i class="fa fa-times red"></i></span>
</li>
</ul>
</div>
@ -126,7 +126,7 @@
<ul class="m-n" ng-repeat="plan in g.plans">
<li>
{{::plan.base_name}}
<span class="btn btn-warning btn-xs" ng-click="removePlan(plan)" ><i class="fa fa-times red"></i></span>
<span class="fab-button is-secondary button-xs" ng-click="removePlan(plan)" ><i class="fa fa-times red"></i></span>
</li>
</ul>
</li>

View File

@ -246,12 +246,12 @@
</div>
</div>
<div class="modal-footer" ng-show="step < 6">
<button class="btn btn-info" ng-click="previous()" ng-disabled="step === 1" translate>{{ 'app.admin.calendar.previous' }}</button>
<button class="btn btn-info" ng-click="next()" translate>{{ 'app.admin.calendar.next' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-info" ng-click="previous()" ng-disabled="step === 1" translate>{{ 'app.admin.calendar.previous' }}</button>
<button class="fab-button is-info" ng-click="next()" translate>{{ 'app.admin.calendar.next' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>
<div class="modal-footer" ng-show="step === 6">
<button class="btn btn-info" ng-click="previous()" translate>{{ 'app.admin.calendar.previous' }}</button>
<button class="btn btn-warning" ng-click="ok()" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-info" ng-click="previous()" translate>{{ 'app.admin.calendar.previous' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>

View File

@ -86,7 +86,7 @@
switch-animate="true"/>
</div>
<div class="m-t text-right">
<button role="button" class="btn btn-warning" ng-click="save()" ng-disabled="newImportForm.$invalid" translate>
<button role="button" class="fab-button is-secondary" ng-click="save()" ng-disabled="newImportForm.$invalid" translate>
{{ 'app.shared.buttons.confirm' }}
</button>
</div>

View File

@ -31,7 +31,7 @@
<ng-include src="'/admin/coupons/_form.html'"></ng-include>
<div class="panel-footer no-padder">
<input type="button" value="{{ 'app.shared.buttons.confirm_changes' | translate }}" class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c" ng-disabled="couponForm.$invalid" ng-click="updateCoupon()"/>
<input type="button" value="{{ 'app.shared.buttons.confirm_changes' | translate }}" class="p-lg fab-button is-secondary button-full" ng-disabled="couponForm.$invalid" ng-click="updateCoupon()"/>
</div>
</form>
</div>

View File

@ -23,7 +23,7 @@
<ng-include src="'/admin/coupons/_form.html'"></ng-include>
<div class="panel-footer no-padder">
<input type="button" value="{{ 'app.shared.buttons.save' | translate }}" class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c" ng-disabled="couponForm.$invalid" ng-click="saveCoupon()"/>
<input type="button" value="{{ 'app.shared.buttons.save' | translate }}" class="p-lg fab-button is-secondary button-full" ng-disabled="couponForm.$invalid" ng-click="saveCoupon()"/>
</div>
</form>

View File

@ -1,7 +1,7 @@
<div class="m-t">
<h3 class="events-categories" translate>{{ 'app.admin.events.categories' }}</h3>
<p translate>{{ 'app.admin.events.at_least_one_category_is_required' }}</p>
<button type="button" class="btn btn-warning m-b m-t" ng-click="addElement('category')" translate>{{ 'app.admin.events.add_a_category' }}</button>
<button type="button" class="fab-button is-secondary m-b m-t" ng-click="addElement('category')" translate>{{ 'app.admin.events.add_a_category' }}</button>
<table class="table">
<thead>
<tr>
@ -19,10 +19,10 @@
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveElement('category', $data, category.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted.category == category">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelElement('category', rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelElement('category', rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
@ -40,7 +40,7 @@
</table>
<h3 class="events-themes" translate>{{ 'app.admin.events.themes' }}</h3>
<button type="button" class="btn btn-warning m-b m-t" ng-click="addElement('theme')" translate>{{ 'app.admin.events.add_a_theme' }}</button>
<button type="button" class="fab-button is-secondary m-b m-t" ng-click="addElement('theme')" translate>{{ 'app.admin.events.add_a_theme' }}</button>
<table class="table">
<thead>
<tr>
@ -58,10 +58,10 @@
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveElement('theme', $data, theme.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted.theme == theme">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelElement('theme', rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelElement('theme', rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
@ -79,7 +79,7 @@
</table>
<h3 class="events-age-ranges" translate>{{ 'app.admin.events.age_ranges' }}</h3>
<button type="button" class="btn btn-warning m-b m-t" ng-click="addElement('age_range')" translate>{{ 'app.admin.events.add_a_range' }}</button>
<button type="button" class="fab-button is-secondary m-b m-t" ng-click="addElement('age_range')" translate>{{ 'app.admin.events.add_a_range' }}</button>
<table class="table">
<thead>
<tr>
@ -97,10 +97,10 @@
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveElement('age_range', $data, range.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted.age_range == range">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelElement('age_range', rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelElement('age_range', rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>

View File

@ -13,7 +13,7 @@
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md" ng-if="isAuthorized(['admin', 'manager'])">
<section class="heading-actions wrapper">
<a class="btn btn-lg btn-warning bg-white b-2x rounded m-t-sm upper text-sm" ui-sref="app.admin.events_new" role="button" translate>{{ 'app.admin.events.add_an_event' }}</a>
<a class="fab-button is-secondary b-2x m-t-sm" ui-sref="app.admin.events_new" role="button" translate>{{ 'app.admin.events.add_an_event' }}</a>
</section>
</div>
</div>

View File

@ -79,6 +79,6 @@
<div class="row">
<div class="col-lg-12 text-center">
<a class="btn btn-warning" ng-click="loadMoreEvents()" ng-if="paginateActive" translate>{{ 'app.admin.events.load_the_next_events' }}</a>
<a class="fab-button is-secondary" ng-click="loadMoreEvents()" ng-if="paginateActive" translate>{{ 'app.admin.events.load_the_next_events' }}</a>
</div>
</div>

View File

@ -1,7 +1,7 @@
<div class="m-t">
<h3 translate>{{ 'app.admin.events.prices_categories' }}</h3>
<button type="button" class="btn btn-warning m-b m-t" ng-click="newPriceCategory()" translate>{{ 'app.admin.events.add_a_price_category' }}</button>
<button type="button" class="fab-button is-secondary m-b m-t" ng-click="newPriceCategory()" translate>{{ 'app.admin.events.add_a_price_category' }}</button>
<table class="table">
<thead>
<tr>

View File

@ -85,7 +85,7 @@
</table>
<p ng-if="reservations.length == 0" translate>{{ 'app.admin.event_reservations.no_reservations_for_now' }}</p>
<button type="button" class="btn btn-warning m-t m-b" ui-sref="app.admin.events" translate>{{ 'app.admin.event_reservations.back_to_monitoring' }}</button>
<button type="button" class="fab-button is-secondary m-t m-b" ui-sref="app.admin.events" translate>{{ 'app.admin.event_reservations.back_to_monitoring' }}</button>
</div>
</div>
</section>

View File

@ -1,7 +1,6 @@
<div class="m-t-lg m-b">
<button type="button" class="btn btn-warning" ng-click="addGroup()">
<i class="fa fa-plus m-r"></i>
<span translate>{{ 'app.admin.members.group_form.add_a_group' }}</span>
<button type="button" class="fab-button is-secondary" ng-click="addGroup()" translate>
{{ 'app.admin.members.group_form.add_a_group' }}
</button>
<div class="form-group pull-right">
<div class="input-group">
@ -30,10 +29,10 @@
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveGroup($data, group.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == group">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelGroup(rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelGroup(rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>

View File

@ -95,7 +95,7 @@
<input name="type" type="hidden" ng-value="exportTarget.software"/>
<input name="key" type="hidden" ng-value="query.key"/>
<input name="query" type="hidden" ng-value="query.query"/>
<input type="submit" class="btn btn-warning" value="{{ 'app.shared.buttons.confirm' | translate }}" formtarget="export-frame"/>
<input type="submit" class="fab-button is-secondary" value="{{ 'app.shared.buttons.confirm' | translate }}" formtarget="export-frame"/>
</form>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>

View File

@ -38,6 +38,6 @@
</form>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="ok()" ng-disabled="avoirForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" ng-disabled="avoirForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>

View File

@ -76,6 +76,6 @@
</div>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="ok()" ng-disabled="closePeriodForm.$invalid || pendingCreation" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-default" ng-click="cancel()" ng-disabled="pendingCreation" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" ng-disabled="closePeriodForm.$invalid || pendingCreation" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="cancel()" ng-disabled="pendingCreation" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>

View File

@ -83,7 +83,7 @@
</tbody>
</table>
<div class="text-center">
<button class="btn btn-warning" ng-click="showNextInvoices()" ng-hide="noMoreResults"><i class="fa fa-search-plus" aria-hidden="true"></i> {{ 'app.admin.invoices.display_more_invoices' | translate }}</button>
<button class="fab-button is-secondary" ng-click="showNextInvoices()" ng-hide="noMoreResults"><i class="fa fa-search-plus m-r" aria-hidden="true"></i> {{ 'app.admin.invoices.display_more_invoices' | translate }}</button>
</div>
<p ng-if="invoices.length == 0" translate>{{ 'app.admin.invoices.no_invoices_for_now' }}</p>

View File

@ -21,7 +21,7 @@
</div>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="ok()" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>
</div>

View File

@ -25,7 +25,7 @@
</div>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="ok()" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>
</div>

View File

@ -29,7 +29,7 @@
</div>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="ok()" ng-disabled="model.trim() === ''" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" ng-disabled="model.trim() === ''" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>
</div>

View File

@ -42,7 +42,7 @@
</form>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="ok()" ng-disabled="stripeKeysForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" ng-disabled="stripeKeysForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>
</div>

View File

@ -25,7 +25,7 @@
<div class="panel-footer no-padder">
<input type="submit" value="{{ 'app.shared.buttons.save' | translate}}" class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c" ng-click="saveManager()" ng-disabled="managerForm.$invalid"/>
<input type="submit" value="{{ 'app.shared.buttons.save' | translate}}" class="fab-button is-secondary button-full p-lg" ng-click="saveManager()" ng-disabled="managerForm.$invalid"/>
</div>
</section>
</form>

View File

@ -7,7 +7,7 @@
</div>
</div>
<div class="col-md-12">
<button type="button" class="btn btn-warning m-t m-b" ui-sref="app.admin.admins_new" ng-show="isAuthorized('admin')" translate>
<button type="button" class="fab-button is-secondary m-t m-b" ui-sref="app.admin.admins_new" ng-show="isAuthorized('admin')" translate>
{{ 'app.admin.members.add_a_new_administrator' }}
</button>

View File

@ -280,7 +280,7 @@
<div class="clearfix"></div>
<div class="col-sm-4 text-center" ng-hide="user.id === currentUser.id">
<button type="button" class="btn btn-warning m-t m-b" ng-click="createWalletCreditModal(user, wallet)" translate>{{ 'app.admin.members_edit.to_credit' }}</button>
<button type="button" class="fab-button is-secondary m-t m-b" ng-click="createWalletCreditModal(user, wallet)" translate>{{ 'app.admin.members_edit.to_credit' }}</button>
</div>
<p class="col-sm-4 alert alert-info" ng-show="user.id === currentUser.id" translate>
{{ 'app.admin.members_edit.cannot_credit_own_wallet' }}

View File

@ -163,7 +163,7 @@
<div class="panel-footer no-padder">
<input type="submit" value="{{ 'app.admin.members_import.import' | translate }}" class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c" ng-disabled="importForm.$invalid"/>
<input type="submit" value="{{ 'app.admin.members_import.import' | translate }}" class="p-lg fab-button is-secondary button-full" ng-disabled="importForm.$invalid"/>
</div>
</section>

View File

@ -11,7 +11,7 @@
</div>
</div>
<div class="col-md-12">
<button type="button" class="btn btn-warning m-t m-b" ui-sref="app.admin.managers_new" ng-show="isAuthorized('admin')" translate>
<button type="button" class="fab-button is-secondary m-t m-b" ui-sref="app.admin.managers_new" ng-show="isAuthorized('admin')" translate>
{{ 'app.admin.members.add_a_new_manager' }}
</button>

View File

@ -19,7 +19,7 @@
</div>
<div class="col-md-12">
<button type="button" class="btn btn-warning m-b" ui-sref="app.admin.members_new" translate>
<button type="button" class="fab-button is-secondary m-b" ui-sref="app.admin.members_new" translate>
{{ 'app.admin.members.add_a_new_member' }}
</button>
<div class="pull-right exports-buttons m-b" ng-show="isAuthorized('admin')">
@ -40,6 +40,6 @@
</div>
<div class="text-center">
<button class="btn btn-warning show-more" ng-click="showNextMembers()" ng-hide="member.noMore"><i class="fa fa-search-plus" aria-hidden="true"></i> {{ 'app.admin.members.display_more_users' | translate }}</button>
<button class="fab-button is-secondary show-more" ng-click="showNextMembers()" ng-hide="member.noMore"><i class="fa fa-search-plus" aria-hidden="true"></i> {{ 'app.admin.members.display_more_users' | translate }}</button>
</div>
</div>

View File

@ -11,7 +11,7 @@
</div>
</div>
<div class="col-md-12">
<button type="button" class="btn btn-warning m-t m-b" ng-click="openPartnerNewModal()" translate>{{ 'app.admin.members.add_a_new_partner' }}</button>
<button type="button" class="fab-button is-secondary m-t m-b" ng-click="openPartnerNewModal()" translate>{{ 'app.admin.members.add_a_new_partner' }}</button>
<table class="table">
<thead>

View File

@ -15,7 +15,7 @@
<div class="col-xs-12 col-sm-12 col-md-4 b-t hide-b-md">
<section class="heading-actions wrapper">
<a href="<%= apipie_apipie_path({version: 'v1'}) %>" target="_blank" class="btn btn-info b-2x rounded m-t-sm documentation-button">
<a href="<%= apipie_apipie_path({version: 'v1'}) %>" target="_blank" class="fab-button is-info m-t-sm documentation-button">
<i class="fa fa-book" aria-hidden="true"></i>&nbsp;
<span translate>{{ 'app.admin.open_api_clients.api_documentation' }}</span>&nbsp;
<span class="exponent"><i class="fa fa-external-link" aria-hidden="true"></i></span>
@ -36,15 +36,15 @@
<div class="col-md-12">
<div class="col-md-12">
<button type="button" class="btn btn-warning m-t m-b" ng-click="createClient()" ng-show="!clientFormVisible" translate>{{ 'app.admin.open_api_clients.add_new_client' | translate }}</button>
<button type="button" class="fab-button is-secondary m-t m-b" ng-click="createClient()" ng-show="!clientFormVisible" translate>{{ 'app.admin.open_api_clients.add_new_client' | translate }}</button>
<form role="form" id="clientForm" ng-show="clientFormVisible" name="clientForm" class="form-inline m-b m-t" novalidate>
<div class="form-group" ng-class="{'has-error': clientForm['client[name]'].$dirty && clientForm['client[name]'].$invalid}">
<input class="form-control" type="text" name="client[name]" ng-model="client.name" value="" placeholder="{{ 'app.admin.open_api_clients.client_name' | translate }}" required>
</div>
<button class="btn btn-default" ng-click="cancelEdit()" name="button">{{ 'app.shared.buttons.cancel' | translate }}</button>
<input type="submit" class="btn btn-warning" ng-disabled="!client.name || client.name.length == 0" ng-click="saveClient(client)" value="{{ 'app.shared.buttons.save' | translate }}">
<button class="fab-button" ng-click="cancelEdit()" name="button">{{ 'app.shared.buttons.cancel' | translate }}</button>
<input type="submit" class="fab-button is-secondary" ng-disabled="!client.name || client.name.length == 0" ng-click="saveClient(client)" value="{{ 'app.shared.buttons.save' | translate }}">
</form>
<table class="table">

View File

@ -1,7 +1,7 @@
<h2 translate>{{ 'app.admin.pricing.list_of_the_coupons' }}</h2>
<div class="m-t-lg m-b">
<button type="button" class="btn btn-warning" ui-sref="app.admin.coupons_new">
<button type="button" class="fab-button is-secondary" ui-sref="app.admin.coupons_new">
<i class="fa fa-plus m-r"></i>
<span translate>{{ 'app.admin.pricing.add_a_new_coupon' }}</span>
</button>
@ -44,5 +44,5 @@
</table>
<div class="text-center">
<button class="btn btn-warning" ng-click="loadMore()" ng-hide="coupons.length === 0 || coupons.length >= coupons[0].total"><i class="fa fa-search-plus" aria-hidden="true"></i> {{ 'app.admin.pricing.display_more_coupons' | translate }}</button>
<button class="fab-button is-secondary" ng-click="loadMore()" ng-hide="coupons.length === 0 || coupons.length >= coupons[0].total"><i class="fa fa-search-plus" aria-hidden="true"></i> {{ 'app.admin.pricing.display_more_coupons' | translate }}</button>
</div>

View File

@ -27,15 +27,15 @@
</td>
<td>
<form editable-form name="rowform" onbeforesave="saveTrainingCredits($data, planId)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == trainingIds">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelTrainingCredit(rowform)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelTrainingCredit(rowform)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-default" ng-click="rowform.$show()">
<button class="fab-button" ng-click="rowform.$show()">
<i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}
</button>
</div>
@ -48,7 +48,7 @@
<div ng-show="$root.modules.machines">
<h2 class="m-t-lg" translate>{{ 'app.admin.pricing.machines' }}</h2>
<div class="btn-group m-t-md m-b-md">
<button type="button" class="btn btn-warning" ng-click="addMachineCredit($event)" translate>{{ 'app.admin.pricing.add_a_machine_credit' }}</button>
<button type="button" class="fab-button is-secondary" ng-click="addMachineCredit($event)" translate>{{ 'app.admin.pricing.add_a_machine_credit' }}</button>
</div>
<table class="table">
@ -79,18 +79,18 @@
</td>
<td>
<form editable-form name="rowform" onbeforesave="saveMachineCredit($data, mc.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == mc">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelMachineCredit(rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelMachineCredit(rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-default" ng-click="rowform.$show()">
<button class="fab-button" ng-click="rowform.$show()">
<i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}
</button>
<button class="btn btn-danger" ng-click="removeMachineCredit($index)">
<button class="fab-button is-alert" ng-click="removeMachineCredit($index)">
<i class="fa fa-trash-o"></i> {{ 'app.shared.buttons.delete' | translate }}
</button>
</div>
@ -103,7 +103,7 @@
<div ng-show="$root.modules.spaces">
<h2 class="m-t-lg" translate>{{ 'app.admin.pricing.spaces' }}</h2>
<div class="btn-group m-t-md m-b-md">
<button type="button" class="btn btn-warning" ng-click="addSpaceCredit($event)" translate>{{ 'app.admin.pricing.add_a_space_credit' }}</button>
<button type="button" class="fab-button is-secondary" ng-click="addSpaceCredit($event)" translate>{{ 'app.admin.pricing.add_a_space_credit' }}</button>
</div>
<table class="table">
<thead>
@ -133,18 +133,18 @@
</td>
<td>
<form editable-form name="rowform" onbeforesave="saveSpaceCredit($data, sc.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == sc">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelSpaceCredit(rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelSpaceCredit(rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-default" ng-click="rowform.$show()">
<button class="fab-button" ng-click="rowform.$show()">
<i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}
</button>
<button class="btn btn-danger" ng-click="removeSpaceCredit($index)">
<button class="fab-button is-alert" ng-click="removeSpaceCredit($index)">
<i class="fa fa-trash-o"></i> {{ 'app.shared.buttons.delete' | translate }}
</button>
</div>

View File

@ -25,6 +25,6 @@
</div>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="ok()" ng-disabled="ctrl.member == null" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" ng-disabled="ctrl.member == null" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>

View File

@ -6,7 +6,7 @@
</div>
<div class="m-t-lg">
<button type="button" class="btn btn-warning new-plan-button" ui-sref="app.admin.plans.new">
<button type="button" class="fab-button is-secondary new-plan-button" ui-sref="app.admin.plans.new">
<i class="fa fa-plus m-r"></i>
<span translate>{{ 'app.admin.pricing.add_a_new_subscription_plan' }}</span>
</button>

View File

@ -12,7 +12,7 @@
</div>
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md">
<section class="heading-actions wrapper">
<a class="btn btn-ng btn-warning b-2x rounded m-t-sm upper text-sm abuses-button" ui-sref="app.admin.manage_abuses" role="button" translate>{{ 'app.admin.projects.manage_abuses' }}</a>
<a class="m-t-sm fab-button is-secondary abuses-button" ui-sref="app.admin.manage_abuses" role="button" translate>{{ 'app.admin.projects.manage_abuses' }}</a>
</section>
</div>
</div>

View File

@ -1,4 +1,4 @@
<button type="button" class="btn btn-warning m-t m-b" ng-click="addLicence()" translate>{{ 'app.admin.projects.add_a_new_licence' }}</button>
<button type="button" class="fab-button is-secondary m-t m-b" ng-click="addLicence()" translate>{{ 'app.admin.projects.add_a_new_licence' }}</button>
<table class="table">
<thead>
@ -23,18 +23,18 @@
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveLicence($data, licence.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == licence">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelLicence(rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelLicence(rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-default" ng-click="rowform.$show()">
<button class="fab-button" ng-click="rowform.$show()">
<i class="fa fa-edit"></i> <span class="hidden-xs hidden-sm" translate>{{ 'app.shared.buttons.edit' }}</span>
</button>
<button class="btn btn-danger" ng-click="removeLicence($index)">
<button class="fab-button is-alert" ng-click="removeLicence($index)">
<i class="fa fa-trash-o"></i>
</button>
</div>

View File

@ -1,4 +1,4 @@
<button type="button" class="btn btn-warning m-b m-t" ng-click="addComponent()" translate>{{ 'app.admin.projects.add_a_material' }}</button>
<button type="button" class="fab-button is-secondary m-b m-t" ng-click="addComponent()" translate>{{ 'app.admin.projects.add_a_material' }}</button>
<table class="table">
<thead>
@ -17,18 +17,18 @@
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveComponent($data, component.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == component">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelComponent(rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelComponent(rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-default" ng-click="rowform.$show()">
<button class="fab-button" ng-click="rowform.$show()">
<i class="fa fa-edit"></i> <span class="hidden-xs hidden-sm" translate>{{ 'app.shared.buttons.edit' }}</span>
</button>
<button class="btn btn-danger" ng-click="removeComponent($index)">
<button class="fab-button is-alert" ng-click="removeComponent($index)">
<i class="fa fa-trash-o"></i>
</button>
</div>

View File

@ -1,4 +1,4 @@
<button type="button" class="btn btn-warning m-t m-b" ng-click="addProjectCategory()" translate>{{ 'app.admin.projects.add_a_new_project_category' }}</button>
<button type="button" class="fab-button is-secondary m-t m-b" ng-click="addProjectCategory()" translate>{{ 'app.admin.projects.add_a_new_project_category' }}</button>
<table class="table">
<thead>
@ -16,18 +16,18 @@
</td>
<td>
<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">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelProjectCategory(rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelProjectCategory(rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-default" ng-click="rowform.$show()">
<button class="fab-button" ng-click="rowform.$show()">
<i class="fa fa-edit"></i> <span class="hidden-xs hidden-sm" translate>{{ 'app.shared.buttons.edit' }}</span>
</button>
<button class="btn btn-danger" ng-click="removeProjectCategory($index)">
<button class="fab-button is-alert" ng-click="removeProjectCategory($index)">
<i class="fa fa-trash-o"></i>
</button>
</div>

View File

@ -56,7 +56,7 @@
<input type="file" id="testFile" name="attachment" accept="*/*" required>
</span>
</div>
<input type="submit" class="btn btn-warning" ng-disabled="mimeTestForm.$invalid || $isUploading" value="{{ 'app.shared.buttons.save' | translate}}">
<input type="submit" class="fab-button is-secondary" ng-disabled="mimeTestForm.$invalid || $isUploading" value="{{ 'app.shared.buttons.save' | translate}}">
</form>
</div>
</div>

View File

@ -1,4 +1,4 @@
<button type="button" class="btn btn-warning m-t m-b" ng-click="addTheme()" translate>{{ 'app.admin.projects.add_a_new_theme' }}</button>
<button type="button" class="fab-button is-secondary m-t m-b" ng-click="addTheme()" translate>{{ 'app.admin.projects.add_a_new_theme' }}</button>
<table class="table">
<thead>
@ -17,18 +17,18 @@
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveTheme($data, theme.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == theme">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelTheme(rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelTheme(rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-default" ng-click="rowform.$show()">
<button class="fab-button" ng-click="rowform.$show()">
<i class="fa fa-edit"></i> <span class="hidden-xs hidden-sm" translate>{{ 'app.shared.buttons.edit' }}</span>
</button>
<button class="btn btn-danger" ng-click="removeTheme($index)">
<button class="fab-button is-alert" ng-click="removeTheme($index)">
<i class="fa fa-trash-o"></i>
</button>
</div>

View File

@ -23,7 +23,7 @@
<div class="col-sm-offset-4 col-sm-4">
<h1 ng-model="aboutTitleSetting.value" medium-editor options='{"placeholder": "{{ "app.admin.settings.title_of_the_about_page" | translate }}", "disableToolbar": true, "disableReturn": false}' class="text-u-c"></h1>
<span class="help-block text-info text-xs"><i class="fa fa-lightbulb-o"></i> {{ 'app.admin.settings.shift_enter_to_force_carriage_return' | translate }}</span>
<button name="button" class="btn btn-warning" ng-click="save(aboutTitleSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(aboutTitleSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
</div>
@ -41,7 +41,7 @@
</div>
<span class="help-block text-info text-xs"><i class="fa fa-lightbulb-o"></i> {{ 'app.admin.settings.drag_and_drop_to_insert_images' | translate }} (max. 1200px)</span>
<button name="button" class="btn btn-warning" ng-click="save(aboutBodySetting)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(aboutBodySetting)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-4 col-md-offset-2">
<div ng-model="aboutContactsSetting.value"
@ -54,7 +54,7 @@
</div>
<span class="help-block text-info text-xs"><i class="fa fa-lightbulb-o"></i> {{ 'app.admin.settings.shift_enter_to_force_carriage_return' | translate }}</span>
<button name="button" class="btn btn-warning" ng-click="save(aboutContactsSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(aboutContactsSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-4 col-md-offset-2 m-t-xl">
<h2 translate>{{ 'app.admin.settings.about_follow_us' }}</h2>

View File

@ -30,5 +30,5 @@
</div>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="close()" translate>{{ 'app.shared.buttons.close' }}</button>
<button class="fab-button is-secondary" ng-click="close()" translate>{{ 'app.shared.buttons.close' }}</button>
</div>

View File

@ -31,7 +31,7 @@
{{ 'app.admin.settings.general.neutral' | translate }} <span style="font-weight: normal">{{ 'app.admin.settings.general.eg' | translate }} <cite>{{ 'app.admin.settings.general.the_team' | translate }} <strong translate>{{ 'app.admin.settings.general.neutral_preposition' }}</strong> {{allSettings.fablab_name}}</cite></span>
</label>
</div>
<button name="button" class="btn btn-warning" ng-click="save(nameGenre)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(nameGenre)" translate>{{ 'app.shared.buttons.save' }}</button>
</form>
</div>
</div>
@ -57,7 +57,7 @@
}'>
</div>
<button name="button" class="btn btn-warning" ng-click="save(machineExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(machineExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-3" ng-show="$root.modules.trainings">
<h4 translate>{{ 'app.admin.settings.warning_message_of_the_training_booking_page'}}</h4>
@ -70,7 +70,7 @@
}'>
</div>
<button name="button" class="btn btn-warning" ng-click="save(trainingExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(trainingExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-3" ng-show="$root.modules.trainings">
<h4 translate>{{ 'app.admin.settings.information_message_of_the_training_reservation_page'}}</h4>
@ -83,7 +83,7 @@
}'>
</div>
<button name="button" class="btn btn-warning" ng-click="save(trainingInformationMessage)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(trainingInformationMessage)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-3" ng-show="$root.modules.plans">
<h4 translate>{{ 'app.admin.settings.message_of_the_subscriptions_page' }}</h4>
@ -95,7 +95,7 @@
"targetBlank": true
}'>
</div>
<button name="button" class="btn btn-warning" ng-click="save(subscriptionExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(subscriptionExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-3">
<h4 translate>{{ 'app.admin.settings.message_of_the_events_page' }}</h4>
@ -107,7 +107,7 @@
"targetBlank": true
}'>
</div>
<button name="button" class="btn btn-warning" ng-click="save(eventExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(eventExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-3" ng-show="$root.modules.spaces" ng-show="$root.modules.spaces">
<h4 translate>{{ 'app.admin.settings.message_of_the_spaces_page' }}</h4>
@ -119,7 +119,7 @@
"targetBlank": true
}'>
</div>
<button name="button" class="btn btn-warning" ng-click="save(spaceExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(spaceExplicationsAlert)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
</div>
</div>
@ -154,7 +154,7 @@
</span>
</div>
</div>
<button name="button" type="submit" ng-class="{'btn-loading':loader.cgv}" ng-disabled="cgvForm.$invalid" class="btn btn-warning" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" type="submit" ng-class="{'btn-loading':loader.cgv}" ng-disabled="cgvForm.$invalid" class="fab-button is-secondary" translate>{{ 'app.shared.buttons.save' }}</button>
</form>
</div>
<div class="row m-t-xl">
@ -178,7 +178,7 @@
</span>
</div>
</div>
<button name="button" type="submit" ng-class="{'btn-loading':loader.cgu}" ng-disabled="cguForm.$invalid" class="btn btn-warning" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" type="submit" ng-class="{'btn-loading':loader.cgu}" ng-disabled="cguForm.$invalid" class="fab-button is-secondary" translate>{{ 'app.shared.buttons.save' }}</button>
</form>
</div>
</div>
@ -219,7 +219,7 @@
</div>
</div>
</div>
<button name="button" type="submit" class="btn btn-warning m-t m-l" ng-disabled="logoForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" type="submit" class="fab-button is-secondary m-t m-l" ng-disabled="logoForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
</form>
</div>
<div class="col-md-4">
@ -245,7 +245,7 @@
</div>
</div>
</div>
<button name="button" type="submit" class="btn btn-warning m-t m-l" ng-disabled="logoBlackForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" type="submit" class="fab-button is-secondary m-t m-l" ng-disabled="logoBlackForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
</form>
</div>
<div class="col-md-4">
@ -271,7 +271,7 @@
</div>
</div>
</div>
<button name="button" type="submit" class="btn btn-warning m-t m-l" ng-disabled="faviconForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" type="submit" class="fab-button is-secondary m-t m-l" ng-disabled="faviconForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
</form>
</div>
</div>
@ -288,7 +288,7 @@
</div>
</div>
<div class="form-group">
<button name="button" class="btn btn-warning" ng-click="save(mainColorSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(mainColorSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
</form>
</div>
@ -304,7 +304,7 @@
</div>
</div>
<div class="form-group">
<button name="button" class="btn btn-warning" ng-click="save(secondColorSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(secondColorSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
</form>
</div>
@ -334,7 +334,7 @@
</div>
</div>
<span class="block m-t-xs m-l text-gray text-sm" translate>{{ 'app.admin.settings.background_picture_recommendation' }}</span>
<button name="button" type="submit" class="btn btn-warning m-t m-l" ng-disabled="profileImageForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" type="submit" class="fab-button is-secondary m-t m-l" ng-disabled="profileImageForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
</form>
</div>
</div>

View File

@ -3,12 +3,12 @@
<div class="row">
<div class="col-md-12 home-page-content">
<h4 translate>{{ 'app.admin.settings.customize_home_page' }}</h4>
<button class="btn btn-default pull-right m-t-n-xl reset-button" ng-click="resetHomePage()" title="{{ 'app.admin.settings.reset_home_page' | translate }}"><i class="fa fa-undo"></i></button>
<button class="fab-button pull-right m-t-n-xl reset-button" ng-click="resetHomePage()" title="{{ 'app.admin.settings.reset_home_page' | translate }}"><i class="fa fa-undo"></i></button>
<summernote ng-model="homeContent.value"
id="home_content"
config="summernoteOptsHomePage">
</summernote>
<button name="button" class="btn btn-warning" ng-click="save(homeContent)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(homeContent)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
</div>
<div class="row m-t-lg">
@ -24,7 +24,7 @@
}'>
</div>
<span class="help-block text-info text-xs"><i class="fa fa-lightbulb-o"></i> {{ 'app.admin.settings.leave_it_empty_to_not_bring_up_any_news_on_the_home_page' | translate }}</span>
<button name="button" class="btn btn-warning" ng-click="save(homeBlogpostSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(homeBlogpostSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-6">
<text-setting name="twitter_name"
@ -64,7 +64,7 @@
<span translate>{{ 'app.admin.settings.home_css_notice_html' }}</span>
</p>
</uib-alert>
<button name="button" class="btn btn-warning" ng-click="save(homeCss)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(homeCss)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
</uib-accordion-group>
</uib-accordion>

View File

@ -9,7 +9,7 @@
</form>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-disabled="newSelectOptionForm.$invalid" ng-click="ok()" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-default" ng-click="dismiss()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-disabled="newSelectOptionForm.$invalid" ng-click="ok()" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="dismiss()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>
</div>

View File

@ -11,5 +11,5 @@
<i class="fa fa-lightbulb-o"></i> {{ helperText | translate }}
</span>
</div>
<button name="button" class="btn btn-warning" ng-click="save(setting)" ng-disabled="settingNumberForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(setting)" ng-disabled="settingNumberForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
</form>

View File

@ -15,7 +15,7 @@
</div>
<span class="help-block text-info text-xs"><i class="fa fa-lightbulb-o"></i> {{ 'app.admin.settings.drag_and_drop_to_insert_images' | translate }}</span>
<button name="button" class="btn btn-warning" ng-click="savePrivacyPolicy()" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="savePrivacyPolicy()" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-3">
<div ng-model="privacyDpoSetting.value" medium-editor options='{"placeholder": "{{ "app.admin.settings.privacy.input_the_dpo" | translate }}",
@ -24,7 +24,7 @@
</div>
<span class="help-block text-info text-xs"><i class="fa fa-lightbulb-o"></i> {{ 'app.admin.settings.shift_enter_to_force_carriage_return' | translate }}</span>
<button name="button" class="btn btn-warning" ng-click="save(privacyDpoSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary" ng-click="save(privacyDpoSetting)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
</div>

View File

@ -11,14 +11,14 @@
<uib-timepicker ng-model="windowStart.value" hour-step="timepicker.hstep" minute-step="timepicker.mstep" show-meridian="false"></uib-timepicker>
</div>
<div class="col-md-4 m-t">
<button name="button" class="btn btn-warning m-l" ng-click="save(windowStart)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary m-l" ng-click="save(windowStart)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
<div class="col-md-2">
<h4 translate>{{ 'app.admin.settings.closing_time' }}</h4>
<uib-timepicker ng-model="windowEnd.value" hour-step="timepicker.hstep" minute-step="timepicker.mstep" show-meridian="false"></uib-timepicker>
</div>
<div class="col-md-4 m-t">
<button name="button" class="btn btn-warning m-l" ng-click="save(windowEnd)" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary m-l" ng-click="save(windowEnd)" translate>{{ 'app.shared.buttons.save' }}</button>
</div>
</div>
<div class="section-separator"></div>
@ -269,7 +269,7 @@
<div class="row p-l p-r" ng-if="reservationContextFeature.value === 'true'">
<h3 class="" translate>{{ 'app.admin.settings.reservation_context_options' }}</h3>
<button type="button" class="btn btn-warning m-b m-t" ng-click="addReservationContext()" translate>{{ 'app.admin.settings.add_a_reservation_context' }}</button>
<button type="button" class="fab-button is-secondary m-b m-t" ng-click="addReservationContext()" translate>{{ 'app.admin.settings.add_a_reservation_context' }}</button>
<table class="table">
<thead>
<tr>
@ -299,18 +299,18 @@
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveReservationContext($data, reservationContext.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="newReservationContext == reservationContext">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelReservationContext(rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelReservationContext(rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-default" ng-click="rowform.$show()">
<button class="fab-button" ng-click="rowform.$show()">
<i class="fa fa-edit"></i> <span class="hidden-xs hidden-sm" translate>{{ 'app.shared.buttons.edit' }}</span>
</button>
<button class="btn btn-danger" ng-click="removeReservationContext($index)">
<button class="fab-button is-alert" ng-click="removeReservationContext($index)">
<i class="fa fa-trash-o"></i>
</button>
</div>

View File

@ -6,7 +6,7 @@
<p translate>{{ 'app.admin.settings.privacy.publish_will_notify' }}</p>
</div>
<div class="modal-footer">
<button class="btn btn-info" ng-click="save()" translate>{{ 'app.shared.buttons.save' }}</button>
<button class="btn btn-warning" ng-click="publish()" translate>{{ 'app.admin.settings.privacy.publish' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-info" ng-click="save()" translate>{{ 'app.shared.buttons.save' }}</button>
<button class="fab-button is-secondary" ng-click="publish()" translate>{{ 'app.admin.settings.privacy.publish' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>

View File

@ -13,5 +13,5 @@
<button ng-click="removeItem()" class="btn btn-default"><i class="fa fa-trash"></i></button>
<button ng-click="addItem()" class="btn btn-default"><i class="fa fa-plus"></i></button>
</div>
<button name="button" class="btn btn-warning m-t" ng-click="save(setting)" ng-disabled="settingSelectMultipleForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary m-t" ng-click="save(setting)" ng-disabled="settingSelectMultipleForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
</form>

View File

@ -12,5 +12,5 @@
<option ng-if="option5" ng-value="option5[0]" translate>{{ option5[1] }}</option>
</select>
</div>
<button name="button" class="btn btn-warning m-t" ng-click="save(setting)" ng-disabled="settingSelectForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary m-t" ng-click="save(setting)" ng-disabled="settingSelectForm.$invalid" translate>{{ 'app.shared.buttons.save' }}</button>
</form>

View File

@ -17,5 +17,5 @@
ng-readonly="readOnly">
</div>
</div>
<button name="button" class="btn btn-warning m-t" ng-click="save(setting)" ng-disabled="settingTextForm.$invalid || readOnly" translate>{{ 'app.shared.buttons.save' }}</button>
<button name="button" class="fab-button is-secondary m-t" ng-click="save(setting)" ng-disabled="settingTextForm.$invalid || readOnly" translate>{{ 'app.shared.buttons.save' }}</button>
</form>

View File

@ -12,7 +12,7 @@
</div>
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md">
<section class="heading-actions wrapper">
<a class="btn btn-lg btn-warning bg-white b-2x rounded m-t-sm upper text-sm" ui-sref="app.admin.statistics" role="button"><i class="fa fa-table"></i> {{ 'app.admin.stats_graphs.data' | translate }}</a>
<a class="fab-button is-secondary m-t-sm" ui-sref="app.admin.statistics" role="button"><i class="fa fa-table"></i> {{ 'app.admin.stats_graphs.data' | translate }}</a>
</section>
</div>
</div>

View File

@ -12,9 +12,9 @@
</div>
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md">
<section class="heading-actions wrapper">
<a class="btn btn-lg btn-default rounded m-t-sm text-sm export-button" ng-click="exportToExcel()"><i class="fa fa-file-excel-o"></i></a>
<a class="fab-button m-t-sm export-button" ng-click="exportToExcel()"><i class="fa fa-file-excel-o"></i></a>
<iframe name="export-frame" height="0" width="0" class="none" id="stats-export-frame"></iframe>
<a class="btn btn-lg btn-warning bg-white b-2x rounded m-t-sm upper text-sm charts-button" ui-sref="app.admin.stats_graphs" role="button"><i class="fa fa-line-chart"></i> {{ 'app.admin.statistics.evolution' | translate }}</a>
<a class="fab-button is-secondary m-t-sm charts-button" ui-sref="app.admin.stats_graphs" role="button"><i class="fa fa-line-chart"></i> {{ 'app.admin.statistics.evolution' | translate }}</a>
</section>
</div>
</div>
@ -299,7 +299,7 @@
</tbody>
</table>
<div class="text-center">
<button class="btn btn-warning" ng-click="showMoreResults()" ng-hide="data && data.length >= totalHits"><i class="fa fa-search-plus" aria-hidden="true"></i> {{ 'app.admin.statistics.display_more_results' | translate }}</button>
<button class="fab-button is-secondary" ng-click="showMoreResults()" ng-hide="data && data.length >= totalHits"><i class="fa fa-search-plus" aria-hidden="true"></i> {{ 'app.admin.statistics.display_more_results' | translate }}</button>
</div>
</uib-tab>
</uib-tabset>

View File

@ -1,4 +1,4 @@
<button type="button" class="btn btn-warning m-b m-t-lg" ng-click="addTag()" translate>{{ 'app.admin.members.tag_form.add_a_tag'}}</button>
<button type="button" class="fab-button is-secondary m-b m-t-lg" ng-click="addTag()" translate>{{ 'app.admin.members.tag_form.add_a_tag'}}</button>
<table class="table">
<thead>
<tr>
@ -16,18 +16,18 @@
<td>
<!-- form -->
<form editable-form name="rowform" onbeforesave="saveTag($data, tag.id)" ng-show="rowform.$visible" class="form-buttons form-inline" shown="inserted == tag">
<button type="submit" ng-disabled="rowform.$waiting" class="btn btn-warning">
<button type="submit" ng-disabled="rowform.$waiting" class="fab-button is-secondary">
<i class="fa fa-check"></i>
</button>
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelTag(rowform, $index)" class="btn btn-default">
<button type="button" ng-disabled="rowform.$waiting" ng-click="cancelTag(rowform, $index)" class="fab-button">
<i class="fa fa-times"></i>
</button>
</form>
<div class="buttons" ng-show="!rowform.$visible">
<button class="btn btn-default" ng-click="rowform.$show()">
<button class="fab-button" ng-click="rowform.$show()">
<i class="fa fa-edit"></i> <span class="hidden-xs hidden-sm" translate>{{ 'app.shared.buttons.edit' }}</span>
</button>
<button class="btn btn-danger" ng-click="removeTag($index)">
<button class="fab-button is-alert" ng-click="removeTag($index)">
<i class="fa fa-trash-o"></i>
</button>
</div>

View File

@ -10,5 +10,5 @@
</form>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-disabled="trainingForm.$invalid" ng-click="save()" translate>{{ 'app.shared.buttons.save' }}</button>
<button class="fab-button is-secondary" ng-disabled="trainingForm.$invalid" ng-click="save()" translate>{{ 'app.shared.buttons.save' }}</button>
</div>

View File

@ -16,6 +16,6 @@
<p ng-if="availability.reservation_users.length == 0" translate>{{ 'app.admin.trainings.no_reservation' }}</p>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="ok()" ng-disabled="usersToValid.length == 0" translate>{{ 'app.admin.trainings.validate_the_trainings' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" ng-disabled="usersToValid.length == 0" translate>{{ 'app.admin.trainings.validate_the_trainings' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>

View File

@ -15,5 +15,5 @@
</p>
</div>
<div class="modal-footer">
<button class="btn btn-warning" ng-click="close()" translate>{{ 'app.shared.buttons.close' }}</button>
<button class="fab-button is-secondary" ng-click="close()" translate>{{ 'app.shared.buttons.close' }}</button>
</div>

View File

@ -10,7 +10,7 @@
<div class="row no-gutter">
<div class="row m-t-md">
<a class="btn btn-lg btn-warning bg-white b-2x rounded m-t-sm upper text-sm col-lg-offset-10" ui-sref="app.logged.projects_new" role="button" translate>{{ 'app.logged.dashboard.projects.add_a_project' }}</a>
<a class="fab-button is-secondary m-t-sm col-lg-offset-10" ui-sref="app.logged.projects_new" role="button" translate>{{ 'app.logged.dashboard.projects.add_a_project' }}</a>
</div>
<div class="wrapper" ng-if="user.all_projects.length == 0" translate>{{ 'app.logged.dashboard.projects.you_dont_have_any_projects' }}</div>
@ -20,7 +20,7 @@
<span class="m-l-sm label label-success text-white">{{project.author_id == currentUser.id ? 'app.logged.dashboard.projects.author' : 'app.logged.dashboard.projects.collaborator' | translate}}</span>
<span class="badge" ng-if="project.state == 'draft'" translate>{{ 'app.logged.dashboard.projects.rough_draft' }}</span>
<div class="pull-right">
<a class="btn btn-warning bg-white b-2x rounded upper text-sm text-black" ui-sref="app.public.projects_show({id:project.slug})" role="button" translate>{{ 'app.shared.buttons.consult' }}</a>
<a class="fab-button is-secondary" ui-sref="app.public.projects_show({id:project.slug})" role="button" translate>{{ 'app.shared.buttons.consult' }}</a>
</div>
</div>
<div class="widget-content bg-light clearfix">

View File

@ -31,7 +31,7 @@
</uib-alert>
</div>
<div ng-show="!user.subscribed_plan.name">{{ 'app.logged.dashboard.settings.no_subscriptions' | translate }} <br><a class="btn text-black btn-warning-full btn-sm m-t-xs" ui-sref="app.public.plans" translate>{{ 'app.logged.dashboard.settings.i_want_to_subscribe' }}</a></div>
<div ng-show="!user.subscribed_plan.name">{{ 'app.logged.dashboard.settings.no_subscriptions' | translate }} <br><a class="fab-button is-secondary button-s m-t-xs" ui-sref="app.public.plans" translate>{{ 'app.logged.dashboard.settings.i_want_to_subscribe' }}</a></div>
</div>
<div class="m-t">
@ -70,10 +70,10 @@
<div ng-show="cookiesStatus === 'accept'" translate>{{ 'app.logged.dashboard.settings.cookies_accepted' }}</div>
<div ng-show="cookiesStatus === 'decline'" translate>{{ 'app.logged.dashboard.settings.cookies_declined' }}</div>
<div ng-hide="cookiesStatus" translate>{{ 'app.logged.dashboard.settings.cookies_unset' }}</div>
<button ng-click="resetCookies()" ng-show="cookiesStatus" class="btn text-black btn-warning-full btn-sm m-t-xs" translate>{{ 'app.logged.dashboard.settings.reset_cookies' }}</button>
<button ng-click="resetCookies()" ng-show="cookiesStatus" class="fab-button is-secondary button-s m-t-xs" translate>{{ 'app.logged.dashboard.settings.reset_cookies' }}</button>
</div>
<div class="widget-content no-bg text-center auto wrapper" ng-hide="isAdminSys">
<button class="btn text-white btn-danger btn-sm" ng-click="deleteUser(user)"><i class="fa fa-warning m-r-xs"></i> {{ 'app.logged.dashboard.settings.delete_my_account' | translate }}</button>
<button class="fab-button is-alert button-s" ng-click="deleteUser(user)"><i class="fa fa-warning m-r-xs"></i> {{ 'app.logged.dashboard.settings.delete_my_account' | translate }}</button>
</div>
</div>
@ -94,13 +94,13 @@
</div>
<div class="panel-body row">
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<a class="btn btn-default" ng-href="{{activeProvider.link_to_sso_profile}}" target="_blank">
<a class="fab-button" ng-href="{{activeProvider.link_to_sso_profile}}" target="_blank">
<i class="fa fa-edit"></i> {{ 'app.logged.dashboard.settings.change_my_data' | translate }}
</a>
<p>{{ 'app.logged.dashboard.settings.once_your_data_are_up_to_date_' | translate }} <strong translate>{{ 'app.logged.dashboard.settings._click_on_the_synchronization_button_opposite_' }}</strong> {{ 'app.logged.dashboard.settings.or' | translate}} <strong translate>{{ 'app.logged.dashboard.settings._disconnect_then_reconnect_' }}</strong> {{ 'app.logged.dashboard.settings._for_your_changes_to_take_effect' | translate }}</p>
</div>
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
<a class="btn btn-default" ng-click="syncProfile()">
<a class="fab-button" ng-click="syncProfile()">
<i class="fa fa-refresh"></i> {{ 'app.logged.dashboard.settings.sync_my_profile' | translate }}
</a>
</div>

View File

@ -13,7 +13,7 @@
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md" ng-if="isAuthorized(['admin'])">
<section class="heading-actions wrapper">
<a class="btn btn-lg btn-warning bg-white b-2x rounded m-t-sm upper text-sm" ui-sref="app.admin.events_new" role="button" translate>{{ 'app.public.events_list.add_an_event' }}</a>
<a class="fab-button is-secondary m-t-sm" ui-sref="app.admin.events_new" role="button" translate>{{ 'app.public.events_list.add_an_event' }}</a>
</section>
</div>
</div>
@ -69,7 +69,7 @@
<div class="row">
<div class="col-lg-12 text-center m-t-md">
<a class="btn btn-warning" ng-click="loadMoreEvents()" ng-hide="noMoreResults" translate>{{ 'app.public.events_list.load_the_next_events' }}</a>
<a class="fab-button is-secondary" ng-click="loadMoreEvents()" ng-hide="noMoreResults" translate>{{ 'app.public.events_list.load_the_next_events' }}</a>
</div>
</div>

View File

@ -17,8 +17,8 @@
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md" ng-if="isAuthorized(['admin', 'manager'])">
<section class="heading-actions wrapper">
<a ui-sref="app.admin.events_edit({id: event.id})" class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs text-u-c text-sm"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="deleteEvent(event)" class="btn btn-lg btn-danger b-2x rounded no-b m-t-xs"><i class="fa fa-trash-o"></i></a>
<a ui-sref="app.admin.events_edit({id: event.id})" class="fab-button is-secondary m-t-xs"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="deleteEvent(event)" class="fab-button is-alert no-b m-t-xs"><i class="fa fa-trash-o"></i></a>
</section>
</div>
@ -250,7 +250,7 @@
<span ng-show="reservations.length > 0" translate>{{ 'app.public.events_show.thanks_for_coming' }}</span>
<a ui-sref="app.public.events_list" translate>{{ 'app.public.events_show.view_event_list' }}</a>
</div>
<button class="btn btn-warning-full rounded btn-block text-sm" ng-click="reserveEvent()" ng-show="isShowReserveEventButton()">
<button class="fab-button is-secondary" ng-click="reserveEvent()" ng-show="isShowReserveEventButton()">
<span ng-if="event.pre_registration">{{ 'app.public.events_show.pre_book' | translate }}</span>
<span ng-if="!event.pre_registration">{{ 'app.public.events_show.book' | translate }}</span>
</button>
@ -266,11 +266,11 @@
</div>
<div class="panel-footer no-padder ng-scope" ng-if="!event.pre_registration && event.amount && reservationIsValid()">
<button class="btn btn-valid btn-info btn-block p-l btn-lg text-u-c r-b text-base" ng-click="payEvent()" ng-if="reserve.totalSeats > 0">{{ 'app.public.events_show.confirm_and_pay' | translate }} {{reserve.amountTotal | currency}}</button>
<button class="fab-button is-info button-full" ng-click="payEvent()" ng-if="reserve.totalSeats > 0">{{ 'app.public.events_show.confirm_and_pay' | translate }} {{reserve.amountTotal | currency}}</button>
</div>
<div class="panel-footer no-padder ng-scope" ng-if="(event.pre_registration || event.amount == 0) && reservationIsValid()">
<button class="btn btn-valid btn-info btn-block p-l btn-lg text-u-c r-b text-base" ng-click="validReserveEvent()" ng-if="reserve.totalSeats > 0" ng-disabled="attempting">{{ 'app.shared.buttons.confirm' | translate }}</button>
<button class="fab-button is-info button-full" ng-click="validReserveEvent()" ng-if="reserve.totalSeats > 0" ng-disabled="attempting">{{ 'app.shared.buttons.confirm' | translate }}</button>
</div>
</section>

View File

@ -18,10 +18,10 @@
</div>
<div class="m-t-sm m-b-sm text-center" ng-if="!isAuthenticated()" ng-show="publicRegistrations">
<button ng-click="signup($event)" class="btn btn-warning-full width-70 font-sbold rounded text-sm" translate>{{ 'app.public.home.create_an_account' }}</button>
<button ng-click="signup($event)" class="fab-button is-secondary" translate>{{ 'app.public.home.create_an_account' }}</button>
</div>
<div class="m-t-sm m-b-sm text-center" ng-if="isAuthenticated()">
<button ui-sref="app.logged.members" class="btn btn-warning-full width-70 font-sbold rounded text-sm" translate>{{ 'app.public.home.discover_members' }}</button>
<button ui-sref="app.logged.members" class="fab-button is-secondary" translate>{{ 'app.public.home.discover_members' }}</button>
</div>
</section>

View File

@ -16,7 +16,7 @@
<div class="col-xs-12 col-sm-12 col-md-4 b-t hide-b-md">
<section class="heading-actions wrapper">
<reserve-button ng-hide="machine.disabled || !machine.reservable"
class-name="'btn btn-lg btn-warning bg-white b-2x rounded m-t-xs'"
class-name="'fab-button is-secondary m-t-xs'"
current-user="currentUser"
machine-id="machine.id"
on-error="onError"
@ -26,8 +26,8 @@
on-enroll-requested="onEnrollRequest">
</reserve-button>
<a ui-sref="app.admin.machines_edit({id: machine.id})" ng-if="isAuthorized('admin')" class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="delete(machine)" ng-if="isAuthorized('admin')" class="btn btn-lg btn-danger b-2x rounded no-b m-t-xs"><i class="fa fa-trash-o"></i></a>
<a ui-sref="app.admin.machines_edit({id: machine.id})" ng-if="isAuthorized('admin')" class="fab-button is-secondary m-t-xs"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="delete(machine)" ng-if="isAuthorized('admin')" class="fab-button is-alert m-t-xs"><i class="fa fa-trash-o"></i></a>
</section>
</div>

View File

@ -40,7 +40,7 @@
<td>{{ member.email }}</td>
<td>
<div class="buttons">
<button class="btn btn-default" ui-sref="app.logged.members_show({id: member.slug})">
<button class="fab-button" ui-sref="app.logged.members_show({id: member.slug})">
<i class="fa fa-eye"></i> {{ 'app.shared.buttons.consult' | translate }}
</button>
</div>
@ -49,7 +49,7 @@
</tbody>
</table>
<div class="text-center">
<button class="btn btn-warning" ng-click="showNextMembers()" ng-hide="noMoreResults"><i class="fa fa-search-plus" aria-hidden="true"></i> {{ 'app.logged.members.display_more_members' | translate }}</button>
<button class="fab-button is-secondary" ng-click="showNextMembers()" ng-hide="noMoreResults"><i class="fa fa-search-plus" aria-hidden="true"></i> {{ 'app.logged.members.display_more_members' | translate }}</button>
</div>
<p ng-if="members.length == 0" translate>{{ 'app.logged.members.no_members_for_now' }}</p>
</div>

View File

@ -15,7 +15,7 @@
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md">
<section class="heading-actions wrapper">
<a ui-sref="app.logged.members" class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs" translate>{{ 'app.logged.members_show.members_list' }}</a>
<a ui-sref="app.logged.members" class="fab-button is-secondary m-t-xs" translate>{{ 'app.logged.members_show.members_list' }}</a>
</section>
</div>

View File

@ -23,7 +23,7 @@
<div class="panel-footer no-padder">
<input type="button"
value="{{ 'app.logged.profile_completion.confirm_my_code' | translate }}"
class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c"
class="fab-button is-primary upper"
ng-hide="!user.auth_token"
ng-click="registerAuthToken()"/>
</div>

View File

@ -30,11 +30,11 @@
</div>
<span class="help-block text-sm" translate>{{ 'app.shared.project.illustration_recommendation' }}</span>
<div>
<span class="btn btn-default btn-file"><span class="fileinput-new">{{ 'app.shared.project.add_an_illustration' | translate }} <i class="fa fa-upload fa-fw"></i></span><span class="fileinput-exists" translate>{{ 'app.shared.buttons.change' }}</span>
<span class="fab-button btn-file"><span class="fileinput-new">{{ 'app.shared.project.add_an_illustration' | translate }} <i class="fa fa-upload fa-fw"></i></span><span class="fileinput-exists" translate>{{ 'app.shared.buttons.change' }}</span>
<input type="file"
name="project[project_image_attributes][attachment]"
accept="image/jpeg,image/gif,image/png"></span>
<a class="btn btn-danger fileinput-exists" data-dismiss="fileinput" translate>{{ 'app.shared.buttons.delete' }}</a>
<a class="fab-button is-alert fileinput-exists" data-dismiss="fileinput" translate>{{ 'app.shared.buttons.delete' }}</a>
</div>
</div>
</div>
@ -64,7 +64,7 @@
<i class="fa fa-info-circle" aria-hidden="true" uib-tooltip="{{ 'app.shared.project.allowed_extensions' | translate }} {{allowedExtensions.join(', ')}}" tooltip-placement="bottom" tooltip-class="media-lg"></i>
</div>
</div>
<a class="btn btn-default" ng-click="addFile()" role="button">{{ 'app.shared.project.add_a_new_file' | translate }} <i class="fa fa-file-o fa-fw"></i></a>
<a class="fab-button" ng-click="addFile()" role="button">{{ 'app.shared.project.add_a_new_file' | translate }} <i class="fa fa-file-o fa-fw"></i></a>
</div>
</div>
@ -84,7 +84,7 @@
<div ng-repeat="step in project.project_steps_attributes | orderBy:'step_nb'" ng-hide="step._destroy">
<div class="m-t-xs m-b-lg">
<div class="btn-group" uib-dropdown is-open="status.isopen">
<button id="single-button" type="button" class="btn btn-warning" uib-dropdown-toggle>
<button id="single-button" type="button" class="fab-button is-secondary" uib-dropdown-toggle>
{{ 'app.shared.project.step_N' | translate:{ INDEX:step.step_nb } }}/{{totalSteps}} <i class="fa fa-caret-down" aria-hidden="true"></i>
</button>
<ul class="dropdown-menu" uib-dropdown-menu role="menu" aria-labelledby="single-button">
@ -119,26 +119,26 @@
<img ng-src="{{ image.attachment_url }}" alt="{{image.attachment}}" />
</div>
<div>
<span class="btn btn-default btn-file"><span class="fileinput-new">{{ 'app.shared.buttons.browse' | translate }} <i class="fa fa-upload fa-fw"></i></span><span class="fileinput-exists" translate>{{ 'app.shared.buttons.change' }}</span>
<span class="fab-button btn-file"><span class="fileinput-new">{{ 'app.shared.buttons.browse' | translate }} <i class="fa fa-upload fa-fw"></i></span><span class="fileinput-exists" translate>{{ 'app.shared.buttons.change' }}</span>
<input type="file"
name="project[project_steps_attributes][][project_step_images_attributes][][attachment]"
accept="image/jpeg,image/gif,image/png">
</span>
<a class="btn btn-danger fileinput-exists" data-dismiss="fileinput" ng-click="deleteProjectStepImage(step, image)" translate>{{ 'app.shared.buttons.delete' }}</a>
<a class="fab-button is-alert fileinput-exists" data-dismiss="fileinput" ng-click="deleteProjectStepImage(step, image)" translate>{{ 'app.shared.buttons.delete' }}</a>
</div>
</div>
</div>
</div>
<div>
<a class="btn btn-default" ng-click="addProjectStepImage(step)" role="button">{{ 'app.shared.project.add_a_picture' | translate }} <i class="fa fa-file-o fa-fw"></i></a>
<a class="fab-button" ng-click="addProjectStepImage(step)" role="button">{{ 'app.shared.project.add_a_picture' | translate }} <i class="fa fa-file-o fa-fw"></i></a>
</div>
<div class="m-t">
<a class="btn btn-sm btn-danger" ng-click="deleteStep(step)" role="button"><i class="fa fa-trash-o m-r-xs"></i> {{ 'app.shared.project.delete_the_step' | translate }}</a>
<a class="fab-button is-alert" ng-click="deleteStep(step)" role="button"><i class="fa fa-trash-o m-r-xs"></i> {{ 'app.shared.project.delete_the_step' | translate }}</a>
</div>
</div>
</div>
<a class="btn btn-default m-b" ng-click="addStep()" role="button">
<a class="fab-button m-b" ng-click="addStep()" role="button">
<i class="fa fa-plus m-r-sm" aria-hidden="true"></i>
<span translate>{{ 'app.shared.project.add_a_new_step' }}</span></a>
</div>
@ -149,12 +149,12 @@
</div> <!-- ./panel-body -->
<div class="panel-footer no-padder">
<div ng-show="project.state != 'published'">
<div class="btn btn-lg btn-block btn-valid btn-success text-u-c r-n" publish-project ng-disabled="projectForm.$invalid" translate>{{ 'app.shared.project.publish_your_project' }}</div>
<div class="fab-button is-info button-full" publish-project ng-disabled="projectForm.$invalid" translate>{{ 'app.shared.project.publish_your_project' }}</div>
<div class="text-center font-bold text-u-c" translate>{{ 'app.shared.project.or' }}</div>
</div>
<input type="submit"
ng-value="saveButtonValue()"
class="r-b btn-valid btn btn-warning btn-block p-lg btn-lg text-u-c"
class="fab-button is-secondary button-full"
ng-disabled="projectForm.$invalid"/>
</div>
</section>

View File

@ -18,9 +18,9 @@
<div class="col-xs-12 col-sm-12 col-md-4 b-t hide-b-md">
<section class="heading-actions wrapper">
<input type="submit" ng-value="saveButtonValue()" class="btn btn-lg btn-warning m-t-xs text-u-c"
<input type="submit" ng-value="saveButtonValue()" class="fab-button is-secondary m-t-xs"
ng-disabled="projectForm.$invalid"/>
<div class="btn btn-lg btn-valid btn-success m-t-xs text-u-c" publish-project ng-if="project.state == 'draft'" ng-disabled="projectForm.$invalid" translate>{{ 'app.logged.projects_edit.publish' }}</div>
<div class="fab-button is-info m-t-xs" publish-project ng-if="project.state == 'draft'" ng-disabled="projectForm.$invalid" translate>{{ 'app.logged.projects_edit.publish' }}</div>
</section>
</div>

View File

@ -13,7 +13,7 @@
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md" ng-if="isAuthorized(['admin','member', 'manager'])">
<section class="heading-actions wrapper">
<a class="btn btn-lg btn-warning bg-white b-2x rounded m-t-sm upper text-sm" ui-sref="app.logged.projects_new" role="button" translate>{{ 'app.public.projects_list.add_a_project' }}</a>
<a class="fab-button is-secondary m-t-sm" ui-sref="app.logged.projects_new" role="button" translate>{{ 'app.public.projects_list.add_a_project' }}</a>
</section>
</div>
</div>
@ -42,7 +42,7 @@
<div class="keywords">
<input type="search" class="form-control" placeholder="{{ 'app.public.projects_list.keywords' | translate }}" ng-model="search.q"/>
<button type="submit" class="fab-button fab-button--icon-only is-secondary"><i class="fas fa-search"></i></button>
<!--<button type="submit" class="btn btn-warning" translate>{{ 'app.public.projects_list.search' }}</button>-->
<!--<button type="submit" class="fab-button is-secondary" translate>{{ 'app.public.projects_list.search' }}</button>-->
</div>
</form>
@ -108,7 +108,7 @@
</div>
<div class="text-center m m-b-lg" ng-if="!openlab.searchOverWholeNetwork && (projects.length != 0) && (isAuthorized('admin') || isAuthorized('manager'))">
<a class="btn bg-light text-black" ng-href="{{ zipUrl }}" target="_blank">
<a class="fab-button" ng-href="{{ zipUrl }}" target="_blank">
<i class="fa fa-download"></i> {{ 'app.public.projects_list.download_archive' | translate }}
</a>
</div>

View File

@ -16,8 +16,8 @@
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md">
<section class="heading-actions wrapper">
<a ui-sref="app.logged.projects_edit({id: project.id})" ng-if="projectEditableBy(currentUser) || isAuthorized('admin')" class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs text-u-c text-sm"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="deleteProject(event)" ng-if="projectDeletableBy(currentUser) || isAuthorized('admin')" class="btn btn-lg btn-danger b-2x rounded no-b m-t-xs"><i class="fa fa-trash-o"></i></a>
<a ui-sref="app.logged.projects_edit({id: project.id})" ng-if="projectEditableBy(currentUser) || isAuthorized('admin')" class="fab-button is-secondary m-t-xs"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="deleteProject(event)" ng-if="projectDeletableBy(currentUser) || isAuthorized('admin')" class="fab-button is-alert m-t-xs"><i class="fa fa-trash-o"></i></a>
</section>
</div>

View File

@ -27,7 +27,7 @@
</div>
<div class="panel-footer no-padder">
<button class="btn btn-valid btn-warning btn-block p-l btn-lg text-u-c r-b" ng-click="submitConfirmationNewForm()" ng-disabled="confirmationNewForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button is-primary upper" ng-click="submitConfirmationNewForm()" ng-disabled="confirmationNewForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
</div>
</div>
</div>

View File

@ -57,7 +57,7 @@
</div>
</div>
<div ng-hide="slot.plan_ids.length > 0 && slot.plansGrouped.length === 0">
<button class="btn btn-valid btn-warning btn-block text-u-c r-b" ng-click="validateSlot(slot)" ng-if="!slot.isValid" translate>{{ 'app.shared.cart.confirm_this_slot' }}</button>
<button class="fab-button is-secondary button-full upper" ng-click="validateSlot(slot)" ng-if="!slot.isValid" translate>{{ 'app.shared.cart.confirm_this_slot' }}</button>
</div>
<div class="clear"><a class="pull-right m-b-sm text-u-l ng-scope m-r-sm pointer" ng-click="removeSlot(slot, $index, $event)" ng-if="slot.isValid" translate>{{ 'app.shared.cart.remove_this_slot' }}</a></div>
@ -68,7 +68,7 @@
<div ng-show="$root.modules.plans && isUserValidatedByType('subscription')">
<div ng-if="isSlotsValid() && !user.subscribed_plan" ng-show="!modePlans">
<p class="font-sbold text-base l-h-2x" translate>{{ 'app.shared.cart.to_benefit_from_attractive_prices' }}</p>
<div><button class="btn btn-warning-full rounded btn-block text-xs" ng-click="showPlans()" translate>{{ 'app.shared.cart.view_our_subscriptions' }}</button></div>
<div><button class="fab-button is-secondary button-full button-s" ng-click="showPlans()" translate>{{ 'app.shared.cart.view_our_subscriptions' }}</button></div>
<p class="font-bold text-base text-u-c text-center m-b-xs" translate>{{ 'app.shared.cart.or' }}</p>
</div>
@ -103,7 +103,7 @@
</div>
<div class="widget-footer no-padder" ng-if="events.reserved.length > 0 || (selectedPlan && !events.reserved)">
<button class="btn btn-valid btn-info btn-block p-l btn-lg text-u-c r-b text-base" ng-click="payCart()" ng-if="isSlotsValid() && (!modePlans || selectedPlan)">{{ 'app.shared.cart.confirm_and_pay' | translate }} {{amountTotal | currency}}</button>
<button class="fab-button is-info button-full upper" ng-click="payCart()" ng-if="isSlotsValid() && (!modePlans || selectedPlan)">{{ 'app.shared.cart.confirm_and_pay' | translate }} {{amountTotal | currency}}</button>
</div>
<div class="widget-content no-bg auto wrapper" ng-show="events.paid && events.paid.length > 0">

View File

@ -1,35 +1,35 @@
<div class="modal-header">
<h3 class="modal-title" translate>{{ 'app.shared.plan.new_partner' }}</h3>
<h3 class="modal-title" translate>{{ 'app.admin.partner_modal.title' }}</h3>
</div>
<div class="modal-body m-lg">
<form name="partnerForm">
<div class="form-group" ng-class="{'has-error': partnerForm['partner[first_name]'].$dirty && partnerForm['partner[first_name]'].$invalid}">
<label for="partner[first_name]" translate>{{ 'app.shared.plan.first_name' }}</label>
<label for="partner[first_name]" translate>{{ 'app.admin.partner_modal.first_name' }}</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" required="true" ng-model="partner.first_name" id="partner[first_name]" name="partner[first_name]" />
</div>
<span class="help-block" ng-show="partnerForm['partner[first_name]'].$dirty && partnerForm['partner[first_name]'].$error.required" translate>{{ 'app.shared.plan.first_name_is_required' }}</span>
<span class="help-block" ng-show="partnerForm['partner[first_name]'].$dirty && partnerForm['partner[first_name]'].$error.required" translate>{{ 'app.admin.partner_modal.field_is_required' }}</span>
</div>
<div class="form-group" ng-class="{'has-error': partnerForm['partner[last_name]'].$dirty && partnerForm['partner[last_name]'].$invalid}">
<label for="partner[last_name]" translate>{{ 'app.shared.plan.surname' }}</label>
<label for="partner[last_name]" translate>{{ 'app.admin.partner_modal.surname' }}</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" required="true" ng-model="partner.last_name" id="partner[last_name]" name="partner[last_name]" />
</div>
<span class="help-block" ng-show="partnerForm['partner[last_name]'].$dirty && partnerForm['partner[last_name]'].$error.required" translate>{{ 'app.shared.plan.surname_is_required' }}</span>
<span class="help-block" ng-show="partnerForm['partner[last_name]'].$dirty && partnerForm['partner[last_name]'].$error.required" translate>{{ 'app.admin.partner_modal.field_is_required' }}</span>
</div>
<div class="form-group" ng-class="{'has-error': partnerForm['partner[email]'].$dirty && partnerForm['partner[email]'].$invalid}">
<label for="partner[email]" translate>{{ 'app.shared.plan.email_address' }}</label>
<label for="partner[email]" translate>{{ 'app.admin.partner_modal.email' }}</label>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
<input type="email" class="form-control" required="true" ng-model="partner.email" id="partner[email]" name="partner[email]" />
</div>
<span class="help-block" ng-show="partnerForm['partner[email]'].$dirty && partnerForm['partner[email]'].$error.required" translate>{{ 'app.shared.plan.email_address_is_required' }}</span>
<span class="help-block" ng-show="partnerForm['partner[email]'].$dirty && partnerForm['partner[email]'].$error.required" translate>{{ 'app.admin.partner_modal.field_is_required' }}</span>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="ok()" ng-disabled="!partnerForm.$valid" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="btn btn-warning" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary" ng-click="ok()" ng-disabled="!partnerForm.$valid" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>

View File

@ -8,7 +8,7 @@
<p><strong>{{object.start | amDateFormat: 'LL'}} : {{object.start | amDateFormat:'LT'}} - {{object.end | amDateFormat:'LT'}}</strong></p>
</div>
<div class="modal-footer btn-stack">
<button class="btn btn-warning" ng-class="{'m-b':object.cancelable&&object.movable}" ng-click="ok('cancel')" ng-show="object.cancelable" translate>{{ 'app.shared.confirm_modify_slot_modal.cancel_this_reservation' }}</button>
<button class="btn btn-info" ng-click="ok('move')" ng-show="object.movable" translate>{{ 'app.shared.confirm_modify_slot_modal.i_want_to_change_date' }}</button>
<button class="btn btn-default" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
<button class="fab-button is-secondary button-full" ng-class="{'m-b':object.cancelable&&object.movable}" ng-click="ok('cancel')" ng-show="object.cancelable" translate>{{ 'app.shared.confirm_modify_slot_modal.cancel_this_reservation' }}</button>
<button class="fab-button is-info button-full" ng-click="ok('move')" ng-show="object.movable" translate>{{ 'app.shared.confirm_modify_slot_modal.i_want_to_change_date' }}</button>
<button class="fab-button button-full" ng-click="cancel()" translate>{{ 'app.shared.buttons.cancel' }}</button>
</div>

View File

@ -57,7 +57,7 @@
</div>
<div class="panel-footer no-padder">
<button class="btn btn-valid btn-warning btn-block p-l btn-lg text-u-c r-b" ng-click="login()" ng-disabled="loginForm.$invalid" translate translate-default="OK">{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button is-secondary button-full" ng-click="login()" ng-disabled="loginForm.$invalid" translate translate-default="OK">{{ 'app.shared.buttons.confirm' }}</button>
</div>
</div>
<p class="text-center font-sbold" ng-show="publicRegistrations">

View File

@ -15,11 +15,11 @@
<ul class="nav navbar-nav hidden-xs">
<li class="about-page-link">
<a href class="about-link font-sbold text-sm" ui-sref="app.public.about" ng-show="!aboutPage">
<span class="label label-theme rounded text-lg text-white m-r-sm font-ebold">?</span>
<span class="label label-theme label-icon rounded text-lg m-r-sm font-ebold">?</span>
{{ linkName }}
</a>
<a href class="about-link font-sbold text-sm" ui-sref="app.public.home" ng-show="aboutPage">
<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="aboutPage"></i></span>
<span class="label label-theme label-icon rounded text-lg m-r-sm font-ebold"><i class="fa fa-caret-up" ng-show="aboutPage"></i></span>
{{ 'app.public.common.return' | translate }}
</a>
</li>

View File

@ -46,7 +46,7 @@
</div>
<div class="panel-footer no-padder">
<button class="btn btn-valid btn-warning btn-block p-l btn-lg text-u-c r-b" ng-click="changePassword()" ng-disabled="passwordEditForm.$invalid" translate>{{ 'app.shared.buttons.confirm'}}</button>
<button class="fab-button is-secondary button-full" ng-click="changePassword()" ng-disabled="passwordEditForm.$invalid" translate>{{ 'app.shared.buttons.confirm'}}</button>
</div>
</div>
</div>

View File

@ -26,7 +26,7 @@
</div>
<div class="panel-footer no-padder">
<button class="btn btn-valid btn-warning btn-block p-l btn-lg text-u-c r-b" ng-click="sendReset()" ng-disabled="passwordNewForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button is-primary upper" ng-click="sendReset()" ng-disabled="passwordNewForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
</div>
</div>
</div>

View File

@ -322,5 +322,5 @@
</div>
</div>
<div class="modal-footer no-padder">
<button class="btn btn-valid btn-warning btn-block p-l btn-lg text-u-c r-b" ng-click="ok()" ng-disabled="signupForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
<button class="fab-button is-secondary button-full" ng-click="ok()" ng-disabled="signupForm.$invalid" translate>{{ 'app.shared.buttons.confirm' }}</button>
</div>

View File

@ -13,7 +13,7 @@
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md" ng-if="isAuthorized('admin')">
<section class="heading-actions wrapper">
<a class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs" ui-sref="app.admin.space_new" role="button" translate>{{ 'app.public.spaces_list.add_a_space' }}</a>
<a class="fab-button is-secondary m-t-xs" ui-sref="app.admin.space_new" role="button" translate>{{ 'app.public.spaces_list.add_a_space' }}</a>
</section>
</div>
</div>
@ -39,7 +39,7 @@
</div>
</div>
<div class="col-md-3 col-md-offset-6 m-t-n row-centered" ng-if="isAuthorized(['admin', 'manager'])">
<a role="button" ui-sref="app.admin.calendar" class="btn btn-lg btn-default rounded m-t-sm text-sm">
<a role="button" ui-sref="app.admin.calendar" class="fab-button m-t-sm">
<i class="fa fa-calendar-check-o m-r" aria-hidden="true"></i><span translate>{{ 'app.public.spaces_list.new_availability' }}</span>
</a>
</div>

View File

@ -15,10 +15,10 @@
<div class="col-xs-12 col-sm-12 col-md-4 b-t hide-b-md">
<section class="heading-actions wrapper">
<a ng-click="reserveSpace($event)" class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs" ng-if="!isAuthorized('admin')" translate>{{ 'app.public.space_show.book_this_space' }}</a>
<a ng-click="reserveSpace($event)" class="fab-button is-secondary m-t-xs" ng-if="!isAuthorized('admin')" translate>{{ 'app.public.space_show.book_this_space' }}</a>
<a ui-sref="app.admin.space_edit({id:space.slug})" ng-if="isAuthorized('admin')" class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="deleteSpace($event)" ng-if="isAuthorized('admin')" class="btn btn-lg btn-danger b-2x rounded no-b m-t-xs"><i class="fa fa-trash-o"></i></a>
<a ui-sref="app.admin.space_edit({id:space.slug})" ng-if="isAuthorized('admin')" class="fab-button is-secondary m-t-xs"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="deleteSpace($event)" ng-if="isAuthorized('admin')" class="fab-button is-alert m-t-xs"><i class="fa fa-trash-o"></i></a>
</section>
</div>

View File

@ -13,7 +13,7 @@
</div>
<div class="col-xs-12 col-sm-12 col-md-3 b-t hide-b-md">
<section class="heading-actions wrapper">
<a class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs"
<a class="fab-button is-secondary m-t-xs"
ui-sref="app.logged.trainings_reserve({id:'all'})"
ng-hide="mode == 'all'"
role="button"

View File

@ -15,10 +15,10 @@
<div class="col-xs-12 col-sm-12 col-md-4 b-t hide-b-md">
<section class="heading-actions wrapper">
<a ng-click="reserveTraining(training, $event)" class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs" ng-if="!isAuthorized('admin')" translate>{{ 'app.public.training_show.book_this_training' }}</a>
<a ng-click="reserveTraining(training, $event)" class="fab-button is-secondary m-t-xs" ng-if="!isAuthorized('admin')" translate>{{ 'app.public.training_show.book_this_training' }}</a>
<a ui-sref="app.admin.trainings_edit({id: training.id})" ng-if="isAuthorized('admin')" class="btn btn-lg btn-warning bg-white b-2x rounded m-t-xs"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="delete(training)" ng-if="isAuthorized('admin')" class="btn btn-lg btn-danger b-2x rounded no-b m-t-xs"><i class="fa fa-trash-o"></i></a>
<a ui-sref="app.admin.trainings_edit({id: training.id})" ng-if="isAuthorized('admin')" class="fab-button is-secondary m-t-xs"><i class="fa fa-edit"></i> {{ 'app.shared.buttons.edit' | translate }}</a>
<a ng-click="delete(training)" ng-if="isAuthorized('admin')" class="fab-button is-alert m-t-xs"><i class="fa fa-trash-o"></i></a>
</section>
</div>
</div>

View File

@ -4,10 +4,6 @@
# a picture for the background of the user's profile.
# There's only one stylesheet record in the database, which is updated on each colour change.
class Stylesheet < ApplicationRecord
# brightness limits to change the font color to black or white
BRIGHTNESS_HIGH_LIMIT = 160
BRIGHTNESS_LOW_LIMIT = 40
validates :contents, presence: true
## ===== COMMON =====
@ -81,15 +77,15 @@ class Stylesheet < ApplicationRecord
end
def self.primary_text_color
Stylesheet.primary.paint.brightness >= BRIGHTNESS_HIGH_LIMIT ? 'black' : 'white'
Stylesheet.primary.paint.brightness > 100 ? 'black' : 'white'
end
def self.primary_decoration_color
Stylesheet.primary.paint.brightness <= BRIGHTNESS_LOW_LIMIT ? 'white' : 'black'
Stylesheet.primary.paint.brightness > 100 ? 'black' : 'white'
end
def self.secondary_text_color
Stylesheet.secondary.paint.brightness <= BRIGHTNESS_LOW_LIMIT ? 'white' : 'black'
Stylesheet.secondary.paint.brightness > 100 ? 'black' : 'white'
end
def self.theme_css

View File

@ -118,7 +118,7 @@ class User < ApplicationRecord
statistic_profile.gender.nil? || profile.first_name.blank? || profile.last_name.blank? || username.blank? ||
email.blank? || encrypted_password.blank? || group_id.nil? || statistic_profile.birthday.blank? ||
(Setting.get('phone_required') && profile.phone.blank?) ||
(Setting.get('address_required') && invoicing_profile.address&.address&.blank?)
(Setting.get('address_required') && invoicing_profile&.address&.address&.blank?)
end
def self.mapping

View File

@ -28,6 +28,7 @@ class EventService
price_cat[:amount] = to_centimes(price_cat[:amount])
end
end
params[:pre_registration_end_date] = Date.parse(params[:pre_registration_end_date]).end_of_day if params[:pre_registration_end_date]
# return the resulting params object
params
end

View File

@ -29,10 +29,9 @@ class InvoicesService
)
end
unless filters[:date].nil?
invoices = invoices.where(
"date_trunc('day', invoices.created_at) = :search",
search: "%#{Time.iso8601(filters[:date]).in_time_zone.to_date}%"
)
start_at = Date.parse(filters[:date]).in_time_zone
end_at = start_at.end_of_day
invoices = invoices.where(created_at: (start_at..end_at))
end
invoices

View File

@ -127,7 +127,7 @@ class Orders::OrderService
def filter_by_period(orders, filters)
return orders unless filters[:period_from].present? && filters[:period_to].present?
orders.where(created_at: Time.zone.parse(filters[:period_from])..Time.zone.parse(filters[:period_to]).end_of_day)
orders.where(created_at: Date.parse(filters[:period_from]).in_time_zone..Date.parse(filters[:period_to]).in_time_zone.end_of_day)
end
def orders_ordering(orders, filters)

View File

@ -146,10 +146,9 @@ class PaymentScheduleService
)
end
unless filters[:date].nil?
ps = ps.where(
"date_trunc('day', payment_schedules.created_at) = :search OR date_trunc('day', payment_schedule_items.due_date) = :search",
search: "%#{Time.zone.iso8601(filters[:date]).to_date}%"
)
start_at = Date.parse(filters[:date]).in_time_zone
end_at = start_at.end_of_day
ps = ps.where("(payment_schedules.created_at BETWEEN :start_at AND :end_at) OR (payment_schedule_items.due_date BETWEEN :start_at AND :end_at)", start_at: start_at, end_at: end_at).references(:payment_schedule_items)
end
ps

Some files were not shown because too many files have changed in this diff Show More