diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb
index b28d3eca0..bfd559402 100644
--- a/app/api/mobile/apis/courses.rb
+++ b/app/api/mobile/apis/courses.rb
@@ -582,6 +582,85 @@ module Mobile
end
end
+ desc "发布班级通知"
+ params do
+ requires :id, type: Integer
+ requires :token, type: String
+ requires :text, type: String
+ requires :title, type: String
+ end
+ post ':id/publishnotice' do
+ 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?(7)|| roles_ids.include?(9) || roles_ids.include?(3))
+
+ tmpparams = {}
+ tmpparams['title'] = params[:title]
+ tmpparams['description'] = params[:text]
+ tmpparams['sticky'] = 0
+
+ news = News.new(:course => c, :author => current_user)
+ #render :layout => 'base_courses'
+ news.safe_attributes = tmpparams
+
+ news.save!
+
+ present :status, 0
+ else
+ present :status, -1
+ present :message,"学生不能发布通知"
+ end
+ end
+
+ desc "发布班级问题"
+ params do
+ requires :id, type: Integer
+ requires :token, type: String
+ requires :text, type: String
+ end
+ post ':id/publishissue' do
+ authenticate!
+
+ c = Course.find("#{params[:id]}")
+
+ boards = c.boards.includes(:last_message => :author).all
+ if c.boards.empty?
+ board = c.boards.build
+ board.name = "班级问答区"
+ board.description = c.name.to_s
+ board.project_id = -1
+ if board.save
+ boards = c.boards.includes(:last_message => :author).all
+ end
+ end
+
+ board = boards.first
+
+ message = Message.new
+ message.author = current_user
+ message.board = board
+
+ tmpparams = {}
+ tmpparams['subject'] = params[:title]
+ tmpparams['content'] = params[:text]
+
+ message.safe_attributes = tmpparams
+
+ message.save!
+
+ present :status, 0
+
+ end
+
end
end
end
diff --git a/app/api/mobile/apis/projects.rb b/app/api/mobile/apis/projects.rb
index 05d4036f9..2202fbd13 100644
--- a/app/api/mobile/apis/projects.rb
+++ b/app/api/mobile/apis/projects.rb
@@ -229,6 +229,45 @@ module Mobile
present :message, result[:message]
end
+ desc "发布项目帖子"
+ params do
+ requires :id, type: Integer
+ requires :token, type: String
+ requires :text, type: String
+ end
+ post ':id/publishnote' do
+ authenticate!
+
+ project = Project.find("#{params[:id]}")
+
+ boards = project.boards.includes(:last_message => :author).all
+ if project.boards.empty?
+ board = project.boards.build
+ board.name = "项目讨论区"
+ board.description = project.name.to_s
+ board.course_id = -1
+ if board.save
+ boards = project.boards.includes(:last_message => :author).all
+ end
+ end
+
+ board = boards.first
+
+ message = Message.new
+ message.author = current_user
+ message.board = board
+
+ tmpparams = {}
+ tmpparams['subject'] = params[:title]
+ tmpparams['content'] = params[:text]
+
+ message.safe_attributes = tmpparams
+
+ message.save!
+
+ present :status, 0
+
+ end
end
end
end
diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html
index 764bff0a5..d60aed1bd 100644
--- a/public/assets/wechat/class.html
+++ b/public/assets/wechat/class.html
@@ -147,8 +147,8 @@
更多
diff --git a/public/assets/wechat/class_publishissue.html b/public/assets/wechat/class_publishissue.html
new file mode 100644
index 000000000..1d840239c
--- /dev/null
+++ b/public/assets/wechat/class_publishissue.html
@@ -0,0 +1,14 @@
+
+
+
+
{{current_course.name}}
+
标题
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/assets/wechat/class_publishnotice.html b/public/assets/wechat/class_publishnotice.html
new file mode 100644
index 000000000..25c485737
--- /dev/null
+++ b/public/assets/wechat/class_publishnotice.html
@@ -0,0 +1,14 @@
+
+
+
+
{{current_course.name}}
+
标题
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/assets/wechat/project.html b/public/assets/wechat/project.html
index 5da7a68c7..5b460ecad 100644
--- a/public/assets/wechat/project.html
+++ b/public/assets/wechat/project.html
@@ -99,7 +99,7 @@
更多
diff --git a/public/assets/wechat/project_publishnote.html b/public/assets/wechat/project_publishnote.html
new file mode 100644
index 000000000..5da49397c
--- /dev/null
+++ b/public/assets/wechat/project_publishnote.html
@@ -0,0 +1,14 @@
+
+
+
+
{{current_project.name}}
+
标题
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/class.js b/public/javascripts/wechat/controllers/class.js
index a0c575d92..91641ddcd 100644
--- a/public/javascripts/wechat/controllers/class.js
+++ b/public/javascripts/wechat/controllers/class.js
@@ -1,4 +1,4 @@
-app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location','$routeParams','alertService','rms','common', function($scope, config, $http, auth, $location, $routeParams,alertService,rms,common){
+app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location','$routeParams','alertService','rms','common','$timeout', function($scope, config, $http, auth, $location, $routeParams,alertService,rms,common,$timeout){
// common.checkLogin();
var vm = $scope;
@@ -103,7 +103,10 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
vm.isTeacher = false;
- vm.currentTab = 1;
+// vm.currentTab = 1;
+
+ vm.currentTab = rms.get('tab_num');
+
vm.tab = function(index){
vm.currentTab = index;
vm.searchText = '';
@@ -119,7 +122,9 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
if(vm.isTeacher){
if(index == 1){
- getClassActivities(0);
+ if(vm.course_activities.length <= 0){
+ getClassActivities(0);
+ }
vm.showActivities = true;
}
else if(index == 2){ //课件
@@ -137,7 +142,9 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
} else {
if(index == 1){
- getClassActivities(0);
+ if(vm.course_activities.length <= 0){
+ getClassActivities(0);
+ }
vm.showActivities = true;
}
else if(index == 3){
@@ -149,10 +156,10 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
vm.showResources = true;
}
}
- rms.save("tab_num",index);
+ rms.save("tab_num",vm.currentTab);
};
- vm.tabRecord = rms.get('tab_num') || 1;
+// vm.tabRecord = rms.get('tab_num') || 1;
// vm.course = {};
vm.students = [];
@@ -182,48 +189,61 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
$location.path("/send_class_list").search({id: r.id});
};
- $http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then(
- function(response) {
- console.log(response.data);
+ if(!vm.currentTab){
+ $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;
- resetMenu(vm.course.current_user_is_teacher,vm.tabRecord);
- if(tag){
- vm.tab(4);
- tag = null;
+ if (response.data.status == 0){
+ vm.course = response.data.data;
+ resetMenu(vm.course.current_user_is_teacher,vm.currentTab);
+ if(tag){
+ vm.tab(4);
+ tag = null;
+ vm.currentTab = 4;
+ }
+ else{
+ vm.currentTab = 1;
+ vm.tab(vm.currentTab);
+ }
}
else{
- vm.tab(vm.tabRecord);
+ vm.alertService.showMessage('提示', response.data.message);
}
- }
- else{
- vm.alertService.showMessage('提示', response.data.message);
- }
-
- }
- );
+ }
+ );
+ }else {
+ $timeout(function(){
+ window.scrollTo(0, rms.get("yoffset"));
+ });
+ }
- var resetMenu = function(is_teacher){
+ var resetMenu = function(is_teacher,index){
vm.isTeacher = is_teacher;
if(is_teacher){
vm.menus = ["动态", "课件", "作业", "成员管理"];
} else {
vm.menus = ['动态','课件', "我的同学"];
}
-
+ vm.tab(index);
};
+ if(vm.course){
+ resetMenu(vm.course.current_user_is_teacher,vm.currentTab);
+ }
+
+
vm.onSetting = function(user){
rms.save('current_edit_member', user);
+ rms.save("tab_num",vm.currentTab);
$location.path("/edit_class_member").search({id: courseid,user_id: user.id});
};
vm.review = function(user){
rms.save('current_review_member', user);
rms.save('current_course', vm.course);
-
+ rms.save("tab_num",vm.currentTab);
$location.path("/review_class_member").search({id: courseid,user_id: user.id});
};
@@ -233,6 +253,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
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);
// $location.path('/'+type+'/'+act_id);
$location.path("/"+type).search({id: act_id});
@@ -262,4 +283,27 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location
common.decreaseCommonPraise(act);
};
+ vm.goPublishNotice = 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);
+ $location.path("/class_publishnotice").search({id:courseid});
+ };
+
+ vm.goPublishIssue = function(){
+ 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);
+ $location.path("/class_publishissue").search({id:courseid});
+ };
+
}]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/class_list.js b/public/javascripts/wechat/controllers/class_list.js
index cc5250970..5d3ca5b93 100644
--- a/public/javascripts/wechat/controllers/class_list.js
+++ b/public/javascripts/wechat/controllers/class_list.js
@@ -49,6 +49,11 @@ app.controller('ClassListController', ['$scope', 'config', 'auth', '$http', '$lo
}
vm.goClass = function (course_id) {
+ rms.save('course_activities_page',0);
+ rms.save("course_activities",[]);
+ rms.save("course_has_more",false);
+ rms.save("course",null);
+ rms.save("tab_num",null);
console.log(course_id);
$location.path("/class").search({id: course_id});
}
diff --git a/public/javascripts/wechat/controllers/class_publishissue.js b/public/javascripts/wechat/controllers/class_publishissue.js
new file mode 100644
index 000000000..1cd7f1285
--- /dev/null
+++ b/public/javascripts/wechat/controllers/class_publishissue.js
@@ -0,0 +1,73 @@
+app.controller('ClassPublishIssueController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,common){
+// common.checkLogin();
+
+ var vm = $scope;
+ vm.current_course = rms.get('current_course');
+
+ vm.issuetitle = "";
+ vm.issue = "";
+ var course_id = $routeParams.id;
+
+ vm.alertService = alertService.create();
+
+ if(!vm.current_course){
+ $http.get(config.apiUrl+ 'courses/'+course_id+"?token="+auth.token()).then(
+ function(response) {
+ console.log(response.data);
+ if (response.data.status == 0){
+ vm.current_course = response.data.data;
+ console.log("courses");
+ console.log(response.data.data);
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+ if(!vm.current_course){
+ vm.tip_1 = "该班级不存在或已被删除";
+ }
+
+ }
+ );
+ }
+
+ vm.cancel = function(){
+ window.history.back();
+ };
+
+ //发布问题 即项目讨论区
+ vm.publishIssue = function(){
+ if(vm.issuetitle.length == 0)
+ {
+ vm.alertService.showMessage('提示', '标题不能为空');
+ return;
+ }
+
+ if(vm.issue.length == 0)
+ {
+ vm.alertService.showMessage('提示', '内容不能为空');
+ return;
+ }
+
+ var text = vm.issue.replace(/\n/g,' ');
+
+ $http.post(config.apiUrl + "courses/"+course_id+"/publishissue",
+ {token: auth.token(),title: vm.issuetitle, text: text}
+ ).then(function(response){
+ if(response.data.status == 0)
+ {
+ vm.alertService.showMessage('提示', '您已成功发布问题',function(){
+ rms.save('course_activities_page',0);
+ rms.save("course_activities",[]);
+ rms.save("course_has_more",false);
+ $location.path("/class").search({id: course_id});
+ });
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+
+ }
+ });
+
+ };
+
+}] );
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/class_publishnotice.js b/public/javascripts/wechat/controllers/class_publishnotice.js
new file mode 100644
index 000000000..a0b9ab676
--- /dev/null
+++ b/public/javascripts/wechat/controllers/class_publishnotice.js
@@ -0,0 +1,72 @@
+app.controller('ClassPublishNoticeController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,common){
+// common.checkLogin();
+
+ var vm = $scope;
+ vm.current_course = rms.get('current_course');
+
+ var course_id = $routeParams.id;
+
+ vm.alertService = alertService.create();
+
+ vm.noticetitle = "";
+ vm.notice = "";
+
+ if(!vm.current_course){
+ $http.get(config.apiUrl+ 'courses/'+course_id+"?token="+auth.token()).then(
+ function(response) {
+ console.log(response.data);
+ if (response.data.status == 0){
+ vm.current_course = response.data.data;
+ console.log("courses");
+ console.log(response.data.data);
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+ if(!vm.current_course){
+ vm.tip_1 = "该班级不存在或已被删除";
+ }
+
+ }
+ );
+ }
+ vm.cancel = function(){
+ window.history.back();
+ };
+
+ //发布通知 只有老师能发布
+ vm.publishNotice = function(){
+ if(vm.noticetitle.length == 0)
+ {
+ vm.alertService.showMessage('提示', '标题不能为空');
+ return;
+ }
+
+ if(vm.notice.length == 0)
+ {
+ vm.alertService.showMessage('提示', '内容不能为空');
+ return;
+ }
+
+ var text = vm.notice.replace(/\n/g,' ');
+
+ $http.post(config.apiUrl + "courses/"+course_id+"/publishnotice",
+ {token: auth.token(),title: vm.noticetitle, text: text}
+ ).then(function(response){
+ if(response.data.status == 0)
+ {
+ vm.alertService.showMessage('提示', '您已成功发布通知',function(){
+ rms.save('course_activities_page',0);
+ rms.save("course_activities",[]);
+ rms.save("course_has_more",false);
+ $location.path("/class").search({id: course_id});
+ });
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+ });
+
+ };
+
+}] );
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/project.js b/public/javascripts/wechat/controllers/project.js
index 826a16424..c45696668 100644
--- a/public/javascripts/wechat/controllers/project.js
+++ b/public/javascripts/wechat/controllers/project.js
@@ -238,4 +238,19 @@ app.controller('ProjectController', ['$scope', 'config','$http','$timeout', 'aut
$location.path("/review_project_member").search({id: projectid,user_id: user.id});
}
+ vm.goPublishNote = function(){
+ rms.save('project_activities_page',vm.project_activities_page);
+ rms.save("project_activities",vm.project_activities);
+ rms.save("project_has_more",vm.project_has_more);
+
+ rms.save("project",vm.project);
+ rms.save("project_master_members",vm.project_master_members);
+ rms.save("project_develop_members",vm.project_develop_members);
+ rms.save("project_report_members",vm.project_report_members);
+ rms.save("review_master_members",vm.review_master_members);
+ rms.save("review_develop_members",vm.review_develop_members);
+ rms.save('current_project', vm.project);
+ $location.path("/project_publishnote").search({id:projectid});
+ };
+
}]);
\ No newline at end of file
diff --git a/public/javascripts/wechat/controllers/project_publishnote.js b/public/javascripts/wechat/controllers/project_publishnote.js
new file mode 100644
index 000000000..231faaea6
--- /dev/null
+++ b/public/javascripts/wechat/controllers/project_publishnote.js
@@ -0,0 +1,74 @@
+app.controller('ProjectPublishNoteController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','common', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,common){
+// common.checkLogin();
+
+ var vm = $scope;
+ vm.current_project = rms.get('current_project');
+
+ var project_id = $routeParams.id;
+
+ vm.alertService = alertService.create();
+
+ vm.notetitle = "";
+ vm.note = "";
+
+ if(!vm.current_project){
+ $http.get(config.apiUrl+ 'projects/'+project_id+"?token="+auth.token()).then(
+ function(response) {
+ console.log(response.data);
+ if (response.data.status == 0){
+ vm.current_project = response.data.data;
+ console.log("projects");
+ console.log(response.data.data);
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+
+ if(!vm.current_project){
+ vm.tip_1 = "该项目不存在或已被删除";
+ }
+
+ }
+ );
+ }
+ vm.cancel = function(){
+ window.history.back();
+ };
+
+ //发布通知 只有老师能发布
+ vm.publishNote = function(){
+ if(vm.notetitle.length == 0)
+ {
+ vm.alertService.showMessage('提示', '标题不能为空');
+ return;
+ }
+
+ if(vm.note.length == 0)
+ {
+ vm.alertService.showMessage('提示', '内容不能为空');
+ return;
+ }
+
+ var text = vm.note.replace(/\n/g,' ');
+
+ $http.post(config.apiUrl + "projects/"+project_id+"/publishnote",
+ {token: auth.token(),title: vm.notetitle, text: text}
+ ).then(function(response){
+ if(response.data.status == 0)
+ {
+ vm.alertService.showMessage('提示', '您已成功发布帖子',function(){
+ rms.save('project_activities_page',0);
+ rms.save("project_activities",[]);
+ rms.save("project_has_more",false);
+ rms.save('tab_num',null);
+ $location.path("/project").search({id: project_id});
+ });
+ }
+ else{
+ vm.alertService.showMessage('提示', response.data.message);
+ }
+ });
+
+ };
+
+}] );
\ No newline at end of file
diff --git a/public/javascripts/wechat/others/routes.js b/public/javascripts/wechat/others/routes.js
index 7311c66c1..2182e16ee 100644
--- a/public/javascripts/wechat/others/routes.js
+++ b/public/javascripts/wechat/others/routes.js
@@ -40,6 +40,8 @@ app.config(['$routeProvider',"$httpProvider", "$locationProvider",'config', func
.when('/send_class_list', makeRoute('send_class_list.html', 'SendClassListController'))
.when('/join_class', makeRoute('join_class.html', 'JoinClassController'))
.when('/review_class_member', makeRoute('review_class_member.html', 'ReviewClassMemberController'))
+ .when('/class_publishnotice', makeRoute('class_publishnotice.html', 'ClassPublishNoticeController'))
+ .when('/class_publishissue', makeRoute('class_publishissue.html', 'ClassPublishIssueController'))
.when('/project_list', makeRoute('project_list.html', 'ProjectListController'))
.when('/project', makeRoute('project.html', 'ProjectController'))
.when('/edit_project_member', makeRoute('edit_project_member.html', 'EditProjectMemberController'))
@@ -47,6 +49,7 @@ app.config(['$routeProvider',"$httpProvider", "$locationProvider",'config', func
.when('/project_invite_code', {templateUrl: rootPath + 'project_invite_code.html', controller: 'ProjectInviteCodeController'})
.when('/join_project', makeRoute('join_project.html', 'JoinProjectController'))
.when('/review_project_member', makeRoute('review_project_member.html', 'ReviewProjectMemberController'))
+ .when('/project_publishnote', makeRoute('project_publishnote.html', 'ProjectPublishNoteController'))
.when('/login_tip', makeRoute('login_tip.html', 'LoginTipController'))
.otherwise({
redirectTo: '/activites'