diff --git a/Gemfile b/Gemfile index 2b43cade3..01671daf9 100644 --- a/Gemfile +++ b/Gemfile @@ -6,6 +6,7 @@ unless RUBY_PLATFORM =~ /w32/ gem 'iconv' end +gem 'grack', path:'./lib/grack' gem 'rest-client' gem "mysql2", "= 0.3.18" gem 'redis-rails' diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 181f76b22..1e4b01df0 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -25,21 +25,29 @@ 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 => 'static_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 @@ -71,7 +79,7 @@ class AccountController < ApplicationController return end end - render :template => "account/password_recovery" + render :layout => 'static_base', :template => "account/password_recovery" return else if request.post? @@ -79,6 +87,7 @@ class AccountController < ApplicationController # user not found or not active unless user && user.active? flash.now[:error] = l(:notice_account_unknown_email) + render :layout => 'static_base' return end # user cannot change its password @@ -91,10 +100,11 @@ class AccountController < ApplicationController if token.save Mailer.run.lost_password(token) flash[:notice] = l(:notice_account_lost_email_sent) - redirect_to signin_url + redirect_to lost_password_path return end end + render :layout => 'static_base' end end @@ -128,10 +138,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 +366,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/boards_controller.rb b/app/controllers/boards_controller.rb index 6ff4d2f97..72301754d 100644 --- a/app/controllers/boards_controller.rb +++ b/app/controllers/boards_controller.rb @@ -67,7 +67,29 @@ class BoardsController < ApplicationController end - def show + def show + #¶Ӧforge_messagesviewedֶ + if @project + query_forge_messages = @board.messages + query_forge_messages.each do |query_forge_message| + query = query_forge_message.forge_messages + query.each do |forge_message| + if User.current.id == forge_message.user_id + forge_message.update_attributes(:viewed => true) + end + end + end + elsif @course + query_course_messages = @board.messages + query_course_messages.each do |query_course_message| + query = query_course_message.course_messages + query.each do |course_message| + if User.current.id == course_message.user_id + course_message.update_attributes(:viewed => true) + end + end + end + end respond_to do |format| format.js format.html { 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/memos_controller.rb b/app/controllers/memos_controller.rb index 68f6f6473..11d1d6e18 100644 --- a/app/controllers/memos_controller.rb +++ b/app/controllers/memos_controller.rb @@ -115,6 +115,8 @@ class MemosController < ApplicationController REPLIES_PER_PAGE = 20 unless const_defined?(:REPLIES_PER_PAGE) def show + #更新贴吧帖子留言对应的memo_messages的viewed字段 + query_memo_messages = @memo.memo_messages pre_count = REPLIES_PER_PAGE @memo = @memo.root # 取出楼主,防止输入帖子id让回复作为主贴显示 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/news_controller.rb b/app/controllers/news_controller.rb index 1a8e75b54..d445fc77c 100644 --- a/app/controllers/news_controller.rb +++ b/app/controllers/news_controller.rb @@ -99,6 +99,31 @@ class NewsController < ApplicationController end def show + #更新news对应的forge_messages的viewed字段 + query_forge_news = @news.forge_messages + query_forge_news.each do |query| + if User.current.id == query.user_id + query.update_attributes(:viewed => true) + end + end + #更新news对应的course_messages的viewed字段 + query_course_news = @news.course_messages + query_course_news.each do |query| + if User.current.id == query.user_id + query.update_attributes(:viewed => true) + end + end + #更新项目新闻的评阅的viewed字段 + current_forge_comments = @news.comments + current_forge_comments.each do |current_forge_comment| + query_forge_comment = current_forge_comment.forge_messages + query_forge_comment.each do |query| + if User.current.id == query.user_id + query.update_attributes(:viewed => true) + end + end + end + cs = CoursesService.new result = cs.show_course_news params,User.current @news = result[:news] diff --git a/app/controllers/poll_controller.rb b/app/controllers/poll_controller.rb index edf8c2259..1bbcf9bb4 100644 --- a/app/controllers/poll_controller.rb +++ b/app/controllers/poll_controller.rb @@ -28,6 +28,12 @@ class PollController < ApplicationController render_403 return end + query_course_poll = @poll.course_messages + query_course_poll.each do |query| + if User.current.id == query.user_id + query.update_attributes(:viewed => true) + end + end #已提交问卷的用户不能再访问该界面 if has_commit_poll?(@poll.id,User.current.id) && (!User.current.admin?) redirect_to poll_index_url(:polls_type => "Course", :polls_group_id => @course.id) 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/repositories_controller.rb b/app/controllers/repositories_controller.rb index e0aea0c2e..6dec9a82f 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -127,19 +127,18 @@ update end else # 原逻辑 ##xianbo + params[:repository_scm] = "Git" @root_path=RepositoriesHelper::ROOT_PATH @repository_name=User.current.login.to_s+"/"+params[:repository][:identifier]+".git" @project_path=@root_path+"htdocs/"+@repository_name - @repository_tag=params[:repository][:upassword] || params[:repository][:password] + @repository_tag=params[:repository][:upassword] || params[:repository][:password] || '1234' @repo_name=User.current.login.to_s+"_"+params[:repository][:identifier] logger.info "htpasswd -mb "+@root_path+"htdocs/user.passwd "+@repo_name+": "+@repository_tag logger.info "the value of create repository"+@root_path+": "+@repository_name+": "+@project_path+": "+@repo_name attrs = pickup_extra_info - if((@repository_tag!="")&¶ms[:repository_scm]=="Git") - params[:repository][:url]=@project_path - end + params[:repository][:url]=@project_path ###xianbo - @repository = Repository.factory(params[:repository_scm]) + @repository = Repository.factory(params[:repository_scm]||"Git") @repository.safe_attributes = params[:repository] if attrs[:attrs_extra].keys.any? @repository.merge_extra_info(attrs[:attrs_extra]) @@ -278,7 +277,8 @@ update @course_tag = params[:course] project_path_cut = RepositoriesHelper::PROJECT_PATH_CUT ip = RepositoriesHelper::REPO_IP_ADDRESS - @repos_url = "http://"+@repository.login.to_s+"_"+@repository.identifier.to_s+"@"+ip.to_s+ + # @repos_url = "http://"+@repository.login.to_s+"_"+@repository.identifier.to_s+"@"+ip.to_s+ + @repos_url = "http://#{Setting.host_name}/#{@repository.login.to_s}/#{@repository.identifier.to_s}.git" @repository.url.slice(project_path_cut, @repository.url.length).to_s if @course_tag == 1 render :action => 'show', :layout => 'base_courses' diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 01f858442..1af832b79 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -11,6 +11,13 @@ class StudentWorkController < ApplicationController protect_from_forgery :except => :set_program_score def index + #设置作业对应的forge_messages表的viewed字段 + query_student_work = @homework.course_messages + query_student_work.each do |query| + if User.current.id == query.user_id + query.update_attributes(:viewed => true) + end + end @order,@b_sort,@name,@group = params[:order] || "score",params[:sort] || "desc",params[:name] || "",params[:group] @is_teacher = User.current.allowed_to?(:as_teacher,@course) course_group = CourseGroup.find_by_id(@group) if @group diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 1aa8de526..a8243c5a5 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] + :search_user_project,:resource_preview,:resource_search,:add_exist_file_to_project,:user_messages,:edit_brief_introduction,:user_new_homework] #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] + :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 @@ -74,7 +74,10 @@ class UsersController < ApplicationController include WordsHelper include GitlabHelper include UserScoreHelper + + include PollHelper helper :user_score + helper :journals # added by liuping 关注 @@ -119,65 +122,62 @@ 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 - @user_course_messages = CourseMessage.where("user_id =?",@user).order("created_at desc") - @user_forge_messages = ForgeMessage.where("user_id =?",@user).order("created_at desc") - @user_memo_messages = MemoMessage.where("user_id =?",@user).order("created_at desc") - @user_feedback_messages = UserFeedbackMessage.where("user_id =?",@user).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 + @message_alls = [] + messages = MessageAll.where("user_id =?",@user).order("created_at desc") + messages.each do |message_all| + @message_alls << message_all.message + end when 'homework' - @user_course_messages = CourseMessage.where("course_message_type =? and user_id =?", "HomeworkCommon", @user).order("created_at desc") - @user_course_messages_count = @user_course_messages.count + @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "HomeworkCommon", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'course_message' - @user_course_messages = CourseMessage.where("course_message_type =? and user_id =?", "Message", @user).order("created_at desc") - @user_course_messages_count = @user_course_messages.count + @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Message", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'forge_message' - @user_forge_messages = ForgeMessage.where("forge_message_type =? and user_id =?", "Message", @user).order("created_at desc") - @user_forge_messages_count = @user_forge_messages.count + @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Message", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'course_news' - @user_course_messages = CourseMessage.where("course_message_type =? and user_id =?", "News", @user).order("created_at desc") - @user_course_messages_count = @user_course_messages.count + @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "News", @user).order("created_at desc") + @message_alls_count = @message_alls.count + #@user_course_messages_count = @user_course_messages.count when 'forge_news' - @user_forge_messages = ForgeMessage.where("forge_message_type =? and user_id =?", "News", @user).order("created_at desc") - @user_forge_messages_count = @user_forge_messages.count + @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "News", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'course_news_reply' - @user_course_messages = CourseMessage.where("course_message_type =? and user_id =?", "Comment", @user).order("created_at desc") - @user_course_messages_count = @user_course_messages.count + @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Comment", @user).order("created_at desc") when 'forge_news_reply' - @user_forge_messages = ForgeMessage.where("course_message_type =? and user_id =?", "Comment", @user).order("created_at desc") - @user_forge_messagess_count = @user_forge_messages.count + @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Comment", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'poll' - @user_course_messages = CourseMessage.where("course_message_type =? and user_id =?", "Poll", @user).order("created_at desc") - @user_course_messages_count = @user_course_messages.count + @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "Poll", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'works_reviewers' - @user_course_messages = CourseMessage.where("course_message_type =? and user_id =?", "StudentWorksScore", @user).order("created_at desc") - @user_course_messages_count = @user_course_messages.count + @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "StudentWorksScore", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'works_reply' - @user_course_messages = CourseMessage.where("course_message_type =? and user_id =?", "JournalsForMessage", @user).order("created_at desc") - @user_course_messages_count = @user_course_messages.count + @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "JournalsForMessage", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'issue' - @user_forge_messages = ForgeMessage.where("forge_message_type =? and user_id =?", "Issue", @user).order("created_at desc") - @user_forge_messages_count = @user_forge_messages.count + @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Issue", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'issue_update' # 缺陷状态更新、留言 - @user_forge_messages = ForgeMessage.where("forge_message_type =? and user_id =?", "Journal", @user).order("created_at desc") - @user_forge_messages_count = @user_forge_messages.count + @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?", "Journal", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'forum' - @user_memo_messages = MemoMessage.where("memo_type =? and user_id =?", "Memo", @user).order("created_at desc") - @user_memo_messages_count = @user_memo_messages.count + @message_alls = MemoMessage.where("memo_type =? and user_id =?", "Memo", @user).order("created_at desc") + @message_alls_count = @message_alls.count when 'user_feedback' - @user_feedback_messages = UserFeedbackMessage.where("journals_for_message_type =? and user_id =?", "Principal", @user).order("created_at desc") - @user_feedback_messages_count = @user_feedback_messages.count + @message_alls = UserFeedbackMessage.where("journals_for_message_type =? and user_id =?", "JournalsForMessage", @user).order("created_at desc") + @message_alls_count = @message_alls.count else render_404 return end respond_to do |format| - format.html{render :layout=>'base_users_new'} + format.html{render :layout=>'new_base_user'} end end @@ -302,26 +302,47 @@ 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 + + def user_new_homework + if params[:homework_common] + homework = HomeworkCommon.new + homework.name = params[:homework_common][:name] + homework.description = params[:homework_common][:description] + homework.end_time = params[:homework_common][:end_time] + homework.publish_time = Time.now + homework.homework_type = 1 + homework.late_penalty = 2 + homework.user_id = User.current.id + homework.course_id = params[:course_id] + + homework.save_attachments(params[:attachments]) + render_attachment_warning_if_needed(homework) + + #匿评作业相关属性 + homework_detail_manual = HomeworkDetailManual.new + homework_detail_manual.ta_proportion = params[:ta_proportion] || 0.6 + homework_detail_manual.comment_status = 1 + homework_detail_manual.evaluation_start = Time.now + homework_detail_manual.evaluation_end = Time.now + homework_detail_manual.evaluation_num = params[:evaluation_num] || 3 + homework_detail_manual.absence_penalty = 2 + homework.homework_detail_manual = homework_detail_manual + + if homework.save + homework_detail_manual.save if homework_detail_manual + redirect_to user_homeworks_user_path(User.current.id) + end + end end @@ -356,7 +377,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 @@ -464,6 +485,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 @@ -473,42 +496,18 @@ 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) + @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 - 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_onnil - end - def user_course_activities lastid = nil if params[:lastid]!=nil && !params[:lastid].empty? @@ -584,7 +583,37 @@ class UsersController < ApplicationController end def show - render :layout=>'base_users_new' + @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','poll')" + 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 @@ -1282,8 +1311,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 @@ -1293,7 +1322,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; @@ -1317,51 +1346,20 @@ 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 + #修改个人简介 + def edit_brief_introduction + if @user && @user.extensions + @user.extensions.update_column("brief_introduction",params[:brief_introduction]) + end + respond_to do |format| + format.js + end + end + # 资源库 分为全部 课程资源 项目资源 附件 def user_resource #确定container_type @@ -1414,7 +1412,7 @@ class UsersController < ApplicationController @attachments = paginateHelper @attachments,15 respond_to do |format| format.js - format.html {render :layout => 'base_users_new'} + format.html {render :layout => 'new_base_user'} end 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/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index c77eba0c5..710b7488f 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -19,7 +19,7 @@ module RepositoriesHelper if Rails.env.development? - ROOT_PATH="/tmp/" if Rails.env.development? + ROOT_PATH="/private/tmp/" else ROOT_PATH="/home/pdl/redmine-2.3.2-0/apache2/" end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 342ee70be..ebfd9f881 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -537,4 +537,16 @@ module UsersHelper end end + #获取指定用户作为老师的课程 + def get_as_teacher_courses user + type = [] + user.courses.select{|c| user.allowed_to?(:as_teacher,c)}.each do |course| + option = [] + option << course.name + option << course.id + type << option + end + type + end + end diff --git a/app/models/course_activity.rb b/app/models/course_activity.rb index 02b6dacf1..1d0920c1c 100644 --- a/app/models/course_activity.rb +++ b/app/models/course_activity.rb @@ -4,4 +4,27 @@ class CourseActivity < ActiveRecord::Base belongs_to :course_act ,:polymorphic => true belongs_to :course belongs_to :user + has_many :user_acts, :class_name => 'UserAcivity',:as =>:act + after_save :add_user_activity + before_destroy :destroy_user_activity + + #在个人动态里面增加当前动态 + def add_user_activity + user_activity = UserActivity.where("act_type = '#{self.class.to_s}' and act_id = '#{self.id}'").first + if user_activity + user_activity.save + else + user_activity = UserActivity.new + 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 + end + end + + def destroy_user_activity + user_activity = UserActivity.where("act_type = '#{self.class.to_s}' and act_id = '#{self.id}'") + user_activity.destroy_all + end end diff --git a/app/models/course_message.rb b/app/models/course_message.rb index 59089829d..95ce3a56b 100644 --- a/app/models/course_message.rb +++ b/app/models/course_message.rb @@ -1,12 +1,19 @@ 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 belongs_to :course belongs_to :user + has_many :message_alls, :class_name => 'MessageAll',:as =>:message, :dependent => :destroy + validates :user_id,presence: true validates :course_id,presence: true validates :course_message_id,presence: true validates :course_message_type, presence: true + after_create :add_user_message + + def add_user_message + self.message_alls << MessageAll.new(:user_id => self.user_id) + end end diff --git a/app/models/forge_activity.rb b/app/models/forge_activity.rb index 6b75552c0..b7fc5e4c2 100644 --- a/app/models/forge_activity.rb +++ b/app/models/forge_activity.rb @@ -19,5 +19,27 @@ class ForgeActivity < ActiveRecord::Base validates :project_id,presence: true validates :forge_act_id,presence: true validates :forge_act_type, presence: true + has_many :user_acts, :class_name => 'UserAcivity',:as =>:act + after_save :add_user_activity + before_destroy :destroy_user_activity + #在个人动态里面增加当前动态 + def add_user_activity + user_activity = UserActivity.where("act_type = '#{self.class.to_s}' and act_id = '#{self.id}'").first + if user_activity + user_activity.save + else + user_activity = UserActivity.new + 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 + end + end + + def destroy_user_activity + user_activity = UserActivity.where("act_type = '#{self.class.to_s}' and act_id = '#{self.id}'") + user_activity.destroy_all + end end diff --git a/app/models/forge_message.rb b/app/models/forge_message.rb index 1543fab58..2d05972ab 100644 --- a/app/models/forge_message.rb +++ b/app/models/forge_message.rb @@ -13,8 +13,15 @@ class ForgeMessage < ActiveRecord::Base belongs_to :forge_message ,:polymorphic => true belongs_to :project belongs_to :user + has_many :message_alls, :class_name => 'MessageAll',:as =>:message, :dependent => :destroy + validates :user_id,presence: true validates :project_id,presence: true validates :forge_message_id,presence: true validates :forge_message_type, presence: true + after_create :add_user_message + + def add_user_message + self.message_alls << MessageAll.new(:user_id => self.user_id) + end end diff --git a/app/models/issue.rb b/app/models/issue.rb index 1724e3484..fa8cee988 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -83,7 +83,7 @@ class Issue < ActiveRecord::Base # fq after_create :act_as_activity,:be_user_score_new_issue,:act_as_forge_activity, :act_as_forge_message - after_update :be_user_score, :act_as_forge_message_update + after_update :be_user_score after_destroy :down_user_score # after_create :be_user_score # end @@ -145,20 +145,16 @@ class Issue < ActiveRecord::Base def act_as_forge_message # 指派给自己的缺陷不提示消息 unless self.author_id == self.assigned_to_id - self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, - :project_id => self.project_id, - :viewed => false) + self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, :project_id => self.project_id, :viewed => false) end end # 更新缺陷 - def act_as_forge_message_update - unless self.author_id == self.assigned_to_id - self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, - :project_id => self.project_id, - :viewed => false) - end - end + #def act_as_forge_message_update + # unless self.author_id == self.assigned_to_id + # self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, :project_id => self.project_id, :viewed => false) + # end + #end # Returns a SQL conditions string used to find all issues visible by the specified user diff --git a/app/models/journal.rb b/app/models/journal.rb index a5bea92af..3a9f5a89d 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -172,9 +172,10 @@ class Journal < ActiveRecord::Base # 缺陷状态更改,消息提醒 def act_as_forge_message if self.user_id != self.issue.author_id - self.forge_messages << ForgeMessage.new(:user_id => self.issue.author_id, - :project_id => self.issue.project_id, - :viewed => false) + self.forge_messages << ForgeMessage.new(:user_id => self.issue.author_id, :project_id => self.issue.project_id, :viewed => false) + end + if self.user_id != self.issue.assigned_to_id # 指派人不是自己的话,则给指派人发送 + self.forge_messages << ForgeMessage.new(:user_id => self.issue.assigned_to_id, :project_id => self.issue.project_id, :viewed => false) end end diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index 2c56dc035..1f5f2e1a6 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -209,14 +209,20 @@ class JournalsForMessage < ActiveRecord::Base end else # 留言回复 reply_to = User.find(self.reply_id) - if self.user_id != self.parent.user_id - receivers << reply_to - if self.reply_id != self.parent.user_id - receivers << self.parent.user - end - else + if self.user_id != self.reply_id # 添加我回复的那个人 receivers << reply_to end + if self.user_id != self.parent.jour_id # 给东家发信息 + receivers << self.parent.jour + end + # if self.user_id != self.parent.user_id + # receivers << reply_to + # if self.reply_id != self.parent.user_id + # receivers << self.parent.user + # end + # else + # receivers << reply_to + # end # 添加留言回复人 #reply_to = User.find(self.reply_id) diff --git a/app/models/memo.rb b/app/models/memo.rb index f1f9029c1..c30616558 100644 --- a/app/models/memo.rb +++ b/app/models/memo.rb @@ -79,7 +79,7 @@ class Memo < ActiveRecord::Base receivers << self.forum.creator end # 添加发帖人 - if self.forum.creator_id != self.parent.author_id + if self.author_id != self.parent.author_id receivers << self.parent.author end end diff --git a/app/models/memo_message.rb b/app/models/memo_message.rb index 051fac317..9be00ce14 100644 --- a/app/models/memo_message.rb +++ b/app/models/memo_message.rb @@ -3,9 +3,15 @@ class MemoMessage < ActiveRecord::Base belongs_to :memo belongs_to :user + has_many :message_alls, :class_name => 'MessageAll',:as =>:message, :dependent => :destroy validates :user_id,presence: true validates :forum_id,presence: true validates :memo_id,presence: true validates :memo_type, presence: true + after_create :add_user_message + + def add_user_message + self.message_alls << MessageAll.new(:user_id => self.user_id) + end end diff --git a/app/models/message_all.rb b/app/models/message_all.rb new file mode 100644 index 000000000..6e0276875 --- /dev/null +++ b/app/models/message_all.rb @@ -0,0 +1,5 @@ +class MessageAll < ActiveRecord::Base + attr_accessible :message_id, :message_type, :user_id + # 虚拟关联---项目消息表/课程消息表/用户留言消息表/贴吧消息表 + belongs_to :message ,:polymorphic => true +end 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/models/user_activity.rb b/app/models/user_activity.rb new file mode 100644 index 000000000..1af1dc017 --- /dev/null +++ b/app/models/user_activity.rb @@ -0,0 +1,7 @@ +class UserActivity < ActiveRecord::Base + attr_accessible :act_type,:act_id,:container_type,:container_id + # 虚拟关联---项目动态表/课程动态表 + belongs_to :act ,:polymorphic => true + # 虚拟关联---项目/课程 + belongs_to :container ,:polymorphic => true +end diff --git a/app/models/user_feedback_message.rb b/app/models/user_feedback_message.rb index 98b53e973..1dda157d6 100644 --- a/app/models/user_feedback_message.rb +++ b/app/models/user_feedback_message.rb @@ -3,8 +3,14 @@ class UserFeedbackMessage < ActiveRecord::Base belongs_to :journals_for_message belongs_to :user + has_many :message_alls, :class_name => 'MessageAll',:as =>:message, :dependent => :destroy validates :user_id,presence: true validates :journals_for_message_id,presence: true validates :journals_for_message_type, presence: true + after_create :add_user_message + + def add_user_message + self.message_alls << MessageAll.new(:user_id => self.user_id) + end end diff --git a/app/views/account/agreement.html.erb b/app/views/account/agreement.html.erb new file mode 100644 index 000000000..95befbfd4 --- /dev/null +++ b/app/views/account/agreement.html.erb @@ -0,0 +1,51 @@ +<%= stylesheet_link_tag 'new_user'%> + +
+

Trustie服务协议

+
+

尊敬的用户,您好!
+欢迎使用Trustie平台,在您使用Trustie平台前,请您认真阅读并遵守《Trustie服务协议》(以下简称"本协议"),请您务必审慎阅读、充分理解协议的各条款内容。
+当您在注册过程中点击查看"看过并同意本服务协议",按照注册流程成功注册为Trustie平台的用户即表示您已充分阅读、理解并完全接受本协议中的全部条款。您承诺接受并遵守本协议的约定,届时您不应以未阅读本协议的内容等理由,主张本协议无效或本协议中的某些条款无效,或要求撤销本协议。

+

一、Trustie平台权利和义务

+

1、尊重用户隐私:尊重用户隐私,保障用户隐私安全是Trustie平台的一项基本政策;
+2、管理平台用户:Trustie平台依据国家法律、地方法律和国际法律等的标准以及本行业的规则来管理平台注册用户;
+3、处理用户反馈:Trustie平台的相关人员会及时处理用户反馈的问题并给予及时回复。

+

二、用户权利和义务

+

用户在使用Trustie平台的过程中,必须遵守如下原则:
+1、遵守中国的有关法律和法规;
+2、使用网络服务不作非法用途;
+3、不干扰和混乱网络服务;
+4、遵守所有使用网络服务的网络协议、规定、程序和惯例;
+5、不传输任何非法的、骚扰性的、中伤他人的、辱骂性的、恐吓性的、伤害性的、庸俗的,淫秽等信息资料;
+6、不传输任何教唆他人构成犯罪行为的资料;
+7、用户不得故意或者过失损害Trustie平台合法权利和利益。及时回复。

+

三、关于责任

+

鉴于网络服务的特殊性,用户同意Trustie团队有权在事先通知的情况下,变更、中断、升级部分网络服务。Trustie团队不担保网络服务不会中断,但承诺在用户可承受的时间内快速恢复服务,同时确保用户数据的安全性和可靠性。

+

四、服务条款的修改

+

Trustie团队保留在必要时对本协议修改的权利,一旦发生变动,这些条款可由Trustie团队及时更新,且毋须另行通知,修改后的条款一旦在网页上公布即有效代替原来的服务条款。您可随时查阅最新版服务条款。

+

本协议最终解释权归Trustie团队所有。

+
+ + +
+ + + diff --git a/app/views/account/login.html.erb b/app/views/account/login.html.erb index bb289eb03..816ef4a77 100644 --- a/app/views/account/login.html.erb +++ b/app/views/account/login.html.erb @@ -1,17 +1,58 @@ -<% @nav_dispaly_home_path_label = 1 - @nav_dispaly_main_course_label = 1 - @nav_dispaly_main_project_label = 1 - @nav_dispaly_main_contest_label = 1 %> -<% @nav_dispaly_forum_label = 1%> -<%= call_hook :view_account_login_top %> - - - - - - -
-<%= form_tag(signin_path) do %> -<%= back_url_hidden_field_tag %> - - - - - - - - - -<% if Setting.openid? %> - - - - -<% end %> - - - - - - - -
- - - <%= 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].nil? ? "" : 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? %> +
+ <%= check_box_tag 'autologin', 1, true, :tabindex => 4 %> +
+ <%= l(:label_stay_logged_in) %> + <% end %> + + <% if Setting.lost_password? %> + 忘记密码? + <% end %> +
<% end %> -
- - - <% if Setting.lost_password? %> - <%= link_to l(:label_password_lost), lost_password_path %> - <% end %> - - - -
-<% end %> -
-<%= call_hook :view_account_login_bottom %> +
+ 登录 +
-<% if params[:username].present? %> -<%= javascript_tag "$('#password').focus();" %> -<% else %> -<%= javascript_tag "$('#username').focus();" %> -<% end %> + + + +
+
+ +
+
+ <%= form_for :user, :url => register_path,:method=>'post',:html=>{:id=>'main_reg_form'} do |f| %> + <%= error_messages_for 'user' %> +
+ + <%= f.text_field :mail,:size => 25, :class=>'loginSignBox' ,:placeholder=>"请输入邮箱地址"%> + +
+
+ + <%= f.password_field :password, :size => 25,:placeholder=>"请输入密码",:class=>'loginSignBox' %> + +
+
+ + <%= f.password_field :password_confirmation, :size => 25,:placeholder=>"请再次输入密码",:class=>'loginSignBox' %> + +
+
+ + <%= f.text_field :login, :size => 25,:placeholder=>"请输入用户昵称",:class=>'loginSignBox'%> + +
+
+
+ +
+ 我已阅读并接受Trustie服务协议条款
+
+ 注册 + +
+ <% end %> +
+
+ +
+ + diff --git a/app/views/account/lost_password.html.erb b/app/views/account/lost_password.html.erb index 3c6c57f52..0e4ddd1ff 100644 --- a/app/views/account/lost_password.html.erb +++ b/app/views/account/lost_password.html.erb @@ -1,16 +1,26 @@ -<% @nav_dispaly_home_path_label = 1 - @nav_dispaly_main_course_label = 1 - @nav_dispaly_main_project_label = 1 - @nav_dispaly_main_contest_label = 1 %> -<% @nav_dispaly_forum_label = 1%> -

<%=l(:label_password_forget)%>

+<%= stylesheet_link_tag 'new_user'%> -<%= form_tag(lost_password_path) do %> -
-

- - <%= text_field_tag 'mail', nil, :size => 40, :placeholder => '请输入注册邮箱'%> - <%= submit_tag l(:button_submit) %> -

-
-<% end %> +
+
+

忘记密码

+
+ <%= form_tag(lost_password_path) do %> +

通过注册邮箱链接重设密码

+ + <%= text_field_tag 'mail', nil, :size => 40, :placeholder => '请输入注册邮箱',:class=>'NomalInput mb20'%> + <% if flash[:error] %> +

<%= flash[:error]%>

+ + <% elsif flash[:notice] %> +

<%= flash[:notice]%>

+ + <% end %> + + <% end %> +
+ + +
+
+ + diff --git a/app/views/forums/index.html.erb b/app/views/forums/index.html.erb index 18ac7f752..85cab957a 100644 --- a/app/views/forums/index.html.erb +++ b/app/views/forums/index.html.erb @@ -19,10 +19,10 @@ diff --git a/app/views/layouts/_base_header_new.html.erb b/app/views/layouts/_base_header_new.html.erb index c224ee0ab..163f3a3ff 100644 --- a/app/views/layouts/_base_header_new.html.erb +++ b/app/views/layouts/_base_header_new.html.erb @@ -56,9 +56,9 @@ diff --git a/app/views/layouts/_footer.html.erb b/app/views/layouts/_footer.html.erb new file mode 100644 index 000000000..5aeb0031f --- /dev/null +++ b/app/views/layouts/_footer.html.erb @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/app/views/layouts/_logined_header.html.erb b/app/views/layouts/_logined_header.html.erb new file mode 100644 index 000000000..5ba49cd5d --- /dev/null +++ b/app/views/layouts/_logined_header.html.erb @@ -0,0 +1,100 @@ + + + diff --git a/app/views/layouts/_new_feedback.html.erb b/app/views/layouts/_new_feedback.html.erb index 3b8098ed5..db0a3c3ee 100644 --- a/app/views/layouts/_new_feedback.html.erb +++ b/app/views/layouts/_new_feedback.html.erb @@ -21,14 +21,15 @@ <% end %> -
+
<%= l(:label_technical_support) %>白   羽 -
-
在线客服
+
+ 在线客服 +
diff --git a/app/views/layouts/_unlogin_header.html.erb b/app/views/layouts/_unlogin_header.html.erb new file mode 100644 index 000000000..e7201b391 --- /dev/null +++ b/app/views/layouts/_unlogin_header.html.erb @@ -0,0 +1,78 @@ + + + diff --git a/app/views/layouts/_user_brief_introduction.html.erb b/app/views/layouts/_user_brief_introduction.html.erb new file mode 100644 index 000000000..3b0500fed --- /dev/null +++ b/app/views/layouts/_user_brief_introduction.html.erb @@ -0,0 +1,8 @@ +<% if user.user_extensions && user.user_extensions.brief_introduction && !user.user_extensions.brief_introduction.empty? %> + <%= user.user_extensions.brief_introduction %>  +<% else%> + 这位童鞋很懒,什么也没有留下~  +<% end %> +<% if User.current == user%> + <%= link_to image_tag("../images/signature_edit.png",width:"12px", height: "12px"), "javascript:void(0);", :onclick => "show_edit_user_introduction();"%> +<% end%> \ No newline at end of file diff --git a/app/views/layouts/_user_courses.html.erb b/app/views/layouts/_user_courses.html.erb new file mode 100644 index 000000000..77ca944f1 --- /dev/null +++ b/app/views/layouts/_user_courses.html.erb @@ -0,0 +1,12 @@ +<% courses.each do |course|%> +
  • + <%= link_to course.name, course_path(course.id,:host=>Setting.host_course), :class => "coursesLineGrey hidden #{course_endTime_timeout?(course) ? 'c_dark_grey' : ''}", :title => course.name%> +
  • +<% end %> + +<% if courses.size == 5%> +
  • + + +
  • +<% end%> \ No newline at end of file diff --git a/app/views/layouts/_user_projects.html.erb b/app/views/layouts/_user_projects.html.erb new file mode 100644 index 000000000..da078c963 --- /dev/null +++ b/app/views/layouts/_user_projects.html.erb @@ -0,0 +1,11 @@ +<% projects.each do |project|%> +
  • + <%= link_to project.name, project_path(project.id,:host=>Setting.host_name), :class => "coursesLineGrey hidden", :title => project.name%> +
  • +<% end %> +<% if projects.size == 5%> +
  • + + +
  • +<% end%> \ No newline at end of file diff --git a/app/views/layouts/_user_watch_btn.html.erb b/app/views/layouts/_user_watch_btn.html.erb index 578319b68..5f9c550b7 100644 --- a/app/views/layouts/_user_watch_btn.html.erb +++ b/app/views/layouts/_user_watch_btn.html.erb @@ -1,11 +1,7 @@ <% if User.current.logged?%> - <% if User.current == target%> - 编辑资料 - <%else%> - <%if(target.watched_by?(User.current))%> - 取消关注 - <% else %> - 添加关注 - <% end %> - <% end%> + <%if(target.watched_by?(User.current))%> + <%= link_to "",watch_path(:object_type=> 'user',:object_id=>target.id,:target_id=>target.id),:class => "homepageFollow", :method => "delete",:remote => "true", :title => "取消关注"%> + <% else %> + <%= link_to "",watch_path(:object_type=> 'user',:object_id=>target.id,:target_id=>target.id),:class => "homepageFollowCancel", :method => "post",:remote => "true", :title => "添加关注"%> + <% end %> <% end %> \ No newline at end of file diff --git a/app/views/layouts/base.html.erb b/app/views/layouts/base.html.erb index 483cabac5..ae44bf0ac 100644 --- a/app/views/layouts/base.html.erb +++ b/app/views/layouts/base.html.erb @@ -17,19 +17,30 @@ <%= call_hook :view_layouts_base_html_head %> <%= yield :header_tags -%> + <%= stylesheet_link_tag 'base','header', :media => 'all'%> + +
    + +
    +
    -<%=render :partial => 'layouts/base_header'%>
    <%= render_flash_messages %> <%= yield %> <%= call_hook :view_layouts_base_content %>
    - <%=render :partial => 'layouts/base_footer'%> + <%#=render :partial => 'layouts/base_footer'%>
    @@ -41,6 +52,9 @@
    +
    +<%= render :partial => 'layouts/footer' %> +
    <%= call_hook :view_layouts_base_body_bottom %> diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb index 3242d79e9..adec9e6fd 100644 --- a/app/views/layouts/base_courses.html.erb +++ b/app/views/layouts/base_courses.html.erb @@ -1,4 +1,4 @@ -<% course_model %> +<%# course_model %> <% teacher_num = teacherCount(@course) %> <% student_num = studentCount(@course) %> <% course_file_num = visable_attachemnts_incourse(@course).count%> @@ -17,17 +17,22 @@ <%= javascript_heads %> <%= heads_for_theme %> <%= call_hook :view_layouts_base_html_head %> - <%= stylesheet_link_tag 'public', 'leftside', 'jquery/jquery-ui-1.9.2', 'courses'%> + <%= stylesheet_link_tag 'public', 'leftside', 'jquery/jquery-ui-1.9.2', 'courses','header'%> <%= javascript_include_tag "course","header","attachments" %> <%= yield :header_tags -%> + +
    - <%= render :partial => 'layouts/new_header' %> -
    -

    @@ -46,16 +51,16 @@ <%= link_to @course.name, course_path(@course) %>

    - + + + + + + + + + +
    @@ -178,11 +183,12 @@
    -
    - - <%= render :partial => 'layouts/new_footer' %> -
    + +
    + <%= render :partial => 'layouts/footer' %> +
    + <%= render :partial => 'layouts/new_feedback' %>