From a3a92a19f962610afaaa71eb2ce4042c1fc112a0 Mon Sep 17 00:00:00 2001 From: cxt Date: Fri, 15 Apr 2016 18:50:38 +0800 Subject: [PATCH 01/48] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/schema.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 7c1efce6d..6ee190852 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 => 20160330103916) do +ActiveRecord::Schema.define(:version => 20160414055511) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -1290,6 +1290,7 @@ ActiveRecord::Schema.define(:version => 20160330103916) do t.datetime "updated_at", :null => false t.string "field_type" t.integer "hide", :default => 0 + t.integer "status", :default => 1 end create_table "organizations", :force => true do |t| @@ -1302,6 +1303,7 @@ ActiveRecord::Schema.define(:version => 20160330103916) do t.datetime "updated_at", :null => false t.boolean "allow_guest_download", :default => true t.integer "visits", :default => 0 + t.integer "show_mode", :default => 0 end create_table "phone_app_versions", :force => true do |t| @@ -1684,8 +1686,8 @@ ActiveRecord::Schema.define(:version => 20160330103916) do t.integer "absence_penalty", :default => 0 t.float "system_score", :default => 0.0 t.boolean "is_test", :default => false - t.integer "simi_id", :default => 0 - t.integer "simi_value", :default => 0 + t.integer "simi_id" + t.integer "simi_value" end add_index "student_works", ["homework_common_id", "user_id"], :name => "index_student_works_on_homework_common_id_and_user_id" From 6ea1a605c9c3bcd7c3e26b3514fee255ecd445d3 Mon Sep 17 00:00:00 2001 From: txz Date: Mon, 11 Jul 2016 10:37:56 +0800 Subject: [PATCH 02/48] =?UTF-8?q?flex=E5=B8=83=E5=B1=80=E5=85=BC=E5=AE=B9c?= =?UTF-8?q?ss=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/weui/weixin.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 1f758d296..3288f64ba 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -82,15 +82,15 @@ a.underline {text-decoration:underline;} .btn2 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; margin:18px auto 20px auto; border-radius:50px; display:block;} /*tab*/ -.tab-wrap {position:relative; line-height:38px; display:flex; font-size:13px; background-color:#fff;} -.tab-wrap a {position:relative; display:block; flex:1;} +.tab-wrap {position:relative; 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: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:flex; font-size:13px; background-color:#fff;} -.bottom-tab-wrap a {display:block; flex:1; position:relative;} +.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:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;} /*动态样式*/ From 2e75fa4b236e3143f1fdfe8e46e58bf880c56b67 Mon Sep 17 00:00:00 2001 From: txz Date: Mon, 11 Jul 2016 10:42:07 +0800 Subject: [PATCH 03/48] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E4=B8=AD=E6=96=B0=E5=BB=BA=E8=AF=BE=E7=A8=8B=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E7=8F=AD=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/activities.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index 60075ad2e..2da072cd8 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -436,7 +436,7 @@
- +
From 114512d3d9ccc134011ff166b0bb03e32c018ed7 Mon Sep 17 00:00:00 2001 From: txz Date: Mon, 11 Jul 2016 11:05:49 +0800 Subject: [PATCH 04/48] =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/myresource.html | 6 +++--- public/stylesheets/weui/weixin.css | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/public/assets/wechat/myresource.html b/public/assets/wechat/myresource.html index de21b7136..6d93d026f 100644 --- a/public/assets/wechat/myresource.html +++ b/public/assets/wechat/myresource.html @@ -11,17 +11,17 @@
-
{{r.filename}}发送
+
发送

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

-
{{r.homework_name}}
+

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

-
{{r.exercise_name}}
+

暂无测验,
请登录Trustie网站,在PC浏览器中创建测验。

diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 3288f64ba..7fea4bc67 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -188,6 +188,7 @@ a.underline {text-decoration:underline;} .class-test-tip {text-align:center; font-size:13px; color:#444; padding-top:40px;} .img-circle {border-radius:50%;} .member-banner {height:24px; line-height:24px; text-align:center; vertical-align:middle; background-color:#dfdfdf;} +.resource-width {width:80%;} /*20160614班级列表*/ .course-list-row {width:100%; height:38px; line-height:38px; vertical-align:middle; border-top:1px solid #ccc; border-bottom:1px solid #ccc; background-color:#fff;} From 0093a0a50957965ff39f862f7d0e9e15f0740271 Mon Sep 17 00:00:00 2001 From: txz Date: Mon, 11 Jul 2016 14:23:53 +0800 Subject: [PATCH 05/48] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E9=82=80=E8=AF=B7?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=96=87=E5=AD=97=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/invite_code.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/assets/wechat/invite_code.html b/public/assets/wechat/invite_code.html index 1aa0c8830..abf588909 100644 --- a/public/assets/wechat/invite_code.html +++ b/public/assets/wechat/invite_code.html @@ -10,7 +10,7 @@

+ 2.长按二维码,通过“识别图中二维码”功能加入班级
+ 3.通过“加入班级”菜单输入邀请码加入班级(长按邀请码可以复制哦~) \ No newline at end of file From bd29859a28ffcf000861b42787868b5ad19b171c Mon Sep 17 00:00:00 2001 From: txz Date: Mon, 11 Jul 2016 14:46:35 +0800 Subject: [PATCH 06/48] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=92=8C=E5=8F=82=E4=B8=8E=E8=AF=BE=E7=A8=8B=E5=8C=BA=E5=88=86?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/class_list.html | 16 +++++++++++++++- public/stylesheets/weui/weixin.css | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/public/assets/wechat/class_list.html b/public/assets/wechat/class_list.html index b215db763..69a3db43c 100644 --- a/public/assets/wechat/class_list.html +++ b/public/assets/wechat/class_list.html @@ -3,7 +3,21 @@
课程列表
-
{{syllabus.title}}
+
我创建的课程
+
{{syllabus.title}}
+
    +
  • + + + > + {{course.member_count}}人 +
  • +
+
+ +
+
我参与的课程
+
{{syllabus.title}}
  • diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 7fea4bc67..2f9ad7e88 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -191,6 +191,7 @@ a.underline {text-decoration:underline;} .resource-width {width:80%;} /*20160614班级列表*/ +.course-diff-row {width:100%; height:28px; line-height:28px; vertical-align:middle; background-color:#fff;} .course-list-row {width:100%; height:38px; line-height:38px; vertical-align:middle; border-top:1px solid #ccc; border-bottom:1px solid #ccc; background-color:#fff;} .class-list {width:100%; border-bottom:1px solid #ccc;} .class-list li {height:40px; line-height:40px; vertical-align:middle; margin:0 25px; border-left:1px solid #ccc; border-bottom:1px solid #ccc; position:relative;} From 374aa9918c27167466ef7dc60699cf3b078fc61f Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Mon, 11 Jul 2016 14:49:59 +0800 Subject: [PATCH 07/48] =?UTF-8?q?=E6=88=91=E7=9A=84=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E9=87=8C=E9=9D=A2=E9=83=BD=E6=98=BE=E7=A4=BA=E6=9C=AA=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E7=9A=84=EF=BC=8C=E6=96=B0=E5=BB=BA=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=90=8E=E8=BF=94=E5=9B=9E=E4=BC=9A=E5=88=B7=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/resources.rb | 10 ++++-- app/services/resources_service.rb | 36 +++++++++++++++++++ .../wechat/controllers/new_class.js | 6 ++-- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/app/api/mobile/apis/resources.rb b/app/api/mobile/apis/resources.rb index 6dfe8e599..9bd07a0d5 100644 --- a/app/api/mobile/apis/resources.rb +++ b/app/api/mobile/apis/resources.rb @@ -11,7 +11,9 @@ module Mobile end get do authenticate! - data = current_user.course_attachments + rs = ResourcesService.new + # data = current_user.course_attachments + data = rs.all_course_attachments current_user present :data, data, with: Mobile::Entities::Attachment present :status, 0 @@ -26,7 +28,8 @@ module Mobile get 'homeworks' do authenticate! - homeworks = current_user.homework_commons + rs = ResourcesService.new + homeworks = rs.all_homework_commons current_user present :data, homeworks, with: Mobile::Entities::Homework present :status, 0 @@ -40,7 +43,8 @@ module Mobile get 'exercies' do authenticate! - exercises = current_user.exercises + rs = ResourcesService.new + exercises = rs.all_exercises current_user present :data, exercises, with: Mobile::Entities::Exercise present :status, 0 end diff --git a/app/services/resources_service.rb b/app/services/resources_service.rb index a0fec585a..96034b4ce 100644 --- a/app/services/resources_service.rb +++ b/app/services/resources_service.rb @@ -50,4 +50,40 @@ class ResourcesService [@ori, @flag, @save_message] end + # 我的资源-课件 已发布的 + def all_course_attachments user + + courses = user.courses.not_deleted + + courses_ids = courses.empty? ? '(-1)' :"(" + courses.map(&:id).join(",") + ")" + + attchments = Attachment.where("(author_id = #{user.id} and is_publish = 1 and container_id in #{courses_ids} and container_type = 'Course') or (container_type = 'Course' and is_publish = 1 and container_id in #{courses_ids})" ).order("created_on desc") + + attchments + end + + # 我的资源-作业 已发布的 + def all_homework_commons user + + courses = user.courses.not_deleted + + courses_ids = courses.empty? ? '(-1)' :"(" + courses.map(&:id).join(",") + ")" + + homeworks = HomeworkCommon.where("course_id in #{courses_ids} and publish_time <= ?",Time.now.strftime("%Y-%m-%d")).order("created_at desc") + + homeworks + end + + # 我的资源-测验 已发布的 + def all_exercises user + + courses = user.courses.not_deleted + + courses_ids = courses.empty? ? '(-1)' :"(" + courses.map(&:id).join(",") + ")" + + exercises = Exercise.where("exercise_status <> 1 and course_id in #{courses_ids}").order("created_at desc") + + exercises + end + end \ No newline at end of file diff --git a/public/javascripts/wechat/controllers/new_class.js b/public/javascripts/wechat/controllers/new_class.js index ef46fc4ba..5e9f339a1 100644 --- a/public/javascripts/wechat/controllers/new_class.js +++ b/public/javascripts/wechat/controllers/new_class.js @@ -1,6 +1,6 @@ -app.controller('NewClassController', ['$scope', '$http', 'auth', 'config', 'alertService','$location', function($scope, $http, auth, config, alertService, $location){ +app.controller('NewClassController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','rms', function($scope, $http, auth, config, alertService, $location,rms){ var vm = $scope; vm.alertService = alertService.create(); @@ -40,7 +40,9 @@ app.controller('NewClassController', ['$scope', '$http', 'auth', 'config', 'aler vm.alertService.showMessage('出错了', response.data.message); } else { vm.alertService.showMessage('提示', '新建课程成功', function(){ - window.history.back(); +// window.history.back(); + rms.save('syllabuses',[]); + $location.path("/class_list"); }); } console.log(response.data.data); From cf304c2b683202dee98c135f872fd07a3df4909a Mon Sep 17 00:00:00 2001 From: txz Date: Mon, 11 Jul 2016 15:10:52 +0800 Subject: [PATCH 08/48] =?UTF-8?q?dot.png=E5=9B=BE=E7=89=87=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/wechat/dot.png | Bin 27646 -> 29770 bytes public/images/wechat/dot2.png | Bin 0 -> 27646 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/images/wechat/dot2.png diff --git a/public/images/wechat/dot.png b/public/images/wechat/dot.png index bf1c0104e6d8c36a867507e927431299c758b9f8..e45863e9f42f422b9ce45f938a23c18ce880f724 100644 GIT binary patch delta 9787 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 V@AtuQ6e$S!D9NkIRm+$L{}(8flUV=& delta 7648 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 Z9P;I|Pw|=i_!D0HD`U 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 literal 0 HcmV?d00001 From 70ed5790b8b8ffdcb031471e4fab70043c123a40 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Mon, 11 Jul 2016 16:46:07 +0800 Subject: [PATCH 09/48] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=A8=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E8=AF=A6=E6=83=85=E7=82=B9=E8=B5=9E=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=92=8C=E7=82=B9=E8=B5=9E=E7=8A=B6=E6=80=81=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/class_list.html | 47 ++++++------- .../wechat/controllers/activity.js | 3 + public/javascripts/wechat/others/factory.js | 69 ++++++++++++++++++- 3 files changed, 93 insertions(+), 26 deletions(-) diff --git a/public/assets/wechat/class_list.html b/public/assets/wechat/class_list.html index 69a3db43c..dafce2cfc 100644 --- a/public/assets/wechat/class_list.html +++ b/public/assets/wechat/class_list.html @@ -1,34 +1,35 @@
    课程列表
    - -
    +
    我创建的课程
    -
    {{syllabus.title}}
    -
      -
    • - - - > - {{course.member_count}}人 -
    • -
    +
    +
    {{syllabus.title}}
    +
      +
    • + + + > + {{course.member_count}}人 +
    • +
    +
    - -
    +
    我参与的课程
    -
    {{syllabus.title}}
    -
      -
    • - - - > - {{course.member_count}}人 -
    • -
    +
    +
    {{syllabus.title}}
    +
      +
    • + + + > + {{course.member_count}}人 +
    • +
    +
    -
    新建课程 加入班级 diff --git a/public/javascripts/wechat/controllers/activity.js b/public/javascripts/wechat/controllers/activity.js index b89c46300..16a8e71d0 100644 --- a/public/javascripts/wechat/controllers/activity.js +++ b/public/javascripts/wechat/controllers/activity.js @@ -137,6 +137,9 @@ app.controller('ActivityController', //跳到详情页 $scope.goDetail = function(type, act_id,id){ rms.save("yoffset", window.document.body.scrollTop); + rms.save("activities",$scope.activities); + rms.save("course_activities",$scope.course_activities); + rms.save("project_activities",$scope.project_activities); $location.path('/'+type+'/'+act_id); } diff --git a/public/javascripts/wechat/others/factory.js b/public/javascripts/wechat/others/factory.js index 6acf25c59..64204dfca 100644 --- a/public/javascripts/wechat/others/factory.js +++ b/public/javascripts/wechat/others/factory.js @@ -86,7 +86,7 @@ app.factory('rms', function(){ return {save: save, get: get}; }); -app.factory('common', ['$http', 'auth', '$routeParams', function($http, auth, $routeParams){ +app.factory('common', ['$http', 'auth', '$routeParams','rms', function($http, auth, $routeParams,rms){ var addCommonReply = function(id, type, data, cb){ if(!data.comment || data.comment.length<=0){ @@ -174,8 +174,71 @@ app.factory('common', ['$http', 'auth', '$routeParams', function($http, auth, $r } }); }; - args.scope.addPraise = addCommonPraise; - args.scope.decreasePraise = decreaseCommonPraise; + +// 动态详情界面点赞与动态界面的数据要同步 保证进入详情点赞后出来显示一致 + args.scope.addPraise = function(act){ + activities = rms.get("activities") || []; + course_activities = rms.get("course_activities") || []; + project_activities = rms.get("project_activities") || []; + for(var i in activities){ + if(activities[i].act_id == act.act_id){ + activities[i].praise_count += 1; + activities[i].has_praise = true; + break; + } + } + for(var i in course_activities){ + if(course_activities[i].act_id == act.act_id){ + course_activities[i].praise_count += 1; + course_activities[i].has_praise = true; + break; + } + } + for(var i in project_activities){ + if(project_activities[i].act_id == act.act_id){ + project_activities[i].praise_count += 1; + project_activities[i].has_praise = true; + break; + } + } + rms.save("activities",activities); + rms.save("course_activities",course_activities); + rms.save("project_activities",project_activities); + + addCommonPraise(act); + }; + + args.scope.decreasePraise = function(act){ + activities = rms.get("activities") || []; + course_activities = rms.get("course_activities") || []; + project_activities = rms.get("project_activities") || []; + for(var i in activities){ + if(activities[i].act_id == act.act_id){ + activities[i].praise_count -= 1; + activities[i].has_praise = false; + break; + } + } + for(var i in course_activities){ + if(course_activities[i].act_id == act.act_id){ + course_activities[i].praise_count -= 1; + course_activities[i].has_praise = false; + break; + } + } + for(var i in project_activities){ + if(project_activities[i].act_id == act.act_id){ + project_activities[i].praise_count -= 1; + project_activities[i].has_praise = false; + break; + } + } + rms.save("activities",activities); + rms.save("course_activities",course_activities); + rms.save("project_activities",project_activities); + + decreaseCommonPraise(act); + }; } return {init: init, addCommonReply: addCommonReply, loadCommonData: loadCommonData, addCommonPraise: addCommonPraise, decreaseCommonPraise: decreaseCommonPraise}; From dc6127eb788d36f58851924196d84b84ae10fd3c Mon Sep 17 00:00:00 2001 From: txz Date: Mon, 11 Jul 2016 16:54:58 +0800 Subject: [PATCH 10/48] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=88=91=E7=9A=84?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=A0=B7=E5=BC=8F=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/schema.rb | 2 +- public/assets/wechat/myresource.html | 13 ++++++++++--- public/images/wechat/courseware.png | Bin 0 -> 23930 bytes public/images/wechat/homework.png | Bin 0 -> 23635 bytes public/images/wechat/test.png | Bin 0 -> 25698 bytes public/stylesheets/weui/weixin.css | 5 +++-- 6 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 public/images/wechat/courseware.png create mode 100644 public/images/wechat/homework.png create mode 100644 public/images/wechat/test.png diff --git a/db/schema.rb b/db/schema.rb index 32d29d31a..694d4df43 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -562,9 +562,9 @@ ActiveRecord::Schema.define(:version => 20160709015740) do t.integer "excellent_option", :default => 0 t.integer "is_copy", :default => 0 t.integer "visits", :default => 0 + t.integer "syllabus_id" t.string "invite_code" t.string "qrcode" - t.integer "syllabus_id" end add_index "courses", ["invite_code"], :name => "index_courses_on_invite_code", :unique => true diff --git a/public/assets/wechat/myresource.html b/public/assets/wechat/myresource.html index 6d93d026f..4a28b2d3e 100644 --- a/public/assets/wechat/myresource.html +++ b/public/assets/wechat/myresource.html @@ -11,17 +11,24 @@
    -
    发送
    +
    + {{r.filename}}发送
    + 课件来源:大小: +

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

    -
    +
    {{r.homework_name}}发送
    + 作业来源: +

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

    -
    +
    {{r.exercise_name}}发送
    + 题目来源: +

    暂无测验,
    请登录Trustie网站,在PC浏览器中创建测验。

    diff --git a/public/images/wechat/courseware.png b/public/images/wechat/courseware.png new file mode 100644 index 0000000000000000000000000000000000000000..77d6401fd16282871ee75f98333135f3c8f94784 GIT binary patch literal 23930 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 literal 0 HcmV?d00001 diff --git a/public/images/wechat/test.png b/public/images/wechat/test.png new file mode 100644 index 0000000000000000000000000000000000000000..e67567b6911ebd925c9cdd349c41b190ceebea77 GIT binary patch literal 25698 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 literal 0 HcmV?d00001 diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 2f9ad7e88..9493fc800 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -33,6 +33,7 @@ blockquote {border:1px solid #d4d4d4; padding: 0.6em; margin-left: 1.4em; margin .mr5 {margin-right:5px;} .mr10 {margin-right:10px;} .ml15 {margin-left:15px;} +.ml35 {margin-left:35px;} .mr15 {margin-right:15px;} .mr20 {margin-right:20px;} .ml25 {margin-left:25px;} @@ -184,11 +185,11 @@ a.underline {text-decoration:underline;} .class-search-icon {position:absolute; top:16px; left:16px;} .class-detail-search {width:100%; height:33px; color:#999; background-color:#fff; border:none; outline:none;} .border-top {border-top:1px solid #ccc;} -.class-detail-row {width:100%; height:38px; line-height:38px; vertical-align:middle; border-bottom:1px solid #ccc; background-color:#fff;} +.class-detail-row {width:100%; line-height:18px; padding:10px 0; border-bottom:1px solid #ccc; background-color:#fff;} .class-test-tip {text-align:center; font-size:13px; color:#444; padding-top:40px;} .img-circle {border-radius:50%;} .member-banner {height:24px; line-height:24px; text-align:center; vertical-align:middle; background-color:#dfdfdf;} -.resource-width {width:80%;} +.resource-width {width:76%;} /*20160614班级列表*/ .course-diff-row {width:100%; height:28px; line-height:28px; vertical-align:middle; background-color:#fff;} From e3fe95213fbbb429dfa4b1566e60bdf23e67d25f Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 12 Jul 2016 09:34:06 +0800 Subject: [PATCH 11/48] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=8C=E7=BA=A7?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E4=B8=8E=E6=96=87=E5=AD=97=E9=97=B4=E8=B7=9D?= =?UTF-8?q?=E7=A6=BB?= 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 9493fc800..657cbc65f 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -7,7 +7,7 @@ body, ul, h1,h2,h3,h4,h5,p,pre,input {padding:0px; margin:0px;} body{background-color: #efeff4;} ul li {list-style:none;} img {max-width:100%;} -blockquote {border:1px solid #d4d4d4; padding: 0.6em; margin-left: 1.4em; margin-right: 0.4em; border-radius: 4px; font-family: "Microsoft YaHei"; background-size: 100% 100%; margin-top:5px;} +blockquote {border:1px solid #d4d4d4; padding: 0.6em; margin: 5px 0.4em 5px 1.4em; border-radius: 4px; font-family: "Microsoft YaHei"; background-size: 100% 100%;} .text-control {word-break:normal; word-wrap:break-word;} .f12 {font-size:12px;} .f13 {font-size:13px;} From d4681eea00f5f7ddad3d2e02467468b907027986 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 12 Jul 2016 10:25:18 +0800 Subject: [PATCH 12/48] =?UTF-8?q?=E6=88=91=E7=9A=84=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E9=87=8C=E9=9D=A2=E6=98=BE=E7=A4=BA=E6=9D=A5=E6=BA=90=20?= =?UTF-8?q?=E5=92=8C=E5=A4=A7=E5=B0=8F=20=E5=B9=B6=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E8=AF=BE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/attachment.rb | 2 ++ app/api/mobile/entities/exercise.rb | 1 + app/api/mobile/entities/homework.rb | 2 ++ app/services/resources_service.rb | 18 +++++++++++++++++- public/assets/wechat/myresource.html | 8 ++++---- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/app/api/mobile/entities/attachment.rb b/app/api/mobile/entities/attachment.rb index bb67b6d28..ab6f6fd71 100644 --- a/app/api/mobile/entities/attachment.rb +++ b/app/api/mobile/entities/attachment.rb @@ -29,6 +29,8 @@ module Mobile attachment_expose :quotes attachment_expose :created_on attachment_expose :file_dir + attachment_expose :attafile_size + attachment_expose :coursename #所属班级名 end end end \ No newline at end of file diff --git a/app/api/mobile/entities/exercise.rb b/app/api/mobile/entities/exercise.rb index 3218264fb..14c530a9b 100644 --- a/app/api/mobile/entities/exercise.rb +++ b/app/api/mobile/entities/exercise.rb @@ -3,6 +3,7 @@ module Mobile class Exercise < Grape::Entity expose :exercise_name expose :exercise_description + expose :coursename #所属班级名 end end end diff --git a/app/api/mobile/entities/homework.rb b/app/api/mobile/entities/homework.rb index db3e44119..17127f0f2 100644 --- a/app/api/mobile/entities/homework.rb +++ b/app/api/mobile/entities/homework.rb @@ -94,6 +94,8 @@ module Mobile homework_expose :homework_anony_type #是否是匿评作业 + homework_expose :coursename #所属班级名 + end end end \ No newline at end of file diff --git a/app/services/resources_service.rb b/app/services/resources_service.rb index 96034b4ce..41f57429e 100644 --- a/app/services/resources_service.rb +++ b/app/services/resources_service.rb @@ -1,7 +1,7 @@ #coding=utf-8 class ResourcesService - + include ActionView::Helpers::NumberHelper #发送资源到课程 def send_resource_to_course user,params send_id = params[:send_id] @@ -59,6 +59,12 @@ class ResourcesService attchments = Attachment.where("(author_id = #{user.id} and is_publish = 1 and container_id in #{courses_ids} and container_type = 'Course') or (container_type = 'Course' and is_publish = 1 and container_id in #{courses_ids})" ).order("created_on desc") + attchments.each do |v| + course = Course.where("id=?",v.container_id).first + v[:coursename] = course.nil? ? "未知" : course.name + v[:attafile_size] = (number_to_human_size(v[:filesize])).gsub("ytes", "").to_s + end + attchments end @@ -71,6 +77,11 @@ class ResourcesService homeworks = HomeworkCommon.where("course_id in #{courses_ids} and publish_time <= ?",Time.now.strftime("%Y-%m-%d")).order("created_at desc") + homeworks.each do |v| + course = Course.where("id=?",v.course_id).first + v[:coursename] = course.nil? ? "未知" : course.name + end + homeworks end @@ -83,6 +94,11 @@ class ResourcesService exercises = Exercise.where("exercise_status <> 1 and course_id in #{courses_ids}").order("created_at desc") + exercises.each do |v| + course = Course.where("id=?",v.course_id).first + v[:coursename] = course.nil? ? "未知" : course.name + end + exercises end diff --git a/public/assets/wechat/myresource.html b/public/assets/wechat/myresource.html index 4a28b2d3e..070ee5bef 100644 --- a/public/assets/wechat/myresource.html +++ b/public/assets/wechat/myresource.html @@ -12,22 +12,22 @@
    - {{r.filename}}发送
    - 课件来源:大小: + {{r.filename}}发送
    + 课件来源:{{r.coursename}}大小:{{r.attafile_size}}

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

    {{r.homework_name}}发送
    - 作业来源: + 作业来源:{{r.coursename}}

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

    {{r.exercise_name}}发送
    - 题目来源: + 题目来源:{{r.coursename}}

    暂无测验,
    请登录Trustie网站,在PC浏览器中创建测验。

    From 955c258856844c0858be9508de76677d71e82b99 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 12 Jul 2016 10:35:52 +0800 Subject: [PATCH 13/48] =?UTF-8?q?=E5=A4=8D=E5=88=B6=E7=8F=AD=E7=BA=A7?= =?UTF-8?q?=E7=9A=84=E5=BC=B9=E6=A1=86=E4=B8=AD=E2=80=9C=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E2=80=9D=E4=B8=8B=E6=8B=89=E6=A1=86=E4=B8=AD?= =?UTF-8?q?=E5=8F=AA=E6=98=BE=E7=A4=BA=E5=BD=93=E5=89=8D=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=9A=84=E6=89=80=E6=9C=89=E8=AF=BE=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/courses/_copy_course.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/courses/_copy_course.html.erb b/app/views/courses/_copy_course.html.erb index cc7f2fb53..d7a9fa4cd 100644 --- a/app/views/courses/_copy_course.html.erb +++ b/app/views/courses/_copy_course.html.erb @@ -53,7 +53,7 @@
  • - <%= select_tag :syllabus_id,options_for_select(syllabus_option,@course.syllabus_id), {:id=>"new_syllabus_id", :class=>"syllabus_input"} %> + <%= select_tag :syllabus_id,options_for_select(course_syllabus_option,@course.syllabus_id), {:id=>"new_syllabus_id", :class=>"syllabus_input"} %>
  • From 243f0bbe7dc1e586a24f1c9dcc776b153e4b7ee6 Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 12 Jul 2016 10:43:21 +0800 Subject: [PATCH 14/48] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E4=B8=8E=E5=9B=9E=E5=A4=8D=E4=B8=AD=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E6=B7=BB=E5=8A=A0=E8=93=9D=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/blog_detail.html | 2 +- public/assets/wechat/jour_message_detail.html | 2 +- public/stylesheets/weui/weixin.css | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index c77842e4b..05f7d965a 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -16,7 +16,7 @@
    {{blog.title}}
    博客{{blog.created_at}}
    -
    +
    diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index 0724e98b7..e7a48e9ab 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -14,7 +14,7 @@
    留言{{message.created_on}}
    -
    +
    diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 657cbc65f..5deb0ac99 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -122,6 +122,7 @@ a.underline {text-decoration:underline;} .post-reply-user {font-size:13px; text-align:left; margin-bottom:10px;} .post-reply-content {font-size:13px; text-align:left; word-break:break-all; word-wrap:break-word; overflow:hidden; padding-bottom:15px; border-bottom:1px solid #ccc;} .post-reply-content img {max-width:100%;} +.post-reply-content a {color:#136ec2;} .post-reply-date, .post-reply-trigger {font-size:13px;} .post-input-container {position:relative; padding-right:70px;} .copy-input {width:100%; height:28px; line-height:28px; padding:0 5px; vertical-align: middle; font-size:12px; border-radius:3px; position:absolute; left:-9999em;} From 9d91e9397b08d508d78ec04c04a6c63cc111ce72 Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 12 Jul 2016 11:01:01 +0800 Subject: [PATCH 15/48] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E9=82=80=E8=AF=B7?= =?UTF-8?q?=E7=A0=81=E6=8F=90=E7=A4=BA=E6=96=87=E5=AD=97=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/invite_code.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/assets/wechat/invite_code.html b/public/assets/wechat/invite_code.html index abf588909..a1b225fc9 100644 --- a/public/assets/wechat/invite_code.html +++ b/public/assets/wechat/invite_code.html @@ -9,7 +9,7 @@ -
    +
    diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html index 5bfb462a3..4c2d2ff03 100644 --- a/public/assets/wechat/course_discussion.html +++ b/public/assets/wechat/course_discussion.html @@ -46,7 +46,7 @@
    -
    +
    diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index d48dbd136..e1d131297 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -45,7 +45,7 @@
    -
    +
    diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index b156a0e32..bee40bfdf 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -51,7 +51,7 @@
    -
    +
    diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index 998cb58a6..dd9503a5b 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -51,7 +51,7 @@
    -
    +
    diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index e7a48e9ab..cf5e1d2c9 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -47,7 +47,7 @@
    -
    +
    diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html index 1757822ab..b90d35b91 100644 --- a/public/assets/wechat/project_discussion.html +++ b/public/assets/wechat/project_discussion.html @@ -46,7 +46,7 @@
    -
    +
    From 717bbe2ffa24f34b7086caf3caadba6df66d2c3c Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 12 Jul 2016 14:33:52 +0800 Subject: [PATCH 17/48] =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E6=A1=86=E5=A4=9A?= =?UTF-8?q?=E8=A1=8C=E6=8F=90=E4=BA=A4=E5=90=8E=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 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 +- public/javascripts/wechat/build/app.min.js | 2 +- public/stylesheets/weui/weixin.css | 1 + 9 files changed, 9 insertions(+), 8 deletions(-) diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index ceac87d03..dded5d644 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -33,7 +33,7 @@
    -
    +
  • diff --git a/app/views/users/_user_message_course.html.erb b/app/views/users/_user_message_course.html.erb index f48ce7010..065cb0b27 100644 --- a/app/views/users/_user_message_course.html.erb +++ b/app/views/users/_user_message_course.html.erb @@ -309,7 +309,7 @@
<% else %>
  • - <%= link_to ma.course_message.content.html_safe, board_message_path(ma.course_message.board_id, ma.course_message.parent_id), + <%= link_to message_content(ma.course_message.content), board_message_path(ma.course_message.board_id, ma.course_message.parent_id), :class => "#{ma.viewed==0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> @@ -348,7 +348,7 @@
  • <% unless ma.content.nil? %> - <%= link_to ma.content.html_safe, student_work_index_path(:homework => ma.course_message.student_work.homework_common_id), + <%= link_to message_content(ma.content), student_work_index_path(:homework => ma.course_message.student_work.homework_common_id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> @@ -387,7 +387,7 @@ ">在班级中留言了:
  • - <%= link_to ma.course_message.notes.html_safe, course_feedback_path(:id => ma.course_id), + <%= link_to message_content(ma.course_message.notes), course_feedback_path(:id => ma.course_id), :class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> @@ -414,7 +414,7 @@
  • - <%= link_to ma.course_message.notes.html_safe, homework_common_index_url_in_org( ma.course_id), + <%= link_to message_content(ma.course_message.notes), homework_common_index_url_in_org( ma.course_id), :class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> @@ -437,7 +437,7 @@ ">回复了作品评论:
  • - <%= link_to ma.course_message.notes, student_work_index_path(:homework => ma.course_message.jour.student_work.homework_common_id,:show_work_id => ma.course_message.jour.student_work_id), :class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> + <%= link_to message_content(ma.course_message.notes), student_work_index_path(:homework => ma.course_message.jour.student_work.homework_common_id,:show_work_id => ma.course_message.jour.student_work_id), :class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> diff --git a/app/views/users/_user_message_forum.html.erb b/app/views/users/_user_message_forum.html.erb index e0111276a..4757aa401 100644 --- a/app/views/users/_user_message_forum.html.erb +++ b/app/views/users/_user_message_forum.html.erb @@ -17,7 +17,7 @@
  • <% else %>
  • - <%= link_to ma.memo.content.html_safe, forum_memo_path(ma.memo.forum_id, ma.memo.parent_id ? ma.memo.parent_id: ma.memo.id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> + <%= link_to message_content(ma.memo.content), forum_memo_path(ma.memo.forum_id, ma.memo.parent_id ? ma.memo.parent_id: ma.memo.id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> diff --git a/app/views/users/_user_message_system.html.erb b/app/views/users/_user_message_system.html.erb index a7e48f456..13967dce1 100644 --- a/app/views/users/_user_message_system.html.erb +++ b/app/views/users/_user_message_system.html.erb @@ -10,7 +10,7 @@ 【系统消息】
  • - <%= link_to ma.subject.blank? ? (ma.content.nil? ? ma.description.html_safe : ma.content.html_safe) : ma.subject, user_system_messages_path(User.current), + <%= link_to ma.subject.blank? ? (ma.content.nil? ? message_content(ma.description) : message_content(ma.content)) : ma.subject, user_system_messages_path(User.current), :id => "content_link_#{ma.id}", :target => '_blank' %> diff --git a/app/views/users/_user_message_userfeedaback.html.erb b/app/views/users/_user_message_userfeedaback.html.erb index 3af623813..1c33d9de4 100644 --- a/app/views/users/_user_message_userfeedaback.html.erb +++ b/app/views/users/_user_message_userfeedaback.html.erb @@ -9,7 +9,7 @@ "><%= ma.journals_for_message.reply_id == 0 ? "给你留言了:" : "回复了你的留言:" %>
  • - <%= link_to ma.journals_for_message.notes.gsub("

    ","").gsub("

    ","").gsub("
    ","").html_safe, feedback_path(ma.journals_for_message.jour_id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank'%> + <%= link_to message_content(ma.journals_for_message.notes), feedback_path(ma.journals_for_message.jour_id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank'%>
  • From 824f9d91741e3b043bcf29cbd42ab7a0b8504d1c Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 12 Jul 2016 17:00:01 +0800 Subject: [PATCH 22/48] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E7=9A=84=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/courses_controller.rb | 3 ++ app/services/syllabuses_service.rb | 12 +++++++ app/services/wechat_service.rb | 45 +++++++++++++++++++++++++++ config/wechat.yml | 1 + 4 files changed, 61 insertions(+) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index a9d84c2d9..deb1d9bc2 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -633,6 +633,9 @@ class CoursesController < ApplicationController =end end if @course + #发送微信消息 + ss = SyllabusesService.new + ss.send_wechat_create_class_notice User.current,@course respond_to do |format| flash[:notice] = l(:notice_successful_create) format.html {redirect_to course_url(@course)} diff --git a/app/services/syllabuses_service.rb b/app/services/syllabuses_service.rb index b3190182c..55e0768d7 100644 --- a/app/services/syllabuses_service.rb +++ b/app/services/syllabuses_service.rb @@ -72,6 +72,15 @@ class SyllabusesService course.course_infos << course_info end + def send_wechat_create_class_notice user,course + count = ShieldWechatMessage.where("container_type='User' and container_id=#{user.id} and shield_type='Course' and shield_id=#{course.id}").count + if count == 0 + ws = WechatService.new + title = "恭喜您创建班级成功" + ws.create_class_notice user.id, "create_course_notice", course.id,title, course.name, user.show_name, 0, "点击查看班级详情" + end + end + #创建大纲 # params {title: '大纲名称', [{course}, {course}]} def create(user, title, courses = []) @@ -83,6 +92,7 @@ class SyllabusesService if ::Course === course course.syllabus_id = sy.id course.save! + send_wechat_create_class_notice user,course elsif Hash === course c = ::Course.new(course) c.tea_id = user.id @@ -91,6 +101,7 @@ class SyllabusesService c.is_public = 0 c.save! after_create_course(c, user) + send_wechat_create_class_notice user,c end end @@ -134,6 +145,7 @@ class SyllabusesService course.is_public = 0 course.save! after_create_course(course, user) + send_wechat_create_class_notice user,course end status = 0 end diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index 3169763c4..eefc127d4 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -139,6 +139,38 @@ class WechatService data end + def three_keys_template(openid, template_id, type, id, first, key1, key2, key3, remark="") + data = { + touser:openid, + template_id:template_id, + url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}", + topcolor:"#FF0000", + data:{ + first: { + value:first, + color:"#707070" + }, + keyword1:{ + value:key1, + color:"#707070" + }, + keyword2:{ + value:key2, + color:"#707070" + }, + keyword3:{ + value:key3, + color:"#707070" + }, + remark:{ + value:remark, + color:"#707070" + } + } + } + data + end + def four_keys_template(openid, template_id, type, id, first, key1, key2, key3, key4, remark="") data = { touser:openid, @@ -250,4 +282,17 @@ class WechatService end end + def create_class_notice(user_id, type, id, first, key1, key2, key3, remark="") + uw = UserWechat.where(user_id: user_id).first + unless uw.nil? + data = three_keys_template uw.openid,Wechat.config.create_class_notice, type, id, first, key1, key2, key3, remark + begin + req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) + rescue Exception => e + Rails.logger.error "[wechat_create_class_notice] ===> #{e}" + end + Rails.logger.info "send over. #{req}" + end + end + end \ No newline at end of file diff --git a/config/wechat.yml b/config/wechat.yml index d243ca44c..152135358 100644 --- a/config/wechat.yml +++ b/config/wechat.yml @@ -26,6 +26,7 @@ default: &default journal_notice: "uC1zAw4F2q6HTA3Pcj8VUO6wKKKiYFwnPJB4iXxpdoM" homework_message_notice: "tCf7teCVqc2vl2LZ_hppIdWmpg8yLcrI8XifxYePjps" class_notice: "MQ_mFupbXP-9jWbeHT3C5xqNBvPo8EIlNv4ULakSpJA" + create_class_notice: "2GtJJGzzNlNy2i0UrsjEDlvfSVIUXQfSo47stpcQAVw" production: <<: *default From 4a7fb0e0b5ef44b210f8d87fea395636209dab3c Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 12 Jul 2016 17:08:16 +0800 Subject: [PATCH 23/48] =?UTF-8?q?=E7=82=B9=E5=87=BB=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E8=AF=A6=E6=83=85=E8=B7=B3=E5=85=A5=E7=8F=AD?= =?UTF-8?q?=E7=BA=A7=E4=BF=A1=E6=81=AF=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/wechat_service.rb | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index eefc127d4..b16383385 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -285,7 +285,35 @@ class WechatService def create_class_notice(user_id, type, id, first, key1, key2, key3, remark="") uw = UserWechat.where(user_id: user_id).first unless uw.nil? - data = three_keys_template uw.openid,Wechat.config.create_class_notice, type, id, first, key1, key2, key3, remark + data = { + touser:uw.openid, + template_id:Wechat.config.create_class_notice, + url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/class?id="+id.to_s, + topcolor:"#FF0000", + data:{ + first: { + value:first, + color:"#707070" + }, + keyword1:{ + value:key1, + color:"#707070" + }, + keyword2:{ + value:key2, + color:"#707070" + }, + keyword2:{ + value:key3, + color:"#707070" + }, + remark:{ + value:remark, + color:"#707070" + } + } + } + #data = three_keys_template uw.openid,Wechat.config.create_class_notice, type, id, first, key1, key2, key3, remark begin req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) rescue Exception => e From 2cc87f1dd8f08423c805b60705ec6d04a0795284 Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 12 Jul 2016 17:33:55 +0800 Subject: [PATCH 24/48] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=90=84tab=E6=98=BE=E7=A4=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/class.html | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index 6f8354259..14a5695dd 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -23,7 +23,7 @@
    -
    {{r.filename}}发送
    +
    {{r.filename}}发送

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

    @@ -31,23 +31,25 @@
    授课老师
    - {{teacher.name}}{{teacher.role_name|identify}} + {{teacher.name}}{{teacher.role_name|identify}} +
    我的同学
    - {{student.name}} + {{student.name}} +
    -
    {{r.homework_name}}
    +
    {{r.homework_name}}

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

    -
    {{r.exercise_name}}
    +
    {{r.exercise_name}}

    暂无小测验,
    请登录Trustie网站,在PC浏览器中上传小测验。

    From f63df877dbe46cdc1a70413d66e84ffa5b6a4cf6 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 13 Jul 2016 08:44:20 +0800 Subject: [PATCH 25/48] =?UTF-8?q?=E5=B0=86=E6=9C=AA=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=8E=BB=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/syllabuses_service.rb | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/app/services/syllabuses_service.rb b/app/services/syllabuses_service.rb index 55e0768d7..885dea975 100644 --- a/app/services/syllabuses_service.rb +++ b/app/services/syllabuses_service.rb @@ -29,19 +29,13 @@ class SyllabusesService end #获取指定用户的课程大纲 def user_syllabus(user) - courses = CoursesService.new.user_courses_list(user) - - other = Syllabus.new(title: '未命名课程',user_id: user.id) - - courses.each do |c| - other.courses << c[:course] unless c[:course].syllabus - end - - # user.syllabuses.each do |syllabus| - # syllabus.courses = syllabus.courses.not_deleted - # end + # courses = CoursesService.new.user_courses_list(user) # - # user.syllabuses.to_a << other + # other = Syllabus.new(title: '未命名课程',user_id: user.id) + # + # courses.each do |c| + # other.courses << c[:course] unless c[:course].syllabus + # end courses = user.courses.not_deleted syllabus_ids = courses.empty? ? '(-1)' : "(" + courses.map{|course| !course.syllabus_id.nil? && course.syllabus_id}.join(",") + ")" @@ -51,8 +45,9 @@ class SyllabusesService syllabus.courses = courses.where("syllabus_id = #{syllabus.id}").select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("time desc") end - syllabuses.to_a << other + # syllabuses.to_a << other + syllabuses.to_a #管理权限 can_setting syllabuses.each do |s| s = judge_can_setting(s,user) From 16cf8a56a1fa0dfe1bd55aee75afdd385eeba826 Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 13 Jul 2016 09:34:36 +0800 Subject: [PATCH 26/48] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E5=92=8C?= =?UTF-8?q?=E8=80=81=E5=B8=88=E5=8F=AF=E7=9C=8B=E5=88=B0=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E4=B8=8B=E7=9A=84=E6=89=80=E6=9C=89=E7=8F=AD=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admin_controller.rb | 2 +- app/controllers/syllabuses_controller.rb | 6 +++++- app/controllers/users_controller.rb | 9 +++++++-- app/views/layouts/base_syllabus.html.erb | 9 +++++++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 52e1f5fd0..36a5d9d4f 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -82,7 +82,7 @@ class AdminController < ApplicationController syllabus.update_attributes(:title => params[:title], :eng_name => params[:eng_name], :user_id => @user.id) syllabus.description = Message.where("id = 19412").first.nil? ? nil : Message.where("id = 19412").first.content if syllabus.save - course.update_attribute('syllabus_id', syllabus.id) + course.update_column('syllabus_id', syllabus.id) @flag = params[:flag].to_i @course = course respond_to do |format| diff --git a/app/controllers/syllabuses_controller.rb b/app/controllers/syllabuses_controller.rb index 8d7195f38..291e6ca30 100644 --- a/app/controllers/syllabuses_controller.rb +++ b/app/controllers/syllabuses_controller.rb @@ -109,7 +109,11 @@ class SyllabusesController < ApplicationController sort_name = "updated_on" sort_type = @c_sort == 1 ? "asc" : "desc" - @courses = User.current.courses.visible.where("is_delete =? and syllabus_id =?", 0, @syllabus.id).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS #{sort_name}").order("#{sort_name} #{sort_type}") + if User.current == @syllabus.user || User.current.admin? + @courses = @syllabus.courses.where("is_delete = 0").select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS #{sort_name}").order("#{sort_name} #{sort_type}") + else + @courses = User.current.courses.visible.where("is_delete =? and syllabus_id =?", 0, @syllabus.id).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS #{sort_name}").order("#{sort_name} #{sort_type}") + end #根据 作业+资源数排序 if @order.to_i == 2 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 83a794cd9..373b4f514 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1410,8 +1410,13 @@ class UsersController < ApplicationController @all_count = @user.courses.visible.where("is_delete =?", 0).count elsif @type == 'Syllabus' @syllabus = Syllabus.where("id = #{params[:syllabus]}").first - @courses = User.current.courses.visible.where("is_delete =? and syllabus_id =?", 0, @syllabus.id).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(5).offset(@page * 5) - @all_count = User.current.courses.visible.where("is_delete =? and syllabus_id =?", 0, @syllabus.id).count + if User.current == @syllabus.user || User.current.admin? + all_courses = @syllabus.courses.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") + else + all_courses = User.current.courses.visible.where("is_delete =? and syllabus_id =?", 0, @syllabus.id).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc") + end + @courses = all_courses.limit(5).offset(@page * 5) + @all_count = all_courses.count end end diff --git a/app/views/layouts/base_syllabus.html.erb b/app/views/layouts/base_syllabus.html.erb index 5aa23b3c5..b0ecea006 100644 --- a/app/views/layouts/base_syllabus.html.erb +++ b/app/views/layouts/base_syllabus.html.erb @@ -75,8 +75,13 @@ <% end%> <% end%> - <% courses = User.current.courses.visible.where("is_delete =? and syllabus_id =?", 0, @syllabus.id).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(5) %> - <% all_count = User.current.courses.visible.where("is_delete =? and syllabus_id =?", 0, @syllabus.id).count%> + <% if User.current == @syllabus.user || User.current.admin? + all_courses = @syllabus.courses.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") + else + all_courses = User.current.courses.visible.where("is_delete =? and syllabus_id =?", 0, @syllabus.id).select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc") + end %> + <% courses = all_courses.limit(5) %> + <% all_count = all_courses.count%>
      From 3700f437cbbe170e42540fe86554c82931f69615 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 13 Jul 2016 09:45:30 +0800 Subject: [PATCH 27/48] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=89=88=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/wechat.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/config/wechat.yml b/config/wechat.yml index 152135358..1992a332a 100644 --- a/config/wechat.yml +++ b/config/wechat.yml @@ -8,25 +8,25 @@ default: &default #secret: "743e038392f1d89540e95f8f7645849a" #production - appid: "wx8e1ab05163a28e37" - secret: "beb4d3bc4b32b3557811680835357841" +# appid: "wx8e1ab05163a28e37" +# secret: "beb4d3bc4b32b3557811680835357841" #test - #appid: "wxc09454f171153c2d" - #secret: "dff5b606e34dcafe24163ec82c2715f8" + appid: "wxc09454f171153c2d" + secret: "dff5b606e34dcafe24163ec82c2715f8" token: "123456" access_token: "1234567" encrypt_mode: false # if true must fill encoding_aes_key - encoding_aes_key: "QGfP13YP4BbQGkkrlYuxpn4ZIDXpBJww4fxl8CObvNw" + encoding_aes_key: "QyocNOkRmrT5HzBpCG54EVPUQjk86nJapXNVDQm6Yy6" jsapi_ticket: "C:/Users/[user_name]/wechat_jsapi_ticket" #template - binding_succ_notice: "jjpDrgFErnmkrE9tf2M3o0t31ZrJ7mr0YtuE_wyLaMc" - journal_notice: "uC1zAw4F2q6HTA3Pcj8VUO6wKKKiYFwnPJB4iXxpdoM" - homework_message_notice: "tCf7teCVqc2vl2LZ_hppIdWmpg8yLcrI8XifxYePjps" - class_notice: "MQ_mFupbXP-9jWbeHT3C5xqNBvPo8EIlNv4ULakSpJA" - create_class_notice: "2GtJJGzzNlNy2i0UrsjEDlvfSVIUXQfSo47stpcQAVw" + binding_succ_notice: "n4KLwcWNrIMYkKxWL2hUwzunm5RTT54EbWem2MIUapU" + journal_notice: "XpHHYkqSGkwuF9vHthRdmPQLvCFRQ4_NbRBP12T7ciE" + homework_message_notice: "Kom0TsYYKsNKCS6luweYVRo9z-mH0wRPr24b1clGCPQ" + class_notice: "8LVu33l6bP-56SDomVgHn-yJc57YpCwwJ81rAJgRONk" + create_class_notice: "9CDIvHIKiGwPEQWRw_-wieec1o50tMXQPPZIfECKu0I" production: <<: *default From 9bf853d2bbcb6d781441bde7fa897b2d6e35b0de Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 13 Jul 2016 09:49:24 +0800 Subject: [PATCH 28/48] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E5=8F=AF?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BE=E7=A8=8B=E5=90=8D=E7=A7=B0=E5=92=8C?= =?UTF-8?q?=E8=8B=B1=E6=96=87=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_syllabus_eng_name.html.erb | 2 +- app/views/layouts/_syllabus_title.html.erb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/layouts/_syllabus_eng_name.html.erb b/app/views/layouts/_syllabus_eng_name.html.erb index ed8035736..72af30927 100644 --- a/app/views/layouts/_syllabus_eng_name.html.erb +++ b/app/views/layouts/_syllabus_eng_name.html.erb @@ -3,6 +3,6 @@ <% else%> 课程英文名称 <% end %> -<% if User.current == syllabus.user %> +<% if User.current == syllabus.user || User.current.admin? %> <%= link_to image_tag("../images/signature_edit.png",width:"12px", height: "12px"), "javascript:void(0);",:id => "syllabus_edit_ng_name_png", :class => "none", :onclick => "show_edit_eng_name();"%> <% end %> \ No newline at end of file diff --git a/app/views/layouts/_syllabus_title.html.erb b/app/views/layouts/_syllabus_title.html.erb index 5180da82d..51737fe4e 100644 --- a/app/views/layouts/_syllabus_title.html.erb +++ b/app/views/layouts/_syllabus_title.html.erb @@ -1,5 +1,5 @@ <%=@syllabus.title %> -<% if User.current == syllabus.user %> +<% if User.current == syllabus.user || User.current.admin? %> <%= link_to image_tag("../images/signature_edit.png",width:"12px", height: "12px"), "javascript:void(0);",:id => "syllabus_edit_title_png", :class => "none", :onclick => "show_edit_title();"%> <% end %> \ No newline at end of file From f83d791de17d5134f3297a1374a37c0b22f079d8 Mon Sep 17 00:00:00 2001 From: txz Date: Wed, 13 Jul 2016 09:54:37 +0800 Subject: [PATCH 29/48] =?UTF-8?q?=E8=BF=9B=E5=85=A5=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=90=8E=EF=BC=8C=E8=AF=BE=E4=BB=B6=EF=BC=8C=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=EF=BC=8C=E6=B5=8B=E9=AA=8C=E5=8F=8A=E5=AD=A6=E7=94=9F=E7=AE=A1?= =?UTF-8?q?=E7=90=86tab=E6=A0=B7=E5=BC=8F=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/class.html | 14 +++++++------- public/stylesheets/weui/weixin.css | 1 + 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/public/assets/wechat/class.html b/public/assets/wechat/class.html index 14a5695dd..85dd1c8de 100644 --- a/public/assets/wechat/class.html +++ b/public/assets/wechat/class.html @@ -23,33 +23,33 @@
    -
    {{r.filename}}发送
    +
    {{r.filename}}发送

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

    授课老师
    -
    - {{teacher.name}}{{teacher.role_name|identify}} +
    + {{teacher.name}}{{teacher.role_name|identify}}
    我的同学
    -
    - {{student.name}} +
    + {{student.name}}
    -
    {{r.homework_name}}
    +
    {{r.homework_name}}发送

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

    -
    {{r.exercise_name}}
    +
    {{r.exercise_name}}发送

    暂无小测验,
    请登录Trustie网站,在PC浏览器中上传小测验。

    diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 0a7a2b83c..dd60e6f2e 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -189,6 +189,7 @@ a.underline {text-decoration:underline;} .class-detail-search {width:100%; height:33px; color:#999; background-color:#fff; border:none; outline:none;} .border-top {border-top:1px solid #ccc;} .class-detail-row {width:100%; line-height:18px; padding:10px 0; border-bottom:1px solid #ccc; background-color:#fff;} +.class-member-row {width:100%; line-height:18px; padding:5px 0; border-bottom:1px solid #ccc; background-color:#fff;} .class-test-tip {text-align:center; font-size:13px; color:#444; padding-top:40px;} .img-circle {border-radius:50%;} .member-banner {height:24px; line-height:24px; text-align:center; vertical-align:middle; background-color:#dfdfdf;} From 5cd394c4ae6b7052ab26010ac816e6832adfc333 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 13 Jul 2016 10:09:47 +0800 Subject: [PATCH 30/48] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E7=8F=AD=E7=BA=A7=E6=B5=8B=E9=AA=8C=E6=8A=A5=E9=94=99=E7=9A=84?= =?UTF-8?q?BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 7 ++- app/views/wechats/user_activities.html.erb | 54 +++++++++++----------- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 301417781..1cde439b2 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -391,7 +391,12 @@ module Mobile end get ':course_id/exercises' do authenticate! - exercises = Course.find(params[:course_id]).exercises + + course = Course.find(params[:course_id]) + exercises = course.exercises + exercises.each do |v| + v[:coursename] = course.nil? ? "未知" : course.name + end present :data,exercises,with:Mobile::Entities::Exercise present :status,0 end diff --git a/app/views/wechats/user_activities.html.erb b/app/views/wechats/user_activities.html.erb index 240fec434..f724be392 100644 --- a/app/views/wechats/user_activities.html.erb +++ b/app/views/wechats/user_activities.html.erb @@ -26,33 +26,33 @@
    - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + From a5acc2641e3503031e352e0fe083258d9d485913 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 13 Jul 2016 14:06:56 +0800 Subject: [PATCH 31/48] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=82=B9=E8=B5=9E?= =?UTF-8?q?=E4=BF=9D=E8=AF=81=E5=90=84=E4=B8=AA=E5=88=87=E6=8D=A2=E4=B9=8B?= =?UTF-8?q?=E9=97=B4=E7=82=B9=E8=B5=9E=E7=8A=B6=E6=80=81=E4=BF=9D=E6=8C=81?= =?UTF-8?q?=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wechat/controllers/activity.js | 44 +++++++++++++++++++ public/javascripts/wechat/others/factory.js | 13 +++--- 2 files changed, 52 insertions(+), 5 deletions(-) diff --git a/public/javascripts/wechat/controllers/activity.js b/public/javascripts/wechat/controllers/activity.js index 16a8e71d0..1ad4b9c1e 100644 --- a/public/javascripts/wechat/controllers/activity.js +++ b/public/javascripts/wechat/controllers/activity.js @@ -144,10 +144,54 @@ app.controller('ActivityController', } $scope.addPraise = function(act){ + for(var i in $scope.activities){ + if($scope.activities[i].act_id == act.act_id){ + $scope.activities[i].praise_count += 1; + $scope.activities[i].has_praise = true; + break; + } + } + for(var i in $scope.course_activities){ + if($scope.course_activities[i].act_id == act.act_id){ + $scope.course_activities[i].praise_count += 1; + $scope.course_activities[i].has_praise = true; + break; + } + } + for(var i in $scope.project_activities){ + if($scope.project_activities[i].act_id == act.act_id){ + $scope.project_activities[i].praise_count += 1; + $scope.project_activities[i].has_praise = true; + break; + } + } + common.addCommonPraise(act); }; $scope.decreasePraise = function(act){ + for(var i in $scope.activities){ + if($scope.activities[i].act_id == act.act_id){ + $scope.activities[i].praise_count -= 1; + $scope.activities[i].has_praise = false; + break; + } + } + for(var i in $scope.course_activities){ + if($scope.course_activities[i].act_id == act.act_id){ + $scope.course_activities[i].praise_count -= 1; + $scope.course_activities[i].has_praise = false; + break; + } + } + for(var i in $scope.project_activities){ + if($scope.project_activities[i].act_id == act.act_id){ + $scope.project_activities[i].praise_count -= 1; + $scope.project_activities[i].has_praise = false; + break; + } + } + common.decreaseCommonPraise(act); }; }]); \ No newline at end of file diff --git a/public/javascripts/wechat/others/factory.js b/public/javascripts/wechat/others/factory.js index 64204dfca..6c7709df3 100644 --- a/public/javascripts/wechat/others/factory.js +++ b/public/javascripts/wechat/others/factory.js @@ -126,8 +126,8 @@ app.factory('common', ['$http', 'auth', '$routeParams','rms', function($http, au }; var addCommonPraise = function(act){ - act.praise_count += 1; - act.has_praise = true; +// act.praise_count += 1; +// act.has_praise = true; $http({ method: 'POST', @@ -141,9 +141,8 @@ app.factory('common', ['$http', 'auth', '$routeParams','rms', function($http, au }; var decreaseCommonPraise = function(act){ - act.praise_count -= 1; - act.has_praise = false; - +// act.praise_count -= 1; +// act.has_praise = false; $http({ method: 'POST', url: apiUrl + "praise/" + act.act_id, @@ -205,6 +204,8 @@ app.factory('common', ['$http', 'auth', '$routeParams','rms', function($http, au rms.save("course_activities",course_activities); rms.save("project_activities",project_activities); + act.praise_count += 1; + act.has_praise = true; addCommonPraise(act); }; @@ -237,6 +238,8 @@ app.factory('common', ['$http', 'auth', '$routeParams','rms', function($http, au rms.save("course_activities",course_activities); rms.save("project_activities",project_activities); + act.praise_count -= 1; + act.has_praise = false; decreaseCommonPraise(act); }; } From ded8f48d34406bdf3fbc80a560bd9b4d8da10abf Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 13 Jul 2016 15:20:39 +0800 Subject: [PATCH 32/48] =?UTF-8?q?=E5=8D=9A=E5=AE=A2=E7=9A=84=E4=BA=8C?= =?UTF-8?q?=E7=BA=A7=E5=9B=9E=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/at_controller.rb | 6 +- app/controllers/blog_comments_controller.rb | 11 +++- app/controllers/users_controller.rb | 5 ++ app/helpers/application_helper.rb | 2 +- app/views/blog_comments/reply.js.erb | 2 +- .../users/_blog_comments_replies.html.erb | 59 +++++++++++++++++++ app/views/users/_reply_to.html.erb | 13 ++++ app/views/users/_user_blog.html.erb | 5 +- 8 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 app/views/users/_blog_comments_replies.html.erb diff --git a/app/controllers/at_controller.rb b/app/controllers/at_controller.rb index 5b29565ad..69c33f90e 100644 --- a/app/controllers/at_controller.rb +++ b/app/controllers/at_controller.rb @@ -47,6 +47,8 @@ class AtController < ApplicationController find_journals_for_message(id) when 'Principal' find_principal(id) + when 'BlogComment' + find_blog_comment(id) when 'All' nil else @@ -166,8 +168,8 @@ class AtController < ApplicationController #BlogComment def find_blog_comment(id) - blog = BlogComment.find(id).blog - blog.users + blog = BlogComment.find(id) + blog.author.watcher_users end end \ No newline at end of file diff --git a/app/controllers/blog_comments_controller.rb b/app/controllers/blog_comments_controller.rb index 4a8de5814..a6e383504 100644 --- a/app/controllers/blog_comments_controller.rb +++ b/app/controllers/blog_comments_controller.rb @@ -130,9 +130,16 @@ class BlogCommentsController < ApplicationController params[:blog_comment][:sticky] = params[:blog_comment][:sticky] || 0 params[:blog_comment][:locked] = params[:blog_comment][:locked] || 0 @blogComment.safe_attributes = params[:blog_comment] - @blogComment.content = @quote + @blogComment.content @blogComment.title = "RE: #{@article.title}" unless params[:blog_comment][:title] - @article.children << @blogComment + if params[:activity_id] + @blogComment.content = params[:blog_comment][:content] + parent = BlogComment.find params[:parent_id] + @blogComment.reply_id = params[:reply_id] + parent.children << @blogComment + else + @blogComment.content = @quote + @blogComment.content + @article.children << @blogComment + end @article.save # @article.update_attribute(:updated_on, @blogComment.updated_on) @user_activity_id = params[:user_activity_id] diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 373b4f514..633254978 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -120,6 +120,11 @@ class UsersController < ApplicationController @is_course = params[:is_course] @is_board = params[:is_board] @type = 'Message' + when 'BlogComment' + @reply = BlogComment.find params[:reply_id] + @user_activity_id = params[:user_activity_id] + @activity_id = params[:activity_id] + @type = 'BlogComment' end respond_to do |format| format.js diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3a28e4b72..3d8d970b5 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -3141,7 +3141,7 @@ end #获取所有子节点 def get_all_children result, jour - if (jour.kind_of? JournalsForMessage) || (jour.kind_of? Message) + if (jour.kind_of? JournalsForMessage) || (jour.kind_of? Message) || (jour.kind_of? BlogComment) jour.children.each do |jour_child| result << jour_child get_all_children result, jour_child diff --git a/app/views/blog_comments/reply.js.erb b/app/views/blog_comments/reply.js.erb index baf4418e9..f612cfe98 100644 --- a/app/views/blog_comments/reply.js.erb +++ b/app/views/blog_comments/reply.js.erb @@ -5,7 +5,7 @@ $("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'users/user_blog', :locals => {:activity => @article,:user_activity_id =>@user_activity_id}) %>"); // init_activity_KindEditor_data(<%#= @user_activity_id%>,"","87%", 'UserActivity'); <% else%> -$("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'blogs/article', :locals => {:activity => @article,:user_activity_id =>@user_activity_id}) %>"); +$("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'users/user_blog', :locals => {:activity => @article,:user_activity_id =>@user_activity_id}) %>"); //init_activity_KindEditor_data(<%#= @user_activity_id%>,"","87%", 'UserActivity'); <% end %> sd_create_editor_from_data(<%= @user_activity_id%>,"","100%", 'UserActivity'); \ No newline at end of file diff --git a/app/views/users/_blog_comments_replies.html.erb b/app/views/users/_blog_comments_replies.html.erb new file mode 100644 index 000000000..181f6698a --- /dev/null +++ b/app/views/users/_blog_comments_replies.html.erb @@ -0,0 +1,59 @@ +
      + <% comments.each do |comment| %> + +
    • +
      + <%= link_to image_tag(url_to_avatar(comment.creator_user), :width => 33, :height => 33, :alt => "用户头像"), user_url_in_org(comment.creator_user.id) %> +
      +
      +
      + <%= link_to comment.creator_user.show_name, user_url_in_org(comment.creator_user.id), :class => "newsBlue mr10 f14" %> + <%= time_from_now(comment.created_on) %> +
      + <% if !comment.parent.nil? && !comment.parent.parent.nil? %> + <%= render :partial => 'users/message_contents', :locals => {:comment => comment}%> + <% end %> + <% if !comment.content_detail.blank? %> +
      + <%= comment.content_detail.html_safe %> +
      +
      +
      + + + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> + + + <%= link_to( + l(:button_reply), + {:controller => 'users' ,:action => 'reply_to', :reply_id => comment.id, :type => type, :user_activity_id => user_activity_id, :activity_id => activity_id}, + :remote => true, + :method => 'get', + :title => l(:button_reply)) %> + + + <% if comment.author == User.current %> + <%= link_to( + l(:button_delete), + {:controller => 'blog_comments',:action => 'destroy', :id => comment.id}, + :method => :delete, + :class => 'fr newsGrey mr10', + :data => {:confirm => l(:text_are_you_sure)}, + :title => l(:button_delete)) %> + <% end %> + +
      +
      +
      +

      + <% end %> +
      +
      +
    • + <% end %> +
    \ No newline at end of file diff --git a/app/views/users/_reply_to.html.erb b/app/views/users/_reply_to.html.erb index 8a2909ad4..8358a7d23 100644 --- a/app/views/users/_reply_to.html.erb +++ b/app/views/users/_reply_to.html.erb @@ -44,6 +44,19 @@

    <% end%> + <% elsif @type == 'BlogComment' %> + <%= form_for('new_form', :url => {:controller => 'blog_comments',:action => 'reply', :id => reply.id, :blog_id => reply.blog.id}, :method => "post", :remote => true) do |f| %> + + <%= hidden_field_tag 'user_activity_id',params[:user_activity_id],:value =>@user_activity_id %> + <%= hidden_field_tag 'activity_id',params[:activity_id],:value =>@activity_id %> + <%= hidden_field_tag 'parent_id', params[:parent_id], :value => reply.id %> + <%= hidden_field_tag 'reply_id', params[:reply_id], :value => reply.author_id %> +
    + + +
    +

    + <% end%> <% end %>
    diff --git a/app/views/users/_user_blog.html.erb b/app/views/users/_user_blog.html.erb index 77510c858..868f92979 100644 --- a/app/views/users/_user_blog.html.erb +++ b/app/views/users/_user_blog.html.erb @@ -45,10 +45,11 @@
    <%= render :partial => 'users/reply_banner', :locals => {:count => count, :activity => activity, :user_activity_id => user_activity_id} %> - <% comments = activity.children.reorder("created_on desc").limit(3) %> + <% all_comments = []%> + <% comments = get_all_children(all_comments, activity)[0..2] %> <% if count > 0 %>
    - <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%> + <%= render :partial => 'users/blog_comments_replies', :locals => {:comments => comments, :user_activity_id => user_activity_id, :type => 'BlogComment', :activity_id =>activity.id}%>
    <% end %> From 3ffb909e15d8c19542d42071e4bcb1a02165bceb Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 13 Jul 2016 15:54:58 +0800 Subject: [PATCH 33/48] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E9=80=81?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=8F=AD=E7=BA=A7=E7=9A=84=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/wechat_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index b16383385..3097e1842 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -303,7 +303,7 @@ class WechatService value:key2, color:"#707070" }, - keyword2:{ + keyword3:{ value:key3, color:"#707070" }, From e61aa9e0dc09778c2f466e90764f07b304b9b052 Mon Sep 17 00:00:00 2001 From: txz Date: Wed, 13 Jul 2016 16:53:17 +0800 Subject: [PATCH 34/48] =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E6=A1=86=E9=AB=98?= =?UTF-8?q?=E5=BA=A6=E8=87=AA=E5=8A=A8=E5=A2=9E=E5=87=8Fjs=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/directives/input_auto.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/javascripts/wechat/directives/input_auto.js b/public/javascripts/wechat/directives/input_auto.js index bcb44141e..28cb792ab 100644 --- a/public/javascripts/wechat/directives/input_auto.js +++ b/public/javascripts/wechat/directives/input_auto.js @@ -3,8 +3,8 @@ app.directive('inputAuto',function(){ restrict: 'A', scope: {}, link: function(scope, element){ - var copyContainer = element.parent().children().eq(0); - var sendButton = element.parent().next(); + var copyContainer = element.parent().children().children().eq(0); + var sendButton = element.next(); element.on('input',function(){ console.log(sendButton); copyContainer.html(element[0].value); From 24821ba01d6c209a8b9eb016464aec8b5d0c5de9 Mon Sep 17 00:00:00 2001 From: txz Date: Thu, 14 Jul 2016 09:44:35 +0800 Subject: [PATCH 35/48] =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=B8=8E=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E9=A1=B5=E9=9D=A2=EF=BC=8C=E8=BE=93=E5=85=A5=E6=96=87?= =?UTF-8?q?=E5=AD=97=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/login.html | 4 ++-- public/assets/wechat/reg.html | 8 ++++---- public/stylesheets/weui/weixin.css | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/public/assets/wechat/login.html b/public/assets/wechat/login.html index 1283ad281..61c9b9de3 100644 --- a/public/assets/wechat/login.html +++ b/public/assets/wechat/login.html @@ -4,13 +4,13 @@
    绑定注册
    From 1e8f496718954b856002670b3ad55f2b9cbc7770 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 14 Jul 2016 10:06:37 +0800 Subject: [PATCH 37/48] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9F=A5=E9=87=8D?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=20=E4=B8=8D=E6=98=BE=E7=A4=BA=E6=9C=AA?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=9A=84=E4=BD=9C=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 2 +- app/controllers/student_work_controller.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index a9d84c2d9..479aec3ce 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -968,7 +968,7 @@ class CoursesController < ApplicationController @homework = HomeworkCommon.find params[:homework] #order("#{@order} #{@b_sort}" - @student_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").order("simi_value desc"),@name + @student_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").order("simi_value desc").has_committed,@name @works_hash = {} diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index bc1b97a2f..45b54cf0a 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -271,7 +271,7 @@ class StudentWorkController < ApplicationController all_studentwork = find_all_student_work_by_homeid() - @work_count = all_studentwork.count + @work_count = all_studentwork.has_committed.count end #代码查重 status: 0完成 -2不需要查重 -1查重失败不支持该语言 @@ -282,7 +282,7 @@ class StudentWorkController < ApplicationController @homework = HomeworkCommon.find params[:homework] - all_studentwork = find_all_student_work_by_homeid() + all_studentwork = find_all_student_work_by_homeid().has_committed if all_studentwork == nil resultObj[:status] = -2 From c2fadc54ef38d4a4bc6e2ecfe30d19f08789d561 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 14 Jul 2016 11:16:45 +0800 Subject: [PATCH 38/48] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E7=82=B9=E5=87=BB=E8=B7=B3=E8=BD=AC=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/users.rb | 4 ++-- app/services/wechat_service.rb | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index a6536e73e..e2ea8d35b 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -41,8 +41,8 @@ module Mobile openid: openid, user: user ) - # ws = WechatService.new - # ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台", user.login, format_time(Time.now)) + ws = WechatService.new + ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台", user.login, Time.now.strftime("%Y-%m-%d")) present status: 0, message: '您已成功绑定Trustie平台' end diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index 3097e1842..6bb93400d 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -115,7 +115,7 @@ class WechatService data = { touser:openid, template_id:template_id, - url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}", + url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/user_activities#/#{type}/#{id}",#user_activities 本来是app.html topcolor:"#FF0000", data:{ first: { @@ -143,7 +143,7 @@ class WechatService data = { touser:openid, template_id:template_id, - url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}", + url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/user_activities#/#{type}/#{id}",#user_activities 本来是app.html topcolor:"#FF0000", data:{ first: { @@ -175,7 +175,7 @@ class WechatService data = { touser:openid, template_id:template_id, - url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}", + url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/user_activities#/#{type}/#{id}", #user_activities 本来是app.html topcolor:"#FF0000", data:{ first: { From 5bd404322b9ddeb6c44f08bee11081c7ee9b3a68 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 14 Jul 2016 11:28:28 +0800 Subject: [PATCH 39/48] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5=E8=AF=A6=E6=83=85=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= 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 6bb93400d..2da942ea6 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -115,7 +115,7 @@ class WechatService data = { touser:openid, template_id:template_id, - url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/user_activities#/#{type}/#{id}",#user_activities 本来是app.html + url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}",#/assets/wechat/app.html#/#{type}/#{id} topcolor:"#FF0000", data:{ first: { @@ -143,7 +143,7 @@ class WechatService data = { touser:openid, template_id:template_id, - url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/user_activities#/#{type}/#{id}",#user_activities 本来是app.html + url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}",#/assets/wechat/app.html#/#{type}/#{id} topcolor:"#FF0000", data:{ first: { @@ -175,7 +175,7 @@ class WechatService data = { touser:openid, template_id:template_id, - url:"#{Setting.protocol}://#{Setting.host_name}/assets/wechat/user_activities#/#{type}/#{id}", #user_activities 本来是app.html + url:"#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities#/#{type}/#{id}", #/assets/wechat/app.html#/#{type}/#{id} topcolor:"#FF0000", data:{ first: { From e19efc1c8a8b75def63caec6280ab792c0bd238d Mon Sep 17 00:00:00 2001 From: cxt Date: Thu, 14 Jul 2016 14:44:47 +0800 Subject: [PATCH 40/48] =?UTF-8?q?=E5=8D=9A=E5=AE=A2=E7=9A=84=E4=BA=8C?= =?UTF-8?q?=E7=BA=A7=E5=9B=9E=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/blog_comments_controller.rb | 25 +++-- app/controllers/users_controller.rb | 8 +- .../_simple_ke_reply_form.html.erb | 9 +- app/views/blog_comments/destroy.js.erb | 7 ++ app/views/blog_comments/quote.js.erb | 4 +- app/views/blog_comments/show.html.erb | 99 ++++++++++--------- app/views/blogs/_homepage.html.erb | 10 +- app/views/messages/_course_show.html.erb | 2 +- .../users/_blog_comment_reply_banner.html.erb | 18 ++++ .../users/_blog_comments_replies.html.erb | 9 +- app/views/users/_reply_to.html.erb | 8 +- app/views/users/_user_blog.html.erb | 7 +- app/views/users/all_journals.js.erb | 4 +- app/views/users/show_all_replies.js.erb | 2 +- public/javascripts/application.js | 34 +++++++ 15 files changed, 169 insertions(+), 77 deletions(-) create mode 100644 app/views/blog_comments/destroy.js.erb create mode 100644 app/views/users/_blog_comment_reply_banner.html.erb diff --git a/app/controllers/blog_comments_controller.rb b/app/controllers/blog_comments_controller.rb index a6e383504..dcab1b360 100644 --- a/app/controllers/blog_comments_controller.rb +++ b/app/controllers/blog_comments_controller.rb @@ -70,6 +70,10 @@ class BlogCommentsController < ApplicationController @course.outline = 0 @course.save redirect_to course_path(:id=>params[:course_id]) + elsif params[:user_activity_id] + @article.children.destroy + @article.destroy + redirect_to user_path(User.current.id) else @article.children.destroy @article.destroy @@ -80,6 +84,17 @@ class BlogCommentsController < ApplicationController if params[:course_id] #如果带了course_id过来了,那么这是要跳到课程大纲去的 @article.destroy redirect_to syllabus_course_path(:id=>params[:course_id]) + elsif params[:user_activity_id] + if params[:homepage] && params[:homepage] == "1" + @in_user_homepage = true + end + @user_activity_id = params[:user_activity_id] + @blog_comment = @article.root + @article.destroy + respond_to do |format| + format.js + return + end else root = @article.root @article.destroy @@ -102,13 +117,9 @@ class BlogCommentsController < ApplicationController def quote @blogComment = BlogComment.find(params[:id]) - @subject = @blogComment.title - @subject = "RE: #{@subject}" unless @subject.starts_with?('RE:') - @content = "> #{ll(Setting.default_language, :text_user_wrote, @blogComment.author.realname)}\n> " @temp = BlogComment.new @course_id = params[:course_id] - @temp.content = "
    #{ll(Setting.default_language, :text_user_wrote, @blogComment.author.realname)}
    #{@blogComment.content.html_safe}
    ".html_safe respond_to do | format| format.js end @@ -116,14 +127,13 @@ class BlogCommentsController < ApplicationController #回复 def reply - if params[:homepage] + if params[:homepage] && params[:homepage] == "1" @in_user_homepage = true end if params[:in_user_center] @in_user_center = true end @article = BlogComment.find(params[:id]).root - @quote = params[:quote][:quote] @blogComment = BlogComment.new @blogComment.author = User.current @blogComment.blog = Blog.find(params[:blog_id]) @@ -131,12 +141,13 @@ class BlogCommentsController < ApplicationController params[:blog_comment][:locked] = params[:blog_comment][:locked] || 0 @blogComment.safe_attributes = params[:blog_comment] @blogComment.title = "RE: #{@article.title}" unless params[:blog_comment][:title] - if params[:activity_id] + if params[:parent_id] @blogComment.content = params[:blog_comment][:content] parent = BlogComment.find params[:parent_id] @blogComment.reply_id = params[:reply_id] parent.children << @blogComment else + @quote = params[:quote][:quote] || "" @blogComment.content = @quote + @blogComment.content @article.children << @blogComment end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 633254978..e7c75eb13 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -92,6 +92,8 @@ class UsersController < ApplicationController @comment = JournalsForMessage.find params[:comment].to_i when 'Message' @comment = Message.find params[:comment].to_i + when 'BlogComment' + @comment = BlogComment.find params[:comment].to_i end end @@ -124,6 +126,7 @@ class UsersController < ApplicationController @reply = BlogComment.find params[:reply_id] @user_activity_id = params[:user_activity_id] @activity_id = params[:activity_id] + @homepage = params[:homepage] @type = 'BlogComment' end respond_to do |format| @@ -3310,7 +3313,10 @@ class UsersController < ApplicationController @journals = obj.journals.reorder("created_on desc") when 'BlogComment' obj = BlogComment.where('id = ?', params[:id].to_i).first - @journals = obj.children.reorder("created_on desc") + @user_activity_id = params[:div_id].to_i if params[:div_id] + @homepage = params[:homepage].to_i + comments = [] + @journals = get_all_children(comments, obj) when 'HomeworkCommon' obj = HomeworkCommon.where('id = ?', params[:id].to_i).first @journals = obj.journals_for_messages.reorder("created_on desc") diff --git a/app/views/blog_comments/_simple_ke_reply_form.html.erb b/app/views/blog_comments/_simple_ke_reply_form.html.erb index 8339ae5ad..7318aaec9 100644 --- a/app/views/blog_comments/_simple_ke_reply_form.html.erb +++ b/app/views/blog_comments/_simple_ke_reply_form.html.erb @@ -3,12 +3,15 @@
    <% if User.current.logged? %>
    - <%= form_for @blog_comment, :as => :reply, :url => {:controller => 'blog_comments',:action => 'reply', :id => @blogComment.id}, :html => {:multipart => true, :id => 'new_form'} do |f| %> - + <%= form_for('new_form', :url => {:controller => 'blog_comments',:action => 'reply', :id => reply.id, :blog_id => reply.blog.id, :user_id => User.current.id}, :method => "post", :html => {:multipart => true}) do |f| %> + + <%#= form_for @blog_comment, :as => :reply, :url => {:controller => 'blog_comments',:action => 'reply', :id => @blogComment.id}, :html => {:multipart => true, :id => 'new_form'} do |f| %> + <% if course_id%> <% end %> - + <%= hidden_field_tag 'parent_id', params[:parent_id], :value => reply.id %> + <%= hidden_field_tag 'reply_id', params[:reply_id], :value => reply.author_id %>
    diff --git a/app/views/blog_comments/destroy.js.erb b/app/views/blog_comments/destroy.js.erb new file mode 100644 index 000000000..c34986977 --- /dev/null +++ b/app/views/blog_comments/destroy.js.erb @@ -0,0 +1,7 @@ +<% if @in_user_homepage %> + <% homepage = BlogComment.find(User.current.blog.homepage_id) %> + $("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'blogs/homepage', :locals => {:activity => @blog_comment, :user_activity_id => homepage.id}) %>"); +<% else%> + $("#user_activity_<%= @user_activity_id%>").replaceWith("<%= escape_javascript(render :partial => 'users/user_blog', :locals => {:activity => @blog_comment,:user_activity_id =>@user_activity_id}) %>"); +<% end %> +sd_create_editor_from_data(<%= @user_activity_id%>,"","100%", 'UserActivity'); \ No newline at end of file diff --git a/app/views/blog_comments/quote.js.erb b/app/views/blog_comments/quote.js.erb index 9bd226ce1..6d3264a22 100644 --- a/app/views/blog_comments/quote.js.erb +++ b/app/views/blog_comments/quote.js.erb @@ -1,8 +1,6 @@ if($("#reply_message_<%= @blogComment.id%>").length > 0) { - $("#reply_message_<%= @blogComment.id%>").replaceWith("<%= escape_javascript(render :partial => 'blog_comments/simple_ke_reply_form', :locals => {:reply => @blogComment,:temp =>@temp,:subject =>@subject,:course_id=>@course_id}) %>"); + $("#reply_message_<%= @blogComment.id%>").replaceWith("<%= escape_javascript(render :partial => 'blog_comments/simple_ke_reply_form', :locals => {:reply => @blogComment,:temp =>@temp,:course_id=>@course_id}) %>"); $(function(){ - $('#reply_subject').val("<%= raw escape_javascript(@subject) %>"); - $('#quote_quote').val("<%= raw escape_javascript(@temp.content.html_safe) %>"); sd_create_editor_from_data(<%= @blogComment.id%>,null,"100%", "<%=@blogComment.class.to_s%>"); }); }else if($("#reply_to_message_<%= @blogComment.id%>").length >0) { diff --git a/app/views/blog_comments/show.html.erb b/app/views/blog_comments/show.html.erb index b1cd86484..bde98d456 100644 --- a/app/views/blog_comments/show.html.erb +++ b/app/views/blog_comments/show.html.erb @@ -91,9 +91,7 @@
    <%= format_time( @article.created_on)%>
    - - - + <%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>@article.id, :content=>@article.content} %>
    @@ -107,73 +105,84 @@
    - <% count=0 %> - <% if @article.parent %> - <% count=@article.parent.children.count%> - <% else %> - <% count=@article.children.count%> - <% end %> + <% all_comments = []%> + <% count=get_all_children(all_comments, @article).count %>
    - <%# unless count == 0 %> -
    -
    回复 - <%= count>0 ? "(#{count})" : "" %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>@article, :user_activity_id=>@article.id,:type=>"activity"}%> +
    +
    回复 + <%= count>0 ? "(#{count})" : "" %> + + + <%= render :partial => "praise_tread/praise", :locals => {:activity => @article, :user_activity_id => @article.id, :type => "activity"} %> -
    -
    -
    -
    - <%@article.children.reorder('created_on desc').each_with_index do |reply,i| %> +
    +
    +
    + + <% all_comments = []%> + <% comments = get_all_children(all_comments, @article) %> + <% if count > 0 %> +
    + <% comments.each do |comment| %> -
    +
  • - <%= link_to image_tag(url_to_avatar(reply.author), :width => 33,:height => 33), user_path(reply.author) %> + <%= link_to image_tag(url_to_avatar(comment.creator_user), :width => 33, :height => 33, :alt => "用户头像"), user_url_in_org(comment.creator_user.id) %>
    - <%= link_to reply.author.show_name, user_path(reply.author_id,:host=>Setting.host_user), :class => "newsBlue mr10 f14" %> + <%= link_to comment.creator_user.show_name, user_url_in_org(comment.creator_user.id), :class => "newsBlue mr10 f14" %> + <%= time_from_now(comment.created_on) %>
    -
    - <%= reply.content.html_safe%> -
    -
    - <%= format_time(reply.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> + <% if !comment.parent.nil? && !comment.parent.parent.nil? %> + <%= render :partial => 'users/message_contents', :locals => {:comment => comment}%> + <% end %> + <% if !comment.content_detail.blank? %> +
    + <%= comment.content_detail.html_safe %> +
    +
    +
    + + + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - -
    -

    + ) %> + <% end %> + +
    +
    +
    +

    + <% end %>
    -
  • - <% end %> + <% end %>
    + <% end %> - <%# end %>
    <% if !@article.locked? && User.current.logged?%>
    diff --git a/app/views/blogs/_homepage.html.erb b/app/views/blogs/_homepage.html.erb index 140f547cb..d5a5c0d64 100644 --- a/app/views/blogs/_homepage.html.erb +++ b/app/views/blogs/_homepage.html.erb @@ -48,14 +48,16 @@
    - <% count=activity.children.count %> + <% all_comments = []%> + <% count=get_all_children(all_comments, activity).count %>
    - <%= render :partial => 'users/reply_banner', :locals => {:count => count, :activity => activity, :user_activity_id => user_activity_id} %> + <%= render :partial => 'users/blog_comment_reply_banner', :locals => {:count => count, :activity => activity, :user_activity_id => user_activity_id, :homepage => 1} %> - <% comments = activity.children.reorder("created_on desc").limit(3) %> + <% all_comments = []%> + <% comments = get_all_children(all_comments, activity)[0..2] %> <% if count > 0 %>
    - <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%> + <%= render :partial => 'users/blog_comments_replies', :locals => {:comments => comments, :user_activity_id => user_activity_id, :type => 'BlogComment', :activity_id =>activity.id, :homepage => 1}%>
    <% end %> diff --git a/app/views/messages/_course_show.html.erb b/app/views/messages/_course_show.html.erb index 232be1f35..b37540810 100644 --- a/app/views/messages/_course_show.html.erb +++ b/app/views/messages/_course_show.html.erb @@ -116,7 +116,7 @@
    <% if !reply.parent.nil? && !reply.parent.parent.nil? %> <%= render :partial => 'users/message_contents', :locals => {:comment => reply}%> - <% end %> + <% end %>
    <%= reply.content.html_safe%>
    diff --git a/app/views/users/_blog_comment_reply_banner.html.erb b/app/views/users/_blog_comment_reply_banner.html.erb new file mode 100644 index 000000000..496cd2c7c --- /dev/null +++ b/app/views/users/_blog_comment_reply_banner.html.erb @@ -0,0 +1,18 @@ +
    +
    + 回复 + ︿ + <%= count>0 ? "(#{count})" : "" %> + + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> + +
    +
    <%#= format_date(activity.updated_on) %>
    + <%if count>3 %> + + <% end %> +
    \ No newline at end of file diff --git a/app/views/users/_blog_comments_replies.html.erb b/app/views/users/_blog_comments_replies.html.erb index 181f6698a..b4a134b7b 100644 --- a/app/views/users/_blog_comments_replies.html.erb +++ b/app/views/users/_blog_comments_replies.html.erb @@ -31,18 +31,19 @@ <%= link_to( l(:button_reply), - {:controller => 'users' ,:action => 'reply_to', :reply_id => comment.id, :type => type, :user_activity_id => user_activity_id, :activity_id => activity_id}, + {:controller => 'users' ,:action => 'reply_to', :reply_id => comment.id, :type => type, :user_activity_id => user_activity_id, :activity_id => activity_id, :homepage => homepage}, :remote => true, :method => 'get', - :title => l(:button_reply)) %> + :title => l(:button_reply)) if !comment.root.locked? %> <% if comment.author == User.current %> <%= link_to( l(:button_delete), - {:controller => 'blog_comments',:action => 'destroy', :id => comment.id}, + {:controller => 'blog_comments',:action => 'destroy', :id => comment.id, :user_activity_id => user_activity_id, :homepage => homepage}, :method => :delete, - :class => 'fr newsGrey mr10', + :remote => true, + :class => 'fr mr20', :data => {:confirm => l(:text_are_you_sure)}, :title => l(:button_delete)) %> <% end %> diff --git a/app/views/users/_reply_to.html.erb b/app/views/users/_reply_to.html.erb index 8358a7d23..5c3f2a70b 100644 --- a/app/views/users/_reply_to.html.erb +++ b/app/views/users/_reply_to.html.erb @@ -36,8 +36,6 @@ <%= hidden_field_tag 'reply_id', params[:reply_id], :value => reply.author.id %> <%= hidden_field_tag 'activity_id',params[:activity_id],:value =>@activity_id %> <%= hidden_field_tag 'user_activity_id',params[:user_activity_id],:value =>@user_activity_id %> -
    @@ -45,12 +43,14 @@

    <% end%> <% elsif @type == 'BlogComment' %> - <%= form_for('new_form', :url => {:controller => 'blog_comments',:action => 'reply', :id => reply.id, :blog_id => reply.blog.id}, :method => "post", :remote => true) do |f| %> + <%#= form_for reply, :as => :reply, :url => {:controller => 'blog_comments',:action => 'reply', :id => reply.id, :blog_id => reply.blog.id}, :html => {:multipart => true, :id => 'new_form'} do |f| %> + + <%= form_for('new_form', :url => {:controller => 'blog_comments',:action => 'reply', :id => reply.id, :blog_id => reply.blog.id, :user_id => User.current.id}, :method => "post", :remote => true) do |f| %> <%= hidden_field_tag 'user_activity_id',params[:user_activity_id],:value =>@user_activity_id %> - <%= hidden_field_tag 'activity_id',params[:activity_id],:value =>@activity_id %> <%= hidden_field_tag 'parent_id', params[:parent_id], :value => reply.id %> <%= hidden_field_tag 'reply_id', params[:reply_id], :value => reply.author_id %> + <%= hidden_field_tag 'homepage', params[:homepage], :value => @homepage %>
    diff --git a/app/views/users/_user_blog.html.erb b/app/views/users/_user_blog.html.erb index 868f92979..a19bfc016 100644 --- a/app/views/users/_user_blog.html.erb +++ b/app/views/users/_user_blog.html.erb @@ -41,15 +41,16 @@
    - <% count=activity.children.count %> + <% all_comments = []%> + <% count=get_all_children(all_comments, activity).count %>
    - <%= render :partial => 'users/reply_banner', :locals => {:count => count, :activity => activity, :user_activity_id => user_activity_id} %> + <%= render :partial => 'users/blog_comment_reply_banner', :locals => {:count => count, :activity => activity, :user_activity_id => user_activity_id, :homepage => 0} %> <% all_comments = []%> <% comments = get_all_children(all_comments, activity)[0..2] %> <% if count > 0 %>
    - <%= render :partial => 'users/blog_comments_replies', :locals => {:comments => comments, :user_activity_id => user_activity_id, :type => 'BlogComment', :activity_id =>activity.id}%> + <%= render :partial => 'users/blog_comments_replies', :locals => {:comments => comments, :user_activity_id => user_activity_id, :type => 'BlogComment', :activity_id =>activity.id, :homepage => 0}%>
    <% end %> diff --git a/app/views/users/all_journals.js.erb b/app/views/users/all_journals.js.erb index d03e13742..30ae23bfb 100644 --- a/app/views/users/all_journals.js.erb +++ b/app/views/users/all_journals.js.erb @@ -3,7 +3,9 @@ $('#reply_div_<%= params[:div_id].to_i %>').html('<%=escape_javascript(render :p <% elsif params[:type] == 'JournalsForMessage' %> $('#reply_div_<%= @user_activity_id %>').html('<%=escape_javascript(render :partial => 'users/journal_replies', :locals => {:comments => @journals,:user_activity_id => @user_activity_id, :type => @type, :allow_delete => @allow_delete, :activity_id =>params[:id].to_i}) %>'); <% elsif params[:type] == 'Message' %> -$('#reply_div_<%= params[:div_id].to_i %>').html('<%=escape_javascript(render :partial => 'users/message_replies', :locals => {:comments => @journals,:user_activity_id => @user_activity_id, :type => @type, :activity_id =>params[:id].to_i,:is_course => @is_course, :is_board => @is_board}) %>'); +$('#reply_div_<%= params[:div_id].to_i %>').html('<%=escape_javascript(render :partial => 'users/message_replies', :locals => {:comments => @journals,:user_activity_id => @user_activity_id, :type => @type, :activity_id => params[:id].to_i,:is_course => @is_course, :is_board => @is_board}) %>'); +<% elsif params[:type] == 'BlogComment' %> +$('#reply_div_<%= params[:div_id].to_i %>').html('<%=escape_javascript(render :partial => 'users/blog_comments_replies', :locals => {:comments => @journals,:user_activity_id => @user_activity_id, :type => @type, :activity_id => params[:id].to_i, :homepage => @homepage}) %>'); <% else %> $('#reply_div_<%= params[:div_id].to_i %>').html('<%=escape_javascript(render :partial => 'users/all_replies', :locals => {:comments => @journals}) %>'); <% end %> diff --git a/app/views/users/show_all_replies.js.erb b/app/views/users/show_all_replies.js.erb index ae8803653..2d4321bce 100644 --- a/app/views/users/show_all_replies.js.erb +++ b/app/views/users/show_all_replies.js.erb @@ -1,7 +1,7 @@ <% unless @comment.parent.nil? %> <% if params[:type] == 'JournalsForMessage' && (@comment.jour_type == 'Principal' || @comment.jour_type == 'Course') %> $('#comment_reply_<%=@comment.id %>').html("<%= escape_javascript(render :partial => 'users/journal_comment_reply', :locals => {:comment => @comment.parent})%>"); - <% elsif @comment.class.to_s == 'Message' %> + <% elsif (@comment.class.to_s == 'Message' || @comment.class.to_s == 'BlogComment' ) %> $('#comment_reply_<%=@comment.id %>').html("<%= escape_javascript(render :partial => 'users/journal_comment_reply', :locals => {:comment => @comment.parent})%>"); <% else %> $('#comment_reply_<%=@comment.id %>').html("<%= escape_javascript(render :partial => 'users/comment_reply', :locals => {:comment => @comment.parent})%>"); diff --git a/public/javascripts/application.js b/public/javascripts/application.js index a342a9608..fb7c6cda2 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1409,6 +1409,40 @@ function expand_message_reply(container, btnid, id, type, div_id, is_course, is_ } } +function expand_blog_comment_reply(container, btnid, id, type, div_id, homepage) { + var target = $(container); + var btn = $(btnid); + if (btn.data('init') == '0') { + btn.data('init', 1); + $.get( + '/users/all_journals', + { + type: type, + id: id, + div_id: div_id, + homepage: homepage + }, + function(data) { + + } + ); + btn.html('收起回复'); + //target.show(); + } else if(btn.data('init') == '1') { + btn.data('init', 3); + btn.html('展开更多'); + target.hide(); + target.eq(0).show(); + target.eq(1).show(); + target.eq(2).show(); + } + else { + btn.data('init', 1); + btn.html('收起回复'); + target.show(); + } +} + function expand_reply_homework(container, btnid, id, type, div_id, is_in_course, course_activity, user_activity_id) { var target = $(container); var btn = $(btnid); From 9c560e56b69ef087de2e095909276f0a1e589e20 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 14 Jul 2016 16:54:43 +0800 Subject: [PATCH 41/48] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E7=9B=B4=E6=8E=A5=E7=BB=99=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E5=AF=B9=E8=B1=A1=E5=A2=9E=E5=8A=A0=E6=96=B0=E5=B1=9E?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 10 ++++----- app/api/mobile/apis/resources.rb | 6 ++--- app/api/mobile/apis/syllabuses.rb | 7 +++--- app/api/mobile/entities/attachment.rb | 5 +++++ app/api/mobile/entities/course.rb | 18 ++++++++++++++- app/api/mobile/entities/exercise.rb | 25 ++++++++++++++++++++- app/api/mobile/entities/homework.rb | 2 ++ app/api/mobile/entities/syllabus.rb | 10 +++++---- app/services/resources_service.rb | 27 +++++++++++------------ app/services/syllabuses_service.rb | 6 ++--- public/assets/wechat/myresource.html | 4 ++-- public/assets/wechat/send_class_list.html | 2 +- 12 files changed, 84 insertions(+), 38 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 1cde439b2..5908ef866 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -17,7 +17,7 @@ module Mobile authenticate! cs = CoursesService.new courses = cs.user_courses_list(current_user) - present :data, courses, with: Mobile::Entities::Course + present :data, courses, with: Mobile::Entities::Course,user: current_user present :status, 0 end @@ -56,7 +56,7 @@ module Mobile class_period: params[:class_period] } courses = cs.create_course(cs_params, current_user) - present :data, courses, with: Mobile::Entities::Course + present :data, courses, with: Mobile::Entities::Course,user: current_user present :status, 0 end @@ -90,7 +90,7 @@ module Mobile end cs.edit_course_authorize(current_user,course) course = cs.edit_course(cs_params, course,current_user) - present :data, course, with: Mobile::Entities::Course + present :data, course, with: Mobile::Entities::Course,user: current_user present :status, 0 end post do @@ -138,7 +138,7 @@ module Mobile get 'search' do cs = CoursesService.new courses = cs.search_course(params,current_user.nil? ? User.find(2):current_user) - present :data, courses, with: Mobile::Entities::Course + present :data, courses, with: Mobile::Entities::Course,user: current_user present :status, 0 end @@ -201,7 +201,7 @@ module Mobile cs = CoursesService.new course = cs.show_course(params,(current_user.nil? ? User.find(2):current_user)) #course = Course.find(params[:id]) - present :data, course, with: Mobile::Entities::Course + present :data, course, with: Mobile::Entities::Course,user: current_user { status: 0} end end diff --git a/app/api/mobile/apis/resources.rb b/app/api/mobile/apis/resources.rb index 9bd07a0d5..16531940f 100644 --- a/app/api/mobile/apis/resources.rb +++ b/app/api/mobile/apis/resources.rb @@ -14,7 +14,7 @@ module Mobile rs = ResourcesService.new # data = current_user.course_attachments data = rs.all_course_attachments current_user - present :data, data, with: Mobile::Entities::Attachment + present :data, data, with: Mobile::Entities::Attachment,user: current_user present :status, 0 end @@ -31,7 +31,7 @@ module Mobile rs = ResourcesService.new homeworks = rs.all_homework_commons current_user - present :data, homeworks, with: Mobile::Entities::Homework + present :data, homeworks, with: Mobile::Entities::Homework,user: current_user present :status, 0 end @@ -45,7 +45,7 @@ module Mobile rs = ResourcesService.new exercises = rs.all_exercises current_user - present :data, exercises, with: Mobile::Entities::Exercise + present :data, exercises, with: Mobile::Entities::Exercise,user: current_user present :status, 0 end diff --git a/app/api/mobile/apis/syllabuses.rb b/app/api/mobile/apis/syllabuses.rb index 57db4cb9e..8538fae99 100644 --- a/app/api/mobile/apis/syllabuses.rb +++ b/app/api/mobile/apis/syllabuses.rb @@ -14,7 +14,7 @@ module Mobile cs = SyllabusesService.new courses = cs.user_syllabus(current_user) - present :data, courses, with: Mobile::Entities::Syllabus + present :data, courses, with: Mobile::Entities::Syllabus,user: current_user present :status, 0 end @@ -29,9 +29,8 @@ module Mobile sy = ::Syllabus.find(params[:id]) sy.courses = sy.courses.not_deleted - sy = ss.judge_can_setting(sy,current_user) - present :data, sy, with: Mobile::Entities::Syllabus + present :data, sy, with: Mobile::Entities::Syllabus,user: current_user present :status, 0 end @@ -68,7 +67,7 @@ module Mobile if sy.new_record? {status:-1, message: '创建大纲失败' } else - present :data, sy, with: Mobile::Entities::Syllabus + present :data, sy, with: Mobile::Entities::Syllabus,user: current_user present :status, 0 end diff --git a/app/api/mobile/entities/attachment.rb b/app/api/mobile/entities/attachment.rb index ab6f6fd71..49cb6bd2b 100644 --- a/app/api/mobile/entities/attachment.rb +++ b/app/api/mobile/entities/attachment.rb @@ -2,6 +2,7 @@ module Mobile module Entities class Attachment < Grape::Entity include Redmine::I18n + include ActionView::Helpers::NumberHelper def self.attachment_expose(field) expose field do |f,opt| if f.is_a?(Hash) && f.key?(field) @@ -17,6 +18,10 @@ module Mobile case field when :file_dir "attachments/download/" << f.send(:id).to_s << '/' + when :attafile_size + (number_to_human_size(f.filesize)).gsub("ytes", "").to_s + when :coursename + f.course.nil? ? "" : f.course.name end end end diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index d44869a60..060f43614 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -2,6 +2,8 @@ module Mobile module Entities class Course < Grape::Entity include Redmine::I18n + include ApplicationHelper + include ApiHelper def self.course_expose(field) expose field do |f,opt| c = nil @@ -52,7 +54,21 @@ module Mobile course_expose :updated_at course_expose :course_student_num course_expose :member_count - course_expose :can_setting + expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| + current_user = options[:user] + can_setting = false + member = instance.members.where("user_id=#{current_user.id} and course_id=#{instance.id}")[0] + roleName = member.roles[0].name if member + + if roleName && (roleName == "TeachingAsistant" || roleName == "Teacher" ) + can_setting = true + end + + if instance.tea_id == current_user.id + can_setting = true + end + can_setting + end expose :teacher, using: Mobile::Entities::User do |c, opt| if c.is_a? ::Course c.teacher diff --git a/app/api/mobile/entities/exercise.rb b/app/api/mobile/entities/exercise.rb index 14c530a9b..05066f8a4 100644 --- a/app/api/mobile/entities/exercise.rb +++ b/app/api/mobile/entities/exercise.rb @@ -1,9 +1,32 @@ module Mobile module Entities class Exercise < Grape::Entity + include Redmine::I18n + include ApplicationHelper + include ApiHelper + def self.exercise_expose(field) + expose field do |f,opt| + if f.is_a?(Hash) && f.key?(field) + if field == :created_on + format_time(f[field]) + else + f[field] + end + elsif f.is_a?(::Exercise) + if f.respond_to?(field) + f.send(field) + else + case field + when :coursename + f.course.nil? ? "" : f.course.name + end + end + end + end + end expose :exercise_name expose :exercise_description - expose :coursename #所属班级名 + exercise_expose :coursename #所属班级名 end end end diff --git a/app/api/mobile/entities/homework.rb b/app/api/mobile/entities/homework.rb index 17127f0f2..3f1631c96 100644 --- a/app/api/mobile/entities/homework.rb +++ b/app/api/mobile/entities/homework.rb @@ -37,6 +37,8 @@ module Mobile when :homework_anony_type val = f.homework_type == 1 && !f.homework_detail_manual.nil? val + when :coursename + f.course.nil? ? "" : f.course.name end end end diff --git a/app/api/mobile/entities/syllabus.rb b/app/api/mobile/entities/syllabus.rb index 4f97dd868..e4dd2e07a 100644 --- a/app/api/mobile/entities/syllabus.rb +++ b/app/api/mobile/entities/syllabus.rb @@ -1,12 +1,14 @@ module Mobile module Entities class Syllabus < Grape::Entity - include ApplicationHelper - expose :title expose :id - expose :can_setting - + expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| + current_user = options[:user] + can_setting = instance.user_id == current_user.id ? true : false + can_setting = false if instance.id.nil? + can_setting + end expose :courses, using: Mobile::Entities::Course end end diff --git a/app/services/resources_service.rb b/app/services/resources_service.rb index 41f57429e..bc97437e4 100644 --- a/app/services/resources_service.rb +++ b/app/services/resources_service.rb @@ -1,7 +1,6 @@ #coding=utf-8 class ResourcesService - include ActionView::Helpers::NumberHelper #发送资源到课程 def send_resource_to_course user,params send_id = params[:send_id] @@ -59,11 +58,11 @@ class ResourcesService attchments = Attachment.where("(author_id = #{user.id} and is_publish = 1 and container_id in #{courses_ids} and container_type = 'Course') or (container_type = 'Course' and is_publish = 1 and container_id in #{courses_ids})" ).order("created_on desc") - attchments.each do |v| - course = Course.where("id=?",v.container_id).first - v[:coursename] = course.nil? ? "未知" : course.name - v[:attafile_size] = (number_to_human_size(v[:filesize])).gsub("ytes", "").to_s - end + # attchments.each do |v| + # course = Course.where("id=?",v.container_id).first + # v[:coursename] = course.nil? ? "未知" : course.name + # v[:attafile_size] = (number_to_human_size(v[:filesize])).gsub("ytes", "").to_s + # end attchments end @@ -77,10 +76,10 @@ class ResourcesService homeworks = HomeworkCommon.where("course_id in #{courses_ids} and publish_time <= ?",Time.now.strftime("%Y-%m-%d")).order("created_at desc") - homeworks.each do |v| - course = Course.where("id=?",v.course_id).first - v[:coursename] = course.nil? ? "未知" : course.name - end + # homeworks.each do |v| + # course = Course.where("id=?",v.course_id).first + # v[:coursename] = course.nil? ? "未知" : course.name + # end homeworks end @@ -94,10 +93,10 @@ class ResourcesService exercises = Exercise.where("exercise_status <> 1 and course_id in #{courses_ids}").order("created_at desc") - exercises.each do |v| - course = Course.where("id=?",v.course_id).first - v[:coursename] = course.nil? ? "未知" : course.name - end + # exercises.each do |v| + # course = Course.where("id=?",v.course_id).first + # v[:coursename] = course.nil? ? "未知" : course.name + # end exercises end diff --git a/app/services/syllabuses_service.rb b/app/services/syllabuses_service.rb index 885dea975..d5dec9f88 100644 --- a/app/services/syllabuses_service.rb +++ b/app/services/syllabuses_service.rb @@ -49,9 +49,9 @@ class SyllabusesService syllabuses.to_a #管理权限 can_setting - syllabuses.each do |s| - s = judge_can_setting(s,user) - end + # syllabuses.each do |s| + # s = judge_can_setting(s,user) + # end syllabuses end diff --git a/public/assets/wechat/myresource.html b/public/assets/wechat/myresource.html index 53eb3a23e..6300240d3 100644 --- a/public/assets/wechat/myresource.html +++ b/public/assets/wechat/myresource.html @@ -19,14 +19,14 @@ 请登录Trustie网站,在PC浏览器中上传课件。

    -
    {{r.homework_name}}发送
    +
    {{r.homework_name}}发送
    作业来源:{{r.coursename}}

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

    -
    {{r.exercise_name}}发送
    +
    {{r.exercise_name}}发送
    题目来源:{{r.coursename}}

    暂无测验,
    diff --git a/public/assets/wechat/send_class_list.html b/public/assets/wechat/send_class_list.html index 6d1860e0c..b66b5008d 100644 --- a/public/assets/wechat/send_class_list.html +++ b/public/assets/wechat/send_class_list.html @@ -2,7 +2,7 @@

    -
    发送课程列表
    +
    请选择要发送的班级
    From c524409e4af2ecd851b4a348b9898d2929ab56ee Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 14 Jul 2016 17:15:49 +0800 Subject: [PATCH 42/48] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E6=9F=90=E4=B8=AA=E7=8F=AD=E7=BA=A7=E6=8A=A5=E9=94=99=E7=9A=84?= =?UTF-8?q?BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/course.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/api/mobile/entities/course.rb b/app/api/mobile/entities/course.rb index 060f43614..88c8ba144 100644 --- a/app/api/mobile/entities/course.rb +++ b/app/api/mobile/entities/course.rb @@ -57,14 +57,21 @@ module Mobile expose :can_setting, if: lambda { |instance, options| options[:user] } do |instance, options| current_user = options[:user] can_setting = false - member = instance.members.where("user_id=#{current_user.id} and course_id=#{instance.id}")[0] + + if instance[:course] + course = instance[:course] + else + course = instance + end + + member = course.members.where("user_id=#{current_user.id} and course_id=#{course.id}")[0] roleName = member.roles[0].name if member if roleName && (roleName == "TeachingAsistant" || roleName == "Teacher" ) can_setting = true end - if instance.tea_id == current_user.id + if course.tea_id == current_user.id can_setting = true end can_setting From b77779ca55f9ae4ac5b002461c3ad7f08baec7c1 Mon Sep 17 00:00:00 2001 From: cxt Date: Thu, 14 Jul 2016 17:23:48 +0800 Subject: [PATCH 43/48] =?UTF-8?q?=E6=96=87=E7=AB=A0=E7=9A=84=E4=BA=8C?= =?UTF-8?q?=E7=BA=A7=E5=9B=9E=E5=A4=8D=E5=92=8C=E7=BB=84=E7=BB=87=E5=B8=96?= =?UTF-8?q?=E5=AD=90=E7=9A=84=E4=BA=8C=E7=BA=A7=E5=9B=9E=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org_document_comments_controller.rb | 38 ++--- app/controllers/users_controller.rb | 11 +- app/helpers/application_helper.rb | 9 +- .../messages/_org_subfield_show.html.erb | 132 ++++++++++-------- .../_simple_ke_reply_form.html.erb | 3 +- .../org_document_comments/destroy.js.erb | 5 +- app/views/org_document_comments/quote.js.erb | 2 - app/views/org_document_comments/reply.js.erb | 5 +- app/views/org_document_comments/show.html.erb | 70 ++++++---- .../_org_subfield_message.html.erb | 16 +-- .../organizations/_show_org_document.html.erb | 18 ++- .../users/_comment_reply_detail.html.erb | 2 +- app/views/users/_course_message.html.erb | 2 - .../users/_org_document_replies.html.erb | 60 ++++++++ app/views/users/_reply_to.html.erb | 14 +- app/views/users/all_journals.js.erb | 2 + 16 files changed, 245 insertions(+), 144 deletions(-) create mode 100644 app/views/users/_org_document_replies.html.erb diff --git a/app/controllers/org_document_comments_controller.rb b/app/controllers/org_document_comments_controller.rb index 264c1fc9f..924be596e 100644 --- a/app/controllers/org_document_comments_controller.rb +++ b/app/controllers/org_document_comments_controller.rb @@ -123,10 +123,14 @@ class OrgDocumentCommentsController < ApplicationController def destroy @org_document_comment = OrgDocumentComment.find(params[:id]) @org_sub_id = @org_document_comment.org_subfield_id - org = @org_document_comment.organization + org = @org_document_comment.root.organization if @org_document_comment.id == org.home_id org.update_attributes(:home_id => nil) end + if params[:user_activity_id] + @act = OrgActivity.find(params[:user_activity_id]) + @document = @org_document_comment.root + end if @org_document_comment.destroy end respond_to do |format| @@ -145,48 +149,26 @@ class OrgDocumentCommentsController < ApplicationController end def quote @org_comment = OrgDocumentComment.find(params[:id]) - @subject = @org_comment.content - @subject = "RE: #{@subject}" unless @subject.starts_with?('RE:') - - @content = "> #{ll(Setting.default_language, :text_user_wrote, User.find(@org_comment.creator_id).realname)}\n> " @temp = OrgDocumentComment.new - #@course_id = params[:course_id] - @temp.content = "
    #{ll(Setting.default_language, :text_user_wrote, User.find(@org_comment.creator_id).realname)}
    #{@org_comment.content.html_safe}
    ".html_safe respond_to do | format| format.js end end def reply - @document = OrgDocumentComment.find(params[:id]).root - @quote = params[:quote][:quote] + @document = OrgDocumentComment.find(params[:id]) @org_document = OrgDocumentComment.new(:creator_id => User.current.id, :reply_id => params[:id]) - # params[:blog_comment][:sticky] = params[:blog_comment][:sticky] || 0 - # params[:blog_comment][:locked] = params[:blog_comment][:locked] || 0 @org_document.title = params[:org_document_comment][:title] @org_document.content = params[:org_document_comment][:content] - @org_document.content = @quote + @org_document.content - #@org_document.title = "RE: #{@article.title}" unless params[:blog_comment][:title] + @document.children << @org_document - # @user_activity_id = params[:user_activity_id] - # user_activity = UserActivity.where("act_type='BlogComment' and act_id =#{@article.id}").first - # if user_activity - # user_activity.updated_at = Time.now - # user_activity.save - # end - # attachments = Attachment.attach_files(@org_document, params[:attachments]) - # render_attachment_warning_if_needed(@org_document) - #@article.save - # redirect_to user_blogs_path(:user_id=>params[:user_id]) + @document = @document.root + @user_activity_id = params[:user_activity_id] + @act = OrgActivity.find(@user_activity_id) if @user_activity_id respond_to do |format| format.html { - # if params[:course_id] #如果呆了course_id过来了,那么这是要跳到课程大纲去的 - # redirect_to syllabus_course_path(:id=>params[:course_id]) - # else redirect_to org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id) - # end - } format.js end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index e7c75eb13..335604205 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -128,6 +128,11 @@ class UsersController < ApplicationController @activity_id = params[:activity_id] @homepage = params[:homepage] @type = 'BlogComment' + when 'OrgDocumentComment' + @reply = OrgDocumentComment.find params[:reply_id] + @user_activity_id = params[:user_activity_id] + @activity_id = params[:activity_id] + @type = 'OrgDocumentComment' end respond_to do |format| format.js @@ -3286,7 +3291,10 @@ class UsersController < ApplicationController case params[:type] when 'OrgDocumentComment' obj = OrgDocumentComment.where('id = ?', params[:id].to_i).first - @journals = obj.children.reorder("created_at desc") + @user_activity_id = params[:div_id].to_i if params[:div_id] + @type = 'OrgDocumentComment' + comments = [] + @journals = get_all_children(comments, obj) when 'Message' obj = Message.where('id = ?', params[:id].to_i).first @type = 'Message' @@ -3315,6 +3323,7 @@ class UsersController < ApplicationController obj = BlogComment.where('id = ?', params[:id].to_i).first @user_activity_id = params[:div_id].to_i if params[:div_id] @homepage = params[:homepage].to_i + @type = 'BlogComment' comments = [] @journals = get_all_children(comments, obj) when 'HomeworkCommon' diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3d8d970b5..1306d5625 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -3141,13 +3141,18 @@ end #获取所有子节点 def get_all_children result, jour - if (jour.kind_of? JournalsForMessage) || (jour.kind_of? Message) || (jour.kind_of? BlogComment) + if (jour.kind_of? JournalsForMessage) || (jour.kind_of? Message) || (jour.kind_of? BlogComment) || (jour.kind_of? OrgDocumentComment) jour.children.each do |jour_child| result << jour_child get_all_children result, jour_child end end - result.sort! { |a,b| b.created_on <=> a.created_on } + if jour.respond_to?(:created_on) + result.sort! { |a,b| b.created_on <=> a.created_on } + elsif jour.respond_to?(:created_at) + result.sort! { |a,b| b.created_at <=> a.created_at } + end + result end #将有置顶属性的提到数组前面 diff --git a/app/views/messages/_org_subfield_show.html.erb b/app/views/messages/_org_subfield_show.html.erb index e5455bc85..39fceb456 100644 --- a/app/views/messages/_org_subfield_show.html.erb +++ b/app/views/messages/_org_subfield_show.html.erb @@ -4,22 +4,22 @@
    - <%= link_to image_tag(url_to_avatar(@topic.author),:width=>50,:height => 50,:alt=>'图像' ),user_path(@topic.author) %> + <%= link_to image_tag(url_to_avatar(@topic.author), :width => 50, :height => 50, :alt => '图像'), user_path(@topic.author) %>
    <% if User.current.logged? %> -