发送课程完成

This commit is contained in:
guange 2016-07-02 23:46:45 +08:00
parent c248249983
commit b010ce2e61
22 changed files with 251 additions and 82 deletions

View File

@ -1 +1 @@
{"access_token":"oEEf8ZKAB8Y2G0o_xnTPkPJHKKk8iHkLC-f5ptvQ2nCMj9IpC86ivLD2-p38GfOkuG-HuQp3pWZqhs3NJXUMdPLWsr5k67hPZYuqg4ozLccx0xdLswapj0mn8ovZhK1tKIKiAFAOMO","expires_in":7200,"got_token_at":1467012449} {"access_token":"m8kGwb7G0laM6-0uHmPtxETR6WJk5PgR37te_h8aBwgqGXkml2ZZAvPUBldmzF5hDZsQBHEn8PUACSL60eDKlCWigwwUJReK2wB4UbXIc1UA-rrkpHuWl84H3rcswtlvHENjAHAZWF","expires_in":7200,"got_token_at":1467472907}

View File

@ -107,7 +107,7 @@ module Mobile
status = cs.join_course({role: "10", openid: params[:openid], invite_code: params[:invite_code]}, current_user) status = cs.join_course({role: "10", openid: params[:openid], invite_code: params[:invite_code]}, current_user)
{ {
status: status[:state], status: status[:state],
messsge:CoursesService::JoinCourseError.message(status[:state]) message:CoursesService::JoinCourseError.message(status[:state])
} }
end end

View File

@ -46,9 +46,25 @@ module Mobile
end end
desc '发送资源'
params do
requires :token, type: String
requires :course_ids, type: Array[Integer]
requires :send_id, type: Integer
end
post 'send' do
authenticate!
rs = ResourcesService.new
ori, flag, save_message = rs.send_resource_to_course(params)
if flag
present :status, 0
else
{status: -1, message: save_message.first}
end
end end
end
end end
end end

View File

@ -1977,44 +1977,8 @@ class UsersController < ApplicationController
def add_exist_file_to_course def add_exist_file_to_course
@flag = true @flag = true
if params[:send_id].present? if params[:send_id].present?
send_id = params[:send_id] rs = ResourcesService.new
@ori = Attachment.find_by_id(send_id) @ori, @flag, @save_message = rs.send_resource_to_course(params)
course_ids = params[:course_ids]
if course_ids.nil?
@flag = false
end
unless course_ids.nil?
course_ids.each do |id|
next if @ori.blank?
@exist = false
Course.find(id).attachments.each do |att| #如果课程中包含该资源
if att.id == @ori.id || (!att.copy_from.nil? && !@ori.copy_from.nil? && att.copy_from == @ori.copy_from) || att.copy_from == @ori.id || att.id == @ori.copy_from
att.created_on = Time.now
att.save
@exist = true
break
end
end
next if @exist
attach_copied_obj = @ori.copy
attach_copied_obj.tag_list.add(@ori.tag_list) # tag关联
attach_copied_obj.container = Course.find(id)
attach_copied_obj.created_on = Time.now
attach_copied_obj.author_id = User.current.id
attach_copied_obj.is_public = 0
attach_copied_obj.copy_from = @ori.copy_from.nil? ? @ori.id : @ori.copy_from #发送要添加copy_from
if attach_copied_obj.attachtype == nil
attach_copied_obj.attachtype = 4
end
if attach_copied_obj.save
# 更新引用次数
quotes = @ori.quotes.to_i + 1
@ori.update_attribute(:quotes, quotes) unless @ori.nil?
@ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
end
@save_message = attach_copied_obj.errors.full_messages
end
end
elsif params[:send_ids].present? elsif params[:send_ids].present?
send_ids = params[:send_ids].split(",") send_ids = params[:send_ids].split(",")
course_ids = params[:course_ids] course_ids = params[:course_ids]

View File

@ -324,7 +324,7 @@ class CoursesService
1, '密码错误', 1, '密码错误',
2, '课程已过期 请联系课程管理员重启课程。', 2, '课程已过期 请联系课程管理员重启课程。',
3, '您已经加入了课程', 3, '您已经加入了课程',
4, '您加入的课程不存在', 4, '您的邀请码不正确',
5, '您还未登录', 5, '您还未登录',
6, '申请成功,请等待审核完毕', 6, '申请成功,请等待审核完毕',
7, '您已经发送过申请了,请耐心等待', 7, '您已经发送过申请了,请耐心等待',

View File

@ -0,0 +1,53 @@
#coding=utf-8
class ResourcesService
#发送资源到课程
def send_resource_to_course params
send_id = params[:send_id]
@ori = Attachment.find_by_id(send_id)
course_ids = params[:course_ids]
@flag = false
unless course_ids.nil?
course_ids.each do |id|
next if @ori.blank?
@exist = false
Course.find(id).attachments.each do |att| #如果课程中包含该资源
if att.id == @ori.id || (!att.copy_from.nil? && !@ori.copy_from.nil? && att.copy_from == @ori.copy_from) || att.copy_from == @ori.id || att.id == @ori.copy_from
att.created_on = Time.now
att.save
@exist = true
@flag = true
break
end
end
next if @exist
attach_copied_obj = @ori.copy
attach_copied_obj.tag_list.add(@ori.tag_list) # tag关联
attach_copied_obj.container = Course.find(id)
attach_copied_obj.created_on = Time.now
attach_copied_obj.author_id = User.current.id
attach_copied_obj.is_public = 0
attach_copied_obj.copy_from = @ori.copy_from.nil? ? @ori.id : @ori.copy_from #发送要添加copy_from
if attach_copied_obj.attachtype == nil
attach_copied_obj.attachtype = 4
end
if attach_copied_obj.save
# 更新引用次数
quotes = @ori.quotes.to_i + 1
@ori.update_attribute(:quotes, quotes) unless @ori.nil?
@ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
@flag = true
else
@flag = false
@save_message = attach_copied_obj.errors.full_messages
break
end
end
end
[@ori, @flag, @save_message]
end
end

View File

@ -319,4 +319,8 @@ class UsersService
my_jours_arr my_jours_arr
end end
end end

View File

@ -50,6 +50,7 @@
<script src="/javascripts/wechat/controllers/class.js"></script> <script src="/javascripts/wechat/controllers/class.js"></script>
<script src="/javascripts/wechat/controllers/class_list.js"></script> <script src="/javascripts/wechat/controllers/class_list.js"></script>
<script src="/javascripts/wechat/controllers/myresource.js"></script> <script src="/javascripts/wechat/controllers/myresource.js"></script>
<script src="/javascripts/wechat/controllers/send_class_list.js"></script>
<script src="/javascripts/wechat/others/routes.js"></script> <script src="/javascripts/wechat/others/routes.js"></script>
</body> </body>

View File

@ -2,6 +2,10 @@
<!-- 模板1开始可以使用scripttype设置为text/html来存放模板片段并且用id标示 --> <!-- 模板1开始可以使用scripttype设置为text/html来存放模板片段并且用id标示 -->
<div loading-spinner></div> <div loading-spinner></div>
<div class="class-detail-name">我的动态</div>
<div ng-repeat="act in activities"> <div ng-repeat="act in activities">
<div ng-if="act.container_type=='Course'"> <div ng-if="act.container_type=='Course'">
<div ng-if="act.act_type=='HomeworkCommon'"> <div ng-if="act.act_type=='HomeworkCommon'">

View File

@ -20,7 +20,7 @@
</div> </div>
<div ng-class="{'undis': !showResources}"> <div ng-class="{'undis': !showResources}">
<div ng-repeat="r in resources|filter:searchText" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.filename}}</span><a ng-show="isTeacher" herf="javascript:void(0);" class="fr mr10 link-blue2">发送</a></div> <div ng-repeat="r in resources|filter:searchText" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.filename}}</span><a ng-show="isTeacher" herf="javascript:void(0);" class="fr mr10 link-blue2" ng-click="sendFile(r)">发送</a></div>
<p ng-show="resources.length<=0" class="class-test-tip">暂无课件,<br /> <p ng-show="resources.length<=0" class="class-test-tip">暂无课件,<br />
请登录Trustie网站,在PC浏览器中上传课件。</p> 请登录Trustie网站,在PC浏览器中上传课件。</p>
</div> </div>
@ -37,14 +37,14 @@
</div> </div>
<div ng-class="{'undis': !showHomework}"> <div ng-class="{'undis': !showHomework}">
<div ng-repeat="r in homeworks|filter:searchText" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.homework_name}}</span><a ng-show="isTeacher" herf="javascript:void(0);" class="fr mr10 link-blue2">发送</a></div> <div ng-repeat="r in homeworks|filter:searchText" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.homework_name}}</span></div>
<p ng-show="homeworks.length<=0" class="class-test-tip">暂无作业,<br /> <p ng-show="homeworks.length<=0" class="class-test-tip">暂无作业,<br />
请登录Trustie网站,在PC浏览器中上传作业。</p> 请登录Trustie网站,在PC浏览器中上传作业。</p>
</div> </div>
<div ng-class="{'undis': !showTestcase}"> <div ng-class="{'undis': !showTestcase}">
<div ng-repeat="r in exercises|filter:searchText" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.exercise_name}}</span><a ng-show="isTeacher" herf="javascript:void(0);" class="fr mr10 link-blue2">发送</a></div> <div ng-repeat="r in exercises|filter:searchText" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.exercise_name}}</span></div>
<p ng-show="exercises.length<=0" class="class-test-tip">暂无小测验,<br /> <p ng-show="exercises.length<=0" class="class-test-tip">暂无小测验,<br />
请登录Trustie网站,在PC浏览器中上传小测验。</p> 请登录Trustie网站,在PC浏览器中上传小测验。</p>
</div> </div>

View File

@ -1,7 +1,7 @@
<div class="post-container" style="padding-bottom: 50px;"> <div class="post-container" style="padding-bottom: 50px;">
<div loading-spinner></div> <div loading-spinner></div>
<div class="blue-title">课程列表</div> <div class="blue-title">课程列表</div>
<div class="course-list-row f13 c-grey3 mt10"><img src="/images/wechat/plus.png" width="15" class="fl ml10 mt11 spread-btn" /><img src="/images/wechat/minus.png" width="15" class="fl ml10 mt11 retract-btn undis" /><span class="fl ml10">未命名课程</span><img src="/images/wechat/setting.png" width="15" class="fr mr10 mt10" /></div> <div class="course-list-row f13 c-grey3 mt10"><img src="/images/wechat/plus.png" width="15" class="fl ml10 mt11 spread-btn" /><img src="/images/wechat/minus.png" width="15" class="fl ml10 mt11 retract-btn undis" /><span class="fl ml10">未命名课程</span><img src="/images/wechat/setting.png" width="15" class="fr mr10 mt10" ng-click="onSetting()" /></div>
<ul class="class-list f13 c-grey3"> <ul class="class-list f13 c-grey3">
<li ng-click="goClass(course.id)" ng-repeat="course in courses" ng-class="{'border-bottom-none': $last}"> <li ng-click="goClass(course.id)" ng-repeat="course in courses" ng-class="{'border-bottom-none': $last}">
<img src="/images/wechat/dot.png" width="15px" class="class-list-dot" /> <img src="/images/wechat/dot.png" width="15px" class="class-list-dot" />
@ -14,8 +14,9 @@
<div class="bottom-tab-wrap mt10"> <div class="bottom-tab-wrap mt10">
<a ng-click="newClass()" href="javascript:void(0);" class="weixin-tab link-blue2 border-top">新建课程</a> <a ng-click="newClass()" href="javascript:void(0);" class="weixin-tab link-blue2 border-top">新建课程</a>
<a href="javascript:void(0);" class="weixin-tab link-blue2 border-top">加入班级</a> <a ng-click="joinClass()" class="weixin-tab link-blue2 border-top">加入班级</a>
<a ng-click="goResource()" href="javascript:void(0);" class="weixin-tab link-blue2 border-top">我的资源</a> <a ng-click="goResource()" href="javascript:void(0);" class="weixin-tab link-blue2 border-top">我的资源</a>
</div> </div>
<my-alert message="alertService.message" title="alertService.title" visible="alertService.visible" cb="alertService.cb"></my-alert>
</div> </div>

View File

@ -9,17 +9,17 @@
</div> </div>
</div> </div>
<div ng-class="{'undis': currentTab!=1}"> <div ng-class="{'undis': currentTab!=1}">
<div ng-repeat="r in resources" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.filename}}</span><a herf="javascript:void(0);" class="fr mr10 link-blue2">发送</a></div> <div ng-repeat="r in resources" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.filename}}</span><a ng-click="sendFile(r)" class="fr mr10 link-blue2">发送</a></div>
<p ng-show="resources.length<=0" class="class-test-tip">暂无课件,<br /> <p ng-show="resources.length<=0" class="class-test-tip">暂无课件,<br />
请登录Trustie网站,在PC浏览器中上传课件。</p> 请登录Trustie网站,在PC浏览器中上传课件。</p>
</div> </div>
<div ng-class="{'undis': currentTab!=2}"> <div ng-class="{'undis': currentTab!=2}">
<div ng-repeat="r in homeworks" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.homework_name}}</span><a herf="javascript:void(0);" class="fr mr10 link-blue2">发送</a></div> <div ng-repeat="r in homeworks" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.homework_name}}</span></div>
<p ng-show="homeworks.length<=0" class="class-test-tip">暂无作业,<br /> <p ng-show="homeworks.length<=0" class="class-test-tip">暂无作业,<br />
请登录Trustie网站,在PC浏览器中创建作业。</p> 请登录Trustie网站,在PC浏览器中创建作业。</p>
</div> </div>
<div ng-class="{'undis': currentTab!=3}"> <div ng-class="{'undis': currentTab!=3}">
<div ng-repeat="r in exercise" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.exercise_name}}</span><a herf="javascript:void(0);" class="fr mr10 link-blue2">发送</a></div> <div ng-repeat="r in exercise" ng-class="['class-detail-row', 'f13', 'c-grey3', {'border-top': $first}]"><span class="fl ml10">{{r.exercise_name}}</span></div>
<p ng-show="exercise.length<=0" class="class-test-tip">暂无测验,<br /> <p ng-show="exercise.length<=0" class="class-test-tip">暂无测验,<br />
请登录Trustie网站,在PC浏览器中创建测验。</p> 请登录Trustie网站,在PC浏览器中创建测验。</p>
</div> </div>

View File

@ -3,5 +3,8 @@
<div class="course-list-row f13 c-grey3 mt30"><span class="fl ml15 c-grey3">课程</span><input class="new-class-input ml25" placeholder="请输入课程名" /></div> <div class="course-list-row f13 c-grey3 mt30"><span class="fl ml15 c-grey3">课程</span><input class="new-class-input ml25" placeholder="请输入课程名" /></div>
<div class="course-list-row f13 c-grey3 mt10"><span class="fl ml15 c-grey3">班级</span><input class="new-class-input ml25" placeholder="请输入班级名" /></div> <div class="course-list-row f13 c-grey3 mt10"><span class="fl ml15 c-grey3">班级</span><input class="new-class-input ml25" placeholder="请输入班级名" /></div>
<div class="tac"><a herf="javascript:void(0);" class="link-blue2 f13 mt15 inline-block add-class-link">+新增班级</a></div> <div class="tac"><a herf="javascript:void(0);" class="link-blue2 f13 mt15 inline-block add-class-link">+新增班级</a></div>
<a href="javascript:void(0);" class="finish-btn">完成</a> <a ng-click="newClass()" class="finish-btn">完成</a>
<my-alert message="alertService.message" title="alertService.title" visible="alertService.visible" cb="alertService.cb"></my-alert>
</div> </div>

View File

@ -0,0 +1,13 @@
<div class="post-container">
<div loading-spinner></div>
<div class="blue-title">发送课程列表</div>
<div class="course-list-row f13 c-grey3 mt10"><img src="/images/wechat/plus.png" width="15" class="fl ml10 mt11 spread-btn undis" /><img src="/images/wechat/minus.png" width="15" class="fl ml10 mt11 retract-btn " /><span class="fl ml10">未命名课程</span></div>
<ul class="class-list f13 c-grey3">
<li ng-click="selectCourse(course)" ng-class="{'border-bottom-none': $last }" ng-repeat="course in courses"><img src="/images/wechat/dot.png" width="15px" class="class-list-dot" /><span class="fl ml10 class-list-name hidden">{{course.name}}</span><span ng-class="['login-box', 'fr', 'mr5', 'mt12', {'checked': course.checked}]"></span></li>
</ul>
<div class="btn2 bg-blue" ng-click="sendToCourses()">发送</div>
<my-alert message="alertService.message" title="alertService.title" visible="alertService.visible" cb="alertService.cb"></my-alert>
</div>

View File

@ -0,0 +1,21 @@
<!-- loading toast -->
<div id="loadingToast" class="weui_loading_toast" ng-show="activeCalls>0">
<div class="weui_mask_transparent"></div>
<div class="weui_toast">
<div class="weui_loading">
<div class="weui_loading_leaf weui_loading_leaf_0"></div>
<div class="weui_loading_leaf weui_loading_leaf_1"></div>
<div class="weui_loading_leaf weui_loading_leaf_2"></div>
<div class="weui_loading_leaf weui_loading_leaf_3"></div>
<div class="weui_loading_leaf weui_loading_leaf_4"></div>
<div class="weui_loading_leaf weui_loading_leaf_5"></div>
<div class="weui_loading_leaf weui_loading_leaf_6"></div>
<div class="weui_loading_leaf weui_loading_leaf_7"></div>
<div class="weui_loading_leaf weui_loading_leaf_8"></div>
<div class="weui_loading_leaf weui_loading_leaf_9"></div>
<div class="weui_loading_leaf weui_loading_leaf_10"></div>
<div class="weui_loading_leaf weui_loading_leaf_11"></div>
</div>
<p class="weui_toast_content">数据加载中</p>
</div>
</div>

View File

@ -105,6 +105,10 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
$location.path("/invite_code").search({id: courseid}); $location.path("/invite_code").search({id: courseid});
}; };
vm.sendFile = function(r){
$location.path("/send_class_list").search({id: r.id});
}
$http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then( $http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then(
function(response) { function(response) {
console.log(response.data); console.log(response.data);

View File

@ -3,16 +3,24 @@
*/ */
app.controller('ClassListController', ['$scope','config','auth','$http','$location', function($scope, config, auth, $http, $location){ app.controller('ClassListController', ['$scope', 'config', 'auth', '$http', '$location', 'alertService',
function ($scope, config, auth, $http, $location, alertService) {
var vm = $scope; var vm = $scope;
vm.courses = []; vm.courses = [];
vm.alertService = alertService.create();
var loadClassList = function () {
$http.get(config.apiUrl + "courses?token=" + auth.token() + "&per_page_count=10&page=1").then( $http.get(config.apiUrl + "courses?token=" + auth.token() + "&per_page_count=10&page=1").then(
function (response) { function (response) {
console.log(response.data); console.log(response.data);
vm.courses = response.data.data; vm.courses = response.data.data;
} }
); );
};
loadClassList();
vm.goClass = function (course_id) { vm.goClass = function (course_id) {
console.log(course_id); console.log(course_id);
@ -27,4 +35,31 @@ app.controller('ClassListController', ['$scope','config','auth','$http','$locati
$location.path("/myresource"); $location.path("/myresource");
} }
vm.joinClass = function () {
var code = window.prompt("请输入5位班级邀请码(不区分大小写)");
if (code && code.length == 5) {
$http.post(config.apiUrl + "courses/join", {
token: auth.token(),
invite_code: code
}).then(function (response) {
console.log(response.data);
if (response.data.status != 0) {
vm.alertService.showMessage('错误', response.data.message);
} else {
vm.alertService.showMessage('提示', '加入课程成功');
loadClassList();
}
});
} else {
if(code){
vm.alertService.showMessage('错误', '邀请码格式不正确');
}
}
};
vm.onSetting = function () {
vm.alertService.showMessage('提示', '此功能正在开发中');
}
}]); }]);

View File

@ -1,4 +1,4 @@
app.controller('MyResourceController', ['$scope', '$http', 'auth', 'config', function($scope, $http, auth, config){ app.controller('MyResourceController', ['$scope', '$http', 'auth', 'config', '$location', function($scope, $http, auth, config, $location){
var vm = $scope; var vm = $scope;
vm.menus = ['课件', '作业', '测验']; vm.menus = ['课件', '作业', '测验'];
@ -27,4 +27,8 @@ app.controller('MyResourceController', ['$scope', '$http', 'auth', 'config', fun
} }
vm.tab(1); vm.tab(1);
vm.sendFile = function(r){
$location.path("/send_class_list").search({id: r.id});
}
}] ); }] );

View File

@ -1,12 +1,12 @@
app.controller('NewClassController', ['$scope', '$http', 'auth', 'config', function($scope, $http, auth, config){ app.controller('NewClassController', ['$scope', '$http', 'auth', 'config', 'alertService', function($scope, $http, auth, config, alertService){
var vm = $scope; var vm = $scope;
vm.resources = []; vm.alertService = alertService.create();
vm.homeworks = [];
vm.exercises = [];
vm.newClass = function () {
vm.alertService.showMessage('提示', '此功能正在开发中');
}
}] ); }] );

View File

@ -0,0 +1,47 @@
app.controller('SendClassListController', ['$scope', '$http','$routeParams', 'config','auth','alertService', function($scope, $http, $routeParams, config, auth, alertService){
var vm = $scope;
var send_id = $routeParams.id;
vm.alertService = alertService.create();
vm.courses = [];
var loadClassList = function () {
$http.get(config.apiUrl + "courses?token=" + auth.token() + "&per_page_count=10&page=1").then(
function (response) {
console.log(response.data);
vm.courses = response.data.data;
}
);
};
loadClassList();
vm.selectCourse = function(course){
if( typeof course.checked !== 'boolean' ) course.checked = false;
course.checked = !course.checked;
}
vm.sendToCourses = function(){
var course_ids = [];
for(var i in vm.courses){
if(vm.courses[i].checked){
course_ids.push(vm.courses[i].id);
}
}
$http.post(config.apiUrl + "resources/send", {
token: auth.token(), course_ids: course_ids, send_id: send_id
}).then(function(response){
console.log(response.data);
if(response.data.status == 0){
vm.alertService.showMessage('提示', '发送成功', function () {
window.history.back();
});
} else {
vm.alertService.showMessage('发送出错', response.data.message);
}
})
}
}]);

View File

@ -1,7 +1,5 @@
app.directive('loadingSpinner', ['$http', function ($http) { app.directive('loadingSpinner', ['$http', 'config', function ($http, config) {
return { return {
restrict: 'A', templateUrl: config.rootPath+ 'templates/loading.html',
replace: true,
template: '<div ng-show="activeCalls>0" class="loading-bg"><div class="loading-box"><img src="/images/loading.gif" alt=""/><span>加载中...</span></div></div>',
}; };
}]); }]);

View File

@ -35,6 +35,7 @@ app.config(['$routeProvider',"$httpProvider", "$locationProvider",'config', func
.when('/class_list', makeRoute('class_list.html', 'ClassListController')) .when('/class_list', makeRoute('class_list.html', 'ClassListController'))
.when('/myresource', makeRoute('myresource.html', 'MyResourceController')) .when('/myresource', makeRoute('myresource.html', 'MyResourceController'))
.when('/invite_code', makeRoute('invite_code.html', 'InviteCodeController')) .when('/invite_code', makeRoute('invite_code.html', 'InviteCodeController'))
.when('/send_class_list', makeRoute('send_class_list.html', 'SendClassListController'))
.otherwise({ .otherwise({
redirectTo: '/activites' redirectTo: '/activites'
}); });