mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-01-30 19:52:20 +01:00
[feature] details public page for a training
This commit is contained in:
parent
793b8e145b
commit
16997a2ce5
@ -139,9 +139,9 @@ Application.Controllers.controller "EditTrainingController", [ '$scope', '$state
|
|||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Controller used in the public listing page, allowing logged users to see the list of trainings
|
# Controller used in the trainings management page, allowing admins users to see and manage the list of trainings and reservations.
|
||||||
##
|
##
|
||||||
Application.Controllers.controller "TrainingsController", ["$scope", "$state", "$uibModal", 'Training', 'trainingsPromise', 'machinesPromise', '_t', 'growl', 'dialogs'
|
Application.Controllers.controller "TrainingsAdminController", ["$scope", "$state", "$uibModal", 'Training', 'trainingsPromise', 'machinesPromise', '_t', 'growl', 'dialogs'
|
||||||
, ($scope, $state, $uibModal, Training, trainingsPromise, machinesPromise, _t, growl, dialogs) ->
|
, ($scope, $state, $uibModal, Training, trainingsPromise, machinesPromise, _t, growl, dialogs) ->
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,15 +1,44 @@
|
|||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
|
##
|
||||||
|
# Public listing of the trainings
|
||||||
|
##
|
||||||
Application.Controllers.controller "TrainingsController", ['$scope', '$state', 'trainingsPromise', ($scope, $state, trainingsPromise) ->
|
Application.Controllers.controller "TrainingsController", ['$scope', '$state', 'trainingsPromise', ($scope, $state, trainingsPromise) ->
|
||||||
|
|
||||||
|
## List of trainings
|
||||||
$scope.trainings = trainingsPromise
|
$scope.trainings = trainingsPromise
|
||||||
|
|
||||||
|
##
|
||||||
|
# Callback for the 'reserve' button
|
||||||
|
##
|
||||||
$scope.reserveTraining = (training, event) ->
|
$scope.reserveTraining = (training, event) ->
|
||||||
$state.go('app.logged.trainings_reserve')
|
$state.go('app.logged.trainings_reserve', {id: training.id})
|
||||||
|
|
||||||
|
##
|
||||||
|
# Callback for the 'show' button
|
||||||
|
##
|
||||||
$scope.showTraining = (training) ->
|
$scope.showTraining = (training) ->
|
||||||
$state.go('app.logged.trainings_reserve')
|
$state.go('app.public.training_show', {id: training.id})
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
##
|
||||||
|
# Public view of a specific training
|
||||||
|
##
|
||||||
|
Application.Controllers.controller "ShowTrainingController", ['$scope', '$state', 'trainingPromise', ($scope, $state, trainingPromise) ->
|
||||||
|
|
||||||
|
## Current training
|
||||||
|
$scope.training = trainingPromise
|
||||||
|
|
||||||
|
##
|
||||||
|
# Callback for the 'reserve' button
|
||||||
|
##
|
||||||
|
$scope.reserveTraining = (training, event) ->
|
||||||
|
$state.go('app.logged.trainings_reserve', {id: training.id})
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# Controller used in the training reservation agenda page.
|
# Controller used in the training reservation agenda page.
|
||||||
# This controller is very similar to the machine reservation controller with one major difference: here, ONLY ONE
|
# This controller is very similar to the machine reservation controller with one major difference: here, ONLY ONE
|
||||||
|
@ -377,6 +377,19 @@ angular.module('application.router', ['ui.router']).
|
|||||||
translations: [ 'Translations', (Translations) ->
|
translations: [ 'Translations', (Translations) ->
|
||||||
Translations.query(['app.public.trainings_list']).$promise
|
Translations.query(['app.public.trainings_list']).$promise
|
||||||
]
|
]
|
||||||
|
.state 'app.public.training_show',
|
||||||
|
url: '/trainings/:id'
|
||||||
|
views:
|
||||||
|
'main@':
|
||||||
|
templateUrl: '<%= asset_path "trainings/show.html" %>'
|
||||||
|
controller: 'ShowTrainingController'
|
||||||
|
resolve:
|
||||||
|
trainingPromise: ['Training', '$stateParams', (Training, $stateParams)->
|
||||||
|
Training.get({id: $stateParams.id}).$promise
|
||||||
|
]
|
||||||
|
translations: [ 'Translations', (Translations) ->
|
||||||
|
Translations.query(['app.public.training_show']).$promise
|
||||||
|
]
|
||||||
.state 'app.logged.trainings_reserve',
|
.state 'app.logged.trainings_reserve',
|
||||||
url: '/trainings/reserve'
|
url: '/trainings/reserve'
|
||||||
views:
|
views:
|
||||||
@ -525,7 +538,7 @@ angular.module('application.router', ['ui.router']).
|
|||||||
views:
|
views:
|
||||||
'main@':
|
'main@':
|
||||||
templateUrl: '<%= asset_path "admin/trainings/index.html" %>'
|
templateUrl: '<%= asset_path "admin/trainings/index.html" %>'
|
||||||
controller: 'TrainingsController'
|
controller: 'TrainingsAdminController'
|
||||||
resolve:
|
resolve:
|
||||||
trainingsPromise: ['Training', (Training)->
|
trainingsPromise: ['Training', (Training)->
|
||||||
Training.query().$promise
|
Training.query().$promise
|
||||||
|
42
app/assets/templates/trainings/show.html.erb
Normal file
42
app/assets/templates/trainings/show.html.erb
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<div>
|
||||||
|
|
||||||
|
<section class="heading b-b">
|
||||||
|
<div class="row no-gutter">
|
||||||
|
<div class="col-xs-2 col-sm-2 col-md-1">
|
||||||
|
<section class="heading-btn">
|
||||||
|
<a href="#" ng-click="backPrevLocation($event)"><i class="fa fa-long-arrow-left "></i></a>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<div class="col-xs-10 col-sm-10 col-md-7 b-l b-r-md">
|
||||||
|
<section class="heading-title">
|
||||||
|
<h1>{{ training.name }}</h1>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<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" translate>{{ 'book_this_training' }}</a>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="row no-gutter">
|
||||||
|
<div class="col-sm-12 col-md-12 col-lg-8 b-r-lg">
|
||||||
|
|
||||||
|
<div class="article wrapper-lg" >
|
||||||
|
|
||||||
|
<div class="article-thumbnail" ng-if="training.training_image">
|
||||||
|
<img ng-src="{{training.training_image}}" alt="{{training.name}}" class="img-responsive">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="intro" ng-bind-html="training.description | breakFilter"></p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
@ -171,6 +171,14 @@ en:
|
|||||||
unauthorized_operation: "Unauthoried operation"
|
unauthorized_operation: "Unauthoried operation"
|
||||||
the_machine_cant_be_deleted_because_it_is_already_reserved_by_some_users: "The machine can't be deleted because it's already reserved by some users."
|
the_machine_cant_be_deleted_because_it_is_already_reserved_by_some_users: "The machine can't be deleted because it's already reserved by some users."
|
||||||
|
|
||||||
|
trainings_list:
|
||||||
|
# list of trainings
|
||||||
|
the_trainings: "The trainings"
|
||||||
|
|
||||||
|
training_show:
|
||||||
|
# details of a training
|
||||||
|
book_this_training: "Book this training"
|
||||||
|
|
||||||
plans:
|
plans:
|
||||||
# summary of the subscriptions
|
# summary of the subscriptions
|
||||||
subcriptions: "Subscriptions"
|
subcriptions: "Subscriptions"
|
||||||
|
@ -176,6 +176,11 @@ fr:
|
|||||||
# liste des formations
|
# liste des formations
|
||||||
the_trainings: "Les formations"
|
the_trainings: "Les formations"
|
||||||
|
|
||||||
|
training_show:
|
||||||
|
# détails d'une formation
|
||||||
|
book_this_training: "Réserver cette formation"
|
||||||
|
|
||||||
|
|
||||||
plans:
|
plans:
|
||||||
# page récapitulative des abonnements
|
# page récapitulative des abonnements
|
||||||
subcriptions: "Les abonnements"
|
subcriptions: "Les abonnements"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user