diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 181f76b22..bc5c15873 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -25,21 +25,28 @@ class AccountController < ApplicationController # Login request and validation def login if request.get? + @login = params[:login] || true if User.current.logged? redirect_to home_url + else + render :layout => 'login' end else authenticate_user end end + def agreement + render :layout => 'users_base' + end + # Log out current user and redirect to welcome page def logout if User.current.anonymous? - redirect_to home_url + redirect_to signin_path elsif request.post? logout_user - redirect_to home_url + redirect_to signin_path end # display the logout form end @@ -128,10 +135,12 @@ class AccountController < ApplicationController end when '3' #register_automatically(@user) - unless @user.new_record? + if !@user.new_record? self.logged_user = @user flash[:notice] = l(:notice_account_activated) redirect_to my_account_url + else + redirect_to signin_path end else #register_manually_by_administrator(@user) @@ -354,11 +363,13 @@ class AccountController < ApplicationController def invalid_credentials logger.warn "Failed login for '#{params[:username]}' from #{request.remote_ip} at #{Time.now.utc}" flash.now[:error] = l(:notice_account_invalid_creditentials) + render :layout => 'login' end def invalid_credentials_new logger.warn "Failed login for '#{params[:username]}' from #{request.remote_ip} at #{Time.now.utc}" flash.now[:error] = l(:notice_account_invalid_creditentials_new) + render :layout => 'login' end # Register a user for email activation. diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 29f2e00f4..db972941e 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -113,7 +113,8 @@ class CoursesController < ApplicationController courses = Course.visible.where("LOWER(name) like '%#{params[:name].to_s.downcase}%'") @courses = paginateHelper courses,10 end - + @name = params[:name] + @type = 'courses' respond_to do |format| format.html { render :layout => 'course_base' diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index 103030d51..4124472e1 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -137,7 +137,7 @@ class MyController < ApplicationController @se.identity = params[:identity].to_i if params[:identity] @se.technical_title = params[:technical_title] if params[:technical_title] @se.student_id = params[:no] if params[:no] - @se.brief_introduction = params[:brief_introduction] + # @se.brief_introduction = params[:brief_introduction] @se.description = params[:description] if @user.save && @se.save @@ -157,7 +157,7 @@ class MyController < ApplicationController File.delete(diskfile1) if File.exist?(diskfile1) end - render :layout=>'base_users_new' + render :layout=>'new_base_user' end # Destroys user's account diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index f042bba50..77933666f 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -93,7 +93,8 @@ class ProjectsController < ApplicationController @project_count = Project.project_entities.visible.like(params[:name]).page(params[:page]).count @project_pages = Paginator.new @project_count, @limit, params['page'] - + @name = params[:name] + @type = 'projects' respond_to do |format| format.html { render :layout => 'base' diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 50496fbf8..cefb6514c 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -45,14 +45,14 @@ class UsersController < ApplicationController :activity_new_score_index, :influence_new_score_index, :score_new_index,:update_score,:user_activities,:user_projects_index, :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist, :user_resource,:user_resource_create,:user_resource_delete,:rename_resource,:search_user_course,:add_exist_file_to_course, - :search_user_project,:resource_preview,:resource_search,:add_exist_file_to_project,:user_messages, :user_messages_new] + :search_user_project,:resource_preview,:resource_search,:add_exist_file_to_project,:user_messages, :edit_brief_introduction] #edit has been deleted by huang, 2013-9-23 before_filter :find_user, :only => [:user_fanslist, :user_watchlist, :show, :edit, :update, :destroy, :edit_membership, :user_courses, :user_homeworks, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :watch_contests, :info, :watch_projects, :show_score, :topic_score_index, :project_score_index, :activity_score_index, :influence_score_index, :score_index,:show_new_score, :topic_new_score_index, :project_new_score_index, :activity_new_score_index, :influence_new_score_index, :score_new_index,:user_projects_index,:user_resource, - :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages,:edit_brief_introduction, :user_messages_new] + :user_courses4show,:user_projects4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages,:edit_brief_introduction] before_filter :auth_user_extension, only: :show #before_filter :rest_user_score, only: :show #before_filter :select_entry, only: :user_projects @@ -75,6 +75,7 @@ class UsersController < ApplicationController include GitlabHelper include UserScoreHelper helper :user_score + helper :journals # added by liuping 关注 @@ -119,7 +120,7 @@ class UsersController < ApplicationController user_querys.update_all(:viewed => true) forum_querys.update_all(:viewed => true) end - @new_message_count = @user.forge_messages.count + @user.memo_messages.count + @user.course_messages.count + @user.user_feedback_messages.count + @new_message_count = forge_querys.count + forum_querys.count + course_querys.count + user_querys.count case params[:type] when nil @message_alls = [] @@ -127,27 +128,15 @@ class UsersController < ApplicationController messages.each do |message_all| @message_alls << message_all.message end - - # @user_course_messages = MessageAll.where("user_id =? and message_type=?",@user,"CourseMessage").order("created_at desc") - # @user_forge_messages = MessageAll.where("user_id =? and message_type=?",@user,"ForgeMessage").order("created_at desc") - # @user_memo_messages = MessageAll.where("user_id =? and message_type=?",@user,"MemoMessage").order("created_at desc") - # @user_feedback_messages = MessageAll.where("user_id =? and message_type=?",@user,"UserFeedbackMessage").order("created_at desc") - # @user_course_messages_count = @user_course_messages.count - # @user_forge_messages_count = @user_forge_messages.count - # @user_memo_messages_count = @user_memo_messages.count - # @user_feedback_messages_count = @user_feedback_messages.count when 'homework' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "HomeworkCommon", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_course_messages_count = @user_course_messages.count when 'course_message' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Message", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_course_messages_count = @user_course_messages.count when 'forge_message' @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Message", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_forge_messages_count = @user_forge_messages.count when 'course_news' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "News", @user).order("created_at desc") @message_alls_count = @message_alls.count @@ -155,126 +144,32 @@ class UsersController < ApplicationController when 'forge_news' @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "News", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_forge_messages_count = @user_forge_messages.count when 'course_news_reply' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Comment", @user).order("created_at desc") - #@user_course_messages_count = @user_course_messages.count when 'forge_news_reply' @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Comment", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_forge_messagess_count = @user_forge_messages.count when 'poll' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Poll", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_course_messages_count = @user_course_messages.count when 'works_reviewers' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "StudentWorksScore", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_course_messages_count = @user_course_messages.count when 'works_reply' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "JournalsForMessage", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_course_messages_count = @user_course_messages.count when 'issue' @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Issue", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_forge_messages_count = @user_forge_messages.count when 'issue_update' # 缺陷状态更新、留言 @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Journal", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_forge_messages_count = @user_forge_messages.count when 'forum' @message_alls = MemoMessage.where("memo_type =? and user_id =?", "Memo", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_memo_messages_count = @user_memo_messages.count when 'user_feedback' @message_alls = UserFeedbackMessage.where("journals_for_message_type =? and user_id =?", "JournalsForMessage", @user).order("created_at desc") @message_alls_count = @message_alls.count - #@user_feedback_messages_count = @user_feedback_messages.count - else - render_404 - return - end - respond_to do |format| - format.html{render :layout=>'new_base_user'} - end - end - - def user_messages_new - unless User.current.logged? - render_403 - return - end - # 当前用户查看消息,则设置消息为已读 - course_querys = @user.course_messages - forge_querys = @user.forge_messages - user_querys = @user.user_feedback_messages - forum_querys = @user.memo_messages - # if User.current.id == @user.id - # course_querys.update_all(:viewed => true) - # forge_querys.update_all(:viewed => true) - # user_querys.update_all(:viewed => true) - # forum_querys.update_all(:viewed => true) - # end - @new_message_count = @user.forge_messages.count + @user.memo_messages.count + @user.course_messages.count + @user.user_feedback_messages.count - case params[:type] - when nil - @message_alls = [] - messages = MessageAll.where("user_id =?",@user).order("created_at desc") - messages.each do |message_all| - @message_alls << message_all.message - end - - # @user_course_messages = MessageAll.where("user_id =? and message_type=?",@user,"CourseMessage").order("created_at desc") - # @user_forge_messages = MessageAll.where("user_id =? and message_type=?",@user,"ForgeMessage").order("created_at desc") - # @user_memo_messages = MessageAll.where("user_id =? and message_type=?",@user,"MemoMessage").order("created_at desc") - # @user_feedback_messages = MessageAll.where("user_id =? and message_type=?",@user,"UserFeedbackMessage").order("created_at desc") - # @user_course_messages_count = @user_course_messages.count - # @user_forge_messages_count = @user_forge_messages.count - # @user_memo_messages_count = @user_memo_messages.count - # @user_feedback_messages_count = @user_feedback_messages.count - when 'homework' - @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "HomeworkCommon", @user).order("created_at desc") - #@user_course_messages_count = @user_course_messages.count - when 'course_message' - @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Message", @user).order("created_at desc") - #@user_course_messages_count = @user_course_messages.count - when 'forge_message' - @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Message", @user).order("created_at desc") - #@user_forge_messages_count = @user_forge_messages.count - when 'course_news' - @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "News", @user).order("created_at desc") - #@user_course_messages_count = @user_course_messages.count - when 'forge_news' - @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "News", @user).order("created_at desc") - #@user_forge_messages_count = @user_forge_messages.count - when 'course_news_reply' - @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Comment", @user).order("created_at desc") - #@user_course_messages_count = @user_course_messages.count - when 'forge_news_reply' - @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Comment", @user).order("created_at desc") - #@user_forge_messagess_count = @user_forge_messages.count - when 'poll' - @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Poll", @user).order("created_at desc") - #@user_course_messages_count = @user_course_messages.count - when 'works_reviewers' - @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "StudentWorksScore", @user).order("created_at desc") - #@user_course_messages_count = @user_course_messages.count - when 'works_reply' - @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "JournalsForMessage", @user).order("created_at desc") - #@user_course_messages_count = @user_course_messages.count - when 'issue' - @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Issue", @user).order("created_at desc") - #@user_forge_messages_count = @user_forge_messages.count - when 'issue_update' # 缺陷状态更新、留言 - @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Journal", @user).order("created_at desc") - #@user_forge_messages_count = @user_forge_messages.count - when 'forum' - @message_alls = MemoMessage.where("memo_type =? and user_id =?", "Memo", @user).order("created_at desc") - #@user_memo_messages_count = @user_memo_messages.count - when 'user_feedback' - @message_alls = UserFeedbackMessage.where("journals_for_message_type =? and user_id =?", "JournalsForMessage", @user).order("created_at desc") - #@user_feedback_messages_count = @user_feedback_messages.count else render_404 return @@ -405,26 +300,15 @@ class UsersController < ApplicationController end # end - # added by huang + #用户作业列表 def user_homeworks - # @membership = @user.memberships.all(:conditions => Project.visible_condition(User.current)) - # @memberships = [] - # @membership.each do |membership| - # if membership.project.project_type == 1 - # @memberships << membership - # end - # end - # @bid = [] - # @memberships.each do |membership| - # @bid += membership.project.homeworks - # end - # @bid = @bid.group_by {|bid| bid.courses.first.id} - # unless User.current.admin? - # if !@user.active? - # render_404 - # return - # end - # end + @page = params[:page] ? params[:page].to_i + 1 : 0 + user_course_ids = "(" + @user.courses.visible.map{|course| course.id}.join(",") + ")" + @homework_commons = HomeworkCommon.where("course_id in #{user_course_ids}").order("created_at desc").limit(10).offset(@page * 10) + respond_to do |format| + format.js + format.html {render :layout => 'new_base_user'} + end end @@ -459,7 +343,7 @@ class UsersController < ApplicationController end @jour = paginateHelper jours,10 @state = false - render :layout=>'base_users_new' + render :layout=>'new_base_user' end def user_comments @@ -567,6 +451,8 @@ class UsersController < ApplicationController end @users = scope.offset(@offset).limit(limit).all.reverse end + @name = params[:name] + @type = 'users' respond_to do |format| format.html { @groups = Group.all.sort @@ -576,41 +462,17 @@ class UsersController < ApplicationController end end + #显示更多用户课程 def user_courses4show - query = Course.joins("join members m on #{Course.table_name}.id=m.course_id") - query = query.where("m.user_id = ?",@user.id).order("#{Course.table_name}.id desc") - if User.current == @user #看自己 - else - if @user.user_extensions!=nil && @user.user_extensions.identity == 0 #看老师 - query = query.joins("join member_roles r on m.id = r.member_id") - query = query.where("r.role_id in(3,7,9)") + @page = params[:page].to_i + 1 + @courses = @user.courses.visible.select("courses.*,(SELECT MAX(created_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").limit(5).offset(@page * 5) end - query = query.where(Course.table_name+".is_public = 1") - end - if params[:lastid]!=nil && !params[:lastid].empty? - query = query.where(" #{Course.table_name}.id < ?",params[:lastid],) - end - @list = query.limit(8) - - render :layout=>nil - end + #显示更多用户项目 def user_projects4show - query = Project.joins("join members m on #{Project.table_name}.id=m.project_id") - query = query.where("m.user_id = ? and #{Project.table_name}.project_type=?",@user.id,Project::ProjectType_project) - if User.current == @user #看自己 - else - query = query.where(Project.table_name+".is_public = 1") - # TODO or exists (select 1 from project c2,members m2 where c2.id=m2.course_id and c2.id=#{Project.table_name}.id and m2.user_id= User.current.id) - end - - if params[:lastid]!=nil && !params[:lastid].empty? - query = query.where("( (#{Project.table_name}.updated_on=? and #{Project.table_name}.id < ?) or #{Project.table_name}.updated_on)",params[:lasttime],params[:lastid],params[:lasttime]) + @page = params[:page].to_i + 1 + @projects = @user.projects.visible.select("projects.*,(SELECT MAX(created_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a").order("a desc").limit(5).offset(@page * 5) end - @list = query.order("#{Project.table_name}.updated_on desc,#{Project.table_name}.id desc").limit(8).all - - render :layout=>nil - end def user_course_activities lastid = nil @@ -687,7 +549,37 @@ class UsersController < ApplicationController end def show - render :layout=>'new_base_user' + @page = params[:page] ? params[:page].to_i + 1 : 0 + @type = params[:type] + user_project_ids = @user.projects.visible.empty? ? "(-1)" : "(" + @user.projects.visible.map{|project| project.id}.join(",") + ")" + user_course_ids = @user.courses.visible.empty? ? "(-1)" : "(" + @user.courses.visible.map{|course| course.id}.join(",") + ")" + course_types = "('Message','News','HomeworkCommon')" + project_types = "('Message','Issue')" + if @type + case @type + when "course_homework" + @user_activities = UserActivity.where("container_type = 'Course' and container_id in #{user_course_ids} and act_type = 'HomeworkCommon'").order('created_at desc').limit(10).offset(@page * 10) + when "course_news" + @user_activities = UserActivity.where("container_type = 'Course' and container_id in #{user_course_ids} and act_type = 'News'").order('created_at desc').limit(10).offset(@page * 10) + when "course_message" + @user_activities = UserActivity.where("container_type = 'Course' and container_id in #{user_course_ids} and act_type = 'Message'").order('created_at desc').limit(10).offset(@page * 10) + when "course_poll" + @user_activities = UserActivity.where("container_type = 'Course' and container_id in #{user_course_ids} and act_type = 'Poll'").order('created_at desc').limit(10).offset(@page * 10) + when "project_issue" + @user_activities = UserActivity.where("container_type = 'Project' and container_id in #{user_project_ids} and act_type = 'Issue'").order('created_at desc').limit(10).offset(@page * 10) + when "project_message" + @user_activities = UserActivity.where("container_type = 'Project' and container_id in #{user_project_ids} and act_type = 'Message'").order('created_at desc').limit(10).offset(@page * 10) + else + @user_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}").order('created_at desc').limit(10).offset(@page * 10) + end + else + @user_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}").order('created_at desc').limit(10).offset(@page * 10) + end + # @user_activities = paginateHelper @user_activities,500 + respond_to do |format| + format.js + format.html {render :layout => 'new_base_user'} + end end def show_old @@ -1385,8 +1277,8 @@ class UsersController < ApplicationController @obj_count = query.count(); @obj_pages = Paginator.new @obj_count,limit,params['page'] @list = query.order("#{Watcher.table_name}.id desc").limit(limit).offset(@obj_pages.offset).all(); - - render :template=>'users/user_fanslist',:layout=>'base_users_new' + @action = 'watch' + render :template=>'users/user_fanslist',:layout=>'new_base_user' end ###add by huang def user_fanslist @@ -1396,7 +1288,7 @@ class UsersController < ApplicationController @obj_pages = Paginator.new @obj_count,limit,params['page'] @list = query.order("#{Watcher.table_name}.id desc").limit(limit).offset(@obj_pages.offset).all(); @action = 'fans' - render :layout=>'base_users_new' + render :layout=>'new_base_user' end def user_visitorlist limit = 10; @@ -1420,47 +1312,6 @@ class UsersController < ApplicationController end end -# added by bai - def topic_score_index - - end - - def project_score_index - - end - - def activity_score_index - - end - - def influence_score_index - - end - - def score_index - - end -# end - def topic_new_score_index - - end - - def project_new_score_index - - end - - def activity_new_score_index - - end - - def influence_new_score_index - - end - - def score_new_index - - end - def update_score @user = User.find(params[:id]) end diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 35e1d5ba4..6e7f0adc6 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -22,9 +22,26 @@ class WatchersController < ApplicationController def watch s = WatchesService.new watchables = s.watch params.merge(:current_user_id => User.current.id) + if params[:action_name] == 'watch' + limit = 10; + query = User.watched_by(params[:target_id]); + @obj_count = query.count(); + @obj_pages = Paginator.new @obj_count,limit,params['page'] + @list = query.order("#{Watcher.table_name}.id desc").limit(limit).offset(@obj_pages.offset).all(); + @action = 'watch' + elsif params[:action_name] == 'fans' + limit = 10; + query = User.find(params[:target_id]).watcher_users; + @obj_count = query.count(); + @obj_pages = Paginator.new @obj_count,limit,params['page'] + @list = query.order("#{Watcher.table_name}.id desc").limit(limit).offset(@obj_pages.offset).all(); + @action = 'fans' + else + + end respond_to do |format| format.html { redirect_to_referer_or {render :text => (true ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} - format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables,:params=>params,:opt=>'add'} } + format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables,:params=>params,:opt=>'add',:list => @list,:action_name=>params[:action_name],:page=>params[:page],:count=>@obj_count} } end rescue Exception => e if e.message == "404" @@ -38,9 +55,25 @@ class WatchersController < ApplicationController def unwatch s = WatchesService.new watchables = s.unwatch params.merge(:current_user_id => User.current.id) + if params[:action_name] == 'watch' + limit = 10; + query = User.watched_by(params[:target_id]); + @obj_count = query.count(); + @obj_pages = Paginator.new @obj_count,limit,params['page'] + @list = query.order("#{Watcher.table_name}.id desc").limit(limit).offset(@obj_pages.offset).all(); + @action = 'watch' + elsif params[:action_name] == 'fans' + limit = 10; + query = User.find(params[:target_id]).watcher_users; + @obj_count = query.count(); + @obj_pages = Paginator.new @obj_count,limit,params['page'] + @list = query.order("#{Watcher.table_name}.id desc").limit(limit).offset(@obj_pages.offset).all(); + @action = 'fans' + else + end respond_to do |format| format.html { redirect_to_referer_or {render :text => (false ? 'Watcher added.' : 'Watcher removed.'), :layout => true}} - format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables,:params=>params,:opt=>'delete'} } + format.js { render :partial => 'set_watcher', :locals => {:user => User.current, :watched => watchables,:params=>params,:opt=>'delete',:list=>@list,:action_name=>params[:action_name],:page=>params[:page],:count=>@obj_count} } end rescue Exception => e if e.message == "404" diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 7c7f0c63f..709426d41 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2314,7 +2314,27 @@ module ApplicationHelper elsif homework.homework_type == 2 #编程作业不能修改作品 "作品已交".html_safe else - link_to l(:label_edit_homework), edit_student_work_path(work.id),:class => 'fr mr10 work_edit' + link_to l(:label_edit_homework), edit_student_work_path(work.id),:class => 'fr mr10 work_edit c_blue' + end + end + end + + #根据传入作业确定显示为编辑作品还是新建作品,或者显示作品数量 + def user_for_homework_common homework,is_teacher + if is_teacher #老师显示作品数量 + link_to "提交(#{homework.student_works.count})",student_work_index_path(:homework => homework.id),:class => "c_blue" + else #学生显示提交作品、修改作品等按钮 + work = cur_user_works_for_homework homework + if work.nil? + link_to "提交作品", new_student_work_path(:homework => homework.id),:class => 'c_blue' + else + if homework.homework_type == 1 && homework.homework_detail_manual && homework.homework_detail_manual.comment_status != 1 #匿评作业,且作业状态不是在开启匿评之前 + link_to "修改作品", "", :class => 'c_blue', :title => "开启匿评后不可修改作品" + elsif homework.homework_type == 2 #编程作业不能修改作品 + link_to "作品已交", "",:class => 'c_blue',:title => "编程作业不可修改作品" + else + link_to "修改作品", edit_student_work_path(work.id),:class => 'c_blue' + end end end end diff --git a/app/models/course_activity.rb b/app/models/course_activity.rb index cf356dc05..1d0920c1c 100644 --- a/app/models/course_activity.rb +++ b/app/models/course_activity.rb @@ -15,8 +15,8 @@ class CourseActivity < ActiveRecord::Base user_activity.save else user_activity = UserActivity.new - user_activity.act_id = self.id - user_activity.act_type = self.class.to_s + user_activity.act_id = self.course_act_id + user_activity.act_type = self.course_act_type user_activity.container_type = "Course" user_activity.container_id = self.course_id user_activity.save diff --git a/app/models/course_message.rb b/app/models/course_message.rb index c15c2fc65..95ce3a56b 100644 --- a/app/models/course_message.rb +++ b/app/models/course_message.rb @@ -1,5 +1,5 @@ class CourseMessage < ActiveRecord::Base - attr_accessible :course_id, :course_message_id, :course_message_type, :user_id, :viewed + attr_accessible :course_id, :course_message_id, :course_message_type, :user_id, :viewed, :content, :status # 多态 虚拟关联 belongs_to :course_message ,:polymorphic => true diff --git a/app/models/forge_activity.rb b/app/models/forge_activity.rb index 5d8de8e3a..b7fc5e4c2 100644 --- a/app/models/forge_activity.rb +++ b/app/models/forge_activity.rb @@ -30,8 +30,8 @@ class ForgeActivity < ActiveRecord::Base user_activity.save else user_activity = UserActivity.new - user_activity.act_id = self.id - user_activity.act_type = self.class.to_s + user_activity.act_id = self.forge_act_id + user_activity.act_type = self.forge_act_type user_activity.container_type = "Project" user_activity.container_id = self.project_id user_activity.save diff --git a/app/models/student_works_score.rb b/app/models/student_works_score.rb index 639722389..aa38c5dcd 100644 --- a/app/models/student_works_score.rb +++ b/app/models/student_works_score.rb @@ -1,3 +1,4 @@ +#encoding=UTF-8 class StudentWorksScore < ActiveRecord::Base #reviewer_role: 1:教师评分;2:教辅评分;3:学生匿评 attr_accessible :student_work_id, :user_id, :score, :comment, :reviewer_role @@ -9,13 +10,31 @@ class StudentWorksScore < ActiveRecord::Base acts_as_attachable - after_create :act_as_course_message + after_save :act_as_course_message # 评阅作品消息提示 def act_as_course_message - if self.student_work + if self.student_work && self.student_work.user && self.student_work.homework_common.course receiver = self.student_work.user - self.course_messages << CourseMessage.new(:user_id => receiver.id, :course_id => self.student_work.homework_common.course.id, :viewed => false) + # 判断是第一次评阅还是更新 status:0 新建;1 更新 + if self.created_at == self.updated_at + if self.comment.nil? + self.course_messages << CourseMessage.new(:user_id => receiver.id, :course_id => self.student_work.homework_common.course.id, + :viewed => false, :content => "作业评分:#{self.score}", :status=> false) + else + self.course_messages << CourseMessage.new(:user_id => receiver.id, :course_id => self.student_work.homework_common.course.id, + :viewed => false, :content => "作业评分:#{self.score} 评语:#{self.comment}", :status=> false) + end + else # 更新 + if self.comment.nil? + self.course_messages << CourseMessage.new(:user_id => receiver.id, :course_id => self.student_work.homework_common.course.id, + :viewed => false, :content => "作业评分:#{self.score}", :status=> true) + else + self.course_messages << CourseMessage.new(:user_id => receiver.id, :course_id => self.student_work.homework_common.course.id, + :viewed => false, :content => "作业评分:#{self.score} 评语:#{self.comment}", :status=> true) + end + end end end + end diff --git a/app/views/account/agreement.html.erb b/app/views/account/agreement.html.erb new file mode 100644 index 000000000..f18731348 --- /dev/null +++ b/app/views/account/agreement.html.erb @@ -0,0 +1,51 @@ +<%= stylesheet_link_tag 'new_user'%> +
尊敬的用户,您好!
+欢迎使用Trustie平台,在您使用Trustie平台前,请您认真阅读并遵守《Trustie服务协议》(以下简称"本协议"),请您务必审慎阅读、充分理解协议的各条款内容。
+当您在注册过程中点击查看"看过并同意本服务协议",按照注册流程成功注册为Trustie平台的用户即表示您已充分阅读、理解并完全接受本协议中的全部条款。您承诺接受并遵守本协议的约定,届时您不应以未阅读本协议的内容等理由,主张本协议无效或本协议中的某些条款无效,或要求撤销本协议。
1、尊重用户隐私:尊重用户隐私,保障用户隐私安全是Trustie平台的一项基本政策;
+2、管理平台用户:Trustie平台依据国家法律、地方法律和国际法律等的标准以及本行业的规则来管理平台注册用户;
+3、处理用户反馈:Trustie平台的相关人员会及时处理用户反馈的问题并给予及时回复。
用户在使用Trustie平台的过程中,必须遵守如下原则:
+1、遵守中国的有关法律和法规;
+2、使用网络服务不作非法用途;
+3、不干扰和混乱网络服务;
+4、遵守所有使用网络服务的网络协议、规定、程序和惯例;
+5、不传输任何非法的、骚扰性的、中伤他人的、辱骂性的、恐吓性的、伤害性的、庸俗的,淫秽等信息资料;
+6、不传输任何教唆他人构成犯罪行为的资料;
+7、用户不得故意或者过失损害Trustie平台合法权利和利益。及时回复。
鉴于网络服务的特殊性,用户同意Trustie团队有权在事先通知的情况下,变更、中断、升级部分网络服务。Trustie团队不担保网络服务不会中断,但承诺在用户可承受的时间内快速恢复服务,同时确保用户数据的安全性和可靠性。
+Trustie团队保留在必要时对本协议修改的权利,一旦发生变动,这些条款可由Trustie团队及时更新,且毋须另行通知,修改后的条款一旦在网页上公布即有效代替原来的服务条款。您可随时查阅最新版服务条款。
+本协议最终解释权归Trustie团队所有。
+- - | -- <%= text_field_tag 'username', params[:username], :tabindex => '1' , :value => "#{l(:label_login_prompt)}", - :onfocus => "clearInfo('username','#{l(:label_login_prompt)}')", - :onblur => "showInfo('username','#{l(:label_login_prompt)}')", - :style => "resize: none;font-size: 12px;color: #818283;"%> - | -
- - | -- <%= password_field_tag 'password', nil, :tabindex => '2' %> - | -
- - | -- <%= text_field_tag "openid_url", nil, :tabindex => '3' %> - | -
- |
- <% if Setting.autologin? %>
-
+
+
+
+
+ ![]() 欢迎加入Trustie高校创新实践社区,老师、学生和科研人员可以在此开展各种在线协同学习、协同作业、协同开发等活动。Trustie是在中国推行大规模开放在线研究模式(MOORE)的支撑平台。
+
+
+
+
+
+
+
<%= flash.empty? ? "" : flash[:error].html_safe %>
+
+
+ <%= form_tag(signin_path,:id=>'main_login_form',:method=>'post') do %>
+ <%= back_url_hidden_field_tag %>
+
+ <%= text_field_tag 'username', params[:username], :tabindex => '1' ,
+ :class=>'loginSignBox',:placeholder=>'请输入邮箱地址或昵称'%>
+
+
+ <% if Setting.openid? %>
+
+ <%= text_field_tag "openid_url", nil, :tabindex => '3',:placeholder=>'请输入OpenId URL' %>
+
+ <% end %>
+
+
+ <%= password_field_tag 'password', nil, :tabindex => '2',:class=>'loginSignBox' ,:placeholder=>'请输密码'%>
+
+
+ <% if Setting.autologin? %>
+
<% end %>
-
+ <%= check_box_tag 'autologin', 1, true, :tabindex => 4 %>
+
+ <%= l(:label_stay_logged_in) %>
+ <% end %>
+
+ <% if Setting.lost_password? %>
+ 忘记密码?
+ <% end %>
+ |
-
- - - <% if Setting.lost_password? %> - <%= link_to l(:label_password_lost), lost_password_path %> - <% end %> - - - - | -