From 863ec9d3967f0b208b31cf7fae96b7ecde94cfdb Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 22 Aug 2016 16:50:14 +0800 Subject: [PATCH 01/51] =?UTF-8?q?iphone=E4=B8=8B=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=A1=86=E4=BD=8D=E7=BD=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/app.html | 1 + public/assets/wechat/blog_detail.html | 2 +- public/assets/wechat/course_discussion.html | 2 +- public/assets/wechat/course_notice.html | 2 +- public/assets/wechat/homework_detail.html | 2 +- public/assets/wechat/issue_detail.html | 2 +- public/assets/wechat/jour_message_detail.html | 2 +- public/assets/wechat/project_discussion.html | 2 +- .../wechat/directives/iphone_recognize.js | 17 +++++++++++++++++ 9 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 public/javascripts/wechat/directives/iphone_recognize.js diff --git a/public/assets/wechat/app.html b/public/assets/wechat/app.html index d49caedd5..5ab1dcb5a 100644 --- a/public/assets/wechat/app.html +++ b/public/assets/wechat/app.html @@ -39,6 +39,7 @@ + diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index c1e2fd2fd..daeec493d 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -69,7 +69,7 @@ -
+
diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html index 3d7444c95..78a3fa0b7 100644 --- a/public/assets/wechat/course_discussion.html +++ b/public/assets/wechat/course_discussion.html @@ -66,7 +66,7 @@
-
+
diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index 95eeda60b..f991656b4 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -46,7 +46,7 @@
-
+
diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index 77aa0a48d..6ead09e69 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -70,7 +70,7 @@
-
+
diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index 14df1cfb1..b4d39d04e 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -52,7 +52,7 @@
-
+
diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index b94bca8b2..41f7290e5 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -65,7 +65,7 @@
-
+
diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html index fef0a2f6e..4557ba55f 100644 --- a/public/assets/wechat/project_discussion.html +++ b/public/assets/wechat/project_discussion.html @@ -65,7 +65,7 @@
更多
-
+
diff --git a/public/javascripts/wechat/directives/iphone_recognize.js b/public/javascripts/wechat/directives/iphone_recognize.js new file mode 100644 index 000000000..0d435e1a2 --- /dev/null +++ b/public/javascripts/wechat/directives/iphone_recognize.js @@ -0,0 +1,17 @@ +/** + * Created by ttang on 2016/8/22. + */ +app.directive('iphoneRecognize',function(){ + return{ + restrict: 'A', + scope: {}, + link: function(scope, element){ + var userAgent = navigator.userAgent; + if (/ipad|iphone|mac/i.test(navigator.userAgent)){ + element.css({"position":"relative","padding":"1px 0"}); + $(".post-wrapper").css("margin-bottom","0"); + $("#all_homework_reply").css("margin-bottom","0"); + } + } + } +}); \ No newline at end of file From b8dc444cc78e6dcde5b5d3befffa873062f650e7 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 23 Aug 2016 10:17:08 +0800 Subject: [PATCH 02/51] =?UTF-8?q?=E6=99=AE=E9=80=9A=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=92=8C=E7=BC=96=E7=A8=8B=E4=BD=9C=E4=B8=9A=E5=9C=A8=E9=A2=98?= =?UTF-8?q?=E5=BA=93=E5=8F=91=E9=80=81=E5=90=8E=EF=BC=8C=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=B9=B6=E8=BF=9B=E8=A1=8C=E5=8F=91=E5=B8=83=EF=BC=8C=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E8=87=AA=E5=8A=A8=E5=88=9B=E5=BB=BA=E4=BD=9C=E5=93=81?= =?UTF-8?q?=E5=88=97=E8=A1=A8=20=E5=A4=8D=E5=88=B6=E7=8F=AD=E7=BA=A7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E9=87=8C=EF=BC=8C=E5=8B=BE=E9=80=89=E2=80=9C?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E2=80=9D=EF=BC=8C=E5=90=8C=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对应方法:在作业的发布时间点(不用考虑作业是通过何种途径生成的),除了发布作业外,应该为该作业自动创建完整的作品列表(分组作业除外) --- app/controllers/homework_common_controller.rb | 6 ++++++ app/controllers/users_controller.rb | 19 ++----------------- app/helpers/application_helper.rb | 17 +++++++++++++++++ lib/tasks/homework_publishtime.rake | 16 ++++++++++++++++ 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index 2f50c8105..6704f7401 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -94,8 +94,10 @@ class HomeworkCommonController < ApplicationController end end + status = false if @homework.publish_time <= Date.today && homework_detail_manual.comment_status == 0 homework_detail_manual.comment_status = 1 + status = true end eval_start = homework_detail_manual.evaluation_start if eval_start.nil? || (eval_start <= @homework.end_time && homework_detail_manual.comment_status <= 1) @@ -145,6 +147,10 @@ class HomeworkCommonController < ApplicationController @homework_detail_programing.save if @homework_detail_programing @homework_detail_group.save if @homework_detail_group + if @homework.homework_type != 3 && homework_detail_manual.comment_status == 1 && status + create_works_list @homework + end + if params[:is_manage] == "1" redirect_to manage_or_receive_homeworks_user_path(User.current.id) elsif params[:is_manage] == "2" diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index e929153ad..eb7ee4c03 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1115,23 +1115,8 @@ class UsersController < ApplicationController homework_detail_programing.save if homework_detail_programing homework_detail_group.save if homework_detail_group - if homework.homework_type != 3 - students = homework.course.student - if !homework.course.nil? && !students.empty? - name = homework.name - name_str = name + "的作品提交" - str = "" - students.each do |student| - if str != "" - str += "," - end - str += "('#{name_str}',#{homework.id},#{student.student_id}, '#{format_time(Time.now)}', '#{format_time(Time.now)}')" - end - #('#{name}的作品提交',#{homework.id},#{student.student_id}, '#{format_time(Time.now)}', '#{format_time(Time.now)}') - sql = "insert into student_works (name, homework_common_id,user_id, created_at, updated_at) values" + str - #StudentWork.create(:name => "#{name}的作品提交", :homework_common_id => homework.id, :user_id => student.student_id) - ActiveRecord::Base.connection.execute sql - end + if homework.homework_type != 3 && homework_detail_manual.comment_status == 1 + create_works_list homework end if params[:quotes] && !params[:quotes].blank? diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index da66f249b..304194e6e 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -3436,3 +3436,20 @@ def course_syllabus_option user = User.current end type end + +def create_works_list homework + students = homework.course.student + if !homework.course.nil? && !students.empty? + name = homework.name + name_str = name + "的作品提交" + str = "" + students.each do |student| + if str != "" + str += "," + end + str += "('#{name_str}',#{homework.id},#{student.student_id}, '#{format_time(Time.now)}', '#{format_time(Time.now)}')" + end + sql = "insert into student_works (name, homework_common_id,user_id, created_at, updated_at) values" + str + ActiveRecord::Base.connection.execute sql + end +end diff --git a/lib/tasks/homework_publishtime.rake b/lib/tasks/homework_publishtime.rake index 5eaeb37cb..2f999384c 100644 --- a/lib/tasks/homework_publishtime.rake +++ b/lib/tasks/homework_publishtime.rake @@ -8,6 +8,22 @@ namespace :homework_publishtime do homework_detail_manual = homework.homework_detail_manual if homework_detail_manual.comment_status == 0 homework_detail_manual.update_column('comment_status', 1) + if homework.homework_type != 3 + students = homework.course.student + if !homework.course.nil? && !students.empty? + name = homework.name + name_str = name + "的作品提交" + str = "" + students.each do |student| + if str != "" + str += "," + end + str += "('#{name_str}',#{homework.id},#{student.student_id}, '#{format_time(Time.now)}', '#{format_time(Time.now)}')" + end + sql = "insert into student_works (name, homework_common_id,user_id, created_at, updated_at) values" + str + ActiveRecord::Base.connection.execute sql + end + end course = homework.course course.members.each do |m| homework.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => nil) From 965d8930dcbbd4d7fa60ff083d59f8723ce72a14 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 23 Aug 2016 10:23:46 +0800 Subject: [PATCH 03/51] =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8A=A8=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 24 ++++ public/assets/wechat/class.html | 134 +++++++++++++++++- .../javascripts/wechat/controllers/class.js | 118 ++++++++++++--- .../javascripts/wechat/controllers/project.js | 1 + 4 files changed, 257 insertions(+), 20 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 369185ca2..b28d3eca0 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -287,6 +287,30 @@ module Mobile end end + desc "获取课程动态" + params do + requires :id, type: Integer + requires :token, type: String + end + post 'activities' do + authenticate! + + user = current_user + + course_types = "('Message','News','HomeworkCommon','Poll','Course')" + activities = UserActivity.where("(container_type = 'Course' and container_id = #{params[:id]} and act_type in #{course_types})").order('updated_at desc') + + page = params[:page] ? params[:page] : 0 + all_count = activities.count + activities = activities.limit(10).offset(page * 10) + count = activities.count + present :data, activities, with: Mobile::Entities::Activity,user: user + present :all_count, all_count + present :count, count + present :page, page + present :status, 0 + end + desc "课程作业列表" params do requires :token, type: String diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index e720c90c9..a1eb45a52 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -16,7 +16,139 @@ -
+ +
+
+
+
+
+
+
+
+
+ +
{{act.latest_update}}
+
+ +
+
+ 迟交扣分:{{act.homework_common_detail.late_penalty}}分 匿评开启时间:{{act.homework_common_detail.evaluation_start}}
+ 缺评扣分:{{act.homework_common_detail.absence_penalty}}分/作品 匿评关闭时间:{{act.homework_common_detail.evaluation_end}} +
+
+
+ +
+
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ +
{{act.latest_update}}
+
+ +
+
+
+
+
+ +
+
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ +
{{act.latest_update}}
+
+ +
+
+
+ +
+
+ +
+
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+ +
+
+
+
+
+ + +
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
更多
+
+
+ +
diff --git a/public/javascripts/wechat/controllers/class.js b/public/javascripts/wechat/controllers/class.js index d372f6826..a0c575d92 100644 --- a/public/javascripts/wechat/controllers/class.js +++ b/public/javascripts/wechat/controllers/class.js @@ -5,6 +5,39 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location var courseid = $routeParams.id; var tag = $routeParams.tag; + vm.course_activities_page = rms.get('course_activities_page') || 0; + vm.course_activities = rms.get("course_activities") || []; + vm.course_has_more = rms.get("course_has_more"); + + vm.course = rms.get("course") || null; + + var getClassActivities = function(page){ + $http({ + method: 'POST', + url: apiUrl + "courses/activities?id=" + courseid, + data:{token:auth.token(),page:page} + }).then(function successCallback(response) { + console.log(response.data); + if(response.data.status == 0){ + vm.class_activities_page = response.data.page; + if(response.data.page > 0) + { + vm.course_activities = vm.class_activities.concat(response.data.data); + } + else{ + vm.course_activities = response.data.data; + vm.course_activities_page = 0; + vm.course_has_more = (response.data.count + response.data.page * 10) < response.data.all_count; + } + } + else{ + vm.alertService.showMessage('提示', response.data.message); + } + + + }, function errorCallback(response) { + }); + }; var getUsers = function(){ if(vm.teachers.length<=0){ @@ -35,7 +68,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location } ) } - } + }; var getResources = function(){ if(vm.resources.length<=0){ @@ -46,7 +79,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.resources_tag = true; }); } - } + }; var getHomeworks = function(){ if(vm.homeworks.length <=0){ @@ -56,7 +89,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.homeworks_tag = true; }); } - } + }; var getExercises = function(){ if(vm.exercises.length <=0){ @@ -66,7 +99,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.exercises_tag = true; }); } - } + }; vm.isTeacher = false; @@ -75,6 +108,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.currentTab = index; vm.searchText = ''; + vm.showActivities = false; vm.showClassMate = false; vm.showResources = false; vm.showHomework = false; @@ -84,35 +118,43 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.exercises_tag = false; if(vm.isTeacher){ - if(index == 1){ //课件 + if(index == 1){ + getClassActivities(0); + vm.showActivities = true; + } + else if(index == 2){ //课件 getResources(); vm.showResources = true; - } else if(index==2){ //作业 + } + else if(index==3){ //作业 getHomeworks(); vm.showHomework = true; - } else if(index==3){ //小测验 - getExercises(); - vm.showTestcase = true; - } else if(index==4){ //学生管理 + } + else if(index==4){ //学生管理 getUsers(); vm.showClassMate = true; } } else { - if(index == 2){ + if(index == 1){ + getClassActivities(0); + vm.showActivities = true; + } + else if(index == 3){ getUsers(); vm.showClassMate = true; - } else if(index==1){ + } + else if(index==2){ getResources(); vm.showResources = true; } } rms.save("tab_num",index); - } + }; vm.tabRecord = rms.get('tab_num') || 1; - vm.course = {}; +// vm.course = {}; vm.students = []; vm.teachers = []; vm.reviewers = []; //待审批 @@ -126,6 +168,11 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.alertService = alertService.create(); vm.invite = 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("course",vm.course); + $location.path("/invite_code").search({id: courseid}); }; @@ -133,7 +180,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.myresource_sendIndex = index; rms.save('myresource_sendIndex',index); $location.path("/send_class_list").search({id: r.id}); - } + }; $http.get(config.apiUrl+ 'courses/'+courseid+"?token="+auth.token()).then( function(response) { @@ -161,12 +208,12 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location var resetMenu = function(is_teacher){ vm.isTeacher = is_teacher; if(is_teacher){ - vm.menus = ["课件", "作业", "测验", "成员管理"]; + vm.menus = ["动态", "课件", "作业", "成员管理"]; } else { - vm.menus = ['课件', "我的同学"]; + vm.menus = ['动态','课件', "我的同学"]; } - } + }; vm.onSetting = function(user){ rms.save('current_edit_member', user); @@ -178,8 +225,41 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location rms.save('current_course', vm.course); $location.path("/review_class_member").search({id: courseid,user_id: user.id}); - } + }; + //跳到详情页 + vm.goDetail = function(type, act_id,id){ + rms.save("yoffset", document.documentElement.scrollTop || document.body.scrollTop); + 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("course",vm.course); +// $location.path('/'+type+'/'+act_id); + $location.path("/"+type).search({id: act_id}); + }; + vm.addPraise = function(act){ + for(var i in vm.course_activities){ + if(vm.course_activities[i].act_id == act.act_id){ + vm.course_activities[i].praise_count += 1; + vm.course_activities[i].has_praise = true; + break; + } + } + + common.addCommonPraise(act); + }; + + vm.decreasePraise = function(act){ + for(var i in vm.course_activities){ + if(vm.course_activities[i].act_id == act.act_id){ + vm.course_activities[i].praise_count -= 1; + vm.course_activities[i].has_praise = false; + break; + } + } + + common.decreaseCommonPraise(act); + }; }]); \ No newline at end of file diff --git a/public/javascripts/wechat/controllers/project.js b/public/javascripts/wechat/controllers/project.js index 08987e491..826a16424 100644 --- a/public/javascripts/wechat/controllers/project.js +++ b/public/javascripts/wechat/controllers/project.js @@ -114,6 +114,7 @@ app.controller('ProjectController', ['$scope', 'config','$http','$timeout', 'aut //跳到详情页 vm.goDetail = function(type, act_id,id){ rms.save("yoffset", document.documentElement.scrollTop || document.body.scrollTop); + 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); From bbc0277d39aeb9484b3c57e1d2000faf66353057 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 23 Aug 2016 10:23:55 +0800 Subject: [PATCH 04/51] =?UTF-8?q?iphone=E7=AB=AF=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=A1=86js=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wechat/directives/iphone_recognize.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/public/javascripts/wechat/directives/iphone_recognize.js b/public/javascripts/wechat/directives/iphone_recognize.js index 0d435e1a2..fabba0e51 100644 --- a/public/javascripts/wechat/directives/iphone_recognize.js +++ b/public/javascripts/wechat/directives/iphone_recognize.js @@ -8,9 +8,16 @@ app.directive('iphoneRecognize',function(){ link: function(scope, element){ var userAgent = navigator.userAgent; if (/ipad|iphone|mac/i.test(navigator.userAgent)){ - element.css({"position":"relative","padding":"1px 0"}); - $(".post-wrapper").css("margin-bottom","0"); - $("#all_homework_reply").css("margin-bottom","0"); + $("#postInput1").bind('focus',function(){ + element.css({"position":"relative","padding":"1px 0"}); + $(".post-wrapper").css("margin-bottom","0"); + $("#all_homework_reply").css("margin-bottom","0"); + }); + $("#postInput1").bind('blur',function(){ + element.css("position","fixed"); + $(".post-wrapper").css("margin-bottom","10px"); + $("#all_homework_reply").css("margin-bottom","50px"); + }); } } } From e473a18487ba4bf9265fbe0508cba636968b2aa1 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 23 Aug 2016 10:26:39 +0800 Subject: [PATCH 05/51] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=94=99=E5=88=86?= =?UTF-8?q?=E6=94=AF=20=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 24 ---- public/assets/wechat/class.html | 134 +----------------- .../javascripts/wechat/controllers/class.js | 66 ++------- .../javascripts/wechat/controllers/project.js | 1 - 4 files changed, 10 insertions(+), 215 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index b28d3eca0..369185ca2 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -287,30 +287,6 @@ module Mobile end end - desc "获取课程动态" - params do - requires :id, type: Integer - requires :token, type: String - end - post 'activities' do - authenticate! - - user = current_user - - course_types = "('Message','News','HomeworkCommon','Poll','Course')" - activities = UserActivity.where("(container_type = 'Course' and container_id = #{params[:id]} and act_type in #{course_types})").order('updated_at desc') - - page = params[:page] ? params[:page] : 0 - all_count = activities.count - activities = activities.limit(10).offset(page * 10) - count = activities.count - present :data, activities, with: Mobile::Entities::Activity,user: user - present :all_count, all_count - present :count, count - present :page, page - present :status, 0 - end - desc "课程作业列表" params do requires :token, type: String diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index a1eb45a52..e720c90c9 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -16,139 +16,7 @@ - -
-
-
-
-
-
-
-
-
- -
{{act.latest_update}}
-
- -
-
- 迟交扣分:{{act.homework_common_detail.late_penalty}}分 匿评开启时间:{{act.homework_common_detail.evaluation_start}}
- 缺评扣分:{{act.homework_common_detail.absence_penalty}}分/作品 匿评关闭时间:{{act.homework_common_detail.evaluation_end}} -
-
-
- -
-
-
{{act.praise_count}}
-
{{act.praise_count}}
-
- -
-
-
-
-
- -
-
-
-
-
-
- -
{{act.latest_update}}
-
- -
-
-
-
-
- -
-
-
{{act.praise_count}}
-
{{act.praise_count}}
-
- -
-
-
-
-
- -
-
-
-
-
-
- -
{{act.latest_update}}
-
- -
-
-
- -
-
- -
-
-
{{act.praise_count}}
-
{{act.praise_count}}
-
- -
-
-
-
-
- - -
-
-
-
-
- - -
-
-
-
-
-
-
-
-
更多
-
-
- -
+
diff --git a/public/javascripts/wechat/controllers/class.js b/public/javascripts/wechat/controllers/class.js index a0c575d92..cd6d57d34 100644 --- a/public/javascripts/wechat/controllers/class.js +++ b/public/javascripts/wechat/controllers/class.js @@ -5,29 +5,23 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location var courseid = $routeParams.id; var tag = $routeParams.tag; - vm.course_activities_page = rms.get('course_activities_page') || 0; - vm.course_activities = rms.get("course_activities") || []; - vm.course_has_more = rms.get("course_has_more"); - - vm.course = rms.get("course") || null; - var getClassActivities = function(page){ $http({ method: 'POST', - url: apiUrl + "courses/activities?id=" + courseid, + url: apiUrl + "projects/activities?id=" + projectid, data:{token:auth.token(),page:page} }).then(function successCallback(response) { console.log(response.data); if(response.data.status == 0){ - vm.class_activities_page = response.data.page; + vm.project_activities_page = response.data.page; if(response.data.page > 0) { - vm.course_activities = vm.class_activities.concat(response.data.data); + vm.project_activities = vm.project_activities.concat(response.data.data); } else{ - vm.course_activities = response.data.data; - vm.course_activities_page = 0; - vm.course_has_more = (response.data.count + response.data.page * 10) < response.data.all_count; + vm.project_activities = response.data.data; + vm.project_activities_page = 0; + vm.project_has_more = (response.data.count + response.data.page * 10) < response.data.all_count; } } else{ @@ -108,7 +102,6 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.currentTab = index; vm.searchText = ''; - vm.showActivities = false; vm.showClassMate = false; vm.showResources = false; vm.showHomework = false; @@ -119,8 +112,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location if(vm.isTeacher){ if(index == 1){ - getClassActivities(0); - vm.showActivities = true; + getClassActivities(); } else if(index == 2){ //课件 getResources(); @@ -137,8 +129,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location } else { if(index == 1){ - getClassActivities(0); - vm.showActivities = true; + getClassActivities(); } else if(index == 3){ getUsers(); @@ -154,7 +145,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.tabRecord = rms.get('tab_num') || 1; -// vm.course = {}; + vm.course = {}; vm.students = []; vm.teachers = []; vm.reviewers = []; //待审批 @@ -168,11 +159,6 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.alertService = alertService.create(); vm.invite = 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("course",vm.course); - $location.path("/invite_code").search({id: courseid}); }; @@ -227,39 +213,5 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location $location.path("/review_class_member").search({id: courseid,user_id: user.id}); }; - //跳到详情页 - vm.goDetail = function(type, act_id,id){ - rms.save("yoffset", document.documentElement.scrollTop || document.body.scrollTop); - 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("course",vm.course); -// $location.path('/'+type+'/'+act_id); - $location.path("/"+type).search({id: act_id}); - }; - - vm.addPraise = function(act){ - for(var i in vm.course_activities){ - if(vm.course_activities[i].act_id == act.act_id){ - vm.course_activities[i].praise_count += 1; - vm.course_activities[i].has_praise = true; - break; - } - } - - common.addCommonPraise(act); - }; - - vm.decreasePraise = function(act){ - for(var i in vm.course_activities){ - if(vm.course_activities[i].act_id == act.act_id){ - vm.course_activities[i].praise_count -= 1; - vm.course_activities[i].has_praise = false; - break; - } - } - - common.decreaseCommonPraise(act); - }; }]); \ No newline at end of file diff --git a/public/javascripts/wechat/controllers/project.js b/public/javascripts/wechat/controllers/project.js index 826a16424..08987e491 100644 --- a/public/javascripts/wechat/controllers/project.js +++ b/public/javascripts/wechat/controllers/project.js @@ -114,7 +114,6 @@ app.controller('ProjectController', ['$scope', 'config','$http','$timeout', 'aut //跳到详情页 vm.goDetail = function(type, act_id,id){ rms.save("yoffset", document.documentElement.scrollTop || document.body.scrollTop); - 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); From 461912bec260ec66978308d7cf18a70b4dfb9369 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 23 Aug 2016 10:50:51 +0800 Subject: [PATCH 06/51] =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=EF=BC=8C=E4=B8=8A=E4=BC=A0=E9=99=84=E4=BB=B6=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E4=BD=9C=E5=93=81=EF=BC=8C=E9=87=8D=E8=AF=95=E5=90=8E=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E6=8F=90=E4=BA=A4=EF=BC=8C=E6=8F=90=E4=BA=A4=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=99=84=E4=BB=B6=E4=B8=8D=E6=98=BE=E7=A4=BA=E4=BD=86?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E5=BC=B9=E6=A1=86=E4=B8=AD=E8=A2=AB=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=9A=84=E9=99=84=E4=BB=B6=E5=8F=88=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 722845ef7..9ce0f76f7 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -793,6 +793,7 @@ class StudentWorkController < ApplicationController end elsif @homework.homework_type == 1 @work.update_attributes(:work_status => 0, :name => "#{@homework.name}的作品提交", :description => nil, :late_penalty => 0, :commit_time => nil) + @work.attachments.destroy_all end @student_work = StudentWork.new respond_to do |format| From 34acb1aa2f2509fc5597863c3c1cda198b523141 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 23 Aug 2016 11:05:49 +0800 Subject: [PATCH 07/51] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=91=E5=B8=83=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/class.html | 10 ++++++---- public/assets/wechat/project.html | 7 +++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index a1eb45a52..764bff0a5 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -17,7 +17,7 @@ -
+
@@ -143,9 +143,13 @@
-
+
更多
+
@@ -198,7 +202,5 @@ 请登录Trustie网站,在PC浏览器中上传测验。

- -
diff --git a/public/assets/wechat/project.html b/public/assets/wechat/project.html index 733f0899d..5da7a68c7 100644 --- a/public/assets/wechat/project.html +++ b/public/assets/wechat/project.html @@ -5,7 +5,7 @@ {{menu}}
-
+
@@ -95,9 +95,12 @@
-
+
更多
+
From 7d671c77583c2135c14e0fb39b7f70e5110dc2a9 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 23 Aug 2016 15:04:48 +0800 Subject: [PATCH 08/51] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=A1=86padding=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/weui/weixin.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 7375fc80c..52125b768 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -220,7 +220,7 @@ a.underline {text-decoration:underline;} .amount-arrow {height:14px; line-height:14px; vertical-align:middle; margin-top:12px;} .new-class-btn {font-size:15px; color:#fff; background-color:#3b94d6; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;} .join-class-btn {font-size:15px; color:#444; background-color:#ccc; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;} -.new-class-input {width:60%; color:#555; height:16px; line-height:16px; border:none; outline:none; padding:11px 0;} +.new-class-input {width:60%; color:#555; height:16px; line-height:16px; border:none; outline:none; padding:10px 0;} .class-list-setting {position:absolute; top:11px; right:10px;} .class-setting-wrap {width:38px; height:38px; position:absolute; top:0; right:0;} From c8c5f5d415b25d87ab17a7d6a291e03de9f563b2 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 23 Aug 2016 16:36:59 +0800 Subject: [PATCH 09/51] =?UTF-8?q?iphone=E4=B8=8Bflex=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/weui/weixin.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 52125b768..25293a027 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -92,14 +92,14 @@ a.underline {text-decoration:underline;} /*tab*/ .tab-wrap {position:relative; width:100%; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;} -.tab-wrap a {position:relative; display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1;} +.tab-wrap a {position:relative; display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; -webkit-flex:1; flex:1;} .tab-wrap a:first-child:after {display:none;} .tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;} .weixin-tab {text-align:center; border-bottom:1px solid #ccc;} /*bottom-tab*/ .bottom-tab-wrap {position:fixed; width:100%; bottom:0; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;} -.bottom-tab-wrap a {display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1; position:relative;} +.bottom-tab-wrap a {display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; -webkit-flex:1; flex:1; position:relative;} .bottom-tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;} /*动态样式*/ 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 10/51] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8F=91=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' From 74b15229fb8c7b2359aca672b5a98df6fe11b670 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 23 Aug 2016 17:15:51 +0800 Subject: [PATCH 11/51] =?UTF-8?q?at=E6=89=80=E6=9C=89=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/at/show.json.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/at/show.json.erb b/app/views/at/show.json.erb index 6e2a244e4..767c23835 100644 --- a/app/views/at/show.json.erb +++ b/app/views/at/show.json.erb @@ -1,10 +1,10 @@ [ <% @users && @users.each_with_index do |person,index| %> <% if index == 0 %> - {"id":<%=index%>, "userid": "<%=person.id%>", "name": "所有人", "login": "<%=person.name%>", "searchKey": "<%=person.name%>"} + {"id":<%=index%>, "userid": "<%=person.id%>", "name": "所有人", "login": "", "searchKey": ""} <%= index != @users.size-1 ? ',' : '' %> <% else %> - {"id":<%=index%>, "userid": <%=person.id%>, "name": "<%=person.show_name%>", "login": "<%=person.login%>", "searchKey": "<%=person.get_at_show_name%>"} + {"id":<%=index%>, "userid": "<%=person.id%>", "name": "<%=person.show_name%>", "login": "<%=person.login%>", "searchKey": "<%=person.get_at_show_name%>"} <%= index != @users.size-1 ? ',' : '' %> <% end %> <% end %> From c5cedbfcc26d1a8beb88517216904010bf69ef0a Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 23 Aug 2016 17:37:23 +0800 Subject: [PATCH 12/51] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=8F=AD=E7=BA=A7?= =?UTF-8?q?=E5=92=8C=E9=A1=B9=E7=9B=AE=E5=AE=A1=E6=A0=B8=E6=A8=A1=E7=89=88?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 8 ++++++-- app/services/wechat_service.rb | 12 ++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index cfa5f4414..b21d82e87 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -435,8 +435,12 @@ class WechatsController < ActionController::Base session[:wechat_openid] = open_id if params[:code] - if params[:userid] - redirect_to "/wechat/user_activities##{@path}?id=#{params[:id]}&userid=#{params[:userid]}" and return + if params[:state].match("review_class_member") || params[:state].match("review_project_member") + useridstr = params[:state].split('/')[1] + end + + if useridstr + redirect_to "/wechat/user_activities##{@path}?id=#{params[:id]}&#{useridstr}" and return elsif params[:id] redirect_to "/wechat/user_activities##{@path}?id=#{params[:id]}" and return else diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index 3b6cfe930..c28c5f7b2 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -115,8 +115,8 @@ class WechatService # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}" tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 if uid && uid != 0 - tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s - # tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+ "&user_id="+uid.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 + # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s + tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/user_id="+uid.to_s+Wechat.config.auto_openid_url_3 end data = { touser:openid, @@ -149,8 +149,8 @@ class WechatService # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}" tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 if uid && uid != 0 - tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s - # tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+ "&user_id="+uid.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 + # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s + tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/user_id="+uid.to_s+Wechat.config.auto_openid_url_3 end data = { @@ -188,8 +188,8 @@ class WechatService # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}" tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 if uid && uid != 0 - tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s - # tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+ "&user_id="+uid.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 + # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s + tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/user_id="+uid.to_s+Wechat.config.auto_openid_url_3 end data = { From 3af5bc581321575e4e78a53062eae363bc6c5904 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 23 Aug 2016 17:42:48 +0800 Subject: [PATCH 13/51] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/wechat_service.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index c28c5f7b2..a9a62bc66 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -116,7 +116,7 @@ class WechatService tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 if uid && uid != 0 # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s - tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/user_id="+uid.to_s+Wechat.config.auto_openid_url_3 + tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/userid="+uid.to_s+Wechat.config.auto_openid_url_3 end data = { touser:openid, @@ -150,7 +150,7 @@ class WechatService tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 if uid && uid != 0 # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s - tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/user_id="+uid.to_s+Wechat.config.auto_openid_url_3 + tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/userid="+uid.to_s+Wechat.config.auto_openid_url_3 end data = { @@ -189,7 +189,7 @@ class WechatService tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 if uid && uid != 0 # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s - tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/user_id="+uid.to_s+Wechat.config.auto_openid_url_3 + tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/userid="+uid.to_s+Wechat.config.auto_openid_url_3 end data = { From e0ab93b739936740f0fb1129a1d051c784b97e97 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 24 Aug 2016 09:30:28 +0800 Subject: [PATCH 14/51] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index b21d82e87..b06a72137 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -436,6 +436,7 @@ class WechatsController < ActionController::Base session[:wechat_openid] = open_id if params[:code] if params[:state].match("review_class_member") || params[:state].match("review_project_member") + @path = params[:state].split('/')[0] useridstr = params[:state].split('/')[1] end From 2e1e9391b6600772951a4f4088d64ea082bbb4cd Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 24 Aug 2016 09:39:41 +0800 Subject: [PATCH 15/51] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E8=B7=AF=E5=BE=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/wechat_service.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index a9a62bc66..c28c5f7b2 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -116,7 +116,7 @@ class WechatService tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 if uid && uid != 0 # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s - tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/userid="+uid.to_s+Wechat.config.auto_openid_url_3 + tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/user_id="+uid.to_s+Wechat.config.auto_openid_url_3 end data = { touser:openid, @@ -150,7 +150,7 @@ class WechatService tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 if uid && uid != 0 # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s - tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/userid="+uid.to_s+Wechat.config.auto_openid_url_3 + tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/user_id="+uid.to_s+Wechat.config.auto_openid_url_3 end data = { @@ -189,7 +189,7 @@ class WechatService tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+Wechat.config.auto_openid_url_3 if uid && uid != 0 # tmpurl = "#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}?id=#{id}"+ "&user_id="+uid.to_s - tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/userid="+uid.to_s+Wechat.config.auto_openid_url_3 + tmpurl = Wechat.config.auto_openid_url_1+"?id="+id.to_s+Wechat.config.auto_openid_url_2+type+"/user_id="+uid.to_s+Wechat.config.auto_openid_url_3 end data = { From 0eb1c1a392e4283941a7025b41ac18cd0793918d Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 24 Aug 2016 09:45:18 +0800 Subject: [PATCH 16/51] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index b06a72137..54486221e 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -435,11 +435,10 @@ class WechatsController < ActionController::Base session[:wechat_openid] = open_id if params[:code] - if params[:state].match("review_class_member") || params[:state].match("review_project_member") + # if params[:state].match("review_class_member") || params[:state].match("review_project_member") @path = params[:state].split('/')[0] useridstr = params[:state].split('/')[1] - end - + # end if useridstr redirect_to "/wechat/user_activities##{@path}?id=#{params[:id]}&#{useridstr}" and return elsif params[:id] From 57ecffc130a637456d5a0df4e0bd6eddc808d7ab Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 24 Aug 2016 10:28:09 +0800 Subject: [PATCH 17/51] =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=94=B6=E8=97=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_user_courses.html.erb | 6 ++++++ app/views/layouts/new_base_user.html.erb | 2 +- app/views/users/_courses_list.html.erb | 5 +++-- public/images/syllabus/sy_icons_star.png | Bin 0 -> 18508 bytes public/stylesheets/syllabus.css | 5 +++++ 5 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 public/images/syllabus/sy_icons_star.png diff --git a/app/views/layouts/_user_courses.html.erb b/app/views/layouts/_user_courses.html.erb index b3b21547e..485ef72ff 100644 --- a/app/views/layouts/_user_courses.html.erb +++ b/app/views/layouts/_user_courses.html.erb @@ -45,6 +45,12 @@ <%= link_to "论坛",course_boards_path(course), :class => 'user_navmore_li fl',:target => '_blank' %> <%= link_to "+",course_boards_path(course, :flag => true, :is_new => 1), :class => 'user_navmore_add fl', :title => '发布帖子',:target => '_blank' %> + +
  • + <%= link_to "取消收藏", :class => 'user_navmore_li',:target => '_blank' %> +
    +
  • + <% if !course.syllabus.nil? %>
  • <%= link_to "所属课程",syllabus_path(course.syllabus_id), :class => 'user_navmore_li',:target => '_blank' %> diff --git a/app/views/layouts/new_base_user.html.erb b/app/views/layouts/new_base_user.html.erb index 50e788e2f..d91939c4b 100644 --- a/app/views/layouts/new_base_user.html.erb +++ b/app/views/layouts/new_base_user.html.erb @@ -157,7 +157,7 @@ <% if !unvisiable %>
    • - <%= link_to '课程',{:controller => "users", :action => "user_courselist", :id => @user.id}, :id => "user_course_list" %> + <%= link_to '班级',{:controller => "users", :action => "user_courselist", :id => @user.id}, :id => "user_course_list" %> <% courses = @user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10) %> <% all_count = @user.courses.visible.where("is_delete =?", 0).count%>
      diff --git a/app/views/users/_courses_list.html.erb b/app/views/users/_courses_list.html.erb index 83b9ab56b..42c92b1a0 100644 --- a/app/views/users/_courses_list.html.erb +++ b/app/views/users/_courses_list.html.erb @@ -3,11 +3,12 @@
    • <% allow_visit = User.current.member_of_course?(course) || User.current.admin? || course.is_public == 1 %> " target="_blank" title="<%= allow_visit ? "" : "私有班级不可访问"%>"> - + +

      <%=course.name %>

      - + <%= course.is_public == 0 ? '私有' : '公开' %>
      diff --git a/public/images/syllabus/sy_icons_star.png b/public/images/syllabus/sy_icons_star.png new file mode 100644 index 0000000000000000000000000000000000000000..2256346d960cb3cae2ebff90ea29447b23fce255 GIT binary patch literal 18508 zcmeI3c{J4h_rO1v3S~)3QJF@1T8vqY!89hjQMPPRi7{rF%$6BzrO~Q9mKJ19C@Fcg zl5CZtgeVez}u zN=XU;0BLiQu`T$n06vitGr`w3>>CRBCdnZ=a{*xXyz!?95TCdZ0HiGGMn*O^UThwl z>&524%#Dm-93M7~&Y%K7Kx2}fzti#I1;mzNs;r}7!@#9jMhE~`&5|gWb54~z29Wp5 z$?M-e5Gv)UFn?|$$)R*_ofIi4^i|5rJWqoop_{`Tw(7i9Y0kK|JE*^}@AK2o1zm|< zqg8>`vi!O7D~@)iZU=O24-oJTDv{Qt())#c(fOoSahP0Z#cj_ScL88PEHEILm$PnE z?qI*m+zV_5@idNYuJ}70ObpT9J?zXQosoSUrH}TP~`96L50~u~io>xecUb>BBX|OR`1y z&et(!qWr=cfM0}Dl&roRz>hOje+a;IL;<6v^D4z)7Gf!=+TzwsSI&Vvk_b>z5nUO( zp;l8NFZz*^|NDW~SIb`AW?V8PE3T5GNw&iiV-r;8k-Eezs^$QI(n!s%FFNa@x;oom zcG9{S{U7e8e(@e)!->n@wR|b~Q&b#~v#RcIbnWP<7vq$P|`lal^p0S8kHLtLjwyMuR^3LgSo(uNi5ZhT?k^2w9ked7x<2b#1*0VRt%zutj8m;2pdUPl_)}^2Q9#ZUiwPVC zfaAp@k@{;yfXdkPHUKDiy>RQf6N(o1BmlrTC1iDu!K^vA6tYTW5^pUjC{Yw8&otJb zv%G{LXE?K+zgX(@!We@^_9gfR@oPC^N-1;WU&>v*h1QYoYL(v_(!)`l>9#QW_QHaL zlHvyC67$H*@S$_vBO2gU5{hvV;&3tvdyJnB>kd`e2)|qIlP;QRxc#ULN%cL#M?p7y ztNy2`rg9kO$mo#*GxUj&%Nxa>i2CZ^IH#g?i>cno+ai zwJ#6YeI$ayuR+Vu{(MH>`sX1Nx5G|KE6Ns7I-Il|Bef_?oV5MsE0-jb`z4l(hVke1 zN^ILNcbl;{D$2~s!pZ2ITCeI=`Fx2@lKb|fZ~p;5e$M);T9EumX@EQaQk0Wv){3{w zmM%+H+xCadJlEr-Lu{TJ;Lm-$(+ z*rT~ovQgH@KHtC7o~wYr8~VyZGIhCa`U&~-Erej;%`6n|>7 zIWxu225EOFa~{?=Uac}=fl);|BCYOGJl&H%?1k*+sj4h-TOZH z&yhYTy|0YqzH*WGqMeH}7UnKO##x-5@i;cF+#dB5qa5dXQuZXj_x{d@4$6fR~LAGw*3VM*$dkocb_$NxMI_mDfwibGB{T@1dc-5AtZ z)ac&l)3>0nr?KCclcb-do-~AK;)i`D^Ktnb^AF@V`BuLnKBn{pc1sRD7?SCJUSl@I z{E#-J_@=+UzeYtHg_XcXEn=W`C<70pD6hRw((`Ht_P;zgx56v`XsK6Pjd|K1c`M!? z@@&%zP$bf_*o)n>urH|1-UPBc9n+Lvntr#vXjSD2?|52%&DF=ehY!ouo3k3S?)OIM z)+Kr;lZ&1eG>wKIIAfA{cYPQxtSqK6W>>|G7|WR9tdovJ$3Vv+$ER85^;>(?dzkf` z7&gkA66Pe}6DqEsyO?mX)GvYAqVP%~a#iiBAv;zhx_7i!syDuOW}ogy@<+9g%#YPe z9xj$&QookBc9##&_n{wyQ_z$C5_>1JH1kgPCQoJ0)7+#%Eyc4NqAKKL{bCjEm>EYh zSf_$2qC1q{=GR_(Jd~DjGokt7Gv<@$5B2WuzVO*nBSHDT%N@ObgAW74POo-6Y)i^W z$hbWi)rH*Vx6OIm=fb7dR}xnw*Q1!_O{H5}3oCZI;fZ?GPgUJw#Ct^1Q$eQ=6`d`D zx9AnA2Gf&y@i_4_v$SS} z&$u}gIfppkaE_$3vx?7gc8TJ9J7!t?y8Dpe}c1?bJQ-K11IHUFR$y^2Q#!mF0}5*U|BAi_kMrE0c(?@)bP}e zmvZyg6OMHzIYxifdA@eH(I>Bi)~3GqG$pNV*90D2bnJ%eprxa6{fn&XXFHxDbWbFn zNKCVprpH`e^Awf4GS`~6X3cTw_P|c&1Lfm~9t^juj&KK?<}(gh)TCXt&9;$QV1Ych zCSc3LEdhC?Lel0Znk}?1Z$?yS?_IE~Fe=9;FXu`_UV!tvR(P?=%>}Aqc8dNQXcyaj zj{y2W?d}S%ipw!$Hm{s)9o}ybYK+{&kiMw=F1$n8mAU=}?{v`ip@_<>l@BV#w8&b0TOMA|YI=Vfm-aCzX^%^VQ3{W%9gl2xkC~?q`)<`_+sBIL>ep#dl9Q~~={<>S4ji@^jq`Td=u+ruRGqv|k@waj*LC>*;ES$E zmw^J#2l%jilUnYEi+b65X2G1Xm!!Y8uzRS(6@8ls*}M;yJ!@~DJU)zs!zQNiy!GG);{jn#mNqaWwhtAi zrGZ0GP&jRvwyp+ROIsVOtq#MW&{{~8CQ=iHz-Z#JC_EMe`}%+rrNB=F9}gPd*4XrG zI8f4qd+~T2JQC^e@2}ynsloQ~M51+db&)6x5`#g2GZ5TB7LOc&U~yF^oqY3SOyyF1 z=o}uM&4P{lCA+hId3td8c%bi(uX!;!-vhC@U)g~akpW~560Lzk{)>^NrC>8A^Ou%f zo{1lLC0{f9Wk9ZdAcu;yrE=N6J`}2nAC<*Z{nbTqzWt8)wY%@?f6c;!^4*f->%*7; z>_I_N8B``1lMC9Rf0+Z1PMcbsA5s|C{A)OB0R3Og#x;{>6QwY@LIkk>@J2pVGLP+J z&t@}-lT|kL>k0hvG+tG(m7C}+54Jyd6#)q~nOg5DZ&YJ4k4gkBaR`(S0)w?j>Ecm3 zcnoe0_=-YJb22#-;=>ZGeGf8^{5xKLm<#p8_Mp=Of6L3%%pZMNTH?)FTppQ4p_&^L z!Q3_IbPqg@iq@u}s8j@&g402u$ygnPJ4OqKz~LxlcMlo`L&0JvlKj#9C)dVoitl(G zfUYMuz6YBEy8m8Q;0|`zrlQCg1Ws318-YesaR@RNt&N~!wY6wCEiw*=o}>u|n&#}M zK-NCs*_cIUOq(;Fiw77?6QxaaN4aYvP}(>g!rdLrMHfrcM$p``np#?#T4ao-?zdci z;pV4MBsv$Yrod@c2G-g{=dq*i_;K``f*1tR9vS~bj zvJch36ReQm*_o4Ge>8)-Cm_drHG}?NSO_lJ@Bg<9zqhOYCzfHViYZ=XmM7JNi2PQ- z-v)kf{sp{9w-D&TUQ5##$vTGIIx-gsstxTe~d^#{@(RYOUsDOVEb6IJ*Y&@ z>DE)jQ&^{2fqxR(O#Vkm(B3KmS63hpp72<*b5iAOE3FZUQ3UNVz z2o{C71oMGtg}5L<1dBpkg84wSLR=6af<+-N!F(WEAub3I!J-hCU_KD75Elf9U{Q!m zFdv9khzkNluqebOm=8oN#03E&SQO$C%m<~pOE(j38q7av0J`k-C7X*l4QHV=0ABa|n3j##2 zD8wb04@4`(1py*h6yg%h2ci|?f&dXL3dAKfb$2V31>Vx?KYs7(>t~n1`(9xblC32G z1gQZ4e;)vh`~$vs1As3I0N%I(0RAKZD6)^a-ZcdPQJT52fqg(@Z%noKW4FbJPVp?8 zvU(b?)>#oOkQd&<>X!DFyu~)3Rx}u}9(WX{I9FkDz@oh`2)!zD#toK)m7%S7L*{hK z+zAOyO-SpB{P1*hF7BP%OqYc8!)pdxiE^a(ox96Fj}=KqrqGoN6mm$SUZSVwm}xeK zY|yTs%kR>cAyHJbiEVT@(LB+ui^T`Fm5nr$`9>v1Zr9shXtnMrj+Ogxwv@l2WL4`N z&XSYZxGORRK#`b3D`HWfx4&H{U;U%})5tM`=vy9g1eX&!s1EptZ*KrtuVou52~lck z*DB*vMRNHL$~m$$m;Sd6O9!6J99Z<|`b{Q|3Cyy56W1Xq>|%8)n!dh;67eBtP%`9>u~w9 z&#NzAEvQX{*W?g%{V)%rda8FhIE=(Kt#GvuvR@u;@!>qlt@PCV=PW`hiG$@=_vq#+ z#D+blpi{}Z+cN84-Q0<=cQ|wIM7Trx<_pMt@sNhYB-t#@ZIOpKD?`uH6{0U+JJP=4 z!R>pF+3c6O*JmrNe?W+`RGU}7`WQ0CF`?4+Y)+Et@m-hNElk#T99dPi`N_1+%b~qtvCOF!F<@llt*r~5t5<;437DH$8D|^1 G?fpNVBhm2y literal 0 HcmV?d00001 diff --git a/public/stylesheets/syllabus.css b/public/stylesheets/syllabus.css index c506d3d5f..52b172f23 100644 --- a/public/stylesheets/syllabus.css +++ b/public/stylesheets/syllabus.css @@ -80,6 +80,8 @@ input.syllabus_input_min{ .icons_sy_setting{background: url(../images/syllabus/icons_syllabus.png) -51px -33px no-repeat; width:20px; height:20px; display:block; position:absolute; right:10px; top:10px; } .icons_sy_setting:hover{background: url(../images/syllabus/icons_syllabus.png) -25px -33px no-repeat; } .icons_sy_cir{background: url(../images/syllabus/icons_syllabus.png) 0px -82px no-repeat; width:15px; height:15px; display:block; position:absolute; left:-8px; top:25px;} +.icons_sy_favorite{background: url(../images/syllabus/sy_icons_star.png) 0px 0px no-repeat; width:20px; height:20px; display:block; position:absolute; left:-10px; top:25px;} +.icons_sy_star{background: url(../images/syllabus/sy_icons_star.png) 0px -27px no-repeat; width:20px; height:20px; display:block; position:absolute; left:-10px; top:25px;} .icons_sy_arrow{background: url(../images/syllabus/icons_syllabus.png) -31px -81px no-repeat; width:20px; height:20px; display:block; } .syllabus_h2_top{ font-size:18px; color:#333; font-weight:normal; padding:10px 15px;border-bottom:1px solid #e7e7e7; } .syllabus_category{ padding:10px 15px; background-color:#f6f6f6; border-bottom:1px solid #e7e7e7;} @@ -96,6 +98,9 @@ input.syllabus_input_min{ .syllabus_class_list_more a{ color:#ff7e00;} .syllabus_class_title{ font-size:14px; color:#333; max-width:480px; margin-bottom:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .syllabus_class_w{ width:650px;} +.syllabus_class_property {font-size:12px; padding:0 5px; border-radius:3px; line-height:14px;} +.syllabus_class_private {color:#ff4a1b; border:1px solid #ff4a1b;} +.syllabus_class_open {color:#7dd26c; border:1px solid #7dd26c;} /*新建页面*/ From bb2b51aa8d82bcaec73a8a6a1ccf960d0608a98a Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 24 Aug 2016 10:30:20 +0800 Subject: [PATCH 18/51] =?UTF-8?q?=E6=94=B6=E8=97=8F=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0title?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_courses_list.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/users/_courses_list.html.erb b/app/views/users/_courses_list.html.erb index 42c92b1a0..7254a0818 100644 --- a/app/views/users/_courses_list.html.erb +++ b/app/views/users/_courses_list.html.erb @@ -3,8 +3,8 @@
    • <% allow_visit = User.current.member_of_course?(course) || User.current.admin? || course.is_public == 1 %> " target="_blank" title="<%= allow_visit ? "" : "私有班级不可访问"%>"> - - + +

      <%=course.name %>

      From f8dfe85156ffd19ea38a6cc6834e8342408819d6 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 24 Aug 2016 11:03:38 +0800 Subject: [PATCH 19/51] =?UTF-8?q?=E9=A1=B9=E7=9B=AEissue=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=A8=A1=E7=89=88=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/issues_controller.rb | 21 ++++++++++++++++ app/services/projects_service.rb | 24 +++++++++++++++++++ app/services/wechat_service.rb | 13 +++++++++- config/wechat.yml.template | 1 + config/wechat.yml.test | 1 + public/assets/wechat/class.html | 2 +- public/assets/wechat/send_class_list.html | 2 +- .../javascripts/wechat/controllers/class.js | 13 +++++++++- .../wechat/controllers/send_class_list.js | 1 + 9 files changed, 74 insertions(+), 4 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 63ef30b35..b0c83e869 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -189,6 +189,15 @@ class IssuesController < ApplicationController # 给该issue在它所在的项目中所有的issues中所在的位置给一个序号 @issue.project_issues_index = @issue.project.issues.last.nil? ? 1 : @issue.project.issues.last.project_issues_index + 1 if @issue.save + + senduser = User.find(params[:issue][:assigned_to_id]) + issue_id = @issue.id + issue_title = params[:issue][:subject] + priority_id = params[:issue][:priority_id] + + ps = ProjectsService.new + ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id + call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue}) respond_to do |format| format.html { @@ -581,6 +590,18 @@ class IssuesController < ApplicationController end end @issue.safe_attributes = issue_attributes + + senduser = User.find(params[:issue][:assigned_to_id]) + + if senduser.id != User.current.id + issue_id = @issue.id + issue_title = params[:issue][:subject] + priority_id = params[:issue][:priority_id] + + ps = ProjectsService.new + ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id + end + @priorities = IssuePriority.active @allowed_statuses = @issue.new_statuses_allowed_to(User.current) true diff --git a/app/services/projects_service.rb b/app/services/projects_service.rb index 56dfaceff..8de96fff4 100644 --- a/app/services/projects_service.rb +++ b/app/services/projects_service.rb @@ -331,4 +331,28 @@ class ProjectsService {:status => status,:message => message} end + def send_wechat_project_issue_notice user,project,issue_id,issue_title,priority_id + count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count + if count == 0 + title = "您有新的issue需要解决" + remark = "点击详情查看issue" + + case priority_id + when 1 + priority = "低" + when + priority = "正常" + when + priority = "高" + when + priority = "紧急" + when + priority = "立刻" + end + + ws = WechatService.new + ws.project_issue_notice user.id, "issues", issue_id,title, issue_title,priority, remark + end + end + end diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index c28c5f7b2..e1b849c13 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -417,8 +417,19 @@ class WechatService end Rails.logger.info "send over. #{req}" end + end - + def project_issue_notice(user_id, type, id, first, key1, key2,remark="") + uw = UserWechat.where(user_id: user_id).first + unless uw.nil? + data = two_keys_template uw.openid,Wechat.config.project_issue_notice, type, id, first, key1, key2,remark + begin + req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) + rescue Exception => e + Rails.logger.error "[project_issue_notice] ===> #{e}" + end + Rails.logger.info "send over. #{req}" + end end end \ No newline at end of file diff --git a/config/wechat.yml.template b/config/wechat.yml.template index e6b942f09..adda8e7e8 100644 --- a/config/wechat.yml.template +++ b/config/wechat.yml.template @@ -24,6 +24,7 @@ default: &default create_project_notice: "jYu0iimbDpgWYZaTLXioZe2lvqoWTdKnUPyphTJ1mxs" project_review_notice: "kdb-8UlMjTc3z51Qcf8g2vY4i_nE4OGKZAucdQma_2E" join_project_notice: "TtXvy0XMIQyCgpnXHhoB8t-x0QIfy-78gAJXsGf9afg" + project_issue_notice: "HP8JejOnkzmvFopTarc0l1Tp4bU9qnxzdH27x3186lI" auto_openid_url_1: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities" auto_openid_url_2: "&response_type=code&scope=snsapi_base&state=" diff --git a/config/wechat.yml.test b/config/wechat.yml.test index c0676cc26..8c0dafc2f 100644 --- a/config/wechat.yml.test +++ b/config/wechat.yml.test @@ -24,6 +24,7 @@ default: &default create_project_notice: "R2ZaQKJfDJgujPcHWPzadKHIRkIyj2CjX2o_qIuRqig" project_review_notice: "ip192wVXTav3qchgUn9_7B6lFfTlCZjwL7A1tncTOuc" join_project_notice: "3KnMQEMUCmQWkB5JvzrpmguEwnN8bvUHUdpOTudxv_M" + project_issue_notice: "HAF2aCta7BtnaOd_cotGvU4tErGWwCd9I9aiClFN7w8" auto_openid_url_1: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities" auto_openid_url_2: "&response_type=code&scope=snsapi_base&state=" diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index d60aed1bd..8ab2a7d03 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -190,7 +190,7 @@
      - +
      {{r.homework_name}}发送

      暂无作业,
      请登录Trustie网站,在PC浏览器中上传作业。

      diff --git a/public/assets/wechat/send_class_list.html b/public/assets/wechat/send_class_list.html index b6d250d5d..1fe699a20 100644 --- a/public/assets/wechat/send_class_list.html +++ b/public/assets/wechat/send_class_list.html @@ -8,7 +8,7 @@
      {{syllabus.title}}
        -
      • +
      diff --git a/public/javascripts/wechat/controllers/class.js b/public/javascripts/wechat/controllers/class.js index 91641ddcd..95d108151 100644 --- a/public/javascripts/wechat/controllers/class.js +++ b/public/javascripts/wechat/controllers/class.js @@ -186,7 +186,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.sendFile = function(r,index){ vm.myresource_sendIndex = index; rms.save('myresource_sendIndex',index); - $location.path("/send_class_list").search({id: r.id}); + $location.path("/send_class_list").search({id: r.id,course_id: courseid}); }; if(!vm.currentTab){ @@ -306,4 +306,15 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location $location.path("/class_publishissue").search({id:courseid}); }; + vm.goHomeworkDetail = function(id){ + rms.save("yoffset", document.documentElement.scrollTop || document.body.scrollTop); + 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("/homework").search({id: id}); + } + }]); \ No newline at end of file diff --git a/public/javascripts/wechat/controllers/send_class_list.js b/public/javascripts/wechat/controllers/send_class_list.js index ead0860f5..815d0d4b3 100644 --- a/public/javascripts/wechat/controllers/send_class_list.js +++ b/public/javascripts/wechat/controllers/send_class_list.js @@ -3,6 +3,7 @@ app.controller('SendClassListController', ['$scope', '$http','$routeParams', 'co var vm = $scope; var send_id = $routeParams.id; + vm.course_id = $routeParams.course_id; //发送类别 1课件 2作业 3测验 vm.myresource_sendIndex = rms.get('myresource_sendIndex') || 1; From bd3911c072fb457fcd74f42212ebc812a4254f7a Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 24 Aug 2016 11:22:34 +0800 Subject: [PATCH 20/51] . --- app/controllers/issues_controller.rb | 34 ++++++++++---------- app/services/projects_service.rb | 46 ++++++++++++++-------------- app/services/wechat_service.rb | 24 +++++++-------- config/wechat.yml.test | 1 - 4 files changed, 52 insertions(+), 53 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index b0c83e869..1e79f64bf 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -190,13 +190,13 @@ class IssuesController < ApplicationController @issue.project_issues_index = @issue.project.issues.last.nil? ? 1 : @issue.project.issues.last.project_issues_index + 1 if @issue.save - senduser = User.find(params[:issue][:assigned_to_id]) - issue_id = @issue.id - issue_title = params[:issue][:subject] - priority_id = params[:issue][:priority_id] - - ps = ProjectsService.new - ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id + # senduser = User.find(params[:issue][:assigned_to_id]) + # issue_id = @issue.id + # issue_title = params[:issue][:subject] + # priority_id = params[:issue][:priority_id] + # + # ps = ProjectsService.new + # ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue}) respond_to do |format| @@ -591,16 +591,16 @@ class IssuesController < ApplicationController end @issue.safe_attributes = issue_attributes - senduser = User.find(params[:issue][:assigned_to_id]) - - if senduser.id != User.current.id - issue_id = @issue.id - issue_title = params[:issue][:subject] - priority_id = params[:issue][:priority_id] - - ps = ProjectsService.new - ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id - end + # senduser = User.find(params[:issue][:assigned_to_id]) + # + # if senduser.id != User.current.id + # issue_id = @issue.id + # issue_title = params[:issue][:subject] + # priority_id = params[:issue][:priority_id] + # + # ps = ProjectsService.new + # ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id + # end @priorities = IssuePriority.active @allowed_statuses = @issue.new_statuses_allowed_to(User.current) diff --git a/app/services/projects_service.rb b/app/services/projects_service.rb index 8de96fff4..5f8d5323a 100644 --- a/app/services/projects_service.rb +++ b/app/services/projects_service.rb @@ -331,28 +331,28 @@ class ProjectsService {:status => status,:message => message} end - def send_wechat_project_issue_notice user,project,issue_id,issue_title,priority_id - count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count - if count == 0 - title = "您有新的issue需要解决" - remark = "点击详情查看issue" - - case priority_id - when 1 - priority = "低" - when - priority = "正常" - when - priority = "高" - when - priority = "紧急" - when - priority = "立刻" - end - - ws = WechatService.new - ws.project_issue_notice user.id, "issues", issue_id,title, issue_title,priority, remark - end - end + # def send_wechat_project_issue_notice user,project,issue_id,issue_title,priority_id + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count + # if count == 0 + # title = "您有新的issue需要解决" + # remark = "点击详情查看issue" + # + # case priority_id + # when 1 + # priority = "低" + # when + # priority = "正常" + # when + # priority = "高" + # when + # priority = "紧急" + # when + # priority = "立刻" + # end + # + # ws = WechatService.new + # ws.project_issue_notice user.id, "issues", issue_id,title, issue_title,priority, remark + # end + # end end diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index e1b849c13..429c95f60 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -419,17 +419,17 @@ class WechatService end end - def project_issue_notice(user_id, type, id, first, key1, key2,remark="") - uw = UserWechat.where(user_id: user_id).first - unless uw.nil? - data = two_keys_template uw.openid,Wechat.config.project_issue_notice, type, id, first, key1, key2,remark - begin - req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) - rescue Exception => e - Rails.logger.error "[project_issue_notice] ===> #{e}" - end - Rails.logger.info "send over. #{req}" - end - end + # def project_issue_notice(user_id, type, id, first, key1, key2,remark="") + # uw = UserWechat.where(user_id: user_id).first + # unless uw.nil? + # data = two_keys_template uw.openid,Wechat.config.project_issue_notice, type, id, first, key1, key2,remark + # begin + # req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) + # rescue Exception => e + # Rails.logger.error "[project_issue_notice] ===> #{e}" + # end + # Rails.logger.info "send over. #{req}" + # end + # end end \ No newline at end of file diff --git a/config/wechat.yml.test b/config/wechat.yml.test index 8c0dafc2f..c0676cc26 100644 --- a/config/wechat.yml.test +++ b/config/wechat.yml.test @@ -24,7 +24,6 @@ default: &default create_project_notice: "R2ZaQKJfDJgujPcHWPzadKHIRkIyj2CjX2o_qIuRqig" project_review_notice: "ip192wVXTav3qchgUn9_7B6lFfTlCZjwL7A1tncTOuc" join_project_notice: "3KnMQEMUCmQWkB5JvzrpmguEwnN8bvUHUdpOTudxv_M" - project_issue_notice: "HAF2aCta7BtnaOd_cotGvU4tErGWwCd9I9aiClFN7w8" auto_openid_url_1: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities" auto_openid_url_2: "&response_type=code&scope=snsapi_base&state=" From e0957113d811d9b1be025bc5691a6db2975d7faf Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 24 Aug 2016 11:28:50 +0800 Subject: [PATCH 21/51] =?UTF-8?q?=E9=A1=B9=E7=9B=AEissue=E6=A8=A1=E7=89=88?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/issues_controller.rb | 34 ++++++++++---------- app/services/projects_service.rb | 46 ++++++++++++++-------------- app/services/wechat_service.rb | 24 +++++++-------- config/wechat.yml.test | 1 + 4 files changed, 53 insertions(+), 52 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 1e79f64bf..b0c83e869 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -190,13 +190,13 @@ class IssuesController < ApplicationController @issue.project_issues_index = @issue.project.issues.last.nil? ? 1 : @issue.project.issues.last.project_issues_index + 1 if @issue.save - # senduser = User.find(params[:issue][:assigned_to_id]) - # issue_id = @issue.id - # issue_title = params[:issue][:subject] - # priority_id = params[:issue][:priority_id] - # - # ps = ProjectsService.new - # ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id + senduser = User.find(params[:issue][:assigned_to_id]) + issue_id = @issue.id + issue_title = params[:issue][:subject] + priority_id = params[:issue][:priority_id] + + ps = ProjectsService.new + ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue}) respond_to do |format| @@ -591,16 +591,16 @@ class IssuesController < ApplicationController end @issue.safe_attributes = issue_attributes - # senduser = User.find(params[:issue][:assigned_to_id]) - # - # if senduser.id != User.current.id - # issue_id = @issue.id - # issue_title = params[:issue][:subject] - # priority_id = params[:issue][:priority_id] - # - # ps = ProjectsService.new - # ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id - # end + senduser = User.find(params[:issue][:assigned_to_id]) + + if senduser.id != User.current.id + issue_id = @issue.id + issue_title = params[:issue][:subject] + priority_id = params[:issue][:priority_id] + + ps = ProjectsService.new + ps.send_wechat_project_issue_notice senduser,@issue.project,issue_id,issue_title,priority_id + end @priorities = IssuePriority.active @allowed_statuses = @issue.new_statuses_allowed_to(User.current) diff --git a/app/services/projects_service.rb b/app/services/projects_service.rb index 5f8d5323a..8de96fff4 100644 --- a/app/services/projects_service.rb +++ b/app/services/projects_service.rb @@ -331,28 +331,28 @@ class ProjectsService {:status => status,:message => message} end - # def send_wechat_project_issue_notice user,project,issue_id,issue_title,priority_id - # count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count - # if count == 0 - # title = "您有新的issue需要解决" - # remark = "点击详情查看issue" - # - # case priority_id - # when 1 - # priority = "低" - # when - # priority = "正常" - # when - # priority = "高" - # when - # priority = "紧急" - # when - # priority = "立刻" - # end - # - # ws = WechatService.new - # ws.project_issue_notice user.id, "issues", issue_id,title, issue_title,priority, remark - # end - # end + def send_wechat_project_issue_notice user,project,issue_id,issue_title,priority_id + count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count + if count == 0 + title = "您有新的issue需要解决" + remark = "点击详情查看issue" + + case priority_id + when 1 + priority = "低" + when + priority = "正常" + when + priority = "高" + when + priority = "紧急" + when + priority = "立刻" + end + + ws = WechatService.new + ws.project_issue_notice user.id, "issues", issue_id,title, issue_title,priority, remark + end + end end diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index 429c95f60..423676983 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -419,17 +419,17 @@ class WechatService end end - # def project_issue_notice(user_id, type, id, first, key1, key2,remark="") - # uw = UserWechat.where(user_id: user_id).first - # unless uw.nil? - # data = two_keys_template uw.openid,Wechat.config.project_issue_notice, type, id, first, key1, key2,remark - # begin - # req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) - # rescue Exception => e - # Rails.logger.error "[project_issue_notice] ===> #{e}" - # end - # Rails.logger.info "send over. #{req}" - # end - # end + def project_issue_notice(user_id, type, id, first, key1, key2,remark="",uid=0) + uw = UserWechat.where(user_id: user_id).first + unless uw.nil? + data = two_keys_template uw.openid,Wechat.config.project_issue_notice, type, id, first, key1, key2,remark,0 + begin + req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) + rescue Exception => e + Rails.logger.error "[project_issue_notice] ===> #{e}" + end + Rails.logger.info "send over. #{req}" + end + end end \ No newline at end of file diff --git a/config/wechat.yml.test b/config/wechat.yml.test index c0676cc26..8c0dafc2f 100644 --- a/config/wechat.yml.test +++ b/config/wechat.yml.test @@ -24,6 +24,7 @@ default: &default create_project_notice: "R2ZaQKJfDJgujPcHWPzadKHIRkIyj2CjX2o_qIuRqig" project_review_notice: "ip192wVXTav3qchgUn9_7B6lFfTlCZjwL7A1tncTOuc" join_project_notice: "3KnMQEMUCmQWkB5JvzrpmguEwnN8bvUHUdpOTudxv_M" + project_issue_notice: "HAF2aCta7BtnaOd_cotGvU4tErGWwCd9I9aiClFN7w8" auto_openid_url_1: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities" auto_openid_url_2: "&response_type=code&scope=snsapi_base&state=" From 7d89f69981c6bd27d331ba02a50408fc5a9b264f Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 24 Aug 2016 15:58:23 +0800 Subject: [PATCH 22/51] =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E5=92=8C=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E6=94=B6=E8=97=8F=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_user_courses.html.erb | 10 ++-- app/views/users/_courses_list.html.erb | 54 +++++++++++-------- ...0160824073554_add_is_collect_to_members.rb | 5 ++ public/stylesheets/syllabus.css | 2 +- 4 files changed, 43 insertions(+), 28 deletions(-) create mode 100644 db/migrate/20160824073554_add_is_collect_to_members.rb diff --git a/app/views/layouts/_user_courses.html.erb b/app/views/layouts/_user_courses.html.erb index 2bbd38831..78461b9ba 100644 --- a/app/views/layouts/_user_courses.html.erb +++ b/app/views/layouts/_user_courses.html.erb @@ -45,12 +45,6 @@ <%= link_to "论坛",course_boards_path(course), :class => 'user_navmore_li fl',:target => '_blank' %> <%= link_to "+",course_boards_path(course, :flag => true, :is_new => 1), :class => 'user_navmore_add fl', :title => '发布帖子',:target => '_blank' %>
    • - -
    • - <%= link_to "取消收藏", :class => 'user_navmore_li',:target => '_blank' %> -
      -
    • - <% if !course.syllabus.nil? %>
    • <%= link_to "所属课程",syllabus_path(course.syllabus_id), :class => 'user_navmore_li',:target => '_blank' %> @@ -58,6 +52,10 @@
    • <% end %> <% if User.current == user %> +
    • + <%= link_to "取消收藏", '', :class => 'user_navmore_li',:target => '_blank' %> +
      +
    • <% if count == 0 %> <%= link_to "屏蔽动态", shield_activities_path(:user_id => user.id, :course_id => course.id), :method => 'post', :class => 'user_navmore_li',:remote => true %> diff --git a/app/views/users/_courses_list.html.erb b/app/views/users/_courses_list.html.erb index 7254a0818..ec5b3e462 100644 --- a/app/views/users/_courses_list.html.erb +++ b/app/views/users/_courses_list.html.erb @@ -1,31 +1,43 @@ <% unless courses.nil? %> <% courses.each_with_index do |course, i| %> -
    • +
    • <% allow_visit = User.current.member_of_course?(course) || User.current.admin? || course.is_public == 1 %> - " target="_blank" title="<%= allow_visit ? "" : "私有班级不可访问"%>"> - - -
    • <% end %> <% if courses.count > 3 %> -
    • - 共<%=courses.count %>个班级,点击全部展开 +
    • + 共<%= courses.count %> + 个班级,点击全部展开
    • <% end %> <% end %> \ No newline at end of file diff --git a/db/migrate/20160824073554_add_is_collect_to_members.rb b/db/migrate/20160824073554_add_is_collect_to_members.rb new file mode 100644 index 000000000..6211d0497 --- /dev/null +++ b/db/migrate/20160824073554_add_is_collect_to_members.rb @@ -0,0 +1,5 @@ +class AddIsCollectToMembers < ActiveRecord::Migration + def change + add_column :is_collect, :members, :integer, :default => 1 + end +end diff --git a/public/stylesheets/syllabus.css b/public/stylesheets/syllabus.css index f11c194a6..95cee0b2c 100644 --- a/public/stylesheets/syllabus.css +++ b/public/stylesheets/syllabus.css @@ -96,7 +96,7 @@ input.syllabus_input_min{ .syllabus_class_list_more{padding:8px; text-align:center;border-left:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;} .syllabus_class_list_more:hover{ background:#ececec;} .syllabus_class_list_more a{ color:#ff7e00;} -.syllabus_class_title{ font-size:14px; color:#333; max-width:480px; margin-bottom:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } +a.syllabus_class_title{ font-size:14px; color:#333; max-width:480px; margin-bottom:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .syllabus_class_w{ width:650px;} .syllabus_class_property {font-size:12px; padding:0 5px; border-radius:3px; line-height:14px;} .syllabus_class_private {color:#ff4a1b; border:1px solid #ff4a1b;} From 56b74b755b1602fc847f8aa6e7b91e94f1900fe0 Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 24 Aug 2016 17:30:30 +0800 Subject: [PATCH 23/51] =?UTF-8?q?=E5=8F=96=E6=B6=88=E6=94=B6=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 17 +- app/models/principal.rb | 16 + app/views/layouts/_user_courses.html.erb | 2 +- app/views/layouts/new_base_user.html.erb | 8 +- app/views/users/cancel_collect.js.erb | 0 config/routes.rb | 1 + ...0160824073554_add_is_collect_to_members.rb | 2 +- db/schema.rb | 433 +----------------- 8 files changed, 58 insertions(+), 421 deletions(-) create mode 100644 app/views/users/cancel_collect.js.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index eb7ee4c03..aabce249c 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -42,7 +42,7 @@ class UsersController < ApplicationController :activity_new_score_index, :influence_new_score_index, :score_new_index,:user_projects_index,:user_resource, :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages,:edit_brief_introduction, :user_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course,:user_courselist,:user_projectlist,:sort_syllabus_list, - :sort_project_list,:my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks] + :sort_project_list,:my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks, :cancel_collect] before_filter :auth_user_extension, only: :show #before_filter :rest_user_score, only: :show #before_filter :select_entry, only: :user_projects @@ -3424,6 +3424,21 @@ class UsersController < ApplicationController end end + #取消收藏班级/项目 + def cancel_collect + if params[:project] + member = Member.where("user_id = #{@user.id} and project_id = #{params[:project].to_i}") + elsif params[:course] + member = Member.where("user_id = #{@user.id} and course_id = #{params[:course].to_i}") + end + unless member.empty? + member.first.update_attribute(:is_collect => 0) + end + respond_to do |format| + format.js + end +end + def user_projectlist @order, @c_sort, @type, @list_type = 1, 2, 1, 1 #limit = 5 diff --git a/app/models/principal.rb b/app/models/principal.rb index 0c87ec0c6..e65816e83 100644 --- a/app/models/principal.rb +++ b/app/models/principal.rb @@ -131,6 +131,22 @@ class Principal < ActiveRecord::Base columns.uniq.map {|field| "#{table}.#{field}"} end + #收藏的课程 + def favorite_courses + members = Member.where("user_id = #{self.id} and course_id != -1 and is_collect = 1") + course_ids = members.empty? ? "(-1)" : "(" + members.map{|member| member.course_id}.join(",") + ")" + courses = Course.where("id in #{course_ids}") + return courses + end + + #收藏的项目 + def favorite_projects + members = Member.where("user_id = #{self.id} and project_id != -1 and project_id != 0 and is_collect = 1") + project_ids = members.empty? ? "(-1)" : "(" + members.map{|member| member.project_id}.join(",") + ")" + projects = Project.where("id in #{project_ids}") + return projects + end + protected # Make sure we don't try to insert NULL values (see #4632) diff --git a/app/views/layouts/_user_courses.html.erb b/app/views/layouts/_user_courses.html.erb index 78461b9ba..0335aa922 100644 --- a/app/views/layouts/_user_courses.html.erb +++ b/app/views/layouts/_user_courses.html.erb @@ -53,7 +53,7 @@ <% end %> <% if User.current == user %>
    • - <%= link_to "取消收藏", '', :class => 'user_navmore_li',:target => '_blank' %> + <%= link_to "取消收藏", cancel_collect_user_path(user, :course => course.id), :class => 'user_navmore_li',:target => '_blank' %>
    • diff --git a/app/views/layouts/new_base_user.html.erb b/app/views/layouts/new_base_user.html.erb index c4fec04df..5969f17d6 100644 --- a/app/views/layouts/new_base_user.html.erb +++ b/app/views/layouts/new_base_user.html.erb @@ -158,8 +158,8 @@
      • <%= link_to '班级',{:controller => "users", :action => "user_courselist", :id => @user.id}, :id => "user_course_list" %> - <% courses = @user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10) %> - <% all_count = @user.courses.visible.where("is_delete =?", 0).count%> + <% courses = @user.favorite_courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10) %> + <% all_count = @user.favorite_courses.visible.where("is_delete =?", 0).count%>
          @@ -195,8 +195,8 @@
          • <%= link_to '项目',{:controller => "users", :action => "user_projectlist", :id => @user.id}, :id => 'user_project_list'%> - <% all_count = @user.projects.visible.count%> - <% projects = @user.projects.visible.select("projects.*, (SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(10)%> + <% all_count = @user.favorite_projects.visible.count%> + <% projects = @user.favorite_projects.visible.select("projects.*, (SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(10)%>
              diff --git a/app/views/users/cancel_collect.js.erb b/app/views/users/cancel_collect.js.erb new file mode 100644 index 000000000..e69de29bb diff --git a/config/routes.rb b/config/routes.rb index 6cbc0812d..6b26eb078 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -667,6 +667,7 @@ RedmineApp::Application.routes.draw do post 'apply_for_resource' match 'manage_or_receive_homeworks', :to => 'users#manage_or_receive_homeworks', :via => :get get 'search_m_r_homeworks' + post 'cancel_collect' # end end #resources :blogs diff --git a/db/migrate/20160824073554_add_is_collect_to_members.rb b/db/migrate/20160824073554_add_is_collect_to_members.rb index 6211d0497..17e088398 100644 --- a/db/migrate/20160824073554_add_is_collect_to_members.rb +++ b/db/migrate/20160824073554_add_is_collect_to_members.rb @@ -1,5 +1,5 @@ class AddIsCollectToMembers < ActiveRecord::Migration def change - add_column :is_collect, :members, :integer, :default => 1 + add_column :members, :is_collect, :integer, :default => 1 end end diff --git a/db/schema.rb b/db/schema.rb index 47b3bf210..414f2d2be 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160810081337) do +ActiveRecord::Schema.define(:version => 20160824073554) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -52,28 +52,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" - create_table "application_settings", :force => true do |t| - t.integer "default_projects_limit" - t.boolean "signup_enabled" - t.boolean "signin_enabled" - t.boolean "gravatar_enabled" - t.text "sign_in_text" - t.datetime "created_at" - t.datetime "updated_at" - t.string "home_page_url" - t.integer "default_branch_protection", :default => 2 - t.boolean "twitter_sharing_enabled", :default => true - t.text "restricted_visibility_levels" - t.boolean "version_check_enabled", :default => true - t.integer "max_attachment_size", :default => 10, :null => false - t.integer "default_project_visibility" - t.integer "default_snippet_visibility" - t.text "restricted_signup_domains" - t.boolean "user_oauth_applications", :default => true - t.string "after_sign_out_path" - t.integer "session_expire_delay", :default => 10080, :null => false - end - create_table "applied_messages", :force => true do |t| t.integer "user_id" t.integer "applied_id" @@ -82,17 +60,16 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.integer "status", :default => 0 t.datetime "created_at", :null => false t.datetime "updated_at", :null => false + t.string "name" t.integer "applied_user_id" t.integer "role" t.integer "project_id" - t.string "name" end create_table "applied_projects", :force => true do |t| - t.integer "project_id", :null => false - t.integer "user_id", :null => false - t.integer "role", :default => 0 - t.integer "applied_user_id" + t.integer "project_id", :null => false + t.integer "user_id", :null => false + t.integer "role", :default => 0 end create_table "apply_add_schools", :force => true do |t| @@ -207,20 +184,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.string "typeName", :limit => 50 end - create_table "audit_events", :force => true do |t| - t.integer "author_id", :null => false - t.string "type", :null => false - t.integer "entity_id", :null => false - t.string "entity_type", :null => false - t.text "details" - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "audit_events", ["author_id"], :name => "index_audit_events_on_author_id" - add_index "audit_events", ["entity_id", "entity_type"], :name => "index_audit_events_on_entity_id_and_entity_type" - add_index "audit_events", ["type"], :name => "index_audit_events_on_type" - create_table "auth_sources", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false t.string "name", :limit => 60, :default => "", :null => false @@ -318,17 +281,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" add_index "boards", ["project_id"], :name => "boards_project_id" - create_table "broadcast_messages", :force => true do |t| - t.text "message", :null => false - t.datetime "starts_at" - t.datetime "ends_at" - t.integer "alert_type" - t.datetime "created_at" - t.datetime "updated_at" - t.string "color" - t.string "font" - end - create_table "bug_to_osps", :force => true do |t| t.integer "osp_id" t.integer "relative_memo_id" @@ -358,16 +310,14 @@ ActiveRecord::Schema.define(:version => 20160810081337) do add_index "changeset_parents", ["parent_id"], :name => "changeset_parents_parent_ids" create_table "changesets", :force => true do |t| - t.integer "repository_id", :null => false - t.string "revision", :null => false + t.integer "repository_id", :null => false + t.string "revision", :null => false t.string "committer" - t.datetime "committed_on", :null => false + t.datetime "committed_on", :null => false t.text "comments" t.date "commit_date" t.string "scmid" t.integer "user_id" - t.integer "project_id" - t.integer "type", :default => 0 end add_index "changesets", ["committed_on"], :name => "index_changesets_on_committed_on" @@ -647,11 +597,8 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.string "qrcode" end - add_index "courses", ["id"], :name => "id", :unique => true add_index "courses", ["invite_code"], :name => "index_courses_on_invite_code", :unique => true add_index "courses", ["syllabus_id"], :name => "index_courses_on_syllabus_id" - add_index "courses", ["tea_id"], :name => "tea_id" - add_index "courses", ["visits"], :name => "visits" create_table "custom_fields", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false @@ -714,15 +661,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority" - create_table "deploy_keys_projects", :force => true do |t| - t.integer "deploy_key_id", :null => false - t.integer "project_id", :null => false - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "deploy_keys_projects", ["project_id"], :name => "index_deploy_keys_projects_on_project_id" - create_table "discuss_demos", :force => true do |t| t.string "title" t.text "body" @@ -772,16 +710,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.datetime "created_at" end - create_table "emails", :force => true do |t| - t.integer "user_id", :null => false - t.string "email", :null => false - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "emails", ["email"], :name => "index_emails_on_email", :unique => true - add_index "emails", ["user_id"], :name => "index_emails_on_user_id" - create_table "enabled_modules", :force => true do |t| t.integer "project_id" t.string "name", :null => false @@ -804,25 +732,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" - create_table "events", :force => true do |t| - t.string "target_type" - t.integer "target_id" - t.string "title" - t.text "data" - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "action" - t.integer "author_id" - end - - add_index "events", ["action"], :name => "index_events_on_action" - add_index "events", ["author_id"], :name => "index_events_on_author_id" - add_index "events", ["created_at"], :name => "index_events_on_created_at" - add_index "events", ["project_id"], :name => "index_events_on_project_id" - add_index "events", ["target_id"], :name => "index_events_on_target_id" - add_index "events", ["target_type"], :name => "index_events_on_target_type" - create_table "exercise_answers", :force => true do |t| t.integer "user_id" t.integer "exercise_question_id" @@ -925,15 +834,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type" add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at" - create_table "forked_project_links", :force => true do |t| - t.integer "forked_to_project_id", :null => false - t.integer "forked_from_project_id", :null => false - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "forked_project_links", ["forked_to_project_id"], :name => "index_forked_project_links_on_forked_to_project_id", :unique => true - create_table "forums", :force => true do |t| t.string "name", :null => false t.text "description" @@ -1063,17 +963,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.datetime "updated_at", :null => false end - create_table "identities", :force => true do |t| - t.string "extern_uid" - t.string "provider" - t.integer "user_id" - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "identities", ["created_at", "id"], :name => "index_identities_on_created_at_and_id" - add_index "identities", ["user_id"], :name => "index_identities_on_user_id" - create_table "invite_lists", :force => true do |t| t.integer "project_id" t.integer "user_id" @@ -1220,20 +1109,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.integer "private", :default => 0 end - create_table "keys", :force => true do |t| - t.integer "user_id" - t.datetime "created_at" - t.datetime "updated_at" - t.text "key" - t.string "title" - t.string "type" - t.string "fingerprint" - t.boolean "public", :default => false, :null => false - end - - add_index "keys", ["created_at", "id"], :name => "index_keys_on_created_at_and_id" - add_index "keys", ["user_id"], :name => "index_keys_on_user_id" - create_table "kindeditor_assets", :force => true do |t| t.string "asset" t.integer "file_size" @@ -1245,27 +1120,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.integer "owner_type", :default => 0 end - create_table "label_links", :force => true do |t| - t.integer "label_id" - t.integer "target_id" - t.string "target_type" - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "label_links", ["label_id"], :name => "index_label_links_on_label_id" - add_index "label_links", ["target_id", "target_type"], :name => "index_label_links_on_target_id_and_target_type" - - create_table "labels", :force => true do |t| - t.string "title" - t.string "color" - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "labels", ["project_id"], :name => "index_labels_on_project_id" - create_table "member_roles", :force => true do |t| t.integer "member_id", :null => false t.integer "role_id", :null => false @@ -1283,6 +1137,7 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.boolean "mail_notification", :default => false, :null => false t.integer "course_id", :default => -1 t.integer "course_group_id", :default => 0 + t.integer "is_collect", :default => 1 end add_index "members", ["project_id"], :name => "index_members_on_project_id" @@ -1317,47 +1172,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.integer "viewed_count", :default => 0 end - create_table "merge_request_diffs", :force => true do |t| - t.string "state" - t.text "st_commits", :limit => 2147483647 - t.text "st_diffs", :limit => 2147483647 - t.integer "merge_request_id", :null => false - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "merge_request_diffs", ["merge_request_id"], :name => "index_merge_request_diffs_on_merge_request_id", :unique => true - - create_table "merge_requests", :force => true do |t| - t.string "target_branch", :null => false - t.string "source_branch", :null => false - t.integer "source_project_id", :null => false - t.integer "author_id" - t.integer "assignee_id" - t.string "title" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "milestone_id" - t.string "state" - t.string "merge_status" - t.integer "target_project_id", :null => false - t.integer "iid" - t.text "description" - t.integer "position", :default => 0 - t.datetime "locked_at" - end - - add_index "merge_requests", ["assignee_id"], :name => "index_merge_requests_on_assignee_id" - add_index "merge_requests", ["author_id"], :name => "index_merge_requests_on_author_id" - add_index "merge_requests", ["created_at", "id"], :name => "index_merge_requests_on_created_at_and_id" - add_index "merge_requests", ["created_at"], :name => "index_merge_requests_on_created_at" - add_index "merge_requests", ["milestone_id"], :name => "index_merge_requests_on_milestone_id" - add_index "merge_requests", ["source_branch"], :name => "index_merge_requests_on_source_branch" - add_index "merge_requests", ["source_project_id"], :name => "index_merge_requests_on_source_project_id" - add_index "merge_requests", ["target_branch"], :name => "index_merge_requests_on_target_branch" - add_index "merge_requests", ["target_project_id", "iid"], :name => "index_merge_requests_on_target_project_id_and_iid", :unique => true - add_index "merge_requests", ["title"], :name => "index_merge_requests_on_title" - create_table "message_alls", :force => true do |t| t.integer "user_id" t.integer "message_id" @@ -1392,39 +1206,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" add_index "messages", ["parent_id"], :name => "messages_parent_id" - create_table "milestones", :force => true do |t| - t.string "title", :null => false - t.integer "project_id", :null => false - t.text "description" - t.date "due_date" - t.datetime "created_at" - t.datetime "updated_at" - t.string "state" - t.integer "iid" - end - - add_index "milestones", ["created_at", "id"], :name => "index_milestones_on_created_at_and_id" - add_index "milestones", ["due_date"], :name => "index_milestones_on_due_date" - add_index "milestones", ["project_id", "iid"], :name => "index_milestones_on_project_id_and_iid", :unique => true - add_index "milestones", ["project_id"], :name => "index_milestones_on_project_id" - - create_table "namespaces", :force => true do |t| - t.string "name", :null => false - t.string "path", :null => false - t.integer "owner_id" - t.datetime "created_at" - t.datetime "updated_at" - t.string "type" - t.string "description", :default => "", :null => false - t.string "avatar" - end - - add_index "namespaces", ["created_at", "id"], :name => "index_namespaces_on_created_at_and_id" - add_index "namespaces", ["name"], :name => "index_namespaces_on_name", :unique => true - add_index "namespaces", ["owner_id"], :name => "index_namespaces_on_owner_id" - add_index "namespaces", ["path"], :name => "index_namespaces_on_path", :unique => true - add_index "namespaces", ["type"], :name => "index_namespaces_on_type" - create_table "news", :force => true do |t| t.integer "project_id" t.string "title", :limit => 60, :default => "", :null => false @@ -1450,31 +1231,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.datetime "updated_at", :null => false end - create_table "notes", :force => true do |t| - t.text "note" - t.string "noteable_type" - t.integer "author_id" - t.datetime "created_at" - t.datetime "updated_at" - t.integer "project_id" - t.string "attachment" - t.string "line_code" - t.string "commit_id" - t.integer "noteable_id" - t.boolean "system", :default => false, :null => false - t.text "st_diff", :limit => 2147483647 - end - - add_index "notes", ["author_id"], :name => "index_notes_on_author_id" - add_index "notes", ["commit_id"], :name => "index_notes_on_commit_id" - add_index "notes", ["created_at", "id"], :name => "index_notes_on_created_at_and_id" - add_index "notes", ["created_at"], :name => "index_notes_on_created_at" - add_index "notes", ["noteable_id", "noteable_type"], :name => "index_notes_on_noteable_id_and_noteable_type" - add_index "notes", ["noteable_type"], :name => "index_notes_on_noteable_type" - add_index "notes", ["project_id", "noteable_type"], :name => "index_notes_on_project_id_and_noteable_type" - add_index "notes", ["project_id"], :name => "index_notes_on_project_id" - add_index "notes", ["updated_at"], :name => "index_notes_on_updated_at" - create_table "notificationcomments", :force => true do |t| t.string "notificationcommented_type" t.integer "notificationcommented_id" @@ -1484,49 +1240,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.datetime "updated_at", :null => false end - create_table "oauth_access_grants", :force => true do |t| - t.integer "resource_owner_id", :null => false - t.integer "application_id", :null => false - t.string "token", :null => false - t.integer "expires_in", :null => false - t.text "redirect_uri", :null => false - t.datetime "created_at", :null => false - t.datetime "revoked_at" - t.string "scopes" - end - - add_index "oauth_access_grants", ["token"], :name => "index_oauth_access_grants_on_token", :unique => true - - create_table "oauth_access_tokens", :force => true do |t| - t.integer "resource_owner_id" - t.integer "application_id" - t.string "token", :null => false - t.string "refresh_token" - t.integer "expires_in" - t.datetime "revoked_at" - t.datetime "created_at", :null => false - t.string "scopes" - end - - add_index "oauth_access_tokens", ["refresh_token"], :name => "index_oauth_access_tokens_on_refresh_token", :unique => true - add_index "oauth_access_tokens", ["resource_owner_id"], :name => "index_oauth_access_tokens_on_resource_owner_id" - add_index "oauth_access_tokens", ["token"], :name => "index_oauth_access_tokens_on_token", :unique => true - - create_table "oauth_applications", :force => true do |t| - t.string "name", :null => false - t.string "uid", :null => false - t.string "secret", :null => false - t.text "redirect_uri", :null => false - t.string "scopes", :default => "", :null => false - t.datetime "created_at" - t.datetime "updated_at" - t.integer "owner_id" - t.string "owner_type" - end - - add_index "oauth_applications", ["owner_id", "owner_type"], :name => "index_oauth_applications_on_owner_id_and_owner_type" - add_index "oauth_applications", ["uid"], :name => "index_oauth_applications_on_uid", :unique => true - create_table "onclick_times", :force => true do |t| t.integer "user_id" t.datetime "onclick_time" @@ -1684,23 +1397,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.integer "allow_teacher", :default => 0 end - create_table "permissions", :force => true do |t| - t.string "controller", :limit => 30, :default => "", :null => false - t.string "action", :limit => 30, :default => "", :null => false - t.string "description", :limit => 60, :default => "", :null => false - t.boolean "is_public", :default => false, :null => false - t.integer "sort", :default => 0, :null => false - t.boolean "mail_option", :default => false, :null => false - t.boolean "mail_enabled", :default => false, :null => false - end - - create_table "permissions_roles", :id => false, :force => true do |t| - t.integer "permission_id", :default => 0, :null => false - t.integer "role_id", :default => 0, :null => false - end - - add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id" - create_table "phone_app_versions", :force => true do |t| t.string "version" t.text "description" @@ -1783,11 +1479,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.datetime "updated_at", :null => false end - create_table "project_import_data", :force => true do |t| - t.integer "project_id" - t.text "data" - end - create_table "project_infos", :force => true do |t| t.integer "project_id" t.integer "user_id" @@ -1880,16 +1571,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" - create_table "protected_branches", :force => true do |t| - t.integer "project_id", :null => false - t.string "name", :null => false - t.datetime "created_at" - t.datetime "updated_at" - t.boolean "developers_can_push", :default => false, :null => false - end - - add_index "protected_branches", ["project_id"], :name => "index_protected_branches_on_project_id" - create_table "pull_requests", :force => true do |t| t.integer "pull_request_id" t.integer "gpid" @@ -2046,25 +1727,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.integer "is_teacher_score", :default => 0 end - create_table "services", :force => true do |t| - t.string "type" - t.string "title" - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - t.boolean "active", :default => false, :null => false - t.text "properties" - t.boolean "template", :default => false - t.boolean "push_events", :default => true - t.boolean "issues_events", :default => true - t.boolean "merge_requests_events", :default => true - t.boolean "tag_push_events", :default => true - t.boolean "note_events", :default => true, :null => false - end - - add_index "services", ["created_at", "id"], :name => "index_services_on_created_at_and_id" - add_index "services", ["project_id"], :name => "index_services_on_project_id" - create_table "settings", :force => true do |t| t.string "name", :default => "", :null => false t.text "value" @@ -2103,26 +1765,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.datetime "updated_at", :null => false end - create_table "snippets", :force => true do |t| - t.string "title" - t.text "content", :limit => 2147483647 - t.integer "author_id", :null => false - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - t.string "file_name" - t.datetime "expires_at" - t.string "type" - t.integer "visibility_level", :default => 0, :null => false - end - - add_index "snippets", ["author_id"], :name => "index_snippets_on_author_id" - add_index "snippets", ["created_at", "id"], :name => "index_snippets_on_created_at_and_id" - add_index "snippets", ["created_at"], :name => "index_snippets_on_created_at" - add_index "snippets", ["expires_at"], :name => "index_snippets_on_expires_at" - add_index "snippets", ["project_id"], :name => "index_snippets_on_project_id" - add_index "snippets", ["visibility_level"], :name => "index_snippets_on_visibility_level" - create_table "softapplications", :force => true do |t| t.string "name" t.text "description" @@ -2203,10 +1845,11 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.integer "absence_penalty", :default => 0 t.float "system_score", :default => 0.0 t.boolean "is_test", :default => false - t.float "work_score" t.integer "simi_id" t.integer "simi_value" + t.float "work_score" t.integer "work_status", :default => 0 + t.datetime "commit_time" end add_index "student_works", ["homework_common_id", "user_id"], :name => "index_student_works_on_homework_common_id_and_user_id" @@ -2254,13 +1897,13 @@ ActiveRecord::Schema.define(:version => 20160810081337) do create_table "sub_domains", :force => true do |t| t.integer "org_subfield_id" - t.integer "priority" + t.integer "priority", :default => 0 t.string "name" t.string "field_type" - t.integer "hide" - t.integer "status" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.integer "hide", :default => 0 + t.integer "status", :default => 0 + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end create_table "subfield_subdomain_dirs", :force => true do |t| @@ -2270,17 +1913,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.datetime "updated_at", :null => false end - create_table "subscriptions", :force => true do |t| - t.integer "user_id" - t.integer "subscribable_id" - t.string "subscribable_type" - t.boolean "subscribed" - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "subscriptions", ["subscribable_id", "subscribable_type", "user_id"], :name => "subscriptions_user_id_and_ref_fields", :unique => true - create_table "syllabuses", :force => true do |t| t.string "title" t.text "description" @@ -2510,8 +2142,9 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.string "remark" t.integer "groupid" t.integer "user_id" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "bindtype", :default => 0 end create_table "users", :force => true do |t| @@ -2541,17 +2174,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" add_index "users", ["type"], :name => "index_users_on_type" - create_table "users_star_projects", :force => true do |t| - t.integer "project_id", :null => false - t.integer "user_id", :null => false - t.datetime "created_at" - t.datetime "updated_at" - end - - add_index "users_star_projects", ["project_id"], :name => "index_users_star_projects_on_project_id" - add_index "users_star_projects", ["user_id", "project_id"], :name => "index_users_star_projects_on_user_id_and_project_id", :unique => true - add_index "users_star_projects", ["user_id"], :name => "index_users_star_projects_on_user_id" - create_table "versions", :force => true do |t| t.integer "project_id", :default => 0, :null => false t.string "name", :default => "", :null => false @@ -2603,23 +2225,6 @@ ActiveRecord::Schema.define(:version => 20160810081337) do t.datetime "updated_at", :null => false end - create_table "web_hooks", :force => true do |t| - t.string "url" - t.integer "project_id" - t.datetime "created_at" - t.datetime "updated_at" - t.string "type", :default => "ProjectHook" - t.integer "service_id" - t.boolean "push_events", :default => true, :null => false - t.boolean "issues_events", :default => false, :null => false - t.boolean "merge_requests_events", :default => false, :null => false - t.boolean "tag_push_events", :default => false - t.boolean "note_events", :default => false, :null => false - end - - add_index "web_hooks", ["created_at", "id"], :name => "index_web_hooks_on_created_at_and_id" - add_index "web_hooks", ["project_id"], :name => "index_web_hooks_on_project_id" - create_table "wechat_logs", :force => true do |t| t.string "openid", :null => false t.text "request_raw" From f35c3e85285e0eef2bbd751e358a33f445d2b058 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 25 Aug 2016 09:45:23 +0800 Subject: [PATCH 24/51] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=96=B0=E9=97=BB?= =?UTF-8?q?=E3=80=81issue=E5=A2=9E=E5=8A=A0=E4=BA=8C=E7=BA=A7=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/activities.rb | 2 +- app/api/mobile/apis/courses.rb | 2 +- app/api/mobile/apis/issues.rb | 16 ++- app/api/mobile/apis/newss.rb | 15 ++- app/api/mobile/entities/activity.rb | 4 + app/api/mobile/entities/issue.rb | 120 +++++++++++++++++- app/api/mobile/entities/news.rb | 109 +++++++++++++++- app/services/projects_service.rb | 8 +- public/assets/wechat/activities.html | 72 +++++++++++ public/assets/wechat/class.html | 79 +++++++++++- public/assets/wechat/course_notice.html | 57 +++++++-- public/assets/wechat/issue_detail.html | 45 ++++++- public/assets/wechat/myresource.html | 2 +- .../wechat/templates/comment_reply.html | 4 +- .../javascripts/wechat/controllers/class.js | 8 +- .../wechat/controllers/course_notice.js | 33 ++++- .../javascripts/wechat/controllers/issue.js | 31 ++++- .../wechat/controllers/myresource.js | 5 + 18 files changed, 553 insertions(+), 59 deletions(-) diff --git a/app/api/mobile/apis/activities.rb b/app/api/mobile/apis/activities.rb index 4d07c23f8..69d9ef524 100644 --- a/app/api/mobile/apis/activities.rb +++ b/app/api/mobile/apis/activities.rb @@ -29,7 +29,7 @@ module Mobile if container_type == "All" || container_type == "Course" shield_course_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id) user_course_ids = (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")" - course_types = "('Message','News','HomeworkCommon','Poll','Course')" + course_types = "('Message','News','HomeworkCommon','Poll','Course','JournalsForMessage')" end page = params[:page] ? params[:page] : 0 diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index bfd559402..d26779332 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -297,7 +297,7 @@ module Mobile user = current_user - course_types = "('Message','News','HomeworkCommon','Poll','Course')" + course_types = "('Message','News','HomeworkCommon','Poll','Course','JournalsForMessage')" activities = UserActivity.where("(container_type = 'Course' and container_id = #{params[:id]} and act_type in #{course_types})").order('updated_at desc') page = params[:page] ? params[:page] : 0 diff --git a/app/api/mobile/apis/issues.rb b/app/api/mobile/apis/issues.rb index dfd5a3335..271e3419d 100644 --- a/app/api/mobile/apis/issues.rb +++ b/app/api/mobile/apis/issues.rb @@ -17,11 +17,21 @@ module Mobile #0一级回复的更多 1 二级回复的更多 type = params[:type] || 0 page = params[:page] || 0 - issue = Issue.find params[:id] - present :data, issue, with: Mobile::Entities::Issue,user: user,type: type,page: page + + is_public = 1 + + if type == 0 + issue = Issue.find params[:id] + issue.project.is_public + present :data, issue, with: Mobile::Entities::Issue,user: user,type: type,page: page + else + jour = Journal.find params[:id] + present :data, jour, with: Mobile::Entities::Issue,user: user,type: type,page: page + end + present :type, type present :page, page - present :is_public, issue.project.is_public + present :is_public,is_public present :status, 0 rescue Exception=>e present :status, -1 diff --git a/app/api/mobile/apis/newss.rb b/app/api/mobile/apis/newss.rb index c2e2fcb5c..810e4ff2a 100644 --- a/app/api/mobile/apis/newss.rb +++ b/app/api/mobile/apis/newss.rb @@ -14,14 +14,19 @@ module Mobile #0一级回复的更多 1 二级回复的更多 type = params[:type] || 0 page = params[:page] || 0 - news = News.find params[:id] is_public = 1 - if news.project - is_public = news.project.is_public - elsif news.course - is_public = news.course.is_public + if type == 0 + news = News.find params[:id] + + if news.project + is_public = news.project.is_public + elsif news.course + is_public = news.course.is_public + end + else + news = Comment.find params[:id] end present :data, news, with: Mobile::Entities::News,user: user,type: type,page: page diff --git a/app/api/mobile/entities/activity.rb b/app/api/mobile/entities/activity.rb index 2856354a1..95940c0c5 100644 --- a/app/api/mobile/entities/activity.rb +++ b/app/api/mobile/entities/activity.rb @@ -40,6 +40,8 @@ module Mobile ac.act.subject unless ac.nil? || ac.act.nil? elsif ac.act_type == "JournalsForMessage" ac.act.private == 0 ? "留言" : "私信" unless ac.nil? || ac.act.nil? + elsif ac.act_type == "Poll" + ac.act.polls_name unless ac.nil? || ac.act.nil? end when :description if ac.act_type == "HomeworkCommon" || ac.act_type == "Issue" || ac.act_type == "News" @@ -48,6 +50,8 @@ module Mobile strip_html(ac.act.content) unless ac.nil? || ac.act.nil? elsif ac.act_type == "JournalsForMessage" strip_html(ac.act.notes) unless ac.nil? || ac.act.nil? + elsif ac.act_type == "Poll" + ac.act.polls_description unless ac.nil? || ac.act.nil? end when :latest_update time_from_now ac.updated_at unless ac.nil? diff --git a/app/api/mobile/entities/issue.rb b/app/api/mobile/entities/issue.rb index 9cbeb3459..e3dbb5023 100644 --- a/app/api/mobile/entities/issue.rb +++ b/app/api/mobile/entities/issue.rb @@ -36,15 +36,42 @@ module Mobile issue.id when :title issue.subject + when :subject + issue.subject + when :description + issue.description + when :done_ratio + issue.done_ratio end end + elsif issue.is_a?(::Journal) + case f + when :content + issue[:notes] + when :lasted_comment + time_from_now issue.created_on + when :act_id + issue.id + end end end end - expose :subject - expose :description - expose :author, using: Mobile::Entities::User - expose :done_ratio + issue_expose :subject + issue_expose :description + expose :author, using: Mobile::Entities::User do |f, opt| + if f.is_a?(::Issue) + f.send(:author) + end + end + expose :user,using: Mobile::Entities::User do |f, opt| + if f.is_a?(::Journal) + f.send(:user) + end + end + issue_expose :content + issue_expose :lasted_comment + + issue_expose :done_ratio issue_expose :title issue_expose :act_type issue_expose :act_id @@ -55,11 +82,29 @@ module Mobile issue_expose :comment_count issue_expose :project_name issue_expose :praise_count - expose :issue_journals, using: Mobile::Entities::Journal do |f, opt| + + expose :id + # expose :issue_journals, using: Mobile::Entities::Journal do |f, opt| + # if f.is_a?(::Issue) + # f.journals.where("notes is not null and notes != ''").reverse + # end + # end + + expose :all_children, using: Mobile::Entities::Issue do |f, opt| + #f[:journals_for_messages] if f.is_a?(Hash) && f.key?(:journals_for_messages) if f.is_a?(::Issue) - f.journals.where("notes is not null and notes != ''").reverse + # f.journals_for_messages.reverse + if !opt[:children] && opt[:type] == 0 + opt[:children] = true + tStart = opt[:page]*5 + tEnd = (opt[:page]+1)*5 - 1 + + all_comments = f.journals.where("notes is not null and notes != ''").reorder("created_on desc") + all_comments[tStart..tEnd] + end end end + expose :has_praise , if: lambda { |instance, options| options[:user] } do |instance, options| has_praise = false current_user = options[:user] @@ -67,6 +112,69 @@ module Mobile has_praise = obj.empty? ? false : true has_praise end + + expose :parents_count, if: lambda { |instance, options| options[:user] } do |instance, options| + if instance.is_a?(::Journal) + parents_reply = [] + parents_reply = get_reply_parents(parents_reply, instance) + parents_reply.count + end + end + + expose :parents_reply_bottom, using:Mobile::Entities::Issue do |f,opt| + if f.is_a? (::Journal) + #取二级回复的底楼层 + parents_reply = [] + parents_reply = get_reply_parents(parents_reply, f) + if parents_reply.count > 0 && !opt[:bottom] + if opt[:type] == 1 + # opt[:bottom] = true + # parents_reply[opt[:page]..opt[:page]] + else + opt[:bottom] = true + parents_reply[0..0] + end + else + [] + end + end + end + + expose :parents_reply_top, using:Mobile::Entities::Issue do |f,opt| + if f.is_a? (::Journal) + #取二级回复的顶楼层 + parents_reply = [] + parents_reply = get_reply_parents(parents_reply, f) + if parents_reply.count > 2 && !opt[:top] + if opt[:type] == 1 + opt[:top] = true + tStart = (opt[:page]-1)*5+2 + tEnd = (opt[:page])*5+2 - 1 + + if tEnd >= parents_reply.count - 1 + tEnd = parents_reply.count - 2 + end + + if tStart <= parents_reply.count - 2 + parents_reply = parents_reply.reverse[tStart..tEnd] + parents_reply.reverse + else + [] + end + else + opt[:top] = true + parents_reply = parents_reply.reverse[0..1] + parents_reply.reverse + end + elsif parents_reply.count == 2 && !opt[:top] + opt[:top] = true + parents_reply = parents_reply.reverse[0..0] + parents_reply.reverse + else + [] + end + end + end end end end \ No newline at end of file diff --git a/app/api/mobile/entities/news.rb b/app/api/mobile/entities/news.rb index be9fa3ceb..a64081d8a 100644 --- a/app/api/mobile/entities/news.rb +++ b/app/api/mobile/entities/news.rb @@ -28,6 +28,16 @@ module Mobile f.comments.count end end + elsif f.is_a?(::Comment) + case field + when :content + f[:comments] + when :lasted_comment + time_from_now f.created_on + when :act_id + f.id + end + elsif f.is_a?(Hash) && !f.key?(field) n = f[:news] comments = f[:comments] @@ -43,14 +53,16 @@ module Mobile end end end - news_expose :id + expose :id #新闻标题 news_expose :title - expose :author,using: Mobile::Entities::User do |f, opt| + expose :user,using: Mobile::Entities::User do |f, opt| obj = nil if f.is_a?(::News) && f.respond_to?(:author) obj = f.send(:author) + elsif f.is_a?(::Comment) && f.respond_to?(:author) + obj = f.send(:author) elsif f.is_a?(Hash) && f.key?(:author) obj = f[:author] end @@ -73,14 +85,34 @@ module Mobile news_expose :praise_count #课程名字 news_expose :course_name + news_expose :lasted_comment + #评论 - expose :comments, using: Mobile::Entities::Comment do |f, opt| - if f.is_a?(Hash) && f.key?(:comments) - f[:comments] - elsif f.is_a?(::News) && f.respond_to?(:comments) - f.comments.reverse + # expose :comments, using: Mobile::Entities::Comment do |f, opt| + # if f.is_a?(Hash) && f.key?(:comments) + # f[:comments] + # elsif f.is_a?(::News) && f.respond_to?(:comments) + # f.comments.reverse + # end + # end + + news_expose :content + + expose :all_children, using: Mobile::Entities::News do |f, opt| + #f[:journals_for_messages] if f.is_a?(Hash) && f.key?(:journals_for_messages) + if f.is_a?(::News) + # f.journals_for_messages.reverse + if !opt[:children] && opt[:type] == 0 + opt[:children] = true + tStart = opt[:page]*5 + tEnd = (opt[:page]+1)*5 - 1 + + all_comments = f.comments.reorder("created_on desc") + all_comments[tStart..tEnd] + end end end + expose :has_praise , if: lambda { |instance, options| options[:user] } do |instance, options| has_praise = false current_user = options[:user] @@ -88,6 +120,69 @@ module Mobile has_praise = obj.empty? ? false : true has_praise end + + expose :parents_count, if: lambda { |instance, options| options[:user] } do |instance, options| + if instance.is_a?(::Comment) + parents_reply = [] + parents_reply = get_reply_parents(parents_reply, instance) + parents_reply.count + end + end + + expose :parents_reply_bottom, using:Mobile::Entities::News do |f,opt| + if f.is_a? (::Comment) + #取二级回复的底楼层 + parents_reply = [] + parents_reply = get_reply_parents(parents_reply, f) + if parents_reply.count > 0 && !opt[:bottom] + if opt[:type] == 1 + # opt[:bottom] = true + # parents_reply[opt[:page]..opt[:page]] + else + opt[:bottom] = true + parents_reply[0..0] + end + else + [] + end + end + end + + expose :parents_reply_top, using:Mobile::Entities::News do |f,opt| + if f.is_a? (::Comment) + #取二级回复的顶楼层 + parents_reply = [] + parents_reply = get_reply_parents(parents_reply, f) + if parents_reply.count > 2 && !opt[:top] + if opt[:type] == 1 + opt[:top] = true + tStart = (opt[:page]-1)*5+2 + tEnd = (opt[:page])*5+2 - 1 + + if tEnd >= parents_reply.count - 1 + tEnd = parents_reply.count - 2 + end + + if tStart <= parents_reply.count - 2 + parents_reply = parents_reply.reverse[tStart..tEnd] + parents_reply.reverse + else + [] + end + else + opt[:top] = true + parents_reply = parents_reply.reverse[0..1] + parents_reply.reverse + end + elsif parents_reply.count == 2 && !opt[:top] + opt[:top] = true + parents_reply = parents_reply.reverse[0..0] + parents_reply.reverse + else + [] + end + end + end end end end \ No newline at end of file diff --git a/app/services/projects_service.rb b/app/services/projects_service.rb index 8de96fff4..cfd6aeb2c 100644 --- a/app/services/projects_service.rb +++ b/app/services/projects_service.rb @@ -340,13 +340,13 @@ class ProjectsService case priority_id when 1 priority = "低" - when + when 2 priority = "正常" - when + when 3 priority = "高" - when + when 4 priority = "紧急" - when + when 5 priority = "立刻" end diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index a4aa9a4c7..548641748 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -127,6 +127,78 @@
            +
            +
            +
            +
            +
            +
            + +
            {{act.latest_update}}
            +
            + +
            +
            +
            + +
            +
            + + + + + + + + + + +
            +
            +
            +
            +
            + +
            +
            +
            +
            +
            +
            + +
            {{act.latest_update}}
            +
            + +
            +
            +
            + +
            +
            + +
            +
            +
            {{act.praise_count}}
            +
            {{act.praise_count}}
            +
            + +
            +
            +
            +
            +
            +
            diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index 8ab2a7d03..6c1c35860 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -41,7 +41,7 @@
            - +
            {{act.praise_count}}
            @@ -76,7 +76,7 @@
        - +
        {{act.praise_count}}
        @@ -112,7 +112,7 @@
        - +
        {{act.praise_count}}
        @@ -128,6 +128,77 @@
        +
        +
        +
        +
        +
        +
        + +
        {{act.latest_update}}
        +
        + +
        +
        +
        + +
        +
        + + + + + + + + + + +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        +
        + +
        {{act.latest_update}}
        +
        + +
        +
        +
        + +
        +
        + +
        +
        +
        {{act.praise_count}}
        +
        {{act.praise_count}}
        +
        + +
        +
        +
        +
        +
        @@ -144,7 +215,7 @@
        -
        更多
        +
        更多
        发布通知 diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index f991656b4..af9f22da1 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -6,11 +6,11 @@
        私有内容,请谨慎传播
        -
        +
        @@ -30,20 +30,55 @@
        -
        -
        -
        + + + + + + + + + + + + + + + + +
        +
        +
        -
        +
        -
        {{comments.created_on}}
        +
        {{journal.lasted_comment}}
        -
        + +
        + + +
        点击展开更多楼层
        +
        + +
        {{reply_bottom.lasted_comment}}
        +
        +
        +
        +
        +
        + +
        +
        +
        更多
        +
        diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index b4d39d04e..c10d15ddb 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -36,20 +36,55 @@
        -
        -
        -
        + + + + + + + + + + + + + + + + +
        +
        +
        -
        {{journal.created_on}}
        +
        {{journal.lasted_comment}}
        -
        + +
        + + +
        点击展开更多楼层
        +
        + +
        {{reply_bottom.lasted_comment}}
        +
        +
        +
        +
        +
        + +
        +
        +
        更多
        +
        diff --git a/public/assets/wechat/myresource.html b/public/assets/wechat/myresource.html index e58b1c80c..8bfa818de 100644 --- a/public/assets/wechat/myresource.html +++ b/public/assets/wechat/myresource.html @@ -23,7 +23,7 @@
        -
        {{r.homework_name}}发送
        +
        {{r.homework_name}}发送
        diff --git a/public/assets/wechat/templates/comment_reply.html b/public/assets/wechat/templates/comment_reply.html index f5699abca..992acc56d 100644 --- a/public/assets/wechat/templates/comment_reply.html +++ b/public/assets/wechat/templates/comment_reply.html @@ -4,7 +4,7 @@
          {{journal.parents_reply_top[i].lasted_comment}}
          @@ -19,7 +19,7 @@
            {{journal.parents_reply_top[i].lasted_comment}}
            diff --git a/public/javascripts/wechat/controllers/class.js b/public/javascripts/wechat/controllers/class.js index 95d108151..1605ac71b 100644 --- a/public/javascripts/wechat/controllers/class.js +++ b/public/javascripts/wechat/controllers/class.js @@ -11,7 +11,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.course = rms.get("course") || null; - var getClassActivities = function(page){ + vm.getClassActivities = function(page){ $http({ method: 'POST', url: apiUrl + "courses/activities?id=" + courseid, @@ -22,7 +22,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location vm.class_activities_page = response.data.page; if(response.data.page > 0) { - vm.course_activities = vm.class_activities.concat(response.data.data); + vm.course_activities = vm.course_activities.concat(response.data.data); } else{ vm.course_activities = response.data.data; @@ -123,7 +123,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location if(vm.isTeacher){ if(index == 1){ if(vm.course_activities.length <= 0){ - getClassActivities(0); + vm.getClassActivities(0); } vm.showActivities = true; } @@ -143,7 +143,7 @@ app.controller('ClassController', ['$scope', 'config','$http', 'auth','$location } else { if(index == 1){ if(vm.course_activities.length <= 0){ - getClassActivities(0); + vm.getClassActivities(0); } vm.showActivities = true; } diff --git a/public/javascripts/wechat/controllers/course_notice.js b/public/javascripts/wechat/controllers/course_notice.js index 9f9ba83d6..48ec19889 100644 --- a/public/javascripts/wechat/controllers/course_notice.js +++ b/public/javascripts/wechat/controllers/course_notice.js @@ -8,8 +8,37 @@ app.controller('CourseNoticeController', ['$scope', '$http', '$routeParams', 'au replyType: 'News', urlName: 'course_notice', loadCallback: function(data){ - $scope.news = data.data; - $scope.is_public = data.is_public; + console.log(data.data); + + //回复级别 0 一级回复 1 二级回复 + replytype = data.type; + page = data.page; + + if (replytype == 0){ + if (page == 0){ + $scope.news = data.data; + $scope.page = 0; + $scope.is_public = data.is_public; + } + else{ + $scope.news.all_children = $scope.news.all_children.concat(data.data.all_children); + } + $scope.has_more = $scope.news.all_children.length < $scope.news.comment_count; + console.log($scope.has_more); + } + else{ + comment_id = data.data.id; + for (var i in $scope.news.all_children) { + var comment = $scope.news.all_children[i]; + if(comment.id == comment_id){ +// comment.parents_reply_top = comment.parents_reply_top.concat(data.data.parents_reply_top); + comment.parents_reply_top = data.data.parents_reply_top.concat(comment.parents_reply_top); + } + } + } + + + }, replyCallback: function(){ } diff --git a/public/javascripts/wechat/controllers/issue.js b/public/javascripts/wechat/controllers/issue.js index 131fab6f6..91db1d535 100644 --- a/public/javascripts/wechat/controllers/issue.js +++ b/public/javascripts/wechat/controllers/issue.js @@ -7,9 +7,34 @@ app.controller('IssueController', ['$scope', '$http', '$routeParams', 'auth', 'c replyType: 'Issue', urlName: 'issues', loadCallback: function(data){ - console.log(data); - $scope.issue = data.data; - $scope.is_public = data.is_public; + console.log(data.data); + + //回复级别 0 一级回复 1 二级回复 + replytype = data.type; + page = data.page; + + if (replytype == 0){ + if (page == 0){ + $scope.issue = data.data; + $scope.page = 0; + $scope.is_public = data.is_public; + } + else{ + $scope.issue.all_children = $scope.issue.all_children.concat(data.data.all_children); + } + $scope.has_more = $scope.issue.all_children.length < $scope.issue.comment_count; + console.log($scope.has_more); + } + else{ + comment_id = data.data.id; + for (var i in $scope.issue.all_children) { + var comment = $scope.issue.all_children[i]; + if(comment.id == comment_id){ +// comment.parents_reply_top = comment.parents_reply_top.concat(data.data.parents_reply_top); + comment.parents_reply_top = data.data.parents_reply_top.concat(comment.parents_reply_top); + } + } + } }, replyCallback: function(){ } diff --git a/public/javascripts/wechat/controllers/myresource.js b/public/javascripts/wechat/controllers/myresource.js index 089b63dfc..3c5e46a75 100644 --- a/public/javascripts/wechat/controllers/myresource.js +++ b/public/javascripts/wechat/controllers/myresource.js @@ -147,4 +147,9 @@ app.controller('MyResourceController', ['$scope', '$http', 'auth', 'config', '$l vm.tab(currentTab); + vm.goHomeworkDetail = function(id){ + rms.save("yoffset", document.documentElement.scrollTop || document.body.scrollTop); + $location.path("/homework").search({id: id}); + } + }] ); From 4932b9fad83201b001c73ae494b7a748a0987b35 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 25 Aug 2016 10:55:22 +0800 Subject: [PATCH 25/51] =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E7=95=99=E8=A8=80?= =?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/activities.rb | 2 +- app/api/mobile/apis/courses.rb | 2 +- config/menu.yml | 2 +- config/menu.yml.production | 2 +- config/menu.yml.test | 2 +- public/assets/wechat/activities.html | 70 ++++++++++++++-------------- public/assets/wechat/class.html | 70 ++++++++++++++-------------- 7 files changed, 75 insertions(+), 75 deletions(-) diff --git a/app/api/mobile/apis/activities.rb b/app/api/mobile/apis/activities.rb index 69d9ef524..4d07c23f8 100644 --- a/app/api/mobile/apis/activities.rb +++ b/app/api/mobile/apis/activities.rb @@ -29,7 +29,7 @@ module Mobile if container_type == "All" || container_type == "Course" shield_course_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id) user_course_ids = (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")" - course_types = "('Message','News','HomeworkCommon','Poll','Course','JournalsForMessage')" + course_types = "('Message','News','HomeworkCommon','Poll','Course')" end page = params[:page] ? params[:page] : 0 diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index d26779332..bfd559402 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -297,7 +297,7 @@ module Mobile user = current_user - course_types = "('Message','News','HomeworkCommon','Poll','Course','JournalsForMessage')" + course_types = "('Message','News','HomeworkCommon','Poll','Course')" activities = UserActivity.where("(container_type = 'Course' and container_id = #{params[:id]} and act_type in #{course_types})").order('updated_at desc') page = params[:page] ? params[:page] : 0 diff --git a/config/menu.yml b/config/menu.yml index 52272e8a0..8cc920707 100644 --- a/config/menu.yml +++ b/config/menu.yml @@ -8,7 +8,7 @@ button: sub_button: - type: "view" - name: "我的课程" + name: "我的班级" url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=class_list#wechat_redirect" - type: "view" diff --git a/config/menu.yml.production b/config/menu.yml.production index c1431172e..55318e811 100644 --- a/config/menu.yml.production +++ b/config/menu.yml.production @@ -8,7 +8,7 @@ button: sub_button: - type: "view" - name: "我的课程" + name: "我的班级" url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=class_list#wechat_redirect" - type: "view" diff --git a/config/menu.yml.test b/config/menu.yml.test index dc4aacbe5..45e23aaf3 100644 --- a/config/menu.yml.test +++ b/config/menu.yml.test @@ -8,7 +8,7 @@ button: sub_button: - type: "view" - name: "我的课程" + name: "我的班级" url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.forge.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=class_list#wechat_redirect" - type: "view" diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index 548641748..506dcc724 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -163,41 +163,41 @@
            -
            -
            -
            -
            -
            -
            - -
            {{act.latest_update}}
            -
            - -
            -
            -
            - -
            -
            - -
            -
            -
            {{act.praise_count}}
            -
            {{act.praise_count}}
            -
            - -
            -
            -
            -
            -
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index 6c1c35860..349c3bd75 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -164,41 +164,41 @@
            -
            -
            -
            -
            -
            -
            - -
            {{act.latest_update}}
            -
            - -
            -
            -
            - -
            -
            - -
            -
            -
            {{act.praise_count}}
            -
            {{act.praise_count}}
            -
            - -
            -
            -
            -
            -
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            From 6abdb47ec5f07e4db4bd14cd9f06e6d307aa8b6b Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 25 Aug 2016 11:25:51 +0800 Subject: [PATCH 26/51] =?UTF-8?q?=E6=A8=A1=E7=89=88=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=A0=87=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/projects_service.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/projects_service.rb b/app/services/projects_service.rb index ca89e252a..fc7f25d1f 100644 --- a/app/services/projects_service.rb +++ b/app/services/projects_service.rb @@ -334,8 +334,8 @@ class ProjectsService def send_wechat_project_issue_notice user,project,issue_id,issue_title,priority_id count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count if count == 0 - title = "您有新的issue需要解决" - remark = "点击详情查看issue" + title = "您有新的issue需要解决。" + remark = "点击详情查看issue。" case priority_id when "1" From 60beb2abab087490215c82ae250f4173c07d5e81 Mon Sep 17 00:00:00 2001 From: cxt Date: Thu, 25 Aug 2016 11:30:47 +0800 Subject: [PATCH 27/51] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E5=B7=A6=E4=BE=A7?= =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E5=92=8C=E9=A1=B9=E7=9B=AE=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=9A=84=E6=94=B6=E8=97=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 29 ++++++++++++------- .../_homepage_left_course_list.html.erb | 17 +++++++++++ .../_homepage_left_project_list.html.erb | 17 +++++++++++ app/views/layouts/_user_courses.html.erb | 2 +- app/views/layouts/_user_projects.html.erb | 4 +++ app/views/layouts/new_base_user.html.erb | 29 +++---------------- app/views/users/_collect_course.html.erb | 10 +++++++ app/views/users/_collect_project.html.erb | 10 +++++++ app/views/users/_courses_list.html.erb | 5 ++-- app/views/users/_project_list.html.erb | 5 +++- app/views/users/cancel_collect.js.erb | 0 app/views/users/cancel_or_collect.js.erb | 11 +++++++ app/views/users/user_courselist.html.erb | 3 +- config/routes.rb | 4 +-- 14 files changed, 103 insertions(+), 43 deletions(-) create mode 100644 app/views/layouts/_homepage_left_course_list.html.erb create mode 100644 app/views/layouts/_homepage_left_project_list.html.erb create mode 100644 app/views/users/_collect_course.html.erb create mode 100644 app/views/users/_collect_project.html.erb delete mode 100644 app/views/users/cancel_collect.js.erb create mode 100644 app/views/users/cancel_or_collect.js.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index aabce249c..a44a3bc01 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -42,7 +42,7 @@ class UsersController < ApplicationController :activity_new_score_index, :influence_new_score_index, :score_new_index,:user_projects_index,:user_resource, :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages,:edit_brief_introduction, :user_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course,:user_courselist,:user_projectlist,:sort_syllabus_list, - :sort_project_list,:my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks, :cancel_collect] + :sort_project_list,:my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks, :cancel_or_collect,:expand_courses] before_filter :auth_user_extension, only: :show #before_filter :rest_user_score, only: :show #before_filter :select_entry, only: :user_projects @@ -1459,15 +1459,15 @@ class UsersController < ApplicationController #显示更多用户课程 def user_courses4show @page = params[:page].to_i + 1 - @courses = @user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10).offset(@page * 10) - @all_count = @user.courses.visible.where("is_delete =?", 0).count + @courses = @user.favorite_courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10).offset(@page * 10) + @all_count = @user.favorite_courses.visible.where("is_delete =?", 0).count end #显示更多用户项目 def user_projects4show @page = params[:page].to_i + 1 - @projects = @user.projects.visible.select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(10).offset(@page * 10) - @all_count = @user.projects.visible.count + @projects = @user.favorite_projects.visible.select("projects.*,(SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(10).offset(@page * 10) + @all_count = @user.favorite_projects.visible.count end def user_course_activities @@ -3424,20 +3424,27 @@ class UsersController < ApplicationController end end - #取消收藏班级/项目 - def cancel_collect + #收藏班级/项目 + def cancel_or_collect if params[:project] - member = Member.where("user_id = #{@user.id} and project_id = #{params[:project].to_i}") + @project = Project.find params[:project] + member = Member.where("user_id = #{@user.id} and project_id = #{@project.id}") elsif params[:course] - member = Member.where("user_id = #{@user.id} and course_id = #{params[:course].to_i}") + @course = Course.find params[:course] + member = Member.where("user_id = #{@user.id} and course_id = #{@course.id}") end unless member.empty? - member.first.update_attribute(:is_collect => 0) + member.first.update_attribute(:is_collect, member.first.is_collect == 0 ? 1 : 0) + end + if @project + @projects = @user.favorite_projects.visible.select("projects.*, (SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(10) + elsif @course + @courses = @user.favorite_courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10) end respond_to do |format| format.js end -end + end def user_projectlist @order, @c_sort, @type, @list_type = 1, 2, 1, 1 diff --git a/app/views/layouts/_homepage_left_course_list.html.erb b/app/views/layouts/_homepage_left_course_list.html.erb new file mode 100644 index 000000000..1f1f03210 --- /dev/null +++ b/app/views/layouts/_homepage_left_course_list.html.erb @@ -0,0 +1,17 @@ +<% all_count = @user.favorite_courses.visible.where("is_delete =?", 0).count%> +
            +
              + <%= render :partial => 'layouts/user_courses', :locals => {:courses => courses,:user => @user,:all_count => all_count,:page => 0} %> +
            +
            +<% if !courses.empty? %> + + + +<% end %> + + \ No newline at end of file diff --git a/app/views/layouts/_homepage_left_project_list.html.erb b/app/views/layouts/_homepage_left_project_list.html.erb new file mode 100644 index 000000000..d3fcaf2b5 --- /dev/null +++ b/app/views/layouts/_homepage_left_project_list.html.erb @@ -0,0 +1,17 @@ +<% all_count = @user.favorite_projects.visible.count%> +
            +
              + <%= render :partial => 'layouts/user_projects', :locals => {:projects => projects,:user => @user, :all_count => all_count, :page => 0} %> +
            +
            +<% if !projects.empty? %> + + + +<% end %> + + \ No newline at end of file diff --git a/app/views/layouts/_user_courses.html.erb b/app/views/layouts/_user_courses.html.erb index 0335aa922..d8b145ddc 100644 --- a/app/views/layouts/_user_courses.html.erb +++ b/app/views/layouts/_user_courses.html.erb @@ -53,7 +53,7 @@ <% end %> <% if User.current == user %>
          • - <%= link_to "取消收藏", cancel_collect_user_path(user, :course => course.id), :class => 'user_navmore_li',:target => '_blank' %> + <%= link_to "取消收藏", cancel_or_collect_user_path(user, :course => course.id), :class => 'user_navmore_li',:target => '_blank', :remote => true %>
          • diff --git a/app/views/layouts/_user_projects.html.erb b/app/views/layouts/_user_projects.html.erb index 21b42decd..e8a7f0755 100644 --- a/app/views/layouts/_user_projects.html.erb +++ b/app/views/layouts/_user_projects.html.erb @@ -27,6 +27,10 @@
          • <% end %> <% if User.current == @user %> +
          • + <%= link_to "取消收藏", cancel_or_collect_user_path(user, :project => project.id), :class => 'user_navmore_li',:target => '_blank', :remote => true %> +
            +
          • <% if ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Project' and shield_id=#{project.id}").count == 0 %> <%= link_to "屏蔽动态", shield_activities_path(:user_id => user.id, :project_id => project.id), :method => 'post',:remote => true,:class => "user_navmore_li" %> diff --git a/app/views/layouts/new_base_user.html.erb b/app/views/layouts/new_base_user.html.erb index 5969f17d6..46cd43ecf 100644 --- a/app/views/layouts/new_base_user.html.erb +++ b/app/views/layouts/new_base_user.html.erb @@ -159,18 +159,8 @@
          • <%= link_to '班级',{:controller => "users", :action => "user_courselist", :id => @user.id}, :id => "user_course_list" %> <% courses = @user.favorite_courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(10) %> - <% all_count = @user.favorite_courses.visible.where("is_delete =?", 0).count%> -
            -
            -
              - <%= render :partial => 'layouts/user_courses', :locals => {:courses => courses,:user => @user,:all_count => all_count,:page => 0} %> -
            -
            - <% if !courses.empty? %> - - - - <% end %> +
            + <%=render :partial => 'layouts/homepage_left_course_list', :locals => {:courses => courses} %>
          • <% if is_current_user %> @@ -195,19 +185,9 @@
            • <%= link_to '项目',{:controller => "users", :action => "user_projectlist", :id => @user.id}, :id => 'user_project_list'%> - <% all_count = @user.favorite_projects.visible.count%> <% projects = @user.favorite_projects.visible.select("projects.*, (SELECT MAX(updated_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(10)%> -
              -
              -
                - <%= render :partial => 'layouts/user_projects', :locals => {:projects => projects,:user => @user, :all_count => all_count, :page => 0} %> -
              -
              - <% if !projects.empty? %> - - - - <% end %> +
              + <%=render :partial => 'layouts/homepage_left_project_list', :locals => {:projects => projects} %>
            • <% if is_current_user %> @@ -292,7 +272,6 @@
      • diff --git a/app/views/my/account.html.erb b/app/views/my/account.html.erb index 71694da60..2e14f493b 100644 --- a/app/views/my/account.html.erb +++ b/app/views/my/account.html.erb @@ -78,7 +78,7 @@ -
      • <%= text_field_tag :lastname,@user.lastname+@user.firstname,:no_label=>true, :required => true,:nh_required=>"1",:class=>"w210" %> +
      • <%= text_field_tag :lastname,@user.lastname+@user.firstname,:no_label=>true, :required => true,:nh_required=>"1",:class=>"w210" %>姓名不能为空
      • <% if User.current.user_extensions && User.current.user_extensions.gender && User.current.user_extensions.gender == 1 %> @@ -175,7 +175,7 @@
      • <%= f.select :language, :Chinese => :zh, :English => :en %>
      • - 确定 + 确定
      • @@ -560,44 +560,80 @@ $("#users_tb_2").click(); <% end %> - $('#my_account_form_link').on("click",(function(e){ - //$('#my_account_form_link').click(function(e){ - if($("#userIdentity").val() == -1 ) { - $("#identity_hint").html('请选择身份').show(); - e.stopImmediatePropagation(); - return; - } - if( $("input[name='province']").val().trim() != '' && $("input[name='occupation']").val().trim() == ''){ //学校名字和id不对的话 - $("#hint").html('单位名称必须是从下拉列表中选择的,不能手动修改').show(); - e.stopImmediatePropagation(); - return; - } - - //姓名不能为空 - if( $("#lastname").val() == '' ){ - $("#lastname").focus(); - e.stopImmediatePropagation(); - return; - } - - if( $("input[name='province']").val().trim() == '' ){ //学校名字必须填写 - $("#hint").html('高校(单位)名称不能为空').show(); - e.stopImmediatePropagation(); - return; - } - - if($("#no").is(":visible") == true && $("#no").val() == ""){ - $("#no").focus(); - e.stopImmediatePropagation(); - return; - } - - $('#my_account_form_btn').click(); - })); +// $('#my_account_form_link').on("click",(function(e){ +// //$('#my_account_form_link').click(function(e){ +// if($("#userIdentity").val() == -1 ) { +// $("#identity_hint").html('请选择身份').show(); +// e.stopImmediatePropagation(); +// return; +// } +// if( $("input[name='province']").val().trim() != '' && $("input[name='occupation']").val().trim() == ''){ //学校名字和id不对的话 +// $("#hint").html('单位名称必须是从下拉列表中选择的,不能手动修改').show(); +// e.stopImmediatePropagation(); +// return; +// } +// +// //姓名不能为空 +// if( $("#lastname").val() == '' ){ +// $("#lastname").focus(); +// $("#last_name_notice").show(); +// e.stopImmediatePropagation(); +// return; +// } +// +// if( $("input[name='province']").val().trim() == '' ){ //学校名字必须填写 +// $("#hint").html('高校(单位)名称不能为空').show(); +// e.stopImmediatePropagation(); +// return; +// } +// +// if($("#no").is(":visible") == true && $("#no").val() == ""){ +// $("#no").focus(); +// e.stopImmediatePropagation(); +// return; +// } +// +// $('#my_account_form').submit(); +// })); $('#my_password_form_link').click(function(){ $('#my_password_form_btn').click(); }); }); + +function my_account_form_submit(){ + if($("#userIdentity").val() == -1 ) { + $("#identity_hint").html('请选择身份').show(); + e.stopImmediatePropagation(); + return; + } + if( $("input[name='province']").val().trim() != '' && $("input[name='occupation']").val().trim() == ''){ //学校名字和id不对的话 + $("#hint").html('单位名称必须是从下拉列表中选择的,不能手动修改').show(); + e.stopImmediatePropagation(); + return; + } + + //姓名不能为空 + if( $("#lastname").val() == '' ){ + $("#lastname").focus(); + $("#last_name_notice").show(); + e.stopImmediatePropagation(); + return; + } + + if( $("input[name='province']").val().trim() == '' ){ //学校名字必须填写 + $("#hint").html('高校(单位)名称不能为空').show(); + e.stopImmediatePropagation(); + return; + } + + if($("#no").is(":visible") == true && $("#no").val() == ""){ + $("#no").focus(); + e.stopImmediatePropagation(); + return; + } + + $('#my_account_form').submit(); +}