diff --git a/app/api/mobile/apis/activities.rb b/app/api/mobile/apis/activities.rb
index 661925012..b4fb90ea7 100644
--- a/app/api/mobile/apis/activities.rb
+++ b/app/api/mobile/apis/activities.rb
@@ -10,30 +10,44 @@ module Mobile
params do
requires :page, type: Integer
requires :token, type: String
+ requires :container_type, type: String
end
post do
authenticate!
user = current_user
- shield_project_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id)
- shield_course_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id)
+ container_type = params[:container_type] ? params[:container_type] : "All"
+
+ if container_type == "All" || container_type == "Project"
+ shield_project_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id)
+ user_project_ids = (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).join(",") + ")"
+ project_types = "('Message','Issue','Project')"
+ end
+
+ if container_type == "All" || container_type == "Course"
+ shield_course_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id)
+ user_course_ids = (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")"
+ course_types = "('Message','News','HomeworkCommon','Poll','Course')"
+ end
+
page = params[:page] ? params[:page] : 0
- user_project_ids = (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).join(",") + ")"
- user_course_ids = (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")"
- course_types = "('Message','News','HomeworkCommon','Poll','Course')"
- project_types = "('Message','Issue','Project')"
principal_types = "JournalsForMessage"
watched_user_ids = User.watched_by(user.id).count == 0 ? " " : ("," + User.watched_by(user.id).map{|u| u.id.to_s }.join(','))
user_ids = "(" + user.id.to_s + watched_user_ids + ")"
watched_user_blog_ids = Blog.select("id").where("author_id in #{user_ids}").count == 0 ? " " :Blog.select("id").where("author_id in #{user_ids}").map { |blog| blog.id}.join(",")
blog_ids = "(" + watched_user_blog_ids + ")"
- activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" +
- "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+
- "or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{user.id}) " +
- "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc')
-
+ if container_type == "Course"
+ activities = UserActivity.where("(container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types})").order('updated_at desc')
+ elsif container_type == "Project"
+ activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})").order('updated_at desc')
+ else
+ activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" +
+ "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+
+ "or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{user.id}) " +
+ "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc')
+ end
all_count = activities.count
activities = activities.limit(10).offset(page * 10)
count = activities.count
@@ -42,6 +56,7 @@ module Mobile
present :count, count
present :page, page
present :status, 0
+ present :container_type, container_type
end
end
end
diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html
index a51a0f5f0..037ef8277 100644
--- a/public/assets/wechat/activities.html
+++ b/public/assets/wechat/activities.html
@@ -6,14 +6,19 @@
我的动态
+
+
+
+
+
-
-
+
+
+
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
{{act.author.realname}}
+
{{act.author.nickname}}
+

+

+
+
{{act.latest_update}}
+
+
【作业】{{act.subject|safeHtml}}
+
+
+
迟交扣分:{{act.homework_common_detail.late_penalty}}分 匿评开启时间:{{act.homework_common_detail.evaluation_start}}
+
缺评扣分:{{act.homework_common_detail.absence_penalty}}分/作品 匿评关闭时间:{{act.homework_common_detail.evaluation_end}}
+
+
+
+
来源: {{act.course_project_name}}
+
+
赞
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{act.author.realname}}
+
{{act.author.nickname}}
+

+

+
+
{{act.latest_update}}
+
+
【通知】{{act.subject|safeHtml}}
+
+
+
+
来源: {{act.course_project_name}}
+
+
赞
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{act.author.realname}}
+
{{act.author.nickname}}
+

+

+
+
{{act.latest_update}}
+
+
【帖子】{{act.subject|safeHtml}}
+
+
+
+
+
来源: {{act.course_project_name}}
+
+
赞
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{act.author.realname}}创建了{{act.course_project_name}} | 课程
+
{{act.latest_update}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{act.author.realname}}
+
{{act.author.nickname}}
+

+

+
+
{{act.latest_update}}
+
+
【帖子】{{act.subject|safeHtml}}
+
+
+
状态:{{act.issue_detail.issue_status}} 优先级:{{act.issue_detail.issue_priority}}
+
指派给:{{act.issue_detail.issue_assigned_to}} 完成度:{{act.issue_detail.done_ratio}}%
+
+
+
+
来源: {{act.course_project_name}}
+
+
赞
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{act.author.realname}}
+
{{act.author.nickname}}
+

+

+
+
{{act.latest_update}}
+
+
【帖子】{{act.subject|safeHtml}}
+
+
+
+
来源: {{act.course_project_name}}
+
+
赞
+
{{act.praise_count}}
+
{{act.praise_count}}
+
+
+
+
+
+
+
-
-
更多
+
+
+
+
+
+
{{act.author.realname}}创建了{{act.course_project_name}} | 项目
+
{{act.latest_update}}
+
+
+
+
+
+
+
+
+
diff --git a/public/javascripts/wechat/controllers/activity.js b/public/javascripts/wechat/controllers/activity.js
index 73bd09f26..b89c46300 100644
--- a/public/javascripts/wechat/controllers/activity.js
+++ b/public/javascripts/wechat/controllers/activity.js
@@ -6,6 +6,8 @@ app.controller('ActivityController',
return url;
};
+ $scope.menus = ['所有动态', '课程动态', '项目动态'];
+
$scope.alertService = alertService.create();
console.log("ActivityController load");
@@ -13,33 +15,119 @@ app.controller('ActivityController',
$scope.activities = rms.get("activities") || [];
$scope.has_more = rms.get("has_more");
- $scope.loadActData = function(page){
+ $scope.course_page = rms.get('course_page') || 0;
+ $scope.course_activities = rms.get("course_activities") || [];
+ $scope.course_has_more = rms.get("course_has_more");
+
+ $scope.project_page = rms.get('project_page') || 0;
+ $scope.project_activities = rms.get("project_activities") || [];
+ $scope.project_has_more = rms.get("project_has_more");
+
+ $scope.loadActData = function(index,page){
+ container_type = "All";
+ switch(index){
+ case 1:
+ container_type = "All";
+ $scope.page = page;
+ break;
+ case 2:
+ container_type = "Course";
+ $scope.course_page = page;
+ break;
+ case 3:
+ container_type = "Project";
+ $scope.project_page = page;
+ break;
+ }
- $scope.page = page;
$http({
method: 'POST',
url: apiUrl+ "activities",
- data: {token: auth.token(), page: page}
+ data: {token: auth.token(), page: page, container_type: container_type}
}).then(function successCallback(response) {
if(response.data.page >0) {
- $scope.activities = $scope.activities.concat(response.data.data);
+ switch(response.data.container_type){
+ case "All":
+ $scope.activities = $scope.activities.concat(response.data.data);
+ break;
+ case "Course":
+ $scope.course_activities = $scope.course_activities.concat(response.data.data);
+ break;
+ case "Project":
+ $scope.project_activities = $scope.project_activities.concat(response.data.data);
+ break;
+ case 3:
+ }
} else {
- $scope.activities = response.data.data;
+ switch(response.data.container_type){
+ case "All":
+ $scope.activities = response.data.data;
+ break;
+ case "Course":
+ $scope.course_activities = response.data.data;
+ break;
+ case "Project":
+ $scope.project_activities = response.data.data;
+ break;
+ case 3:
+ }
}
- rms.save("activities", $scope.activities);
- $scope.has_more = (response.data.count + response.data.page * 10) < response.data.all_count;
- rms.save('has_more', $scope.has_more);
- rms.save('page', response.data.page);
-
+ switch(response.data.container_type){
+ case "All":
+ rms.save("activities", $scope.activities);
+ $scope.has_more = (response.data.count + response.data.page * 10) < response.data.all_count;
+ rms.save('has_more', $scope.has_more);
+ rms.save('page', response.data.page);
+ break;
+ case "Course":
+ rms.save("course_activities", $scope.course_activities);
+ $scope.course_has_more = (response.data.count + response.data.page * 10) < response.data.all_count;
+ rms.save('course_has_more', $scope.course_has_more);
+ rms.save('course_page', response.data.page);
+ break;
+ case "Project":
+ rms.save("project_activities", $scope.project_activities);
+ $scope.project_has_more = (response.data.count + response.data.page * 10) < response.data.all_count;
+ rms.save('project_has_more', $scope.project_has_more);
+ rms.save('project_page', response.data.page);
+ break;
+ case 3:
+ }
console.log(response.data);
}, function errorCallback(response) {
});
};
+ $scope.tab = function(index){
+ $scope.currentTab = index;
+ switch(index){
+ //ALL
+ case 1:
+ if($scope.activities.length<=0){
+ $scope.loadActData(index,0);
+ }
+ break;
+ //Course
+ case 2:
+ if($scope.course_activities.length<=0){
+ $scope.loadActData(index,0);
+ }
+ break;
+ //Project
+ case 3:
+ if($scope.project_activities.length<=0){
+ $scope.loadActData(index,0);
+ }
+ break;
+ }
+ }
+
+ $scope.currentTab = 1;
+
if($scope.activities.length<=0){
- $scope.loadActData(0);
+ $scope.loadActData(1,0);
} else {
$timeout(function(){
window.scrollTo(0, rms.get("yoffset"));