-
Notifications
You must be signed in to change notification settings - Fork 242
/
sections_controller.rb
72 lines (63 loc) · 1.86 KB
/
sections_controller.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
class SectionsController < ApplicationController
before_filter :authorize_only_for_admin
# Controller corresponding to the users management part
# Displays sections, and allows to create them
#TODO Displays metrics concerning users and sections
def index
@sections = Section.find(:all)
end
def new
@section = Section.new
end
# Creates a new section
def create
@section = Section.new(params[:section])
if @section.save
flash[:success] = I18n.t('section.create.success',
:name => @section.name)
if params[:section_modal]
redirect_to :controller => 'students', :action => 'new'
return
end
redirect_to :action => 'index'
return
else
flash[:error] = I18n.t('section.create.error')
if params[:section_modal]
redirect_to :controller => 'students', :action => 'new'
return
end
render :new
end
end
# edit a section
def edit
@section = Section.find(params[:id])
@students = @section.students
end
def update
@section = Section.find(params[:id])
if @section.update_attributes(params[:section])
flash[:success] = I18n.t('section.update.success',
:name => @section.name)
redirect_to :action => 'index'
else
flash[:error] = I18n.t('section.update.error')
render :edit
end
end
def destroy
@section = Section.find(params[:id])
# only destroy section if this user is allowed to do so and the section has no students
if @section.user_can_modify?(current_user)
unless @section.has_students?
@section.destroy
flash[:success] = I18n.t('section.delete.success')
else
flash[:error] = I18n.t('section.delete.not_empty')
end
else
flash[:error] = I18n.t('section.delete.error_permissions')
end
end
end