diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb
index dd5525fae..c4b445af9 100644
--- a/app/api/mobile/apis/courses.rb
+++ b/app/api/mobile/apis/courses.rb
@@ -541,6 +541,7 @@ module Mobile
present :course_id,params[:id]
present :user_id,params[:user_id]
present :member_info,my_member, with: Mobile::Entities::ProjectMember
+ present :course_group_id,my_member.course_group_id
present :status, 0
else
present :status, -1
@@ -779,7 +780,7 @@ module Mobile
requires :token, type: String
requires :course_group_id, type: Integer
end
- post 'join_coursegroup' do
+ post 'user_join_coursegroup' do
begin
authenticate!
member = Member.where(:course_id => params[:id], :user_id => current_user.id).first
@@ -795,6 +796,127 @@ module Mobile
end
end
+ desc "修改分班"
+ params do
+ requires :id, type: Integer
+ requires :token, type: String
+ requires :course_group_id, type: Integer
+ requires :user_id, type: Integer
+ end
+ post 'user_edit_coursegroup' do
+ begin
+ authenticate!
+ member = Member.where(:course_id => params[:id], :user_id => params[:user_id]).first
+
+ raise "不是该班级的学生!" unless member
+
+ member.course_group_id = params[:course_group_id].to_i
+ member.save
+ present :status,0
+ rescue Exception=>e
+ present :message,e.message
+ present :status,-1
+ end
+ end
+
+ desc '获取分班列表带上学生'
+ params do
+ requires :id, type: Integer
+ requires :token, type:String
+ end
+ get 'course_groups_withstudent/:id' do
+ begin
+ authenticate!
+ course = Course.find(params[:id])
+ groups = []
+ groups = course.course_groups if course.course_groups
+ present :data,groups, with: Mobile::Entities::CourseGroup
+ present :status,0
+ rescue
+ present :status,-1
+ end
+ end
+
+ desc "删除分班"
+ params do
+ requires :id, type: Integer
+ requires :token, type: String
+ requires :course_group_id, type: Integer
+ end
+ post 'delete_coursegroup' do
+ begin
+ authenticate!
+ c = Course.find("#{params[:id]}")
+ my_member = c.member_principals.where("users.id=#{current_user.id}").first
+
+ roles_ids = []
+ my_member.roles.each do |role|
+ roles_ids << role.id
+ end
+
+ if my_member && (roles_ids.include?(3) || roles_ids.include?(7) || roles_ids.include?(9) )
+ else
+ raise "您没有该权限!"
+ end
+ CourseGroup.delete(params[:course_group_id])
+ present :status,0
+ rescue Exception=>e
+ present :message,e.message
+ present :status,-1
+ end
+ end
+
+
+ desc "编辑分班"
+ params do
+ requires :id, type: Integer
+ requires :token, type: String
+ end
+ post 'edit_coursegroup' do
+ begin
+ authenticate!
+ c = Course.find("#{params[:id]}")
+ my_member = c.member_principals.where("users.id=#{current_user.id}").first
+
+ roles_ids = []
+ my_member.roles.each do |role|
+ roles_ids << role.id
+ end
+
+ if my_member && (roles_ids.include?(3) || roles_ids.include?(7) || roles_ids.include?(9) )
+ else
+ raise "您没有该权限!"
+ end
+
+ #增加分班和修改分班名
+ modify_groups = params[:modify_groups]
+ modify_groups.each do |g|
+ group = CourseGroup.find(g.id)
+ group.name = g.id.to_s + Time.now.to_i.to_s #只能先另取个名了不然原有的两个互换的话修改不了
+ group.save
+ end
+
+ modify_groups.each do |g|
+ group = CourseGroup.find(g.id)
+ group.name = g.name
+ group.save
+ end
+
+ #增加分班和修改分班名
+ add_groups = params[:add_groups]
+ add_groups.each do |name|
+ group = CourseGroup.new
+ group.name = name
+ group.course_id = params[:id]
+ group.save
+ end
+ present :status,0
+ rescue Exception=>e
+ present :message,e.message
+ present :status,-1
+ end
+ end
+
end
end
end
diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb
index 30a5a6cc9..1b696e40c 100644
--- a/app/api/mobile/entities/course.rb
+++ b/app/api/mobile/entities/course.rb
@@ -54,6 +54,7 @@ module Mobile
course_expose :updated_at
course_expose :course_student_num
course_expose :member_count
+ course_expose :groupnum
expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options|
current_user = options[:user]
can_setting = false
diff --git a/app/api/mobile/entities/course_group.rb b/app/api/mobile/entities/course_group.rb
new file mode 100644
index 000000000..f5d05d44c
--- /dev/null
+++ b/app/api/mobile/entities/course_group.rb
@@ -0,0 +1,19 @@
+module Mobile
+ module Entities
+ class CourseGroup < Grape::Entity
+ include Redmine::I18n
+ include ApplicationHelper
+ include ApiHelper
+ def self.course_group_expose(f)
+ expose f do |u,opt|
+ if u.is_a?(Hash) && u.key?(f)
+ u[f]
+ end
+ end
+ end
+ expose :id
+ expose :name
+ expose :users, using: Mobile::Entities::User
+ end
+ end
+end
diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb
index 2c0506d1e..5d2957d4c 100644
--- a/app/services/courses_service.rb
+++ b/app/services/courses_service.rb
@@ -332,7 +332,9 @@ class CoursesService
# unless (course.is_public == 1 || current_user.member_of_course?(course) || current_user.admin?)
# raise '403'
# end
- {:course => course,:syllabus_title => course.syllabus.nil? ? "":course.syllabus.title ,:work_unit => work_unit, :img_url => url_to_avatar(course),:current_user_is_member => current_user.nil? ? false : current_user.member_of_course?(course),:current_user_is_teacher => current_user.nil? ? false : is_course_teacher(current_user,course),:course_student_num => course ? course.student.count.to_s : 0}
+ groupnum = 0
+ groupnum = course.course_groups.length if course.course_groups
+ {:course => course,:syllabus_title => course.syllabus.nil? ? "":course.syllabus.title ,:work_unit => work_unit, :img_url => url_to_avatar(course),:current_user_is_member => current_user.nil? ? false : current_user.member_of_course?(course),:current_user_is_teacher => current_user.nil? ? false : is_course_teacher(current_user,course),:course_student_num => course ? course.student.count.to_s : 0,:groupnum => groupnum}
end
#创建课程
diff --git a/app/views/student_work/_programing_work_show.html.erb b/app/views/student_work/_programing_work_show.html.erb
index c4df9e715..bf4cf9e76 100644
--- a/app/views/student_work/_programing_work_show.html.erb
+++ b/app/views/student_work/_programing_work_show.html.erb
@@ -43,7 +43,7 @@
第<%= work.student_work_tests.count - index%>次测试
- <%= test.created_at.to_s(:db) %>
+ <%= format_time(test.created_at).to_s %>
diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html
index 30c9120c3..f8947b029 100644
--- a/public/assets/wechat/class.html
+++ b/public/assets/wechat/class.html
@@ -256,13 +256,15 @@
+
diff --git a/public/assets/wechat/class_group.html b/public/assets/wechat/class_group.html
new file mode 100644
index 000000000..04cdf8025
--- /dev/null
+++ b/public/assets/wechat/class_group.html
@@ -0,0 +1,20 @@
+
+
+
分班管理
+
+
+
{{group.name+"("+group.users.length+")"}}
+
+
{{user.realname == "" ? user.name : user.realname}}![]()
+
+
+
+
+
+
+
{{tip_1}}
+
+
+
\ No newline at end of file
diff --git a/public/assets/wechat/edit_class_group.html b/public/assets/wechat/edit_class_group.html
new file mode 100644
index 000000000..3dda96d53
--- /dev/null
+++ b/public/assets/wechat/edit_class_group.html
@@ -0,0 +1,14 @@
+
+
+
+
分班管理
+
{{course.name}}
+
+
+
+
+
\ No newline at end of file
diff --git a/public/assets/wechat/edit_class_member.html b/public/assets/wechat/edit_class_member.html
index d06eba89b..1eb53c7bf 100644
--- a/public/assets/wechat/edit_class_member.html
+++ b/public/assets/wechat/edit_class_member.html
@@ -4,15 +4,25 @@
成员管理
{{current_edit_member.user.realname == "" ? current_edit_member.user.name : current_edit_member.user.realname}}
角色变更
-
+
- 删除成员
-
+ 删除成员
+
+ 编辑分班
+
+
diff --git a/public/assets/wechat/join_class.html b/public/assets/wechat/join_class.html
index 4c81ff2e4..ad43db3a7 100644
--- a/public/assets/wechat/join_class.html
+++ b/public/assets/wechat/join_class.html
@@ -25,7 +25,5 @@
- {{tip_1}}
-
diff --git a/public/assets/wechat/join_classgroup.html b/public/assets/wechat/join_classgroup.html
index 9a7705252..9a7e9fa2d 100644
--- a/public/assets/wechat/join_classgroup.html
+++ b/public/assets/wechat/join_classgroup.html
@@ -1,11 +1,11 @@
-
+
欢迎加入班级
{{current_course.name}}
选择分班{{selectid}}
- - 暂无
+ - 暂无
- {{group.course_group.name}}
@@ -23,10 +23,12 @@
+
{{tip_1}}
+
\ No newline at end of file
diff --git a/public/assets/wechat/select_my_coursegroup.html b/public/assets/wechat/select_my_coursegroup.html
index c16b276e4..cc7a65753 100644
--- a/public/assets/wechat/select_my_coursegroup.html
+++ b/public/assets/wechat/select_my_coursegroup.html
@@ -2,24 +2,27 @@
我的信息
-
{{current_edit_member.user.show_name}}
+
{{current_edit_member.user.realname == "" ? current_edit_member.user.name : current_edit_member.user.realname}}
角色
学生
选择分班
-
{{tip_1}}
-
{{tip_2}}
+
{{tip_1}}
+
{{tip_2}}
diff --git a/public/javascripts/wechat/controllers/class.js b/public/javascripts/wechat/controllers/class.js
index ca4ad6d76..70c5d839d 100644
--- a/public/javascripts/wechat/controllers/class.js
+++ b/public/javascripts/wechat/controllers/class.js
@@ -258,7 +258,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
rms.save('current_edit_member', user);
rms.save("course",vm.course);
rms.save("tab_num",vm.currentTab);
- $location.path("/select_my_coursegroup").search({id: courseid});
+ $location.path("/select_my_coursegroup").search({id: courseid,user_id: user.id});
};
vm.review = function(user){
@@ -367,5 +367,24 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
};
+ vm.goEditGroup = function(){
+ if(!vm.isTeacher){
+ return;
+ }
+
+ rms.save('course_activities_page',vm.course_activities_page);
+ rms.save("course_activities",vm.course_activities);
+ rms.save('course_has_more', vm.course_has_more);
+ rms.save("tab_num",vm.currentTab);
+ rms.save("course",vm.course);
+ rms.save('current_course', vm.course);
+
+ if(vm.course.groupnum == 0){
+ $location.path("/edit_class_group").search({id: courseid});
+ }
+ else{
+ $location.path("/class_group").search({id: courseid});
+ }
+ }
}]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/class_group.js b/public/javascripts/wechat/controllers/class_group.js
new file mode 100644
index 000000000..77de92332
--- /dev/null
+++ b/public/javascripts/wechat/controllers/class_group.js
@@ -0,0 +1,48 @@
+app.controller('ClassGroupController', ['$scope', 'config','$http', 'auth','$location','$routeParams','alertService','rms','common','$timeout', function($scope, config, $http, auth, $location, $routeParams,alertService,rms,common,$timeout){
+// common.checkLogin();
+
+ $scope.replaceUrl = function(url){
+ return url;
+ };
+
+ var vm = $scope;
+ var courseid = $routeParams.id;
+ vm.alertService = alertService.create();
+
+ if(!vm.course){
+ $http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then(
+ function(response) {
+ console.log(response.data);
+ if (response.data.status == 0){
+ vm.course = response.data.data;
+ console.log("courses");
+ console.log(response.data.data);
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+ if(!vm.course){
+ vm.tip_1 = "该班级不存在或已被删除";
+ }
+ }
+ );
+ }
+
+
+ $http.get(config.apiUrl + 'courses/course_groups_withstudent/'+courseid+'?token='+auth.token()).then(
+ function(response) {
+ console.log("groups=");
+ console.log(response);
+ if(response.data.status == 0) {
+ vm.groups = response.data.data;
+ }
+ else{
+ vm.groups = [];
+ }
+ });
+
+ vm.goEditGroup = function(){
+ $location.path("/edit_class_group").search({id: courseid});
+ }
+
+}]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/edit_class.js b/public/javascripts/wechat/controllers/edit_class.js
index d61c25353..6cb50da1a 100644
--- a/public/javascripts/wechat/controllers/edit_class.js
+++ b/public/javascripts/wechat/controllers/edit_class.js
@@ -63,7 +63,7 @@ app.controller('EditClassController', ['$scope', '$http', 'auth', 'config', 'ale
vm.syllabus.courses.splice(index, 1);
}
- }
+ };
vm.newClass = function (frm, syllabus) {
frm.$setSubmitted();
diff --git a/public/javascripts/wechat/controllers/edit_class_group.js b/public/javascripts/wechat/controllers/edit_class_group.js
new file mode 100644
index 000000000..e80b35869
--- /dev/null
+++ b/public/javascripts/wechat/controllers/edit_class_group.js
@@ -0,0 +1,136 @@
+
+
+app.controller('EditClassGroupController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,common){
+ var vm = $scope;
+ var courseid = $routeParams.id;
+ vm.alertService = alertService.create();
+ vm.alertService_2 = alertService.create();
+
+ if(!vm.course){
+ $http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then(
+ function(response) {
+ console.log(response.data);
+ if (response.data.status == 0){
+ vm.course = response.data.data;
+ console.log("courses");
+ console.log(response.data.data);
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+ if(!vm.course){
+ vm.tip_1 = "该班级不存在或已被删除";
+ }
+ }
+ );
+ }
+
+ $http.get(config.apiUrl + 'courses/course_groups/'+courseid+'?token='+auth.token()).then(
+ function(response) {
+ console.log("groups=");
+ console.log(response);
+ if(response.data.status == 0) {
+ vm.groups = response.data.data;
+ for(var i in vm.groups){
+ vm.groups[i].tmpname = vm.groups[i].course_group.name;
+ }
+ }
+ else{
+ vm.groups = [];
+ }
+ });
+
+ vm.addGroup = function(){
+ vm.groups.push({tmpname:""});
+ };
+
+ vm.deleteGroup = function(index){
+ var group = vm.groups[index];
+ if(group.course_group){
+ vm.alertService_2.showMessage('提示', '您确定要删除该分班吗?', function() {
+ $http.post(config.apiUrl+'courses/delete_coursegroup', {
+ token: auth.token(),
+ id: courseid,
+ course_group_id:group.course_group.id
+ }).then(function(response){
+ console.log(response);
+ if(response.data.status == 0){
+ vm.alertService.showMessage('提示', "删除成功!",function(){
+ vm.groups.splice(index, 1);
+ });
+ } else {
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+ });
+ });
+
+ } else {
+ vm.groups.splice(index, 1);
+ }
+
+ };
+
+ vm.newGroup = function (frm, groups) {
+ frm.$setSubmitted();
+ console.log(groups);
+
+ if(!frm.$valid){
+ console.log(frm.$error);
+ return;
+ }
+
+ if(vm.groups.length == 0){
+ $location.path("/class").search({id: courseid,tag:1});
+ return;
+ }
+ //不能有相同名称的分班
+ for(var i=0;i< vm.groups.length-1;i++) {
+ for (var j=i+1;j