From d96b87cf42701f5bd2961b34c35c8f1d588f3b7c Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 9 Mar 2015 15:23:24 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=8A=A8=E6=80=81=E6=8E=A5=E5=8F=A3=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/course_dynamic.rb | 10 ++- app/services/courses_service.rb | 83 +++++++++++++++++++---- config/locales/en.yml | 7 ++ config/locales/zh.yml | 7 ++ 4 files changed, 92 insertions(+), 15 deletions(-) diff --git a/app/api/mobile/entities/course_dynamic.rb b/app/api/mobile/entities/course_dynamic.rb index 5e22e3df7..aa8aadbb6 100644 --- a/app/api/mobile/entities/course_dynamic.rb +++ b/app/api/mobile/entities/course_dynamic.rb @@ -1,9 +1,15 @@ module Mobile module Entities class CourseDynamic < Grape::Entity + include Redmine::I18n def self.course_dynamic_expose(field) expose field do |c,opt| - c[field] if (c.is_a?(Hash) && c.key?(field)) + if field == :update_time + (format_time(c[field]) if (c.is_a?(Hash) && c.key?(field))) + else + c[field] if (c.is_a?(Hash) && c.key?(field)) + end + end end course_dynamic_expose :type @@ -11,6 +17,8 @@ module Mobile course_dynamic_expose :course_name course_dynamic_expose :course_id course_dynamic_expose :course_img_url + course_dynamic_expose :message + course_dynamic_expose :update_time end end end \ No newline at end of file diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 46b59ef08..17c96a2fb 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -344,25 +344,80 @@ class CoursesService else membership = @user.coursememberships.all(:conditions => Course.visible_condition(current_user)) end + if membership.nil? || membership.count == 0 + raise l(:label_no_courses,:locale => current_user.language.nil? ? 'zh':current_user.language) + end membership.sort! {|older, newer| newer.created_on <=> older.created_on } result = [] membership.each do |mp| course = mp.course - unless current_user.nil? || !(current_user.admin? || course.is_public == 1 || (course.is_public == 0 && current_user.member_of_course?(course))) - count,is_teacher = get_course_anonymous_evaluation current_user,course - if is_teacher - student_commit_number = count - else - need_anonymous_comments_count = count + #unless current_user.nil? || !(current_user.admin? || course.is_public == 1 || (course.is_public == 0 && current_user.member_of_course?(course))) + # count,is_teacher = get_course_anonymous_evaluation current_user,course + # if is_teacher + # student_commit_number = count + # else + # need_anonymous_comments_count = count + # end + # news_count = course.news.count + # message_count = course.journals_for_messages.count + # + # result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 1,:count => message_count} + # result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 2,:count => need_anonymous_comments_count} + # result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 3,:count => student_commit_number} + # result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 4,:count => news_count} + # #{:course_name => course.name,:need_anonymous_comments_count=>need_anonymous_comments_count,:student_commit_number=>student_commit_number,:news_count=> news_count,:message_count=>message_count} + #end + latest_course_dynamics = [] + latest_news = course.news.order("created_on desc").first + unless latest_news.nil? + latest_course_dynamics << {:type => 1,:time => latest_news.created_on,:message => l(:label_recently_updated_notification,:locale => current_user.language.nil? ? 'zh':current_user.language)} + end + latest_message = course.journals_for_messages.order("created_on desc").first + unless latest_message.nil? + latest_course_dynamics << {:type => 2,:time => latest_message.created_on,:message => l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)} + end + latest_attachment = course.attachments.order("created_on desc").first + unless latest_attachment.nil? + latest_course_dynamics << {:type => 3,:time => latest_attachment.created_on,:message => l(:label_recently_updated_courseware,:locale => current_user.language.nil? ? 'zh':current_user.language)} + end + latest_bid = course.homeworks.order('updated_on DESC').first + unless latest_bid.nil? + latest_course_dynamics << {:type => 4,:time => latest_bid.updated_on,:message => l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)} + end + #每个作业中的最新留言 + messages = [] + course.homeworks.each do |bid| + jour = bid.journals_for_messages.order("created_on desc").first + unless jour.nil? + messages << jour end - news_count = course.news.count - message_count = course.journals_for_messages.count - - result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 1,:count => message_count} - result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 2,:count => need_anonymous_comments_count} - result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 3,:count => student_commit_number} - result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 4,:count => news_count} - #{:course_name => course.name,:need_anonymous_comments_count=>need_anonymous_comments_count,:student_commit_number=>student_commit_number,:news_count=> news_count,:message_count=>message_count} + end + unless messages.count == 0 + messages.sort!{|order,newer| newer.created_on <=> order.created_on} + end + latest_bid_message = messages.first + unless latest_bid_message.nil? + latest_course_dynamics << {:type => 2,:time => latest_bid_message.created_on,:message => l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)} + end + #每个作业中学生最后提交的作业 + homeworks = [] + course.homeworks.each do |bid| + homework_attach = bid.homeworks.order('updated_at DESC').first + unless homework_attach.nil? + homeworks << homework_attach + end + end + unless homeworks.count == 0 + homeworks.sort!{|order,newer| newer.updated_at <=> order.updated_at} + end + latest_homework_attach = homeworks.first + unless latest_homework_attach.nil? + latest_course_dynamics << {:type => 4,:time => latest_homework_attach.updated_at,:message => l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)} + end + latest_course_dynamics.sort!{|order,newer| newer[:time] <=> order[:time]} + latest_course_dynamic = latest_course_dynamics.first + unless latest_course_dynamic.nil? + result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => latest_course_dynamic[:type],:update_time => latest_course_dynamic[:time],:message => latest_course_dynamic[:message],:count => nil} end end result diff --git a/config/locales/en.yml b/config/locales/en.yml index 857259392..8149850cb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1876,3 +1876,10 @@ en: label_submit_comments: Submit_comments label_course_empty_select: You have not selected course! label_enterprise_page_made: enterprise_page + + #api + label_recently_updated_notification: Recently updated notification + label_recently_updated_homework: Recently updated the homework + label_recently_updated_message: Recently updated the message + label_recently_updated_courseware: Recently updated the courseware + label_no_courses: You do not participate in any course, please search the curriculum, course, or create a course! diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 1faa9227d..9310c0f04 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2569,3 +2569,10 @@ zh: label_part_enterprise_tips: 您可能对系统的其它项目感兴趣! label_enterprise_nil: 该模块为最新上线模块,目前还没有创建企业项目! label_enterprises: 组织 + + #api + label_recently_updated_notification: 最近更新了通知 + label_recently_updated_homework: 最近更新了作业 + label_recently_updated_message: 最近更新了留言 + label_recently_updated_courseware: 最近更新了课件 + label_no_courses: 您没有参与任何课程,请搜索课程、加入课程,或者创建课程吧! From 83cc1b41f35307f57f280138b63b859e0282ac3f Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 9 Mar 2015 15:27:01 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E6=AD=A3api=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 4808c84c0..8f7f0342f 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -41,7 +41,7 @@ module Mobile mount Apis::Comments #add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'}) - add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development? + #add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development? end end From 26adc13ca24cd7d1c690768c0f5ae17e472a92b9 Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 9 Mar 2015 15:45:09 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=8A=A8=E6=80=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/courses_service.rb | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 17c96a2fb..dd49b6bd8 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -1,3 +1,4 @@ +#coding=utf-8 class CoursesService include ApplicationHelper include CoursesHelper @@ -351,38 +352,22 @@ class CoursesService result = [] membership.each do |mp| course = mp.course - #unless current_user.nil? || !(current_user.admin? || course.is_public == 1 || (course.is_public == 0 && current_user.member_of_course?(course))) - # count,is_teacher = get_course_anonymous_evaluation current_user,course - # if is_teacher - # student_commit_number = count - # else - # need_anonymous_comments_count = count - # end - # news_count = course.news.count - # message_count = course.journals_for_messages.count - # - # result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 1,:count => message_count} - # result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 2,:count => need_anonymous_comments_count} - # result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 3,:count => student_commit_number} - # result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => 4,:count => news_count} - # #{:course_name => course.name,:need_anonymous_comments_count=>need_anonymous_comments_count,:student_commit_number=>student_commit_number,:news_count=> news_count,:message_count=>message_count} - #end latest_course_dynamics = [] latest_news = course.news.order("created_on desc").first unless latest_news.nil? - latest_course_dynamics << {:type => 1,:time => latest_news.created_on,:message => l(:label_recently_updated_notification,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 1,:time => latest_news.created_on,:message => '最近更新了通知' }#l(:label_recently_updated_notification,:locale => current_user.language.nil? ? 'zh':current_user.language)} end latest_message = course.journals_for_messages.order("created_on desc").first unless latest_message.nil? - latest_course_dynamics << {:type => 2,:time => latest_message.created_on,:message => l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 2,:time => latest_message.created_on,:message => '最近更新了留言'}#l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)} end latest_attachment = course.attachments.order("created_on desc").first unless latest_attachment.nil? - latest_course_dynamics << {:type => 3,:time => latest_attachment.created_on,:message => l(:label_recently_updated_courseware,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 3,:time => latest_attachment.created_on,:message => '最近更新了课件'}#l(:label_recently_updated_courseware,:locale => current_user.language.nil? ? 'zh':current_user.language)} end latest_bid = course.homeworks.order('updated_on DESC').first unless latest_bid.nil? - latest_course_dynamics << {:type => 4,:time => latest_bid.updated_on,:message => l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 4,:time => latest_bid.updated_on,:message => '最近更新了作业'}#l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)} end #每个作业中的最新留言 messages = [] @@ -397,7 +382,7 @@ class CoursesService end latest_bid_message = messages.first unless latest_bid_message.nil? - latest_course_dynamics << {:type => 2,:time => latest_bid_message.created_on,:message => l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 2,:time => latest_bid_message.created_on,:message => '最近更新了留言'}#l(:label_recently_updated_message,:locale => current_user.language.nil? ? 'zh':current_user.language)} end #每个作业中学生最后提交的作业 homeworks = [] @@ -412,7 +397,7 @@ class CoursesService end latest_homework_attach = homeworks.first unless latest_homework_attach.nil? - latest_course_dynamics << {:type => 4,:time => latest_homework_attach.updated_at,:message => l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)} + latest_course_dynamics << {:type => 4,:time => latest_homework_attach.updated_at,:message => '最近更新了作业'}#l(:label_recently_updated_homework,:locale => current_user.language.nil? ? 'zh':current_user.language)} end latest_course_dynamics.sort!{|order,newer| newer[:time] <=> order[:time]} latest_course_dynamic = latest_course_dynamics.first From 6ca853edc79ec10e888b2151f084894acdc2baeb Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 9 Mar 2015 17:28:17 +0800 Subject: [PATCH 4/5] =?UTF-8?q?1=E3=80=81=E8=AF=BE=E7=A8=8B=E9=A6=96?= =?UTF-8?q?=E9=A1=B52=E3=80=81=E7=94=A8=E6=88=B7=E9=A6=96=E9=A1=B53?= =?UTF-8?q?=E3=80=81=E8=AF=BE=E7=A8=8B=E7=95=99=E8=A8=80=E9=A1=B54?= =?UTF-8?q?=E3=80=81=E5=8F=91=E5=B8=83=E4=BD=9C=E4=B8=9A=E9=A1=B55?= =?UTF-8?q?=E3=80=81=E7=94=A8=E6=88=B7=E7=9A=84=E7=95=99=E8=A8=80=E9=A1=B5?= =?UTF-8?q?6=E3=80=81=E4=B8=BA=E8=AF=BE=E7=A8=8B=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=BD=9C=E5=93=81=E9=A1=B5=E4=BC=A0=E9=80=92?= =?UTF-8?q?apptoken=E5=8F=82=E6=95=B0=E6=97=B6=E8=87=AA=E5=8A=A8=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 16 ++++++++++++++++ app/controllers/courses_controller.rb | 1 + app/controllers/homework_attach_controller.rb | 2 +- app/controllers/users_controller.rb | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 06e5dac30..1c26ec07e 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -177,6 +177,22 @@ class ApplicationController < ActionController::Base end end + def logged_user_by_apptoken + #从手机端传来apptoken则将当前登陆用户变为对应的用户 + if params[:apptoken] + token = ApiKey.where(access_token: params[:apptoken]).first + if token && !token.expired? + @current_user = User.find(token.user_id) + end + unless @current_user.nil? + self.logged_user = @current_user + if @current_user + @current_user.update_column(:last_login_on, Time.now) + end + end + end + end + # Logs out current user def logout_user if User.current.logged? diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 8fae547c4..9b66c047f 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -17,6 +17,7 @@ class CoursesController < ApplicationController menu_item l(:label_sort_by_influence), :only => :index before_filter :can_show_course, :except => [] + before_filter :logged_user_by_apptoken,:only => [:show,:new_homework,:feedback] before_filter :find_course, :except => [ :index, :search,:list, :new,:join,:unjoin, :create, :copy, :statistics, :new_join, :course, :enterprise_course, :course_enterprise,:view_homework_attaches,:join_private_courses] before_filter :authorize_course, :only => [:show, :settings, :edit, :update, :modules, :close, :reopen, :view_homework_attaches, :course] before_filter :authorize_course_global, :only => [:view_homework_attaches, :new,:create] diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb index 2c943e778..ba7e92467 100644 --- a/app/controllers/homework_attach_controller.rb +++ b/app/controllers/homework_attach_controller.rb @@ -6,7 +6,7 @@ class HomeworkAttachController < ApplicationController ############################### before_filter :can_show_course,except: [] #判断当前角色权限时需先找到当前操作的project - before_filter :find_course_by_bid_id, :only => [:new] + before_filter :logged_user_by_apptoken,:find_course_by_bid_id, :only => [:new] before_filter :find_bid_and_course,:only => [:get_not_batch_homework,:get_batch_homeworks,:get_homeworks,:get_homework_jours, :get_student_batch_homework, :get_my_homework] before_filter :find_course_by_hoemwork_id, :only => [:edit,:update,:destroy,:show,:add_homework_users,:destory_homework_users, :praise_homework] #判断当前角色是否有操作权限 diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 48c08e2fc..e6171bf81 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -19,6 +19,7 @@ class UsersController < ApplicationController layout :setting_layout #Added by young before_filter :auth_login1, :only => [:show, :user_activities, :user_newfeedback] + before_filter :logged_user_by_apptoken, :only => [:show,:user_newfeedback] menu_item :activity menu_item :user_information, :only => :info menu_item :user_course, :only => :user_courses From 052afefa5eed3ee86d4a1300b7402cfd50db0c0e Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 9 Mar 2015 17:32:38 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E6=8C=89=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=80=92=E5=BA=8F=E6=8E=92=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/courses_service.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index dd49b6bd8..c0d3d2f83 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -405,6 +405,7 @@ class CoursesService result << {:course_name => course.name,:course_id => course.id,:course_img_url => url_to_avatar(course),:type => latest_course_dynamic[:type],:update_time => latest_course_dynamic[:time],:message => latest_course_dynamic[:message],:count => nil} end end + result.sort!{|order,newer| newer[:update_time] <=> order[:update_time]} result end