From c612104fabf9fcd4c620e015aee55fb2ac468dee Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 23 Aug 2016 16:52:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=A2=9E=E5=8A=A0=E5=8F=91?= =?UTF-8?q?=E5=B8=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 79 +++++++++++++++ app/api/mobile/apis/projects.rb | 39 ++++++++ public/assets/wechat/class.html | 4 +- public/assets/wechat/class_publishissue.html | 14 +++ public/assets/wechat/class_publishnotice.html | 14 +++ public/assets/wechat/project.html | 2 +- public/assets/wechat/project_publishnote.html | 14 +++ .../javascripts/wechat/controllers/class.js | 96 ++++++++++++++----- .../wechat/controllers/class_list.js | 5 + .../wechat/controllers/class_publishissue.js | 73 ++++++++++++++ .../wechat/controllers/class_publishnotice.js | 72 ++++++++++++++ .../javascripts/wechat/controllers/project.js | 15 +++ .../wechat/controllers/project_publishnote.js | 74 ++++++++++++++ public/javascripts/wechat/others/routes.js | 3 + 14 files changed, 475 insertions(+), 29 deletions(-) create mode 100644 public/assets/wechat/class_publishissue.html create mode 100644 public/assets/wechat/class_publishnotice.html create mode 100644 public/assets/wechat/project_publishnote.html create mode 100644 public/javascripts/wechat/controllers/class_publishissue.js create mode 100644 public/javascripts/wechat/controllers/class_publishnotice.js create mode 100644 public/javascripts/wechat/controllers/project_publishnote.js 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'