guange_homework
whimlex 10 years ago
commit 3e74796a46

@ -42,6 +42,9 @@ group :development, :test do
gem 'pry-byebug' gem 'pry-byebug'
end end
gem 'pry-stack_explorer' gem 'pry-stack_explorer'
if RUBY_PLATFORM =~ /darwin/
gem 'puma'
end
end end
gem 'rspec-rails', '~> 3.0' gem 'rspec-rails', '~> 3.0'

@ -386,6 +386,7 @@ class IssuesController < ApplicationController
end end
def add_journal def add_journal
if User.current.logged?
jour = Journal.new jour = Journal.new
jour.user_id = User.current.id jour.user_id = User.current.id
jour.notes = params[:notes] jour.notes = params[:notes]
@ -396,6 +397,7 @@ class IssuesController < ApplicationController
format.js format.js
end end
end end
end
private private

@ -89,6 +89,7 @@ class MessagesController < ApplicationController
# Create a new topic # Create a new topic
def new def new
if User.current.logged?
@message = Message.new @message = Message.new
@message.author = User.current @message.author = User.current
@message.board = @board @message.board = @board
@ -101,28 +102,6 @@ class MessagesController < ApplicationController
ids = params[:asset_id].split(',') ids = params[:asset_id].split(',')
update_kindeditor_assets_owner ids,@message.id,OwnerTypeHelper::MESSAGE update_kindeditor_assets_owner ids,@message.id,OwnerTypeHelper::MESSAGE
end end
# 与我相关动态的记录add start
if(@board && @board.course) #项目的先不管
teachers = searchTeacherAndAssistant(@board.course)
for teacher in teachers
if(teacher.user_id != User.current.id)
notify = ActivityNotify.new()
if(@board.course)
notify.activity_container_id = @board.course_id
notify.activity_container_type = 'Course'
else
notify.activity_container_id = @board.project_id
notify.activity_container_type = 'Project'
end
notify.activity_id = @message.id
notify.activity_type = 'Message'
notify.notify_to = teacher.user_id
notify.is_read = 0
notify.save()
end
end
end
# 与我相关动态的记录add end
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message}) call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
render_attachment_warning_if_needed(@message) render_attachment_warning_if_needed(@message)
@ -156,6 +135,9 @@ class MessagesController < ApplicationController
} }
end end
end end
else
redirect_to signin_path
end
end end
# Reply to a topic # Reply to a topic

@ -12,8 +12,11 @@ class StudentWorkController < ApplicationController
### ###
def program_test def program_test
resultObj = {status: 0, results: [], error_msg: '', time: Time.now} is_test = params[:is_test] == 'true'
student_work = find_or_save_student_work resultObj = {status: 0, results: [], error_msg: '', time: Time.now.strftime('%Y-%m-%d %T')}
student_work = find_or_save_student_work(is_test)
unless student_work unless student_work
resultObj[:status] = 100 resultObj[:status] = 100
else else
@ -39,10 +42,22 @@ class StudentWorkController < ApplicationController
end end
end end
render :json => resultObj render :json => resultObj
end end
def index def index
# 消息状态更新
@homework.course_messages.each do |homework_message|
if User.current.id == homework_message.user_id
homework_message.update_attributes(:viewed => true)
end
end
# 消息end
#设置作业对应的forge_messages表的viewed字段 #设置作业对应的forge_messages表的viewed字段
query_student_work = @homework.course_messages query_student_work = @homework.course_messages
query_student_work.each do |query| query_student_work.each do |query|
@ -134,10 +149,18 @@ class StudentWorkController < ApplicationController
end end
def new def new
if @homework.homework_type==2
redirect_to new_user_commit_homework_users_path(homework_id: @homework.id)
return
end
@user = User.current
@student_work = @homework.student_works.where("user_id = ?",User.current.id).first @student_work = @homework.student_works.where("user_id = ?",User.current.id).first
if @student_work.nil? if @student_work.nil?
@student_work = StudentWork.new @student_work = StudentWork.new
end end
respond_to do |format|
format.html{ render :layout => "new_base_user"}
end
end end
def create def create
@ -178,11 +201,12 @@ class StudentWorkController < ApplicationController
end end
def edit def edit
@user = User.current
if !User.current.admin? && @homework.homework_type == 2 #编程作业不能修改作业 if !User.current.admin? && @homework.homework_type == 2 #编程作业不能修改作业
render_403 render_403
else else
respond_to do |format| respond_to do |format|
format.html format.html{ render :layout => "new_base_user"}
end end
end end
end end
@ -599,13 +623,14 @@ class StudentWorkController < ApplicationController
xls_report.string xls_report.string
end end
def find_or_save_student_work def find_or_save_student_work(is_test)
student_work = @homework.student_works.where(user_id: User.current.id).first student_work = @homework.student_works.where(user_id: User.current.id).first
if student_work.nil? if student_work.nil?
@homework.student_works.build( @homework.student_works.build(
name: params[:title], name: params[:title],
description: params[:src], description: params[:src],
user_id: User.current.id user_id: User.current.id,
is_test: is_test
) )
unless @homework.save unless @homework.save
else else

@ -102,10 +102,11 @@ class UsersController < ApplicationController
# issue问题journal缺陷状态更新 forum公共贴吧: user_feedback: 用户留言; new_reply:新闻回复comment # issue问题journal缺陷状态更新 forum公共贴吧: user_feedback: 用户留言; new_reply:新闻回复comment
def user_messages def user_messages
unless User.current.logged? unless User.current.logged?
render_403 redirect_to signin_url
return return
end end
# 当前用户查看消息,则设置消息为已读 # 当前用户查看消息,则设置消息为已读
if params[:viewed] == "all"
course_querys = @user.course_messages course_querys = @user.course_messages
forge_querys = @user.forge_messages forge_querys = @user.forge_messages
user_querys = @user.user_feedback_messages user_querys = @user.user_feedback_messages
@ -116,6 +117,7 @@ class UsersController < ApplicationController
user_querys.update_all(:viewed => true) user_querys.update_all(:viewed => true)
forum_querys.update_all(:viewed => true) forum_querys.update_all(:viewed => true)
end end
end
# @new_message_count = forge_querys.count + forum_querys.count + course_querys.count + user_querys.count # @new_message_count = forge_querys.count + forum_querys.count + course_querys.count + user_querys.count
case params[:type] case params[:type]
when nil when nil
@ -294,13 +296,17 @@ class UsersController < ApplicationController
#用户作业列表 #用户作业列表
def user_homeworks def user_homeworks
if User.current == @user
@page = params[:page] ? params[:page].to_i + 1 : 0 @page = params[:page] ? params[:page].to_i + 1 : 0
user_course_ids = "(" + @user.courses.visible.map{|course| course.id}.join(",") + ")" user_course_ids = @user.courses.empty? ? "(-1)" :"(" + @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) @homework_commons = HomeworkCommon.where("course_id in #{user_course_ids}").order("created_at desc").limit(10).offset(@page * 10)
respond_to do |format| respond_to do |format|
format.js format.js
format.html {render :layout => 'new_base_user'} format.html {render :layout => 'new_base_user'}
end end
else
render_403
end
end end
#导入作业 #导入作业
@ -343,8 +349,10 @@ class UsersController < ApplicationController
end end
def new_user_commit_homework def new_user_commit_homework
if User.current.logged?
@user = User.current @user = User.current
@homework = HomeworkCommon.find(params[:homework_id]) @homework = HomeworkCommon.find(params[:homework_id])
@is_test = params[:is_test] == 'true'
@student_work = @homework.student_works.where(user_id: User.current.id).first @student_work = @homework.student_works.where(user_id: User.current.id).first
if @student_work.nil? if @student_work.nil?
@student_work = StudentWork.new @student_work = StudentWork.new
@ -353,14 +361,18 @@ class UsersController < ApplicationController
format.js format.js
format.html {render :layout => 'new_base_user'} format.html {render :layout => 'new_base_user'}
end end
else
render_403
end
end end
def user_commit_homework def user_commit_homework
flash[:notice] = l(:notice_successful_create) flash[:notice] = l(:notice_successful_create)
redirect_to user_homeworks_user_path(User.current) redirect_to student_work_index_url(:homework => params[:homework])
end end
def user_new_homework def user_new_homework
if User.current.logged?
if params[:homework_common] if params[:homework_common]
homework = HomeworkCommon.new homework = HomeworkCommon.new
homework.name = params[:homework_common][:name] homework.name = params[:homework_common][:name]
@ -389,7 +401,7 @@ class UsersController < ApplicationController
homework_detail_programing = HomeworkDetailPrograming.new homework_detail_programing = HomeworkDetailPrograming.new
homework.homework_detail_programing = homework_detail_programing homework.homework_detail_programing = homework_detail_programing
homework_detail_programing.ta_proportion = params[:ta_proportion] || 0.6 homework_detail_programing.ta_proportion = params[:ta_proportion] || 0.6
homework_detail_programing.language = params[:program][:language].to_i homework_detail_programing.language = params[:language_type].to_i
inputs = params[:program][:input] inputs = params[:program][:input]
if Array === inputs if Array === inputs
@ -409,6 +421,9 @@ class UsersController < ApplicationController
redirect_to user_homeworks_user_path(User.current.id) redirect_to user_homeworks_user_path(User.current.id)
end end
end end
else
render_403
end
end end
#用户从资源库导入资源到作业 #用户从资源库导入资源到作业
@ -504,6 +519,7 @@ class UsersController < ApplicationController
att_copy = atta.copy att_copy = atta.copy
att_copy.container_id = nil att_copy.container_id = nil
att_copy.container_type = nil att_copy.container_type = nil
att_copy.author_id = User.current.id
att_copy.copy_from = atta.id att_copy.copy_from = atta.id
att_copy.save att_copy.save
@attachments << att_copy @attachments << att_copy
@ -537,6 +553,10 @@ class UsersController < ApplicationController
# modified by fq # modified by fq
def user_newfeedback def user_newfeedback
unless User.current.logged?
redirect_to signin_url
return
end
# 更新用户留言消息状态 # 更新用户留言消息状态
@user.journals_for_messages.each do |jour_message| @user.journals_for_messages.each do |jour_message|
jour_message.user_feedback_messages.each do |userfeedback_message| jour_message.user_feedback_messages.each do |userfeedback_message|
@ -764,7 +784,7 @@ class UsersController < ApplicationController
@page = params[:page] ? params[:page].to_i + 1 : 0 @page = params[:page] ? params[:page].to_i + 1 : 0
user_project_ids = @user.projects.visible.empty? ? "(-1)" : "(" + @user.projects.visible.map{|project| project.id}.join(",") + ")" 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(",") + ")" user_course_ids = @user.courses.visible.empty? ? "(-1)" : "(" + @user.courses.visible.map{|course| course.id}.join(",") + ")"
course_types = "('Message','News','HomeworkCommon','poll')" course_types = "('Message','News','HomeworkCommon','Poll')"
project_types = "('Message','Issue')" project_types = "('Message','Issue')"
if params[:type].present? if params[:type].present?
case params[:type] case params[:type]
@ -780,11 +800,13 @@ class UsersController < ApplicationController
@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) @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" 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) @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)
when "current_user"
@user_activities = UserActivity.where("user_id = #{User.current.id} and ((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)
else 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) @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 end
else 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) @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 end
# @user_activities = paginateHelper @user_activities,500 # @user_activities = paginateHelper @user_activities,500
@type = params[:type] @type = params[:type]

@ -202,11 +202,15 @@ class WordsController < ApplicationController
#给用户留言 #给用户留言
def leave_user_message def leave_user_message
if User.current.logged?
@user = User.find(params[:id]) @user = User.find(params[:id])
if params[:new_form][:user_message].size>0 && User.current.logged? && @user if params[:new_form][:user_message].size>0 && User.current.logged? && @user
@user.add_jour(User.current, params[:new_form][:user_message]) @user.add_jour(User.current, params[:new_form][:user_message])
end end
redirect_to feedback_path(@user) redirect_to feedback_path(@user)
else
render_403
end
end end
# add by nwb # add by nwb

@ -2334,6 +2334,20 @@ module ApplicationHelper
end end
end end
end end
#动态列表中,确定学生是该提交还是进列表
def student_work_activity_submit_status(opt={})
default_opt = {class: 'c_blue'}.merge(opt)
is_teacher = User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true)
homework = default_opt[:homework]
work = cur_user_works_for_homework homework
if work.nil? && !is_teacher
link_to "提交("+homework.student_works.count.to_s+")", new_student_work_path(:homework => homework.id), :class=> default_opt[:class]
else
link_to "提交("+homework.student_works.count.to_s+")", student_work_index_path(:homework => homework.id), :class=> default_opt[:class]
end
end
#根据传入作业确定显示为编辑作品还是新建作品,或者显示作品数量 #根据传入作业确定显示为编辑作品还是新建作品,或者显示作品数量
def user_for_homework_common homework,is_teacher def user_for_homework_common homework,is_teacher
@ -2347,7 +2361,7 @@ module ApplicationHelper
if homework.homework_type == 1 && homework.homework_detail_manual && homework.homework_detail_manual.comment_status != 1 #匿评作业,且作业状态不是在开启匿评之前 if homework.homework_type == 1 && homework.homework_detail_manual && homework.homework_detail_manual.comment_status != 1 #匿评作业,且作业状态不是在开启匿评之前
link_to "修改作品", "", :class => 'c_blue', :title => "开启匿评后不可修改作品" link_to "修改作品", "", :class => 'c_blue', :title => "开启匿评后不可修改作品"
elsif homework.homework_type == 2 #编程作业不能修改作品 elsif homework.homework_type == 2 #编程作业不能修改作品
link_to "作品已交", "",:class => 'c_blue',:title => "编程作业不可修改作品" link_to "作品已交", student_work_index_path(:homework => homework.id),:class => 'c_blue',:title => "编程作业不可修改作品"
else else
link_to "修改作品", edit_student_work_path(work.id),:class => 'c_blue' link_to "修改作品", edit_student_work_path(work.id),:class => 'c_blue'
end end

@ -1,4 +1,6 @@
# encoding: utf-8 # encoding: utf-8
include UserScoreHelper
module StudentWorkHelper module StudentWorkHelper
def user_projects_option def user_projects_option
cond = Project.visible_condition(User.current) + " AND projects.project_type <> 1" cond = Project.visible_condition(User.current) + " AND projects.project_type <> 1"

@ -423,7 +423,7 @@ module UserScoreHelper
#更新分数 #更新分数
def update_score(option_number) def update_score(option_number)
option_number.total_score = collaboration(option_number) + influence(option_number) + skill(option_number) + active(option_number) option_number.total_score = collaboration(option_number) + influence(option_number) + skill(option_number) + project_active(option_number)
if option_number.total_score < 0 if option_number.total_score < 0
option_number.total_score = 0 option_number.total_score = 0
end end
@ -433,7 +433,7 @@ module UserScoreHelper
#协同得分 #协同得分
def collaboration(option_number) def collaboration(option_number)
option_number.messages_for_issues + option_number.issues_status + option_number.replay_for_message + option_number.replay_for_memo option_number.memo * 2 + option_number.messages_for_issues + option_number.issues_status + option_number.replay_for_message + option_number.replay_for_memo
end end
#影响力得分 #影响力得分
def influence(option_number) def influence(option_number)
@ -444,8 +444,8 @@ module UserScoreHelper
option_number.praise_by_one * 4 + option_number.praise_by_two * 6 + option_number.praise_by_three * 8 - option_number.tread * 2 - option_number.tread_by_one * 2 - option_number.tread_by_two * 4 - option_number.tread_by_three * 6 option_number.praise_by_one * 4 + option_number.praise_by_two * 6 + option_number.praise_by_three * 8 - option_number.tread * 2 - option_number.tread_by_one * 2 - option_number.tread_by_two * 4 - option_number.tread_by_three * 6
end end
#项目贡献得分 #项目贡献得分
def active(option_number) def project_active(option_number)
option_number.changeset * 4 + option_number.document * 4 + option_number.attachment * 4 + option_number.issue_done_ratio * 2 + option_number.post_issue * 4 + option_number.memo * 2 option_number.changeset * 4 + option_number.document * 4 + option_number.attachment * 4 + option_number.issue_done_ratio * 2 + option_number.post_issue * 4
end end
#更新发帖数 #更新发帖数

@ -19,6 +19,7 @@ class CourseActivity < ActiveRecord::Base
user_activity.act_type = self.course_act_type user_activity.act_type = self.course_act_type
user_activity.container_type = "Course" user_activity.container_type = "Course"
user_activity.container_id = self.course_id user_activity.container_id = self.course_id
user_activity.user_id = self.user_id
user_activity.save user_activity.save
end end
end end

@ -15,6 +15,8 @@ class CourseMessage < ActiveRecord::Base
after_create :add_user_message after_create :add_user_message
def add_user_message def add_user_message
if MessageAll.where("message_type = '#{self.class.to_s}' and message_id = '#{self.id}'").first.nil?
self.message_alls << MessageAll.new(:user_id => self.user_id) self.message_alls << MessageAll.new(:user_id => self.user_id)
end end
end
end end

@ -22,6 +22,8 @@ class ForgeMessage < ActiveRecord::Base
after_create :add_user_message after_create :add_user_message
def add_user_message def add_user_message
if MessageAll.where("message_type = '#{self.class.to_s}' and message_id = '#{self.id}'").first.nil?
self.message_alls << MessageAll.new(:user_id => self.user_id) self.message_alls << MessageAll.new(:user_id => self.user_id)
end end
end
end end

@ -10,7 +10,7 @@ class HomeworkCommon < ActiveRecord::Base
has_one :homework_detail_manual, :dependent => :destroy has_one :homework_detail_manual, :dependent => :destroy
has_one :homework_detail_programing, :dependent => :destroy has_one :homework_detail_programing, :dependent => :destroy
has_many :homework_tests, :dependent => :destroy has_many :homework_tests, :dependent => :destroy
has_many :student_works, :dependent => :destroy has_many :student_works, :dependent => :destroy, :conditions => "is_test=0"
has_many :student_works_evaluation_distributions, :through => :student_works #一个作业的分配的匿评列表 has_many :student_works_evaluation_distributions, :through => :student_works #一个作业的分配的匿评列表
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy #用户活动 has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy #用户活动
# 课程动态 # 课程动态

@ -12,6 +12,8 @@ class MemoMessage < ActiveRecord::Base
after_create :add_user_message after_create :add_user_message
def add_user_message def add_user_message
if MessageAll.where("message_type = '#{self.class.to_s}' and message_id = '#{self.id}'").first.nil?
self.message_alls << MessageAll.new(:user_id => self.user_id) self.message_alls << MessageAll.new(:user_id => self.user_id)
end end
end
end end

@ -121,7 +121,7 @@ class News < ActiveRecord::Base
# Description 公用表中也要记录 # Description 公用表中也要记录
def act_as_forge_activity def act_as_forge_activity
# 如果是project为空那么是课程相关的不需要保存 # 如果是project为空那么是课程相关的不需要保存
if !self.project.nil? if self.project
self.forge_acts << ForgeActivity.new(:user_id => self.author_id, self.forge_acts << ForgeActivity.new(:user_id => self.author_id,
:project_id => self.project.id) :project_id => self.project.id)
end end

@ -492,26 +492,29 @@ class Query < ActiveRecord::Base
def project_statement def project_statement
project_clauses = [] project_clauses = []
if project && !project.descendants.active.empty? # unless project.descendants.blank?
ids = [project.id] # if project && project.descendants && project.descendants.active && !project.descendants.active.empty?
if has_filter?("subproject_id") # ids = [project.id]
case operator_for("subproject_id") # if has_filter?("subproject_id")
when '=' # case operator_for("subproject_id")
# include the selected subprojects # when '='
ids += values_for("subproject_id").each(&:to_i) # # include the selected subprojects
when '!*' # ids += values_for("subproject_id").each(&:to_i)
# main project only # when '!*'
else # # main project only
# all subprojects # else
ids += project.descendants.collect(&:id) # # all subprojects
end # ids += project.descendants.collect(&:id)
elsif Setting.display_subprojects_issues? # end
ids += project.descendants.collect(&:id) # elsif Setting.display_subprojects_issues?
end # ids += project.descendants.collect(&:id)
project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',') # end
elsif project # project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',')
# elsif project
if project
project_clauses << "#{Project.table_name}.id = %d" % project.id project_clauses << "#{Project.table_name}.id = %d" % project.id
end end
# end
project_clauses.any? ? project_clauses.join(' AND ') : nil project_clauses.any? ? project_clauses.join(' AND ') : nil
end end

@ -1,6 +1,6 @@
#学生提交作品表 #学生提交作品表
class StudentWork < ActiveRecord::Base class StudentWork < ActiveRecord::Base
attr_accessible :name, :description, :homework_common_id, :user_id, :final_score, :teacher_score, :student_score, :teaching_asistant_score, :project_id attr_accessible :name, :description, :homework_common_id, :user_id, :final_score, :teacher_score, :student_score, :teaching_asistant_score, :project_id, :is_test
belongs_to :homework_common belongs_to :homework_common
belongs_to :user belongs_to :user

@ -11,6 +11,8 @@ class UserFeedbackMessage < ActiveRecord::Base
after_save :add_user_message after_save :add_user_message
def add_user_message def add_user_message
if MessageAll.where("message_type = '#{self.class.to_s}' and message_id = '#{self.id}'").first.nil?
self.message_alls << MessageAll.new(:user_id => self.user_id) self.message_alls << MessageAll.new(:user_id => self.user_id)
end end
end
end end

@ -54,7 +54,7 @@
<%=@count %> <%=@count %>
</td> </td>
<td align="center"> <td align="center">
<%=format_date(user.last_login_on) %> <%=format_time(user.last_login_on) %>
</td> </td>
<td align="center"> <td align="center">
<%=user.id %> <%=user.id %>

@ -23,6 +23,7 @@
<% end %> <% end %>
<% end %> <% end %>
</span> </span>
<div class="cl"></div>
<% project = project %> <% project = project %>
<span class="add_attachment" style="font-weight:normal;"> <span class="add_attachment" style="font-weight:normal;">
<%= button_tag l(:button_browse), :type=>"button", :onclick=>"_file.click()",:onmouseover => 'this.focus()',:class => 'sub_btn', :style => ie8? ? 'display:none' : '' %> <%= button_tag l(:button_browse), :type=>"button", :onclick=>"_file.click()",:onmouseover => 'this.focus()',:class => 'sub_btn', :style => ie8? ? 'display:none' : '' %>

@ -10,6 +10,7 @@
div.respond-form .reply_btn{margin-left:565px;margin-top:5px;} div.respond-form .reply_btn{margin-left:565px;margin-top:5px;}
div.recall_con{width:570px;} div.recall_con{width:570px;}
div.recall_con .reply_btn{margin-left:525px;margin-top:5px;} div.recall_con .reply_btn{margin-left:525px;margin-top:5px;}
.ke-container{height: 80px !important;}
</style> </style>
<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg',"init_KindEditor" %> <%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg',"init_KindEditor" %>
<script > <script >

@ -9,7 +9,7 @@
<span><%= @obj_count%></span> <span><%= @obj_count%></span>
<%= l(:label_homework_count)%> <%= l(:label_homework_count)%>
</p> </p>
<%= link_to( l(:label_course_homework_new), new_homework_common_path(:course => @course.id), :class => 'problem_new_btn fl c_dorange') if @is_teacher %> <%#= link_to( l(:label_course_homework_new), new_homework_common_path(:course => @course.id), :class => 'problem_new_btn fl c_dorange') if @is_teacher %>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<% @homeworks.each do |homework|%> <% @homeworks.each do |homework|%>
@ -27,7 +27,7 @@
<% if @is_teacher%> <% if @is_teacher%>
<%= homework_anonymous_comment(homework)%> <%= homework_anonymous_comment(homework)%>
<%= link_to(l(:label_bid_respond_delete), homework_common_path(homework),:method => 'delete', :confirm => l(:text_are_you_sure), :class => "fr mr10 work_edit") %> <%= link_to(l(:label_bid_respond_delete), homework_common_path(homework),:method => 'delete', :confirm => l(:text_are_you_sure), :class => "fr mr10 work_edit") %>
<%= link_to(l(:button_edit),edit_homework_common_path(homework), :class => "fr mr10 work_edit") %> <%#= link_to(l(:button_edit),edit_homework_common_path(homework), :class => "fr mr10 work_edit") %>
<% elsif @is_student%> <% elsif @is_student%>
<%= student_anonymous_comment homework %> <%= student_anonymous_comment homework %>
<%= student_new_homework homework %> <%= student_new_homework homework %>

@ -1,16 +1,17 @@
<% content_for :header_tags do %> <%= javascript_include_tag "/assets/kindeditor/kindeditor" %>
<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg' %>
<%= javascript_include_tag 'homework','baiduTemplate' %>
<% end %>
<%= error_messages_for 'homework_common' %> <%= error_messages_for 'homework_common' %>
<div class="project_r_h">
<h2 class="project_h2">
<%= l(:label_course_homework_new)%>
</h2>
</div>
<div class="hwork_new"> <div class="hwork_new">
<%= labelled_form_for @homework,:url => {:controller => 'homework_common',:action => 'create'} do |f| %> <%= labelled_form_for @homework,:url => {:controller => 'homework_common',:action => 'create'} do |f| %>
<%= hidden_field_tag "course",@course.id%> <%= hidden_field_tag "course",@course.id%>
<%= render :partial => 'homework_common/new_homework_detail_manual_form', :locals => { :homework => @homework,:f => f,:edit_mode => false } %> <%= render :partial => 'homework_common/homework_detail_manual_form', :locals => { :homework => @homework,:f => f,:edit_mode => false } %>
<a href="javascript:void(0)" class="blue_btn fl mr10" onClick="submit_homework('new_homework_common');" >提交</a>
<%#= link_to "上一步", new_homework_common_path(:course => @course.id), :class => "orange_btn_homework fl"%>
<%= link_to '取消',homework_common_index_path(:course => @course.id),:class => 'grey_btn fl'%>
<% end%> <% end%>
</div><!--hwork_new end--> </div><!--hwork_new end-->
<div class="cl"></div> <div class="cl"></div>

@ -5,7 +5,7 @@
<li class="fl"><a href="<%= agreement_path %>" class="f_grey mw20" target="_blank">服务协议</a>|</li> <li class="fl"><a href="<%= agreement_path %>" class="f_grey mw20" target="_blank">服务协议</a>|</li>
<li class="fl" style="display: none"><span class="f_grey mw20" title="暂未开放"><%= l(:label_recruitment_information)%></span>|</li> <li class="fl" style="display: none"><span class="f_grey mw20" title="暂未开放"><%= l(:label_recruitment_information)%></span>|</li>
<li class="fl"><a href="http://forge.trustie.net/forums/1/memos/1168" class="f_grey mw20" target="_blank"><%= l(:label_surpport_group)%></a>|</li> <li class="fl"><a href="http://forge.trustie.net/forums/1/memos/1168" class="f_grey mw20" target="_blank"><%= l(:label_surpport_group)%></a>|</li>
<li class="fl"><span class="f_grey mw20" title="暂未开放"><%= l(:label_forums)%></span></li> <li class="fl"><a href="<%= forums_path %>" class="f_grey mw20" target="_blank" ><%= l(:label_forums)%></a></li>
</ul> </ul>
</div> </div>

@ -123,7 +123,7 @@
<div class="subNav"> <div class="subNav">
<%= link_to l(:label_homework), homework_common_index_path(:course => @course.id), :class => "f14 c_blue02"%> <%= link_to l(:label_homework), homework_common_index_path(:course => @course.id), :class => "f14 c_blue02"%>
<%= link_to "(#{@course.homework_commons.count})", homework_common_index_path(:course => @course.id), :class => "subnav_num c_orange"%> <%= link_to "(#{@course.homework_commons.count})", homework_common_index_path(:course => @course.id), :class => "subnav_num c_orange"%>
<%= link_to( "+#{l(:label_course_homework_new)}", new_homework_common_path(:course => @course.id), :class => 'subnav_green c_white') if is_teacher %> <%#= link_to( "+#{l(:label_course_homework_new)}", new_homework_common_path(:course => @course.id), :class => 'subnav_green c_white') if is_teacher %>
</div> </div>
<div class="subNav"> <div class="subNav">
<%= link_to l(:label_course_news), course_news_index_path(@course), :class => "f14 c_blue02" %> <%= link_to l(:label_course_news), course_news_index_path(@course), :class => "f14 c_blue02" %>

@ -19,12 +19,23 @@
<%= call_hook :view_layouts_base_html_head %> <%= call_hook :view_layouts_base_html_head %>
<!-- page specific tags --> <!-- page specific tags -->
<%= yield :header_tags -%> <%= yield :header_tags -%>
<%= stylesheet_link_tag 'base','header', :media => 'all'%>
</head> </head>
<body class="<%=h body_css_classes %>"> <body class="<%=h body_css_classes %>">
<div class="cl"></div>
<div class="navContainer mb10">
<% if User.current.logged? %>
<%= render :partial => 'layouts/logined_header',:locals=>{:name=>@name,:type=>@type} %>
<% else%>
<%= render :partial => 'layouts/unlogin_header',:locals=>{:name=>@name,:type=>@type} %>
<% end%>
</div>
<div class="cl"></div>
<div id="wrapper"> <div id="wrapper">
<div id="wrapper2"> <div id="wrapper2">
<div id="wrapper3"> <div id="wrapper3">
<%= render :partial => 'layouts/base_header'%>
<div id="main" class=""> <div id="main" class="">
<div id="sidebar"> <div id="sidebar">
@ -38,7 +49,6 @@
<%= call_hook :view_layouts_base_content %> <%= call_hook :view_layouts_base_content %>
<div style="clear:both;"></div> <div style="clear:both;"></div>
</div> </div>
<%= render :partial => 'layouts/base_footer'%>
</div> </div>
</div> </div>
@ -47,6 +57,11 @@
</div> </div>
</div> </div>
<div class="cl"></div>
<%= render :partial => 'layouts/footer' %>
<div class="cl"></div>
<%= call_hook :view_layouts_base_body_bottom %> <%= call_hook :view_layouts_base_body_bottom %>
</body> </body>
</html> </html>

@ -24,17 +24,25 @@
if(email == "") if(email == "")
{ {
$("#valid_email").text("<%= l(:label_input_email_blank)%>"); $("#valid_email").text("<%= l(:label_input_email_blank)%>");
return false;
} }
else if (filter.test(email)) { else if(!filter.test(email))
$("#valid_email").html("");
return true;
}
else
{ {
$("#valid_email").text("<%= l(:label_email_format_error)%>"); $("#valid_email").text("<%= l(:label_email_format_error)%>");
return false;
} }
else if(email.split('@')[0].length >= 20)
{
$("#valid_email").text("邮箱名过长,最长为20个字符");
return false; return false;
} }
else
{
$("#valid_email").text("");
return true;
}
}
function senderEmail(obj) function senderEmail(obj)
{ {

@ -1,7 +1,8 @@
<div class="project_r_h"> <div class="HomeWork" id="RSide">
<h2 class="project_h2">编辑作品</h2> <div class="RightBanner">
</div> <div class="NewsBannerName">编辑作品</div>
<div class="Newwork"> </div>
<div class="Newwork">
<div class="hwork_ctt"> <div class="hwork_ctt">
<div class="hwork_dis" id="tbc_01"> <div class="hwork_dis" id="tbc_01">
<%= labelled_form_for @work,:html => { :multipart => true } do |f|%> <%= labelled_form_for @work,:html => { :multipart => true } do |f|%>
@ -38,8 +39,8 @@
</p> </p>
<div class="cl"></div> <div class="cl"></div>
<p class="ml80 "> <p class="ml80 ">
<a href="javascript:void(0)" class="blue_btn fl c_white" onclick="edit_student_work(<%= @work.id%>);">提交作品</a> <a href="javascript:void(0)" class="blue_btn fl c_white mt10" onclick="edit_student_work(<%= @work.id%>);">提交作品</a>
<%= link_to "返&nbsp;&nbsp;回".html_safe, student_work_index_path(:homework => @homework), :class => "blue_btn grey_btn fl c_white"%> <%= link_to "返&nbsp;&nbsp;回".html_safe, student_work_index_path(:homework => @homework), :class => "blue_btn grey_btn fl c_white mt10 ml10"%>
<div class="cl"></div> <div class="cl"></div>
</p> </p>
</div><!---创建作业内容结束--> </div><!---创建作业内容结束-->
@ -47,6 +48,7 @@
</div> </div>
</div> </div>
</div> </div>
</div><!--新建作业结束--> </div><!--新建作业结束-->
<div class="cl"></div> <div class="cl"></div>
</div>

@ -124,7 +124,6 @@
</h4> </h4>
<% if @is_teacher%> <% if @is_teacher%>
<%= homework_anonymous_comment(@homework)%> <%= homework_anonymous_comment(@homework)%>
<%= link_to(l(:button_edit),edit_homework_common_path(@homework), :class => "fr mr10 work_edit") %>
<% else%> <% else%>
<%= student_anonymous_comment @homework %> <%= student_anonymous_comment @homework %>
<%= student_new_homework @homework %> <%= student_new_homework @homework %>

@ -17,10 +17,11 @@
}); });
<% end%> <% end%>
</script> </script>
<div class="project_r_h"> <div class="HomeWork" id="RSide">
<h2 class="project_h2">创建作品</h2> <div class="RightBanner">
</div> <div class="NewsBannerName">提交作品</div>
<div class="Newwork"> </div>
<div class="Newwork">
<div class="hwork_ctt"> <div class="hwork_ctt">
<div class="hwork_dis" id="tbc_01"> <div class="hwork_dis" id="tbc_01">
<%= form_for(@student_work, <%= form_for(@student_work,
@ -39,7 +40,7 @@
<label class="fl"><span class="c_red">*</span>&nbsp;&nbsp;作品名称&nbsp;&nbsp;&nbsp;&nbsp;</label> <label class="fl"><span class="c_red">*</span>&nbsp;&nbsp;作品名称&nbsp;&nbsp;&nbsp;&nbsp;</label>
<%= f.text_field "name", :required => true, :size => 60, :class => "bo fl", :maxlength => 200, :placeholder => "作品名称", :onkeyup => "regexStudentWorkName();" %> <%= f.text_field "name", :required => true, :size => 60, :class => "bo fl", :maxlength => 200, :placeholder => "作品名称", :onkeyup => "regexStudentWorkName();" %>
<% if @homework.homework_type != 2%> <% if @homework.homework_type != 2%>
<a href="javascript:void(0)" class="fl ml10 mt3" onclick="show_project();" > <a href="javascript:void(0)" class="fl ml10 mt3" onclick=" $('#about_project').slideToggle();" >
项目信息 项目信息
<img class="ml5 " src="../images/bid/pic_question.png" width="15" height="15" Title="项目是一种由用户创建的基于&#10;网络的协作空间,能够为个人&#10;或小组提供分布式的协同交流&#10;和资料管理等方面的。"> <img class="ml5 " src="../images/bid/pic_question.png" width="15" height="15" Title="项目是一种由用户创建的基于&#10;网络的协作空间,能够为个人&#10;或小组提供分布式的协同交流&#10;和资料管理等方面的。">
</a> </a>
@ -76,16 +77,17 @@
<div class="cl"></div> <div class="cl"></div>
<% end%> <% end%>
<p class="ml80 "> <p class="ml80 ">
<a href="javascript:void(0)" class="blue_btn fl c_white" onclick="new_student_work();">提交作品</a> <a href="javascript:void(0)" class="blue_btn fl c_white mt10" onclick="new_student_work();">提交作品</a>
<%= link_to "返&nbsp;&nbsp;回".html_safe, student_work_index_path(:homework => @homework), :class => "blue_btn grey_btn fl c_white"%> <%= link_to "返&nbsp;&nbsp;回".html_safe, student_work_index_path(:homework => @homework), :class => "blue_btn grey_btn fl c_white mt10 ml10"%>
<div class="cl"></div> <div class="cl"></div>
</p> </p>
</div><!---创建作业内容结束--> </div><!---创建作业内容结束-->
<% end%> <% end%>
</div> </div>
</div> </div>
</div><!--新建作业结束--> </div><!--新建作业结束-->
<div class="cl"></div> <div class="cl"></div>
</div>
<% else %> <% else %>
@ -125,8 +127,8 @@
</script> </script>
<!-- 模板1结束 --> <!-- 模板1结束 -->
<div class="homepageRight">
<div class="HomeWork"> <div class="HomeWork" id="RSide">
<div class="RightBanner"> <div class="RightBanner">
<div class="NewsBannerName">提交作品</div> <div class="NewsBannerName">提交作品</div>
</div> </div>
@ -201,6 +203,5 @@
<% end %> <% end %>
<% end %> <% end %>
</div><!----ProResult end--> </div><!----ProResult end-->
</div><!--homepageRight end-->
<% end %> <% end %>

@ -17,12 +17,12 @@
</div> </div>
<div class="homepagePostSubmitContainer"> <div class="homepagePostSubmitContainer">
<div class="homepagePostSubmit"> <div class="homepagePostSubmit">
<%= link_to "提交("+activity.student_works.count.to_s+")", student_work_index_path(:homework => activity.id), :class=> "c_blue" %> <%= student_work_activity_submit_status(homework: activity) %>
</div> </div>
<div class="homepagePostDeadline">截止时间:<%= format_date(activity.end_time) %></div> <div class="homepagePostDeadline">截止时间:<%= activity.end_time.to_s %></div>
</div> </div>
<div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>"> <div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>">
作业描述:<%= activity.description.html_safe %> <%= activity.description.html_safe %>
</div> </div>
<div class="homepagePostSetting" style="visibility: hidden" id="act-<%=user_activity_id %>"> <div class="homepagePostSetting" style="visibility: hidden" id="act-<%=user_activity_id %>">
<ul> <ul>

@ -21,11 +21,11 @@
<% end %> <% end %>
</div> </div>
<div class="homepagePostDate"> <div class="homepagePostDate">
发帖时间:<%= format_date(activity.created_on) %> 发帖时间:<%= format_time(activity.created_on) %>
</div> </div>
<div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>">帖子描述: <div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>">
<% if activity.parent_id.nil? %> <% if activity.parent_id.nil? %>
<%= activity.content.to_s.html_safe%> <%= activity.content.to_s.html_safe%>
<% else %> <% else %>
@ -61,7 +61,7 @@
<%if count > 2 %> <%if count > 2 %>
<div class="homepagePostReplyBannerMore"> <div class="homepagePostReplyBannerMore">
<a id="reply_btn_<%=user_activity_id%>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help" > <a id="reply_btn_<%=user_activity_id%>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help" >
点击展开更多回复(<%= count.to_s%>) 展开更多
</a> </a>
</div> </div>
<% end %> <% end %>
@ -85,7 +85,7 @@
<% activity= activity.parent ? activity.parent : activity%> <% activity= activity.parent ? activity.parent : activity%>
<% replies_all_i = 0 %> <% replies_all_i = 0 %>
<% if count > 0 %> <% if count > 0 %>
<div class="homepagePostReplyContainer" id="reply_div_<%= user_activity_id %>"> <div class="" id="reply_div_<%= user_activity_id %>">
<ul> <ul>
<% activity.children.reorder("created_on desc").each do |reply|%> <% activity.children.reorder("created_on desc").each do |reply|%>
<% replies_all_i=replies_all_i+1 %> <% replies_all_i=replies_all_i+1 %>
@ -100,7 +100,7 @@
<% else %> <% else %>
<%= link_to reply.try(:author).try(:realname), user_path(reply.author_id), :class => "newsBlue mr10 f14" %> <%= link_to reply.try(:author).try(:realname), user_path(reply.author_id), :class => "newsBlue mr10 f14" %>
<% end %> <% end %>
<%= format_date(reply.created_on) %> <%= format_time(reply.created_on) %>
</div> </div>
<div class="homepagePostReplyContent break_word"> <div class="homepagePostReplyContent break_word">
<%= reply.content.html_safe %> <%= reply.content.html_safe %>

@ -16,10 +16,9 @@
<%= link_to activity.title.to_s, news_path(activity), :class => "postGrey" %> <%= link_to activity.title.to_s, news_path(activity), :class => "postGrey" %>
</div> </div>
<div class="homepagePostDate"> <div class="homepagePostDate">
发布时间:<%= format_date(activity.created_on) %> 发布时间:<%= format_time(activity.created_on) %>
</div> </div>
<div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id %>"> <div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id %>">
通知描述:
<%= activity.description.html_safe %> <%= activity.description.html_safe %>
</div> </div>
</div> </div>
@ -35,7 +34,7 @@
<%if count>2 %> <%if count>2 %>
<div class="homepagePostReplyBannerMore"> <div class="homepagePostReplyBannerMore">
<a id="reply_btn_<%=user_activity_id%>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help" > <a id="reply_btn_<%=user_activity_id%>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help" >
点击展开更多回复(<%= count.to_s%>) 展开更多
</a> </a>
</div> </div>
<% end %> <% end %>
@ -57,7 +56,7 @@
<% replies_all_i = 0 %> <% replies_all_i = 0 %>
<% if count > 0 %> <% if count > 0 %>
<div class="homepagePostReplyContainer" id="reply_div_<%= user_activity_id %>"> <div class="" id="reply_div_<%= user_activity_id %>">
<ul> <ul>
<% activity.comments.reorder("created_on desc").each do |comment| %> <% activity.comments.reorder("created_on desc").each do |comment| %>
<% replies_all_i = replies_all_i + 1 %> <% replies_all_i = replies_all_i + 1 %>
@ -72,7 +71,7 @@
<% else %> <% else %>
<%= link_to comment.try(:author).try(:realname), user_path(comment.author_id), :class => "newsBlue mr10 f14" %> <%= link_to comment.try(:author).try(:realname), user_path(comment.author_id), :class => "newsBlue mr10 f14" %>
<% end %> <% end %>
<%= format_date(comment.created_on) %> <%= format_time(comment.created_on) %>
</div> </div>
<div class="homepagePostReplyContent break_word"><%= comment.comments.html_safe %></div> <div class="homepagePostReplyContent break_word"><%= comment.comments.html_safe %></div>
</div> </div>

@ -1,5 +1,6 @@
<% has_commit = has_commit_poll?(activity.id ,User.current)%> <% has_commit = has_commit_poll?(activity.id ,User.current)%>
<% poll_name = activity.polls_name.empty? ? l(:label_poll_new) : activity.polls_name%> <% poll_name = activity.polls_name.empty? ? l(:label_poll_new) : activity.polls_name%>
<% if ( activity.polls_status==2) %>
<div class="resources mt10"> <div class="resources mt10">
<div class="homepagePostBrief"> <div class="homepagePostBrief">
<div class="homepagePostPortrait"> <div class="homepagePostPortrait">
@ -26,9 +27,9 @@
<% end %> <% end %>
</div> </div>
<div class="homepagePostDate"> <div class="homepagePostDate">
发布时间:<%= format_date(activity.published_at) %> 发布时间:<%= format_time(activity.published_at) %>
</div> </div>
<div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>">问卷描述:<%=activity.polls_description.html_safe.to_s%></div> <div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>"><%=activity.polls_description.html_safe.to_s%></div>
<div class="homepagePostSetting" id="act-<%= user_activity_id %>" style="visibility: hidden"> <div class="homepagePostSetting" id="act-<%= user_activity_id %>" style="visibility: hidden">
<ul> <ul>
<li class="homepagePostSettingIcon"> <li class="homepagePostSettingIcon">
@ -44,3 +45,4 @@
<div class="cl"></div> <div class="cl"></div>
</div> </div>
</div> </div>
<% end %>

@ -5,4 +5,4 @@
<div>&nbsp;&nbsp;&nbsp; <%= l('userscore.active.update_issues')%> * 2 = <%= option_num.issue_done_ratio %> * 2 = <%= option_num.issue_done_ratio * 2 %></div> <div>&nbsp;&nbsp;&nbsp; <%= l('userscore.active.update_issues')%> * 2 = <%= option_num.issue_done_ratio %> * 2 = <%= option_num.issue_done_ratio * 2 %></div>
<div>&nbsp;&nbsp;&nbsp; <%= l('userscore.active.release_issues')%> * 4 = <%= option_num.post_issue %> * 4 = <%= option_num.post_issue * 4 %></div> <div>&nbsp;&nbsp;&nbsp; <%= l('userscore.active.release_issues')%> * 4 = <%= option_num.post_issue %> * 4 = <%= option_num.post_issue * 4 %></div>
<div>&nbsp;&nbsp;&nbsp; <%= l('userscore.active.release_messages')%> * 1 = <%= option_num.memo %> * 2 = <%= option_num.memo * 2 %></div> <div>&nbsp;&nbsp;&nbsp; <%= l('userscore.active.release_messages')%> * 1 = <%= option_num.memo %> * 2 = <%= option_num.memo * 2 %></div>
<div>&nbsp;&nbsp;&nbsp; <%= l(:label_user_score_of_active)%> = <%= option_num.changeset * 4 %> + <%= option_num.document * 4 %> + <%= option_num.attachment * 4 %> + <%= option_num.issue_done_ratio * 2 %> + <%= option_num.post_issue * 4 %> + <%= option_num.memo * 2 %> = <%= active(option_num) %> </div> <div>&nbsp;&nbsp;&nbsp; <%= l(:label_user_score_of_active)%> = <%= option_num.changeset * 4 %> + <%= option_num.document * 4 %> + <%= option_num.attachment * 4 %> + <%= option_num.issue_done_ratio * 2 %> + <%= option_num.post_issue * 4 %> + <%= option_num.memo * 2 %> = <%= project_active(option_num) %> </div>

@ -30,10 +30,10 @@
</div> </div>
<div class="homepagePostDeadline"> <div class="homepagePostDeadline">
时间: 时间:
<%=format_date(activity.created_on) %> <%=format_time(activity.created_on) %>
</div> </div>
</div> </div>
<div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id %>">缺陷描述: <div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id %>">
<% if activity.description? %> <% if activity.description? %>
<%= textAreailizable activity, :description, :attachments => activity.attachments %> <%= textAreailizable activity, :description, :attachments => activity.attachments %>
<% end %> <% end %>
@ -72,7 +72,7 @@
<% if count > 2 %> <% if count > 2 %>
<div class="homepagePostReplyBannerMore"> <div class="homepagePostReplyBannerMore">
<a id="reply_btn_<%= user_activity_id %>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help"> <a id="reply_btn_<%= user_activity_id %>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help">
点击展开更多回复(<%= count.to_s %>) 展开更多
</a> </a>
</div> </div>
<% end %> <% end %>
@ -94,7 +94,7 @@
<% replies_all_i = 0 %> <% replies_all_i = 0 %>
<% if count > 0 %> <% if count > 0 %>
<div class="homepagePostReplyContainer" id="reply_div_<%= user_activity_id %>"> <div class="" id="reply_div_<%= user_activity_id %>">
<ul> <ul>
<% activity.journals.reorder("created_on desc").each do |reply| %> <% activity.journals.reorder("created_on desc").each do |reply| %>
<% replies_all_i=replies_all_i + 1 %> <% replies_all_i=replies_all_i + 1 %>
@ -109,7 +109,7 @@
<% else %> <% else %>
<%= link_to reply.try(:user).try(:realname), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> <%= link_to reply.try(:user).try(:realname), user_path(reply.user_id), :class => "newsBlue mr10 f14" %>
<% end %> <% end %>
<%= format_date(reply.created_on) %> <%= format_time(reply.created_on) %>
</div> </div>
<% if reply.details.any? %> <% if reply.details.any? %>
<% details_to_strings(reply.details).each do |string| %> <% details_to_strings(reply.details).each do |string| %>
@ -131,3 +131,17 @@
<% end %> <% end %>
</div> </div>
</div> </div>
<script type="text/javascript">
$(function(){
var images=$("div#activity_description_<%= user_activity_id %>").find("img");
if (images.length>0) {
for (var i=0; i<images.length; i++){
var image=$(images[i]);
var element=$("<a></a>").attr("href",image.attr('src'));
image.wrap(element);
}
}
$('#activity_description_<%= user_activity_id %> a').colorbox({rel:'nofollow', close: "关闭"});
});
</script>

@ -24,9 +24,9 @@
<% end %> <% end %>
</div> </div>
<div class="homepagePostDate"> <div class="homepagePostDate">
时间:<%= format_date(activity.created_on) %> 时间:<%= format_time(activity.created_on) %>
</div> </div>
<div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>">帖子描述: <div class="homepagePostIntro break_word upload_img" id="activity_description_<%= user_activity_id%>">
<% if activity.parent_id.nil? %> <% if activity.parent_id.nil? %>
<%= activity.content.to_s.html_safe%> <%= activity.content.to_s.html_safe%>
<% else %> <% else %>
@ -49,7 +49,7 @@
)</div> )</div>
<div class="homepagePostReplyBannerTime"><%#=format_date(activity.updated_on)%></div> <div class="homepagePostReplyBannerTime"><%#=format_date(activity.updated_on)%></div>
<%if count>2 %> <%if count>2 %>
<div class="homepagePostReplyBannerMore"><a id="reply_btn_<%=user_activity_id%>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help" >点击展开更多回复(<%= count.to_s%>)</a></div> <div class="homepagePostReplyBannerMore"><a id="reply_btn_<%=user_activity_id%>" onclick="expand_reply('#reply_div_<%= user_activity_id %> li','#reply_btn_<%=user_activity_id%>')" data-count="<%= count %>" data-init="0" class=" replyGrey" href="javascript:void(0)" value="show_help" >展开更多</a></div>
<% end %> <% end %>
</div> </div>
@ -71,7 +71,7 @@
<% activity= activity.parent_id.nil? ? activity : activity.parent %> <% activity= activity.parent_id.nil? ? activity : activity.parent %>
<% replies_all_i = 0 %> <% replies_all_i = 0 %>
<% if count > 0 %> <% if count > 0 %>
<div class="homepagePostReplyContainer" id="reply_div_<%= user_activity_id %>"> <div class="" id="reply_div_<%= user_activity_id %>">
<ul> <ul>
<% activity.children.reorder("created_on desc").each do |reply| %> <% activity.children.reorder("created_on desc").each do |reply| %>
<% replies_all_i=replies_all_i+1 %> <% replies_all_i=replies_all_i+1 %>
@ -86,7 +86,7 @@
<% else %> <% else %>
<%= link_to reply.try(:author).try(:realname), user_path(reply.author_id), :class => "newsBlue mr10 f14" %> <%= link_to reply.try(:author).try(:realname), user_path(reply.author_id), :class => "newsBlue mr10 f14" %>
<% end %> <% end %>
<%= format_date(reply.created_on) %> <%= format_time(reply.created_on) %>
</div> </div>
<div class="homepagePostReplyContent break_word"><%= reply.content.html_safe %></div> <div class="homepagePostReplyContent break_word"><%= reply.content.html_safe %></div>
</div> </div>

@ -30,11 +30,11 @@
<div class="courseReferContainer"> <div class="courseReferContainer">
<% if !projects.empty? %> <% if !projects.empty? %>
<% projects.each do |project| %> <% projects.each do |project| %>
<ul class="courseSend fl"> <ul class="courseSend">
<li class="fl"> <li class="" style="display:inline-block">
<input name="projects_ids[]" type="checkbox" value="<%= project.id %>" class="courseSendCheckbox"/> <input name="projects_ids[]" type="checkbox" value="<%= project.id %>" class="courseSendCheckbox"/>
</li> </li>
<li class="sendCourseName fl"><%= project.name%></li> <li class="sendCourseName"><%= project.name%></li>
</ul> </ul>
<% end %> <% end %>
</div> </div>

@ -30,11 +30,11 @@
<div class="courseReferContainer"> <div class="courseReferContainer">
<% if !courses.empty? %> <% if !courses.empty? %>
<% courses.each do |course| %> <% courses.each do |course| %>
<ul class="courseSend fl"> <ul class="courseSend">
<li class="fl"> <li class="" style="display:inline-block">
<input name="course_ids[]" type="checkbox" value="<%= course.id %>" class="courseSendCheckbox"/> <input name="course_ids[]" type="checkbox" value="<%= course.id %>" class="courseSendCheckbox"/>
</li> </li>
<li class="sendCourseName fl"><%= course.name%></li> <li class="sendCourseName"><%= truncate(course.name,:lendght=>25) + '['+course.time.to_s+course.term + ']'%></li>
</ul> </ul>
<% end %> <% end %>
</div> </div>

@ -5,8 +5,8 @@
<%= l(:label_user_score_of_skill)%> + <%= l(:label_user_score_of_active) %></div> <%= l(:label_user_score_of_skill)%> + <%= l(:label_user_score_of_active) %></div>
<!-- <div>&nbsp;&nbsp;&nbsp;+ <%#= l(:label_user_score_of_influence) %></div> --> <!-- <div>&nbsp;&nbsp;&nbsp;+ <%#= l(:label_user_score_of_influence) %></div> -->
<div> = <%= format("%.2f" ,collaboration(option_num)).to_i %> + <%= format("%.2f" , influence(option_num) ).to_i %> <div> = <%= format("%.2f" ,collaboration(option_num)).to_i %> + <%= format("%.2f" , influence(option_num) ).to_i %>
+ <%= "(" if skill(option_num) < 0 %> <%= format("%.2f" , skill(option_num)).to_i %> <%= ")" if skill(option_num) < 0 %> + <%= format("%.2f" , active(option_num)).to_i %></div> + <%= "(" if skill(option_num) < 0 %> <%= format("%.2f" , skill(option_num)).to_i %> <%= ")" if skill(option_num) < 0 %> + <%= format("%.2f" ,project_active(option_num)).to_i %></div>
<% if (format("%.2f" ,collaboration(option_num)).to_i + format("%.2f" , influence(option_num) ).to_i + format("%.2f" , skill(option_num)).to_i + format("%.2f" , active(option_num)).to_i) < 0 %> <% if (format("%.2f" ,collaboration(option_num)).to_i + format("%.2f" , influence(option_num) ).to_i + format("%.2f" , skill(option_num)).to_i + format("%.2f" , project_active(option_num)).to_i) < 0 %>
<div><%= l(:label_score_less_than_zero) %></div> <div><%= l(:label_score_less_than_zero) %></div>
<% else %> <% else %>
<div> = <%= format("%.2f" ,option_num.total_score).to_i %></div> <div> = <%= format("%.2f" ,option_num.total_score).to_i %></div>

@ -68,7 +68,7 @@
</li> </li>
<li> <li>
<%= link_to l(:label_user_score_of_active), "javascript:void(0)", :onclick => "show_div('influence_new_score_index')" %> <%= link_to l(:label_user_score_of_active), "javascript:void(0)", :onclick => "show_div('influence_new_score_index')" %>
<%= format("%.2f" , active(option_num)).to_i %> <%= format("%.2f" , project_active(option_num)).to_i %>
</li> </li>
</ul> </ul>

@ -9,6 +9,7 @@
span.ke-icon-emoticons:hover{background-position:-79px -671px;width:50px;height:26px;} span.ke-icon-emoticons:hover{background-position:-79px -671px;width:50px;height:26px;}
div.ke-toolbar .ke-outline{border:none;} div.ke-toolbar .ke-outline{border:none;}
.ke-inline-block{display: none;} .ke-inline-block{display: none;}
.ke-container{height: 30px !important;}
</style> </style>
<% user_activities.each do |user_activity| <% user_activities.each do |user_activity|
if user_activities %> if user_activities %>
@ -22,7 +23,7 @@
target.show(); target.show();
}else{ }else{
btn.data('init',0); btn.data('init',0);
btn.html('点击展开更多回复('+btn.data('count')+')'); btn.html('展开更多('+btn.data('count')+')');
target.hide(); target.hide();
target.eq(0).show(); target.eq(0).show();
target.eq(1).show(); target.eq(1).show();

@ -49,6 +49,10 @@
<!-- , user_import_resource_user_path(User.current.id,:homework_id=>container.id) --> <!-- , user_import_resource_user_path(User.current.id,:homework_id=>container.id) -->
<a href="javascript:void(0);" class="AnnexBtn fl mt3" onclick="$('#_file').click();">上传附件</a> <a href="javascript:void(0);" class="AnnexBtn fl mt3" onclick="$('#_file').click();">上传附件</a>
<%= link_to "资源库",{:controller => 'users',:action=>'user_import_resource',:id=>User.current.id,:homework_id=>container.id},:class => "FilesBtn fl mr15 mt3",:remote => true%> <%= link_to "资源库",{:controller => 'users',:action=>'user_import_resource',:id=>User.current.id,:homework_id=>container.id},:class => "FilesBtn fl mr15 mt3",:remote => true%>
<% if defined?(has_program) && has_program %>
<a href="javascript:void(0);" class="ProBtn fl mt3">编程</a>
<span class="fl C_lgrey mt3 program_detail_info"></span>
<% end %>
</div> </div>
<% content_for :header_tags do %> <% content_for :header_tags do %>

@ -1,5 +1,5 @@
<% content_for :header_tags do %> <% content_for :header_tags do %>
<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg' %> <%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg'%>
<%= javascript_include_tag 'homework','baiduTemplate' %> <%= javascript_include_tag 'homework','baiduTemplate' %>
<% end %> <% end %>
@ -15,9 +15,12 @@
<div class="calendar_div fl"> <div class="calendar_div fl">
<input type="text" name="homework_common[end_time]" id="homework_end_time" placeholder="截止日期" class="InputBox fl W120 calendar_input" readonly="readonly" > <input type="text" name="homework_common[end_time]" id="homework_end_time" placeholder="截止日期" class="InputBox fl W120 calendar_input" readonly="readonly" >
<%= calendar_for('homework_end_time')%> <%= calendar_for('homework_end_time')%>
</div> </div>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<p id="homework_end_time_span" class="c_red mt5"></p>
<div class="cl"></div>
<div id="homework_editor" style="display: none"> <div id="homework_editor" style="display: none">
<div class="mt10"> <div class="mt10">
<% if edit_mode %> <% if edit_mode %>
@ -31,13 +34,13 @@
<div class="mt10"> <div class="mt10">
<!--<input type="text" class="InputBox W700 SearchIcon" placeholder="发送到课程" />-->
<%= select_tag :course_id, options_for_select(get_as_teacher_courses(User.current), homework.course_id), {:class => "InputBox w720",:value => "请选择发布作业的课程"} %> <%= select_tag :course_id, options_for_select(get_as_teacher_courses(User.current), homework.course_id), {:class => "InputBox w720",:value => "请选择发布作业的课程"} %>
</div> </div>
<p id="homework_course_id_span" class="c_red mt5"></p>
<div class="cl"></div> <div class="cl"></div>
<div id="homework_attachments"> <div id="homework_attachments">
<%= render :partial => 'users/user_homework_attachment', :locals => {:container => homework} %> <%= render :partial => 'users/user_homework_attachment', :locals => {:container => homework, :has_program=>true} %>
</div> </div>
@ -48,40 +51,54 @@
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<input type="hidden" name="homework_type" value="1">
</div>
</div>
<div class="cl"></div>
<script id="t:test-answer-list" type="text/html">
<div class="mt10"> <div class="mt10">
<a href="javascript:void(0);" class=" fl DropBtn">编程选项</a> <textarea class="InputBox W320 fl mr10" placeholder="测试输入" name="program[input][]"></textarea><textarea class="InputBox W320 fl mr5" placeholder="测试输出" name="program[output][]"></textarea>
<div class="DropLine"></div> <a href="javascript:void(0);" class=" fl icon_add" title="增加测试组"></a>
<a href="javascript:void(0);" class=" fl icon_remove" title="删除测试组"></a>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
</script>
<div class="advanced_option" style="display:none;"> <script type="text/html" id="t:program-input-list">
<div class="mt10"> <div class="program-input">
<select class="InputBox W120" name="program[language]"> <input type="hidden" name="language_type" value="<!= language_type !>" />
<! for(var i=0; i< input_groups.length; ++i) { !>
<input name="program[input][]" type="hidden" value="<!= input_groups[i].input !>" />
<input name="program[output][]" type="hidden" value="<!= input_groups[i].output !>" />
<! } !>
</div>
</script>
<div class="BluePopupBox" id="BluePopupBox" style="display:none">
<a href="javascript:void(0);" class="CloseBtn" title="关闭弹框"></a>
<h2 class="BluePopuph2 fl">编程作业的测试集设置</h2>
<div class="cl"></div>
<div class="HomeWorkCon">
<div class="mt15">
<select class="InputBox W120 language_type" >
<option value="1" selected>C语言</option> <option value="1" selected>C语言</option>
<option value="2">C++</option> <option value="2">C++</option>
</select> </select>
</div> </div>
<div class="mt10"> <div class="mt10">
<textarea class="InputBox W320 fl mr10" placeholder="测试输入" name="program[input][]"></textarea><textarea class="InputBox W320 fl mr5" placeholder="测试输出" name="program[output][]"></textarea> <textarea class="InputBox W320 fl mr10" placeholder="测试输入"></textarea><textarea class="InputBox W320 fl mr5" placeholder="测试输出"></textarea>
<a href="javascript:void(0);" class=" fl icon_add" title="增加测试组"></a> <a href="javascript:void(0);" class=" fl icon_add" title="增加测试组"></a>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
</div>
<input type="hidden" name="homework_type" value="1">
</div>
</div>
<div class="cl"></div>
<script id="t:test-answer-list" type="text/html">
<div class="mt10"> <div class="mt10">
<textarea class="InputBox W320 fl mr10" placeholder="测试输入" required name="program[input][]"></textarea><textarea class="InputBox W320 fl mr5" placeholder="测试输出" required name="program[output][]"></textarea> <a href="javascript:void(0);" class="BlueCirBtn fr">确&nbsp;&nbsp;定</a>
<a href="javascript:void(0);" class=" fl icon_add" title="增加测试组"></a>
<a href="javascript:void(0);" class=" fl icon_remove" title="删除测试组"></a>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
</script>
</div><!----HomeWorkCon end-->
</div><!----BluePopupBox end-->

@ -19,6 +19,11 @@
<div class="homepagePostSubmit"> <div class="homepagePostSubmit">
<%= user_for_homework_common homework_common,is_teacher %> <%= user_for_homework_common homework_common,is_teacher %>
</div> </div>
<% if homework_common.homework_type == 2 && is_teacher%>
<div class="homepagePostSubmit">
<%= link_to "模拟答题", new_user_commit_homework_users_path(homework_id: homework_common.id, is_test: true), class: 'c_blue test-program-btn', title: '教师可以通过模拟答题设置作业的标准答案' %>
</div>
<% end %>
<div class="homepagePostDeadline"> <div class="homepagePostDeadline">
<%= l(:label_end_time)%><%= homework_common.end_time%> <%= l(:label_end_time)%><%= homework_common.end_time%>
</div> </div>

@ -38,22 +38,24 @@
</script> </script>
<!-- 模板1结束 --> <!-- 模板1结束 -->
<div class="homepageRight"> <div class="ProgramHomework">
<div class="HomeWork">
<div class="RightBanner">
<div class="NewsBannerName">提交作品</div> <div class="homepageRightBanner mb10">
<div class="NewsBannerName"><%= @is_test ? '模拟答题' : '提交作品' %></div>
</div> </div>
<div class="cl"></div>
<div class="HomeWork">
<div class="HomeWorkBox"> <div class="HomeWorkBox">
<div class=""> <div class="">
<div class="homepagePostTitle fl"><%= @homework.name %></div><span class="fr c_grey">截止时间:<%= @homework.end_time %></span> <div class="homepagePostTitle fl"><%= @homework.name %></div><span class="fr c_grey">截止时间:<%= @homework.end_time %></span>
<div class="cl"></div> <div class="cl"></div>
<a href="javascript:void(0);" class="c_blue"><%= @homework.user.show_name %></a> <a href="javascript:void(0);" class="c_blue"><%= @homework.user.show_name %></a>
<p class="HomeWorkP"><%= @homework.description %> <br /> <p class="HomeWorkP"><%= @homework.description.html_safe %> <br />
输入 2 1 1 4 4 2 3 6 5 <br />
输出 15<br />
</p> </p>
</div> </div>
<p class="c_grey mt15">注:迟交扣<span class="c_red">2</span>分,缺评一个作品扣<span class="c_red">2</span>分</p> <!--p class="c_grey mt15">注:迟交扣<span class="c_red">2</span>分,缺评一个作品扣<span class="c_red">2</span>分</p-->
</div><!---HomeWorkBox end --> </div><!---HomeWorkBox end -->
<div class="HomeWorkCon"> <div class="HomeWorkCon">
<%= form_for(@student_work, <%= form_for(@student_work,
@ -64,7 +66,7 @@
:homework => @homework.id :homework => @homework.id
}, },
:method => :post) do |f|%> :method => :post) do |f|%>
<input type="hidden" name="is_test" value="<%=@is_test%>">
<div class="mt15"> <div class="mt15">
<span>请使用 <%= @homework.language_name %> 语言编写</span> <span>请使用 <%= @homework.language_name %> 语言编写</span>
</div> </div>
@ -72,17 +74,22 @@
<%= f.text_area :name, id: 'program-title', class:"InputBox W700", placeholder:"请概括你的代码的功能" %> <%= f.text_area :name, id: 'program-title', class:"InputBox W700", placeholder:"请概括你的代码的功能" %>
</div> </div>
<div class="mt10"> <div class="mt10">
<%= f.text_area :description, id: 'program-src', class:" W700 H150", placeholder:"请贴入你的代码", rows: 10 %> <%= f.text_area :description, id: 'program-src', class:"InputBox W700 H150", placeholder:"请贴入你的代码", rows: 10 %>
</div> </div>
<div class="mt10"> <div class="mt10">
<a href="javascript:void(0);" class="BlueCirBtn fl" data-homework-id="<%=@homework.id%>" data-student-work-id="<%=@student_work.id%>" id="test-program-btn">测试代码</a> <a href="javascript:void(0);" class="BlueCirBtn fl" data-homework-id="<%=@homework.id%>" data-student-work-id="<%=@student_work.id%>" id="test-program-btn">测试代码</a>
<% unless @is_test %>
<a href="javascript:void(0);" class="BlueCirBtn fr" id="commit-program-work-btn">提交代码</a> <a href="javascript:void(0);" class="BlueCirBtn fr" id="commit-program-work-btn">提交代码</a>
<% end %>
<div class="cl"></div> <div class="cl"></div>
</div> </div>
<% end %> <% end %>
</div><!----HomeWorkCon end--> </div><!----HomeWorkCon end-->
</div><!----HomeWork end--> </div><!----HomeWork end-->
<div class="cl"></div>
<div class="ProResult mt10"> <div class="ProResult mt10">
<% @student_work.student_work_tests.each_with_index do |test, index| %> <% @student_work.student_work_tests.each_with_index do |test, index| %>
<div class="ProResultTop"> <div class="ProResultTop">
<p class="c_blue fl">第<%= @student_work.student_work_tests.count - index%>次测试</p><span class="fr c_grey"><%= test.created_at.to_s(:db) %></span> <p class="c_blue fl">第<%= @student_work.student_work_tests.count - index%>次测试</p><span class="fr c_grey"><%= test.created_at.to_s(:db) %></span>

@ -1,3 +1,5 @@
$("#resources_list").html('<%= escape_javascript( render :partial => 'resources_list' ,:locals=>{ :attachments => @attachments})%>'); $("#resources_list").html('<%= escape_javascript( render :partial => 'resources_list' ,:locals=>{ :attachments => @attachments})%>');
$("#pages").html('<%= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); $("#pages").html('<%= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
$("#res_all_count").html(<%= @atta_count%>); $("#res_all_count").html(<%= @atta_count%>);
$("#res_count").html(0);
$("#checkboxAll").attr('checked',false);

@ -29,6 +29,7 @@
<li> <li>
<ul class="homepagePostTypeProject fl"> <ul class="homepagePostTypeProject fl">
<li class="f14">更多</li> <li class="f14">更多</li>
<li class="mt-4"><%= link_to "我的动态", {:controller => "users", :action => "show", :type => "current_user"}, :class =>"homepagePostTypeAll postTypeGrey"%>
<li class="mt-4"><%= link_to "全部动态", {:controller => "users", :action => "show", :type => nil}, :class =>"homepagePostTypeAll postTypeGrey"%> <li class="mt-4"><%= link_to "全部动态", {:controller => "users", :action => "show", :type => nil}, :class =>"homepagePostTypeAll postTypeGrey"%>
</ul> </ul>
</li> </li>

@ -29,6 +29,11 @@
</div> </div>
<div class="resources mt10" id="users_setting"> <div class="resources mt10" id="users_setting">
<div> <div>
<% if params[:type].nil? %>
<div class="newsReadSetting">
有&nbsp;<span class="c_red"><%= User.current.count_new_message %></span>&nbsp;条未读<a href="javascript:void(0);" class="ml15"><%= link_to "全部设为已读", user_message_path(User.current, :viewed => 'all') %></a>
</div>
<% end %>
<% if @message_alls.count >0 %> <% if @message_alls.count >0 %>
<%# 课程消息 %> <%# 课程消息 %>
<% unless @message_alls.nil? %> <% unless @message_alls.nil? %>
@ -52,7 +57,11 @@
<li class="homepageNewsContent fl"> <li class="homepageNewsContent fl">
<%= link_to ma.course_message.comments.html_safe, {:controller => 'news', :action => 'show', :id => ma.course_message.commented.id }, <%= link_to ma.course_message.comments.html_safe, {:controller => 'news', :action => 'show', :id => ma.course_message.commented.id },
:class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}",
:title => "#{ma.course_message.comments.html_safe}" %></li> :onmouseover =>"message_titile_show($(this),event)",
:onmouseout => "message_titile_hide($(this))" %></li>
<div style="display: none" class="message_title">
<%= ma.course_message.comments.html_safe %>
</div>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li> <li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
</ul> </ul>
<% end %> <% end %>
@ -80,11 +89,21 @@
<ul class="homepageNewsList fl"> <ul class="homepageNewsList fl">
<li class="homepageNewsPortrait fl"><a href="javascript:void(0);"><%=link_to image_tag(url_to_avatar(ma.course_message.author), :width => "30", :height => "30"), user_path(ma.course_message.author) %></a></li> <li class="homepageNewsPortrait fl"><a href="javascript:void(0);"><%=link_to image_tag(url_to_avatar(ma.course_message.author), :width => "30", :height => "30"), user_path(ma.course_message.author) %></a></li>
<li class="homepageNewsPubType fl"><%=link_to ma.course_message.author, user_path(ma.course_message.author), :class => "newsBlue homepageNewsPublisher" %><span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>"><%= ma.course_message.parent_id.nil? ? "发布了课程帖子:" : "评论了课程帖子:" %></span></li> <li class="homepageNewsPubType fl"><%=link_to ma.course_message.author, user_path(ma.course_message.author), :class => "newsBlue homepageNewsPublisher" %><span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>"><%= ma.course_message.parent_id.nil? ? "发布了课程帖子:" : "评论了课程帖子:" %></span></li>
<% if ma.course_message.parent_id.nil? %>
<li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey"> <li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey">
<%= link_to ma.course_message.parent_id.nil? ? ma.course_message.subject.html_safe : ma.course_message.content.html_safe, <%= link_to ma.course_message.subject, course_boards_path(ma.course_message.course, :parent_id => ma.course_message.parent_id ? ma.course_message.parent_id : ma.course_message.id, :topic_id => ma.course_message.id),
course_boards_path(ma.course_message.course, :parent_id => ma.course_message.parent_id ? ma.course_message.parent_id : ma.course_message.id, :topic_id => ma.course_message.id),
:class => "#{ma.viewed==0 ? "newsBlack" : "newsGrey"}", :class => "#{ma.viewed==0 ? "newsBlack" : "newsGrey"}",
:title => "#{ma.course_message.subject.html_safe}" %></a></li> :title => "#{ma.course_message.subject.html_safe}" %></a></li>
<% else %>
<li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey">
<%= link_to ma.course_message.content.html_safe, course_boards_path(ma.course_message.course, :parent_id => ma.course_message.parent_id ? ma.course_message.parent_id : ma.course_message.id, :topic_id => ma.course_message.id),
:class => "#{ma.viewed==0 ? "newsBlack" : "newsGrey"}",
:onmouseover =>"message_titile_show($(this),event)",
:onmouseout => "message_titile_hide($(this))" %></a></li>
<div style="display: none" class="message_title" >
<%= ma.course_message.content.html_safe %>
</div>
<% end %>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li> <li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
</ul> </ul>
@ -150,11 +169,23 @@
<li class="homepageNewsPortrait fl"><a href="javascript:void(0);"><%=link_to image_tag(url_to_avatar(ma.forge_message.author), :width => "30", :height => "30"), user_path(ma.forge_message.author) %></a></li> <li class="homepageNewsPortrait fl"><a href="javascript:void(0);"><%=link_to image_tag(url_to_avatar(ma.forge_message.author), :width => "30", :height => "30"), user_path(ma.forge_message.author) %></a></li>
<li class="homepageNewsPubType fl"><%=link_to ma.forge_message.author, user_path(ma.forge_message.author), :class => "newsBlue homepageNewsPublisher" %> <li class="homepageNewsPubType fl"><%=link_to ma.forge_message.author, user_path(ma.forge_message.author), :class => "newsBlue homepageNewsPublisher" %>
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>"><%= ma.forge_message.parent_id.nil? ? "发布了项目帖子:" : "评论了项目帖子:" %></span></li> <span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>"><%= ma.forge_message.parent_id.nil? ? "发布了项目帖子:" : "评论了项目帖子:" %></span></li>
<% if ma.forge_message.parent_id.nil? %>
<li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey"> <li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey">
<%=link_to ma.forge_message.parent_id.nil? ? ma.forge_message.subject.html_safe : ma.forge_message.content.html_safe, project_boards_path(ma.forge_message.project, <%=link_to ma.forge_message.subject, project_boards_path(ma.forge_message.project,
:parent_id => ma.forge_message.parent_id ? ma.forge_message.parent_id : ma.forge_message.id, :parent_id => ma.forge_message.parent_id ? ma.forge_message.parent_id : ma.forge_message.id,
:topic_id => ma.forge_message.id),:class=>"#{ma.viewed==0?"newsBlack":"newsGrey"}", :topic_id => ma.forge_message.id),:class=>"#{ma.viewed==0?"newsBlack":"newsGrey"}",
:title => "#{ma.forge_message.subject.html_safe}" %></a></li> :title => "#{ma.forge_message.subject.html_safe}" %></a></li>
<% else %>
<li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey">
<%=link_to ma.forge_message.content.html_safe, project_boards_path(ma.forge_message.project,
:parent_id => ma.forge_message.parent_id ? ma.forge_message.parent_id : ma.forge_message.id,
:topic_id => ma.forge_message.id),:class=>"#{ma.viewed==0?"newsBlack":"newsGrey"}",
:onmouseover =>"message_titile_show($(this),event)",
:onmouseout => "message_titile_hide($(this))" %></a></li>
<div style="display: none" class="message_title">
<%= ma.forge_message.content.html_safe %>
</div>
<% end %>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li> <li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
</ul> </ul>
<% end %> <% end %>
@ -180,7 +211,9 @@
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>">评论了新闻:</span></li> <span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>">评论了新闻:</span></li>
<li class="homepageNewsContent fl"> <li class="homepageNewsContent fl">
<%= link_to "#{ma.forge_message.comments.html_safe}", <%= link_to "#{ma.forge_message.comments.html_safe}",
{:controller => 'news', :action => 'show', :id => ma.forge_message.commented.id },:class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :title => "#{ma.forge_message.comments.html_safe}"%></li> {:controller => 'news', :action => 'show', :id => ma.forge_message.commented.id },:class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}",
:title => "#{ma.forge_message.comments.html_safe}" %>
</li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li> <li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
</ul> </ul>
<% end %> <% end %>
@ -196,9 +229,21 @@
<%=link_to ma.memo.author, user_path(ma.memo.author), :class => "newsBlue homepageNewsPublisher" %> <%=link_to ma.memo.author, user_path(ma.memo.author), :class => "newsBlue homepageNewsPublisher" %>
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>" ><%= ma.memo.parent_id.nil? ? "在贴吧发布帖子:" : "回复了贴吧帖子:" %></span> <span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>" ><%= ma.memo.parent_id.nil? ? "在贴吧发布帖子:" : "回复了贴吧帖子:" %></span>
</li> </li>
<% if ma.memo.parent_id.nil? %>
<li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey"> <li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey">
<%= link_to ma.memo.parent_id.nil? ? ma.memo.subject : ma.memo.content, forum_memo_path(ma.memo.forum_id, ma.memo.parent_id ? ma.memo.parent_id: ma.memo.id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :title => "#{ma.memo.parent_id.nil? ? ma.memo.subject : ma.memo.content}" %></a> <%= link_to ma.memo.subject, forum_memo_path(ma.memo.forum_id, ma.memo.parent_id ? ma.memo.parent_id: ma.memo.id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}",
:title => "#{ma.memo.subject}" %></a>
</li> </li>
<% else %>
<li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey">
<%= link_to ma.memo.content.html_safe, forum_memo_path(ma.memo.forum_id, ma.memo.parent_id ? ma.memo.parent_id: ma.memo.id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}",
:onmouseover =>"message_titile_show($(this),event)",
:onmouseout => "message_titile_hide($(this))" %></a>
</li>
<div style="display: none" class="message_title">
<%= ma.memo.content.html_safe %>
</div>
<% end %>
<li class="homepageNewsTime fl"><%= time_tag(ma.memo.created_at).html_safe %> </li> <li class="homepageNewsTime fl"><%= time_tag(ma.memo.created_at).html_safe %> </li>
</ul> </ul>
<% end %> <% end %>
@ -215,8 +260,13 @@
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>"><%= ma.journals_for_message.reply_id == 0 ? "给你留言了:" : "回复了你的留言:" %></span> <span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl":"homepageNewsType fl" %>"><%= ma.journals_for_message.reply_id == 0 ? "给你留言了:" : "回复了你的留言:" %></span>
</li> </li>
<li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey"> <li class="homepageNewsContent fl"><a href="javascript:void(0);" class="newsGrey">
<%= link_to ma.journals_for_message.notes.html_safe, feedback_path(ma.journals_for_message.jour_id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :title => "#{ma.journals_for_message.notes}" %></a> <%= link_to ma.journals_for_message.notes.html_safe, feedback_path(ma.journals_for_message.jour_id), :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}",
:onmouseover =>"message_titile_show($(this),event)",
:onmouseout => "message_titile_hide($(this))" %></a>
</li> </li>
<div style="display: none" class="message_title" >
<%= ma.journals_for_message.notes.html_safe %>
</div>
<li class="homepageNewsTime fl"><%= time_tag(ma.journals_for_message.created_on).html_safe %> </li> <li class="homepageNewsTime fl"><%= time_tag(ma.journals_for_message.created_on).html_safe %> </li>
</ul> </ul>
@ -236,6 +286,17 @@
</div> </div>
</div> </div>
<script>
function message_titile_show(obj,e)
{
obj.parent().next("div").show();
obj.parent().next("div").css("top",e.pageY).css("left",e.pageX).css("position","absolute");
}
function message_titile_hide(obj)
{
obj.parent().next("div").hide();
}
</script>

@ -8,6 +8,7 @@
span.ke-icon-emoticons{background-position:0px -671px;width:50px;height:26px;} span.ke-icon-emoticons{background-position:0px -671px;width:50px;height:26px;}
span.ke-icon-emoticons:hover{background-position:-79px -671px;width:50px;height:26px;} span.ke-icon-emoticons:hover{background-position:-79px -671px;width:50px;height:26px;}
div.ke-toolbar .ke-outline{border:none;} div.ke-toolbar .ke-outline{border:none;}
.ke-container{height: 80px !important;}
</style> </style>
<div > <div >
<div class="homepageRightBanner mb10"> <div class="homepageRightBanner mb10">

@ -1,78 +1,78 @@
# encoding: UTF-8 # encoding: UTF-8
class ForgeMessages < ActiveRecord::Migration class ForgeMessages < ActiveRecord::Migration
def up def up
Project.all.each do |project| # Project.all.each do |project|
transaction do # transaction do
project.forge_messages << ForgeMessage.new(:user_id => project.user_id, :project_id => project.id) # project.forge_messages << ForgeMessage.new(:user_id => project.user_id, :project_id => project.id)
#
# 新闻 # # 新闻
project.news.each do |new| # project.news.each do |new|
new.project.members.each do |m| # new.project.members.each do |m|
if m.user_id != new.author_id # if m.user_id != new.author_id
if m.created_on < new.created_on # 在成员加入项目之后 # if m.created_on < new.created_on # 在成员加入项目之后
new.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => new.project_id, :viewed => true) # new.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => new.project_id, :viewed => true)
end # end
end # end
end # end
end # end
#
# 新闻回复 # # 新闻回复
project.news.each do |new| # project.news.each do |new|
if new.comments # if new.comments
new.comments.each do |comment| # new.comments.each do |comment|
if comment.author_id != comment.commented.author_id # if comment.author_id != comment.commented.author_id
comment.forge_messages << ForgeMessage.new(:user_id => comment.commented.author_id, :project_id => comment.commented.project.id, :viewed => true) # comment.forge_messages << ForgeMessage.new(:user_id => comment.commented.author_id, :project_id => comment.commented.project.id, :viewed => true)
end # end
end # end
end # end
end # end
#
# 讨论区 # # 讨论区
if project.boards.first # if project.boards.first
project.boards.first.messages.each do |message| # project.boards.first.messages.each do |message|
if message.parent_id.nil? # 主贴 # if message.parent_id.nil? # 主贴
message.project.members.each do |m| # message.project.members.each do |m|
if m.user_id != message.author_id # if m.user_id != message.author_id
if m.created_on < message.created_on # if m.created_on < message.created_on
message.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => message.board.project_id, :viewed => true) # message.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => message.board.project_id, :viewed => true)
end # end
end # end
end # end
else # 回帖 # else # 回帖
message.project.members.each do |m| # message.project.members.each do |m|
if m.user_id == Message.find(message.parent_id).author_id && m.user_id != message.author_id # 只针对主贴回复,回复自己的帖子不发消息 # if m.user_id == Message.find(message.parent_id).author_id && m.user_id != message.author_id # 只针对主贴回复,回复自己的帖子不发消息
if m.created_on < message.created_on # if m.created_on < message.created_on
message.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => message.board.project_id, :viewed => true) # message.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => message.board.project_id, :viewed => true)
end # end
end # end
end # end
end # end
end # end
end # end
#
# 缺陷 # # 缺陷
project.issues.each do |issue| # project.issues.each do |issue|
unless issue.author_id == issue.assigned_to_id # unless issue.author_id == issue.assigned_to_id
issue.forge_messages << ForgeMessage.new(:user_id => issue.assigned_to_id, :project_id => issue.project_id, :viewed => true) # issue.forge_messages << ForgeMessage.new(:user_id => issue.assigned_to_id, :project_id => issue.project_id, :viewed => true)
end # end
end # end
#
# 缺陷更新 # # 缺陷更新
project.issues.each do |issue| # project.issues.each do |issue|
if issue.journals # if issue.journals
issue.journals.each do |journal| # issue.journals.each do |journal|
if journal.user_id != journal.issue.author_id # if journal.user_id != journal.issue.author_id
journal.forge_messages << ForgeMessage.new(:user_id => journal.issue.author_id, :project_id => journal.issue.project_id, :viewed => true) # journal.forge_messages << ForgeMessage.new(:user_id => journal.issue.author_id, :project_id => journal.issue.project_id, :viewed => true)
end # end
if journal.user_id != journal.issue.assigned_to_id && journal.issue.assigned_to_id != journal.issue.author_id # 指派人不是自己的话,则给指派人发送 # if journal.user_id != journal.issue.assigned_to_id && journal.issue.assigned_to_id != journal.issue.author_id # 指派人不是自己的话,则给指派人发送
journal.forge_messages << ForgeMessage.new(:user_id => journal.issue.assigned_to_id, :project_id => journal.issue.project_id, :viewed => true) # journal.forge_messages << ForgeMessage.new(:user_id => journal.issue.assigned_to_id, :project_id => journal.issue.project_id, :viewed => true)
end # end
end # end
end # end
end # end
#
end # end
end # end
end end
def down def down

@ -1,79 +1,80 @@
# encoding: UTF-8 # encoding: UTF-8
class CourseMessages < ActiveRecord::Migration class CourseMessages < ActiveRecord::Migration
def up def up
Course.all.each do |course| # Course.all.each do |course|
transaction do # transaction do
course.course_messages << CourseMessage.new(:user_id => course.tea_id,:course_id => course.id) # put course.id
# 作业 # course.course_messages << CourseMessage.new(:user_id => course.tea_id,:course_id => course.id)
course.homework_commons.each do |homework_common| # # 作业
homework_common.course.members.each do |m| # course.homework_commons.each do |homework_common|
if m.user_id != homework_common.user_id # homework_common.course.members.each do |m|
if m.created_on < homework_common.created_at # if m.user_id != homework_common.user_id
homework_common.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true) # if m.created_on < homework_common.created_at
end # homework_common.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true)
end # end
end # end
end # end
# end
# 通知 #
course.news.each do |new| # # 通知
new.course.members.each do |m| # course.news.each do |new|
if m.user_id != new.author_id # new.course.members.each do |m|
if m.created_on < new.created_on # 在成员加入课程之后 # if m.user_id != new.author_id
new.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true) # if m.created_on < new.created_on # 在成员加入课程之后
end # new.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true)
end # end
end # end
end # end
# end
# 通知的回复 #
course.news.each do |new| # # 通知的回复
if new.comments # course.news.each do |new|
new.comments.each do |comment| # if new.comments
if comment.author_id != comment.commented.author_id # new.comments.each do |comment|
comment.course_messages << CourseMessage.new(:user_id => comment.commented.author_id, :course_id => course.id, :viewed => true) # if comment.author_id != comment.commented.author_id
end # comment.course_messages << CourseMessage.new(:user_id => comment.commented.author_id, :course_id => course.id, :viewed => true)
end # end
end # end
end # end
# end
# 讨论区 #
if course.boards.first # # 讨论区
course.boards.first.messages.each do |message| # if course.boards.first
if message.parent_id.nil? # 主贴 # course.boards.first.messages.each do |message|
message.course.members.each do |m| # if message.parent_id.nil? # 主贴
if message.author.allowed_to?(:as_teacher, message.course) && m.user_id != message.author_id # 老师 自己的帖子不给自己发送消息 # message.course.members.each do |m|
if m.created_on < message.created_on # if message.author.allowed_to?(:as_teacher, message.course) && m.user_id != message.author_id # 老师 自己的帖子不给自己发送消息
message.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true) # if m.created_on < message.created_on
end # message.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true)
end # end
end # end
else # 回帖 # end
message.course.members.each do |m| # else # 回帖
if m.user_id == Message.find(message.parent_id).author_id && m.user_id != message.author_id # 只针对主贴回复,回复自己的帖子不发消息 # message.course.members.each do |m|
if m.created_on < message.created_on # if m.user_id == Message.find(message.parent_id).author_id && m.user_id != message.author_id # 只针对主贴回复,回复自己的帖子不发消息
message.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true) # if m.created_on < message.created_on
end # message.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true)
end # end
end # end
end # end
end # end
end # end
# end
# 问卷 #
Poll.where("polls_type = 'Course' and polls_group_id = #{course.id}").each do |poll| # # 问卷
if poll.polls_status == 2 #问卷是发布状态 # Poll.where("polls_type = 'Course' and polls_group_id = #{course.id}").each do |poll|
Course.find(poll.polls_group_id).members.each do |m| # if poll.polls_status == 2 #问卷是发布状态
if m.user_id != poll.user_id # Course.find(poll.polls_group_id).members.each do |m|
if m.created_on < poll.created_at # if m.user_id != poll.user_id
poll.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true) # if m.created_on < poll.created_at
end # poll.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => true)
end # end
end # end
elsif poll.polls_status == 1 #问卷是新建状态 # end
poll.course_messages.destroy_all # elsif poll.polls_status == 1 #问卷是新建状态
end # poll.course_messages.destroy_all
end # end
# end
# 作品评阅 # 作品评阅
# course.homework_commons.each do |homework_common| # course.homework_commons.each do |homework_common|
@ -106,8 +107,8 @@ class CourseMessages < ActiveRecord::Migration
# end # end
# 作品讨论 # 作品讨论
end # end
end # end
end end
def down def down

@ -1,24 +1,25 @@
class UpdateMessageTime < ActiveRecord::Migration class UpdateMessageTime < ActiveRecord::Migration
def up def up
course_count = CourseMessage.all.count / 30 + 1 # course_count = CourseMessage.all.count / 30 + 1
transaction do # transaction do
for i in 1 ... course_count do i # for i in 1 ... course_count do i
CourseMessage.page(i).per(30).each do |cmessage| # CourseMessage.page(i).per(30).each do |cmessage|
if cmessage.course_message # if cmessage.course_message
if cmessage.course_message.respond_to?("created_at") # if cmessage.course_message.respond_to?("created_at")
cmessage.created_at = cmessage.course_message.created_at # cmessage.created_at = cmessage.course_message.created_at
elsif cmessage.course_message.respond_to?("created_on") # elsif cmessage.course_message.respond_to?("created_on")
cmessage.created_at = cmessage.course_message.created_on # cmessage.created_at = cmessage.course_message.created_on
end # end
cmessage.save # cmessage.save
# puts cmessage.id
course_all_message = MessageAll.where("message_type = '#{cmessage.class.to_s}' and message_id = '#{cmessage.id}'").first #
course_all_message.created_at = cmessage.created_at # course_all_message = MessageAll.where("message_type = '#{cmessage.class.to_s}' and message_id = '#{cmessage.id}'").first
course_all_message.save # course_all_message.created_at = cmessage.created_at
end # course_all_message.save
end # end
end # end
end # end
# end
end end
def down def down

@ -1,24 +1,25 @@
class UpdateForgeMessageTime < ActiveRecord::Migration class UpdateForgeMessageTime < ActiveRecord::Migration
def up def up
forge_count = ForgeMessage.all.count / 30 + 1 # forge_count = ForgeMessage.all.count / 30 + 1
transaction do # transaction do
for i in 1 ... forge_count do i # for i in 1 ... forge_count do i
ForgeMessage.page(i).per(30).each do |fmessage| # ForgeMessage.page(i).per(30).each do |fmessage|
if fmessage.forge_message # if fmessage.forge_message
if fmessage.forge_message.respond_to?("created_at") # if fmessage.forge_message.respond_to?("created_at")
fmessage.created_at = fmessage.forge_message.created_at # fmessage.created_at = fmessage.forge_message.created_at
elsif fmessage.forge_message.respond_to?("created_on") # elsif fmessage.forge_message.respond_to?("created_on")
fmessage.created_at = fmessage.forge_message.created_on # fmessage.created_at = fmessage.forge_message.created_on
end # end
fmessage.save # fmessage.save
# puts fmessage.id
forge_all_message = MessageAll.where("message_type = '#{fmessage.class.to_s}' and message_id = '#{fmessage.id}'").first #
forge_all_message.created_at = fmessage.created_at # forge_all_message = MessageAll.where("message_type = '#{fmessage.class.to_s}' and message_id = '#{fmessage.id}'").first
forge_all_message.save # forge_all_message.created_at = fmessage.created_at
end # forge_all_message.save
end # end
end # end
end # end
# end
end end
def down def down

@ -1,34 +1,34 @@
class AboutMemoMessage < ActiveRecord::Migration class AboutMemoMessage < ActiveRecord::Migration
def up def up
Memo.all.each do |memo| # Memo.all.each do |memo|
transaction do # transaction do
# 贴吧帖子 # # 贴吧帖子
receivers = [] # receivers = []
u = User.find(6) # u = User.find(6)
receivers << u # receivers << u
# 主贴 # # 主贴
if memo.parent_id.nil? # if memo.parent_id.nil?
if memo.author_id != memo.forum.creator_id # 发帖人不是吧主 # if memo.author_id != memo.forum.creator_id # 发帖人不是吧主
receivers << memo.forum.creator # receivers << memo.forum.creator
end # end
else # 回帖 # else # 回帖
# 添加吧主 # # 添加吧主
if memo.author_id != memo.forum.creator_id # if memo.author_id != memo.forum.creator_id
receivers << memo.forum.creator # receivers << memo.forum.creator
end # end
# 添加发帖人 # # 添加发帖人
unless memo.parent.nil? # unless memo.parent.nil?
if memo.author_id != memo.parent.author_id # if memo.author_id != memo.parent.author_id
receivers << memo.parent.author # receivers << memo.parent.author
puts memo.id # puts memo.id
end # end
end # end
end # end
receivers.each do |r| # receivers.each do |r|
memo.memo_messages << MemoMessage.new(:user_id => r.id, :forum_id => memo.forum_id, :memo_id => memo.id, :memo_type => "Memo", :viewed => true) # memo.memo_messages << MemoMessage.new(:user_id => r.id, :forum_id => memo.forum_id, :memo_id => memo.id, :memo_type => "Memo", :viewed => true)
end # end
end # end
end # end
end end
def down def down

@ -1,34 +1,34 @@
class AboutUserFeedbackMessage < ActiveRecord::Migration class AboutUserFeedbackMessage < ActiveRecord::Migration
def up def up
JournalsForMessage.all.each do |jour_for_message| # JournalsForMessage.all.each do |jour_for_message|
transaction do # transaction do
# 主留言 # # 主留言
if jour_for_message.jour_type == 'Principal' # if jour_for_message.jour_type == 'Principal'
receivers = [] # receivers = []
if jour_for_message.reply_id == 0 # if jour_for_message.reply_id == 0
if jour_for_message.user_id != jour_for_message.jour_id # 过滤自己给自己的留言消息 # if jour_for_message.user_id != jour_for_message.jour_id # 过滤自己给自己的留言消息
receivers << jour_for_message.jour # receivers << jour_for_message.jour
end # end
else # 留言回复 # else # 留言回复
reply_to = User.find(jour_for_message.reply_id) # reply_to = User.find(jour_for_message.reply_id)
if jour_for_message.user_id != jour_for_message.reply_id # 添加我回复的那个人 # if jour_for_message.user_id != jour_for_message.reply_id # 添加我回复的那个人
receivers << reply_to # receivers << reply_to
end # end
unless jour_for_message.parent.nil? # unless jour_for_message.parent.nil?
if jour_for_message.user_id != jour_for_message.parent.jour_id && jour_for_message.reply_id != jour_for_message.parent.jour_id # 给东家发信息,如果回复的对象是东家则不发 # if jour_for_message.user_id != jour_for_message.parent.jour_id && jour_for_message.reply_id != jour_for_message.parent.jour_id # 给东家发信息,如果回复的对象是东家则不发
receivers << jour_for_message.parent.jour # receivers << jour_for_message.parent.jour
end # end
end # end
end # end
unless receivers.blank? # unless receivers.blank?
receivers.each do |r| # receivers.each do |r|
puts jour_for_message.id # puts jour_for_message.id
jour_for_message.user_feedback_messages << UserFeedbackMessage.new(:user_id => r.id, :journals_for_message_id => jour_for_message.id, :journals_for_message_type => "Principal", :viewed => true) # jour_for_message.user_feedback_messages << UserFeedbackMessage.new(:user_id => r.id, :journals_for_message_id => jour_for_message.id, :journals_for_message_type => "Principal", :viewed => true)
end # end
end # end
end # end
end # end
end # end
end end
def down def down

@ -1,24 +1,25 @@
class UpdateMemoMessageTime < ActiveRecord::Migration class UpdateMemoMessageTime < ActiveRecord::Migration
def up def up
memo_count = Memo.all.count / 30 + 1 # memo_count = Memo.all.count / 30 + 1
transaction do # transaction do
for i in 1 ... memo_count do i # for i in 1 ... memo_count do i
MemoMessage.page(i).per(30).each do |memo_message| # MemoMessage.page(i).per(30).each do |memo_message|
if memo_message.memo # if memo_message.memo
if memo_message.memo.respond_to?("created_at") # if memo_message.memo.respond_to?("created_at")
memo_message.created_at = memo_message.memo.created_at # memo_message.created_at = memo_message.memo.created_at
elsif memo_message.memo.respond_to?("created_on") # elsif memo_message.memo.respond_to?("created_on")
memo_message.created_at = memo_message.memo.created_on # memo_message.created_at = memo_message.memo.created_on
end # end
memo_message.save # memo_message.save
# puts memo_message.id
memo_messages = MessageAll.where("message_type = '#{memo_message.class.to_s}' and message_id = '#{memo_message.id}'").first #
memo_messages.created_at = memo_message.created_at # memo_messages = MessageAll.where("message_type = '#{memo_message.class.to_s}' and message_id = '#{memo_message.id}'").first
memo_messages.save # memo_messages.created_at = memo_message.created_at
end # memo_messages.save
end # end
end # end
end # end
# end
end end
def down def down

@ -1,25 +1,25 @@
class UpdateUserfeebackMessageTime < ActiveRecord::Migration class UpdateUserfeebackMessageTime < ActiveRecord::Migration
def up def up
user_feedback_count = UserFeedbackMessage.all.count / 30 + 1 # user_feedback_count = UserFeedbackMessage.all.count / 30 + 1
transaction do # transaction do
for i in 1 ... user_feedback_count do i # for i in 1 ... user_feedback_count do i
UserFeedbackMessage.page(i).per(30).each do |ufm| # UserFeedbackMessage.page(i).per(30).each do |ufm|
if ufm.journals_for_message # if ufm.journals_for_message
if ufm.journals_for_message.respond_to?("created_at") # if ufm.journals_for_message.respond_to?("created_at")
ufm.created_at = ufm.journals_for_message.created_at # ufm.created_at = ufm.journals_for_message.created_at
elsif ufm.journals_for_message.respond_to?("created_on") # elsif ufm.journals_for_message.respond_to?("created_on")
ufm.created_at = ufm.journals_for_message.created_on # ufm.created_at = ufm.journals_for_message.created_on
end # end
puts ufm.id # puts ufm.id
ufm.save # ufm.save
#
user_feedback_messages = MessageAll.where("message_type = '#{ufm.class.to_s}' and message_id = '#{ufm.id}'").first # user_feedback_messages = MessageAll.where("message_type = '#{ufm.class.to_s}' and message_id = '#{ufm.id}'").first
user_feedback_messages.created_at = ufm.created_at # user_feedback_messages.created_at = ufm.created_at
user_feedback_messages.save # user_feedback_messages.save
end # end
end # end
end # end
end # end
end end
def down def down

@ -0,0 +1,25 @@
class ForgeActivituesDate < ActiveRecord::Migration
def up
forge_count = ForgeActivity.all.count / 30 + 2
transaction do
for i in 1 ... forge_count do i
ForgeActivity.page(i).per(30).each do |activity|
unless activity.forge_act_type == "ProjectCreateInfo"
if activity.forge_act
unless activity.forge_act.project
# puts activity.id
activity.destroy
end
else
# puts activity.id.to_s + "----"
activity.destroy
end
end
end
end
end
end
def down
end
end

@ -0,0 +1,8 @@
class DeleteAnonymousJour < ActiveRecord::Migration
def up
Journal.where("user_id = 2").destroy_all
end
def down
end
end

@ -0,0 +1,8 @@
class DeleteAnonymousFeedback < ActiveRecord::Migration
def up
JournalsForMessage.where("user_id = 2").destroy_all
end
def down
end
end

@ -0,0 +1,8 @@
class DeleteAnonymousMessage < ActiveRecord::Migration
def up
Message.where("author_id = 2").destroy_all
end
def down
end
end

@ -0,0 +1,5 @@
class AddUserIdToUserActivities < ActiveRecord::Migration
def change
add_column :user_activities, :user_id, :int
end
end

@ -0,0 +1,40 @@
class UpdateUserActivities < ActiveRecord::Migration
def up
count = UserActivity.all.count / 30 + 2
transaction do
for i in 1 ... count do i
UserActivity.page(i).per(30).each do |activity|
if activity.container_type.to_s == 'Project'
forge_activity = ForgeActivity.where("forge_act_type = '#{activity.act_type.to_s}' and forge_act_id = #{activity.act_id}").first
if forge_activity
activity.user_id = forge_activity.user_id
else
activity.user_id = 0
end
elsif activity.container_type.to_s == 'Course'
course_activity = CourseActivity.where("course_act_type = '#{activity.act_type.to_s}' and course_act_id = #{activity.act_id}").first
if course_activity
activity.user_id = course_activity.user_id
else
activity.user_id = 0
end
end
activity.save
end
end
end
end
def down
count = UserActivity.all.count / 30 + 2
transaction do
for i in 1 ... count do i
UserActivity.page(i).per(30).each do |activity|
activity.user_id = nil
activity.save
end
end
end
end
end

@ -0,0 +1,5 @@
class AddIsTestToStudentWorks < ActiveRecord::Migration
def change
add_column :student_works, :is_test, :boolean, default: false
end
end

@ -11,7 +11,7 @@
# #
# It's strongly recommended to check this file into your version control system. # It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20150829070453) do ActiveRecord::Schema.define(:version => 20150907152238) do
create_table "activities", :force => true do |t| create_table "activities", :force => true do |t|
t.integer "act_id", :null => false t.integer "act_id", :null => false
@ -1296,11 +1296,11 @@ ActiveRecord::Schema.define(:version => 20150829070453) do
create_table "student_work_tests", :force => true do |t| create_table "student_work_tests", :force => true do |t|
t.integer "student_work_id" t.integer "student_work_id"
t.integer "homework_test_id" t.integer "status"
t.integer "result"
t.datetime "created_at", :null => false t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
t.text "error_msg" t.text "results"
t.text "src"
end end
create_table "student_works", :force => true do |t| create_table "student_works", :force => true do |t|
@ -1317,6 +1317,8 @@ ActiveRecord::Schema.define(:version => 20150829070453) do
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
t.integer "late_penalty", :default => 0 t.integer "late_penalty", :default => 0
t.integer "absence_penalty", :default => 0 t.integer "absence_penalty", :default => 0
t.integer "system_score"
t.boolean "is_test", :default => false
end end
create_table "student_works_evaluation_distributions", :force => true do |t| create_table "student_works_evaluation_distributions", :force => true do |t|
@ -1420,6 +1422,7 @@ ActiveRecord::Schema.define(:version => 20150829070453) do
t.integer "container_id" t.integer "container_id"
t.datetime "created_at", :null => false t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false t.datetime "updated_at", :null => false
t.integer "user_id"
end end
create_table "user_extensions", :force => true do |t| create_table "user_extensions", :force => true do |t|

@ -3536,8 +3536,8 @@ function _getInitHtml(themesPath, bodyClass, cssPath, cssData) {
(_direction === '' ? '<html>' : '<html dir="' + _direction + '">'), (_direction === '' ? '<html>' : '<html dir="' + _direction + '">'),
'<head><meta charset="utf-8" /><title></title>', '<head><meta charset="utf-8" /><title></title>',
'<style>', '<style>',
'html {margin:2px;padding:2px;}', 'html {margin:3px 5px;padding:0px;}',
'body {margin:2px;padding:5px;}', 'body {margin:0px;padding:0px;}',
'body, td {font:14px/1.5 "sans serif",tahoma,verdana,helvetica;}', 'body, td {font:14px/1.5 "sans serif",tahoma,verdana,helvetica;}',
'body, p, div {word-wrap: break-word;}', 'body, p, div {word-wrap: break-word;}',
'p {margin:0 0;}', 'p {margin:0 0;}',

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

@ -26,6 +26,7 @@ $(function(){
var student_work_id = $('#test-program-btn').attr('data-student-work-id'); var student_work_id = $('#test-program-btn').attr('data-student-work-id');
var src = $('#program-src').val(); var src = $('#program-src').val();
var title = $('#program-title').val(); var title = $('#program-title').val();
var is_test = $('input[name=is_test]').val();
if(!valid_form()){ if(!valid_form()){
return; return;
@ -33,18 +34,21 @@ $(function(){
$.post( $.post(
'/student_work/program_test', '/student_work/program_test',
{homework: homework_id, student_work_id: student_work_id, src: src, title: title}, {homework: homework_id, student_work_id: student_work_id, src: src, title: title, is_test: is_test},
function(data,status){ function(data,status){
tested = true; tested = true;
console.log(data); console.log(data);
if(data.index <=0){
data.index = $('.ProResultTop').length+1;
}
if (typeof cb == 'function') {cb(); return;} if (typeof cb == 'function') {cb(data); return;}
var html=bt('t:result-list',data); var html=bt('t:result-list',data);
$('.ProResult').prepend(html); $('.ProResult').prepend(html);
if (data.status==0) { if (data.status==0 && is_test != 'true') {
var r=confirm("答题正确,是否立刻提交?"); var r=confirm("答题正确,是否立刻提交?");
if (r) { if (r) {
$(".HomeWorkCon form").submit(); $(".HomeWorkCon form").submit();
@ -70,7 +74,13 @@ $(function(){
} }
if (!tested) { if (!tested) {
test_program(function(){ test_program(function(data){
if (data.status!=0) {
var r=confirm("测试不通过,是否强制提交?");
if (!r) {
return;
}
};
$(".HomeWorkCon form").submit(); $(".HomeWorkCon form").submit();
}); });
return; return;
@ -85,6 +95,10 @@ $(function(){
//发布作业 //发布作业
$('#program-src').focus(function(){
$(this).css('height', '100px');
});
var isProgramHomework = function(){ var isProgramHomework = function(){
return !$(".advanced_option").is(":hidden"); return !$(".advanced_option").is(":hidden");
} }
@ -118,16 +132,65 @@ $(function(){
}) })
$('a.DropBtn').on('click', function(){ $('a.ProBtn').on('click', function(){
$(".advanced_option").toggle(); $("#BluePopupBox").dialog({
modal: true,
dialogClass: 'BluePopupBox',
minWidth: 753
});
$(".ui-dialog-titlebar").hide();
$("a.CloseBtn").on('click', function(){
$("#BluePopupBox" ).dialog("close");
});
$("#BluePopupBox a.BlueCirBtn").on('click', function(){
var test_numbers = 0;
var valid = true;
var input = null;
var output = null;
var input_groups = [];
$.each($('#BluePopupBox textarea.InputBox'), function(i, val){
if ($(val).val().length<=0) {
$(val)[0].focus();
valid =false;
return false;
}
if (test_numbers %2==0) {
input = $(val).val();
} else {
output = $(val).val();
input_groups.push({input: input, output: output});
}
test_numbers += 1;
});
var language = $('select.language_type').val() == 1 ? 'C语言' : 'C++语言';
if (valid) {
$("input[name=homework_type]").val(2);
$('span.program_detail_info').text('('+language+''+test_numbers/2+'组测试)');
//保存js值
var data = {
language_type: $('select.language_type').val(),
input_groups: input_groups
};
//构建到form中
$('.program-input').remove();
var html=bt('t:program-input-list',data);
$("input[name=homework_type]").after(html);
$("#BluePopupBox" ).dialog( "close" );
};
});
}); });
$(".HomeWork").on('click', 'a.icon_add', function(){ $("#BluePopupBox").on('click', 'a.icon_add', function(){
var html = bt('t:test-answer-list', null); var html = bt('t:test-answer-list', null);
$(this).parent('.mt10').after(html); $(this).parent('.mt10').after(html);
}); });
$(".HomeWork").on('click', 'a.icon_remove', function(){ $("#BluePopupBox").on('click', 'a.icon_remove', function(){
$(this).parent('.mt10').remove(); $(this).parent('.mt10').remove();
}); });
}); });

@ -62,8 +62,15 @@ function submit_homework(id)
{ {
$("#homework_name").focus(); $("#homework_name").focus();
} }
else else if(!regex_homework_end_time())
{
$("#homework_end_time").focus();
}
else if(!regex_course_id())
{ {
$("#course_id").focus();
}
else{
homework_description_editor.sync(); homework_description_editor.sync();
$("#"+id).submit(); $("#"+id).submit();
} }
@ -85,6 +92,36 @@ function regex_homework_name()
return true; return true;
} }
} }
//验证截止时间
function regex_homework_end_time()
{
var name = $.trim($("#homework_end_time").val());
if(name=="")
{
$("#homework_end_time_span").text("截止时间不能为空");
return false;
}
else
{
$("#homework_end_time_span").text("");
return true;
}
}
//验证发送到课程
function regex_course_id(){
var course_id = $("#course_id").val();
if(course_id == -1)
{
$("#homework_course_id_span").text("发布课程不能为空");
return false;
}
else
{
$("#homework_course_id_span").text("");
return true;
}
}
//老师导入作业时查询作业 //老师导入作业时查询作业
function search_homework_by_name(url){ function search_homework_by_name(url){
@ -95,3 +132,49 @@ function search_homework_by_name(url){
} }
); );
} }
//提交新建作品
function new_student_work()
{
if(regexStudentWorkName()&&regexStudentWorkDescription())
{$("#new_student_work").submit();}
}
function edit_student_work(id)
{
if(regexStudentWorkName()&&regexStudentWorkDescription())
{$("#edit_student_work_" + id).submit();}
}
//验证作品名称
function regexStudentWorkName()
{
var name = $.trim($("#student_work_name").val());
if(name=="")
{
$("#student_work_name_span").text("作品名称不能为空");
return false;
}
else
{
$("#student_work_name_span").text("");
return true;
}
}
function regexStudentWorkDescription()
{
var name = $.trim($("#student_work_description").val());
if(name=="")
{
$("#student_work_description_textarea").text("作品描述不能为空");
return false;
}
else
{
$("#student_work_description_textarea").text("");
return true;
}
}

@ -139,6 +139,7 @@ a:hover.tb_all{ background:#ff5d31; color:#fff; text-decoration:none;}
.work_tb_{ background-color: #eaeaea; height:40px; } .work_tb_{ background-color: #eaeaea; height:40px; }
a.work_edit{color: #64bdd9; display:block; padding:1px 5px; border:1px solid #64bdd9;} a.work_edit{color: #64bdd9; display:block; padding:1px 5px; border:1px solid #64bdd9;}
a:hover.work_edit{color: #fff; background: #64bdd9;} a:hover.work_edit{color: #fff; background: #64bdd9;}
a.un_work_edit{color: white; display:block; padding:1px 5px; background-color: darkgray;border:1px solid darkgray;}
/* 控制显示与隐藏css类 */ /* 控制显示与隐藏css类 */
.normaltab { color:#64bdd9 ; } .normaltab { color:#64bdd9 ; }
@ -484,10 +485,7 @@ blockquote img{max-width: 100%;}
blockquote { blockquote {
/* font-style: italic; */ /* font-style: italic; */
border-left: 1px solid #e0e0e0; border:1px solid #d4d4d4;
border-right: 1px solid #e0e0e0;
border-top: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
padding-left: 0.6em; padding-left: 0.6em;
padding-top: 0.6em; padding-top: 0.6em;
padding-right: 0.6em; padding-right: 0.6em;
@ -645,10 +643,10 @@ a:hover.icon_remove{background:url(images/icons.png) -20px -338px no-repeat;}
.hwork_code02{ width:60px; text-align:center; } .hwork_code02{ width:60px; text-align:center; }
.hwork_tit_e{ width:420px; float:left; } .hwork_tit_e{ width:420px; float:left; }
.hwork_tit_e a{ width:405px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; } .hwork_tit_e a{ width:405px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; }
.hwork_num{ width:95px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;min-height: 1px;} .hwork_num{ width:90px; display:block; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;min-height: 1px;}
.mr18{ margin-right:18px;} .mr18{ margin-right:18px;}
a.hwork_center{ display:block; width:60px; margin-right:5px;overflow: hidden; white-space: nowrap; text-overflow:ellipsis;} a.hwork_center{ display:block; width:60px; margin-right:5px;overflow: hidden; white-space: nowrap; text-overflow:ellipsis;}
.hwork_name{ display:block;width:85px; overflow: hidden;white-space: nowrap; text-overflow:ellipsis;min-height: 1px;} .hwork_name{ display:block;width:80px; overflow: hidden;white-space: nowrap; text-overflow:ellipsis;min-height: 1px;}
.absence_penalty{ display:block;width:45px; overflow: hidden;white-space: nowrap; text-overflow:ellipsis;min-height: 1px;} .absence_penalty{ display:block;width:45px; overflow: hidden;white-space: nowrap; text-overflow:ellipsis;min-height: 1px;}
.border_ce {border: 1px solid #e4e4e4;} .border_ce {border: 1px solid #e4e4e4;}
.show_hwork{ border:2px solid #64bdd9; width:646px; padding:10px; color:#666666; padding-bottom:0px; } .show_hwork{ border:2px solid #64bdd9; width:646px; padding:10px; color:#666666; padding-bottom:0px; }

@ -187,7 +187,7 @@ a:hover.grey_n_btn{ background:#717171; color:#fff;}
.green_btn{ background:#28be6c; color:#fff; font-weight:normal;padding:2px 10px; text-align:center;} .green_btn{ background:#28be6c; color:#fff; font-weight:normal;padding:2px 10px; text-align:center;}
a.green_btn{background:#28be6c;color:#fff; font-weight:normal; padding:2px 10px; text-align:center;} a.green_btn{background:#28be6c;color:#fff; font-weight:normal; padding:2px 10px; text-align:center;}
a:hover.green_btn{ background:#14ad5a;} a:hover.green_btn{ background:#14ad5a;}
.blue_btn{ background:#64bdd9; color:#fff; font-weight:normal;padding:2px 10px; text-align:center;} .blue_btn{ background:#64bdd9; color:#fff; font-size:14px; font-weight:normal;padding:2px 8px; text-align:center;}
a.blue_btn{background:#64bdd9;color:#fff; font-weight:normal; padding:2px 10px; text-align:center;} a.blue_btn{background:#64bdd9;color:#fff; font-weight:normal; padding:2px 10px; text-align:center;}
a:hover.blue_btn{ background:#329cbd;} a:hover.blue_btn{ background:#329cbd;}
a.orange_btn{ background:#ff5722;color:#fff; font-weight:normal; padding:2px 10px; text-align:center; } a.orange_btn{ background:#ff5722;color:#fff; font-weight:normal; padding:2px 10px; text-align:center; }
@ -410,9 +410,9 @@ a.uploadIcon {background:url(images/resource_icon_list.png) 8px -60px no-repeat;
.searchResourcePopup {border:none; outline:none; background-color:#ffffff; width:184px; height:25px; padding-left:10px; display:inline-block; float:left;} .searchResourcePopup {border:none; outline:none; background-color:#ffffff; width:184px; height:25px; padding-left:10px; display:inline-block; float:left;}
.searchIconPopup{width:31px; height:25px; background-color:#ffffff; background:url(images/resource_icon_list.png) -40px -18px no-repeat; display:inline-block; float:left;} .searchIconPopup{width:31px; height:25px; background-color:#ffffff; background:url(images/resource_icon_list.png) -40px -18px no-repeat; display:inline-block; float:left;}
.searchIconPopup:hover {cursor: pointer} .searchIconPopup:hover {cursor: pointer}
.courseSend {width:260px; height:15px; line-height:15px; margin-bottom:10px;} .courseSend {width:390px; height:15px; line-height:15px; margin-bottom:10px;display:block;white-space:nowrap;}
.courseSendCheckbox {padding:0px; margin:0px; width:12px; height:12px; margin-right:10px; display:inline-block; margin-top:2px;} .courseSendCheckbox {padding:0px; margin:0px; width:12px; height:12px; margin-right:10px; display:inline-block; margin-top:2px;}
.sendCourseName {font-size:12px; color:#5f6060;} .sendCourseName {font-size:12px; color:#5f6060;display:inline-block}
.courseSendSubmit {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#269ac9; margin-right:25px; float:left;cursor: pointer;} .courseSendSubmit {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#269ac9; margin-right:25px; float:left;cursor: pointer;}
.courseSendSubmit:hover {background-color:#297fb8;} .courseSendSubmit:hover {background-color:#297fb8;}
.courseSendCancel {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#c1c1c1; float:left} .courseSendCancel {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#c1c1c1; float:left}
@ -525,7 +525,7 @@ a.replyGrey1 {color:#888888;}
a.replyGrey1:hover {color:#4b4b4b;} a.replyGrey1:hover {color:#4b4b4b;}
a.newsBlue {color:#269ac9;} a.newsBlue {color:#269ac9;}
a.newsBlue:hover {color:#297fb8;} a.newsBlue:hover {color:#297fb8;}
a.newsBlack {color:#000000; font-size:13px; font-weight:bold} a.newsBlack {color:#4b4b4b; font-size:13px; font-weight:bold}
a.menuGrey {color:#808080;} a.menuGrey {color:#808080;}
a.menuGrey:hover {color:#fe7d68;} a.menuGrey:hover {color:#fe7d68;}
.navSearchTypeBox {width:368px; height:35px; position:absolute; border:1px solid #e1e1e1; background-color:#ffffff; padding-left:10px; display:none; color:#3e3e3e; font-size:14px;} .navSearchTypeBox {width:368px; height:35px; position:absolute; border:1px solid #e1e1e1; background-color:#ffffff; padding-left:10px; display:none; color:#3e3e3e; font-size:14px;}
@ -864,16 +864,36 @@ a:hover.BlueCirBtnMini{ background:#269ac9; color:#fff;}
a.DropBtn{background: url(../images/homepage_icon2.png) -125px -339px no-repeat; width:85px; height:20px; display:block; color:#888888; font-size:14px;} a.DropBtn{background: url(../images/homepage_icon2.png) -125px -339px no-repeat; width:85px; height:20px; display:block; color:#888888; font-size:14px;}
a:hover.DropBtn{background: url(../images/homepage_icon2.png) -125px -370px no-repeat;} a:hover.DropBtn{background: url(../images/homepage_icon2.png) -125px -370px no-repeat;}
.DropLine{border-top:1px solid #d9d9d9; float:left; width:623px; height:10px; margin-top:10px;} .DropLine{border-top:1px solid #d9d9d9; float:left; width:623px; height:10px; margin-top:10px;}
/*20150820课程作业 LB*/
.HomeWork {width:708px; background-color:#ffffff; padding:20px; border:1px solid #dddddd;}
.RightBanner {font-size:16px; width:733px; color:#4b4b4b; padding:10px 0 0 15px; margin-bottom:10px; background:#fff; border:1px solid #dddddd;height:34px;}
select.InputBox,input.InputBox,textarea.InputBox{ border:1px solid #d9d9d9; color:#888888; height:28px; line-height:28px; padding-left:5px; font-size:14px;}
a.BlueCirBtn{ display:block;width:75px; height:28px; background-color:#fff; line-height:28px; vertical-align:middle; text-align:center; border:1px solid #3598db; color:#3598db; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;}
a:hover.BlueCirBtn{ background:#3598db; color:#fff;}
.W440{ width:440px;}
.W120{ width:110px;}
.W700{ width:700px;}
a.AnnexBtn{ background: url(../images/homepage_icon.png) 0px -343px no-repeat; width:70px; height:20px; display:block; padding-left:20px; color:#888888;}
a:hover.AnnexBtn{background: url(../images/homepage_icon.png) -90px -343px no-repeat; color:#3598db;}
a.FilesBtn{ background: url(../images/homepage_icon.png) 0px -373px no-repeat; width:70px; height:20px; display:block; padding-left:20px; color:#888888;}
a:hover.FilesBtn{background: url(../images/homepage_icon.png) -89px -372px no-repeat; color:#3598db;}
a.BlueCirBtnMini{ display:block;width:40px; height:22px; background-color:#ffffff; line-height:24px; vertical-align:middle; text-align:center; border:1px solid #3598db; color:#3598db; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;}
a:hover.BlueCirBtnMini{ background:#3598db; color:#fff;}
a.ProBtn{background: url(../images/homepage_icon.png) -86px -396px no-repeat; width:35px; height:20px; display:block; padding-left:20px; color:#888888;}
a:hover.ProBtn{background: url(../images/homepage_icon.png) -86px -426px no-repeat; color:#3598db;}
a.DropBtn{background: url(../images/homepage_icon.png) -125px -339px no-repeat; width:85px; height:20px; display:block; color:#888888; font-size:14px;}
a:hover.DropBtn{background: url(../images/homepage_icon.png) -125px -370px no-repeat;}
.DropLine{border-top:1px solid #d9d9d9; float:left; width:623px; height:10px; margin-top:10px;}
/*20150820编程作业 LB*/ /*20150820编程作业 LB*/
.W320{ width:320px;} .W320{ width:320px;}
.icon_add{ background:url(images/icons.png) 0px -310px no-repeat; width:16px; height:27px; display:block;float:left; margin-right:5px;} .icon_add{ background:url(../images/course/icons.png) 0px -310px no-repeat; width:16px; height:27px; display:block;float:left; margin-right:5px;}
a:hover.icon_add{background:url(images/icons.png) -20px -310px no-repeat;} a:hover.icon_add{background:url(../images/course/icons.png) -20px -310px no-repeat;}
.icon_remove{background:url(images/icons.png) 0px -338px no-repeat; width:16px; height:27px; display:block;float:left;} .icon_remove{background:url(../images/course/icons.png) 0px -338px no-repeat; width:16px; height:27px; display:block;float:left;}
a:hover.icon_remove{background:url(images/icons.png) -20px -338px no-repeat;} a:hover.icon_remove{background:url(../images/course/icons.png) -20px -338px no-repeat;}
/*20150820提交作业 LB*/ /*20150820提交作业 LB*/
.HomeWorkBox{ background:#f6f6f6; padding:10px; margin:10px 0;} .HomeWorkBox{ background:#f6f6f6; padding:10px; margin:10px 0;}
.c_grey{ color:#888888;} .c_grey{ color:#888888;}
.c_dark_grey{color:#a9a9a9 !important;}
.HomeWorkP{ width:690px; font-size:14px;} .HomeWorkP{ width:690px; font-size:14px;}
.H150{ height:150px;} .H150{ height:150px;}
.ProResult{width:748px; background-color:#fff; border:1px solid #dddddd;border-bottom:none; } .ProResult{width:748px; background-color:#fff; border:1px solid #dddddd;border-bottom:none; }
@ -883,17 +903,43 @@ a:hover.icon_remove{background:url(images/icons.png) -20px -338px no-repeat;}
.W200{ width:200px;} .W200{ width:200px;}
.ProResultTable{ color:#888888;} .ProResultTable{ color:#888888;}
.T_C{ text-align:center;} .T_C{ text-align:center;}
.SearchIcon{background:url(../images/homepage_icon2.png) 676px -393px no-repeat; } .SearchIcon{background:url(../images/homepage_icon.png) 676px -393px no-repeat; }
.SearchIcon:hover{background:url(../images/homepage_icon2.png) 676px -419px no-repeat; } .SearchIcon:hover{background:url(../images/homepage_icon.png) 676px -419px no-repeat; }
a.link_file{ background:url(../images/pic_file.png) 0 2px no-repeat; padding-left:20px; } a.link_file{ background:url(../images/course/pic_file.png) 0 2px no-repeat; padding-left:20px; }
a:hover.link_file{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;} a:hover.link_file{ background:url(../images/course/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;}
a.remove-upload {background: url(../images/delete.png) no-repeat 1px 50%;width: 1px;display: inline-block;padding-left: 16px;}
a.FilesName{ max-width:540px;overflow:hidden; white-space:nowrap; text-overflow:ellipsis; display:block;} a.FilesName{ max-width:540px;overflow:hidden; white-space:nowrap; text-overflow:ellipsis; display:block;}
a.FilesName02{ max-width:665px;overflow:hidden; white-space:nowrap; text-overflow:ellipsis; display:block;} a.FilesName02{ max-width:665px;overflow:hidden; white-space:nowrap; text-overflow:ellipsis; display:block;}
.ProResultUl span { display:block; float:left;} .ProResultUl span { display:block; float:left;}
.ProResultUl li{ line-height:35px; border-bottom:1px solid #dddddd; } .ProResultUl li{ line-height:35px; border-bottom:1px solid #dddddd; }
.DateBorder{border:1px solid #d9d9d9; border-left:none; padding:7px 6px 6px 6px;} .DateBorder{border:1px solid #d9d9d9; border-left:none; padding:7px 6px 6px 6px;}
a.UsersEditBtn{ display:block; width:55px; height:20px; border:1px solid #6d6d6d; color:#fff; background:#888888 url(../images/homepage_icon.png) -11px -35px no-repeat; padding-left:25px; line-height:1.9;-moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px;}
a:hover.UsersEditBtn{ color:#484848; background:#888888 url(../images/homepage_icon.png) -11px -74px no-repeat;}
a.UsersAttBtn{ display:block; width:55px; height:20px; border:1px solid #d3d3d3; color:#888888; background:#f2f3f3 url(../images/homepage_icon.png) -9px -6px no-repeat; padding-left:25px; line-height:1.9;-moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px;}
a:hover.UsersAttBtn{border:1px solid #888888; }
a.UsersApBtn{ display:block; width:55px; height:20px; border:1px solid #d3d3d3; color:#888888; background:#f2f3f3 url(../images/homepage_icon.png) -177px -6px no-repeat; padding-left:25px; line-height:1.9;-moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px;}
a:hover.UsersApBtn{border:1px solid #888888; }
/*20150906编程作业设置弹框 LB*/
.C_lgrey{ color:#a5a5a5;}
.C_Blue{ color:#3598db;}
a.C_Blue{ color:#3598db;}
a:hover.C_Blue{ color:#297fb8;}
.BluePopupBox{ border:3px solid #3598db; padding:20px; background:#fff; width:707px;}
/*.BluePopupBox:hover{ border:3px solid #297fb8; }*/
a.CloseBtn{background:url(../images/CloseBtn.png) 0px 0px no-repeat; width:13px; height:13px; display:block; float:right;}
a:hover.CloseBtn{background:url(../images/CloseBtn.png) 0px -24px no-repeat; }
.BluePopuph2{ font-size:16px; font-weight:bold; color:#3598db; }
.ProBoxResult{width:706px; background-color:#fff; border:1px solid #dddddd;border-bottom:none; max-height:300px; overflow:auto; }
.W108{ width:108px;}
.HomeWorkCon{ width:706px;}
/*20150906导入作业弹框 LB*/
.ImportBox{ width:708px; max-height:300px;overflow:auto;}
.ImportBox li{ margin-bottom:10px;}
.WorkTitle{ max-width:660px; font-size:14px; font-weight:bold; color:#484848;}
.W520{ width:680px;}
.ImportSearchIcon{background:url(../images/homepage_icon.png) 656px -393px no-repeat; }
.ImportSearchIcon:hover{background:url(../images/homepage_icon.png) 656px -419px no-repeat; }
/*日历选择图*/ /*日历选择图*/
img.ui-datepicker-trigger { img.ui-datepicker-trigger {
display:block; display:block;
@ -925,6 +971,7 @@ img.ui-datepicker-trigger {
text-overflow: ellipsis; text-overflow: ellipsis;
margin-bottom: 3px; margin-bottom: 3px;
} }
.message_title{border: 1px solid #D4D4D4;padding: 0.6em;margin-left: 1.4em;margin-right: 0.4em;border-radius: 4px;font-family: "Microsoft YaHei";background-size: 100% 100%;margin-bottom: 5px;background-color: #E8E8E8;}
.description{display: none !important;} .description{display: none !important;}
.ispublic-label{display: none !important;} .ispublic-label{display: none !important;}
.is_public_checkbox{display: none !important;} .is_public_checkbox{display: none !important;}
@ -938,10 +985,7 @@ div.recall_con .reply_btn{margin-left:525px;margin-top:5px;}
blockquote { blockquote {
/* font-style: italic; */ /* font-style: italic; */
border-left: 1px solid #e0e0e0; border:1px solid #d4d4d4;
border-right: 1px solid #e0e0e0;
border-top: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
padding-left: 0.6em; padding-left: 0.6em;
padding-top: 0.6em; padding-top: 0.6em;
padding-right: 0.6em; padding-right: 0.6em;
@ -956,3 +1000,103 @@ blockquote {
background-color: #e8e8e8; background-color: #e8e8e8;
} }
/* 创建作品 work */
.Newwork{ width:668px; height:418px;}
.N_top{ float:right; margin-left:390px; }
.N_con{ color:#484747; font-weight:bold; width:660px; margin-top:10px; }
.N_con p{ }
.w430{ width:470px;}
.w557{ width:557px;}
.w350{ width:350px;}
.h400{height: 400px !important;}
.w620{ width:480px; height:160px; border:1px solid #CCC;}
.bo{height:26px; border:1px solid #CCC; padding-left:5px; background:#fff;width:470px; }
.bo02{height:26px; border:1px solid #CCC; padding-left:5px; background:#fff;width:480px; margin-left:2px; color: #999; }
.hwork_txt{ width:560px; padding-left:5px; background:#fff;}
a.tijiao{ height:28px; display:block; width:80px; color:#fff; background:#15bccf; text-align:center; padding-top:4px; float:left; margin-right:10px;}
a:hover.tijiao{ background:#0f99a9;}
.members_left{ float:left; width:410px; margin-right:20px; text-align:center;}
.members_left{}
.members_left ul li{ height:30px; border-bottom:1px solid #E4E4E4; width:410px; padding-top:10px; }
.members_left ul li a{ float:left; text-align:center;}
.members_left ul li span{ float:left; text-align:center; color:#484747;}
.w150{ text-align:center; width:150px;min-height: 10px;}
.f_b{ font-weight: bold;}
.members_right label{ margin-left:15px;}
.N_search{ height:20px; border:1px solid #999;}
/* 创建作品 homework */
.hwork_new{ color:#4c4c4c;}
.c_red{ color:#F00;}
.hwork_input{ border:1px solid #64bdd9; height:22px; width:88%; background:#fff; margin-bottom:10px; padding:5px;}
.hwork_input02{ border:1px solid #64bdd9; height:15px; width:140px; background:#fff; margin-bottom:10px; padding:5px;}
.hwork_text{ border:1px solid #64bdd9; height:100px;width:555px; background:#fff; margin-left:5px; padding:5px; margin-bottom:10px;}
.hwork_new ul li{ }
.ml21{ margin-left:21px;}
.ml9{ margin-left:9px;}
.hwork_ttl{height:24px;}
.hwork_ctt{height:auto; padding-left:10px;clear:both;}
.hwork_tb_{ border-bottom:3px solid #e4e4e4; text-align:center;}
.hwork_tb_ ul{height:24px;}
.hwork_tb_ li{float:left;height: 24px;width: auto; padding:0 10px;cursor:pointer;}
.hwork_normaltab { color:#15bccf ; border-bottom:3px solid #e4e4e4; }
.hwork_hovertab { color:#656767; font-weight:bold; border-bottom:3px solid #15bccf; }
.hwork_dis{display:block; }
.hwork_undis{display:none;}
.project_none{ display:none;}
.about_project{ overflow:hidden;display:none;}
.project_r_h{ width:670px; height:40px; background:#eaeaea; margin-bottom:10px;}
.project_r_h02{ width:920px; height:40px; background:#eaeaea; margin-bottom:10px;}
/* colorbox
*******************************************************************************/
/*
Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
#cboxWrapper {max-width:none;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
#cboxLoadedContent{overflow:auto; -webkit-overflow-scrolling: touch;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none; -ms-interpolation-mode:bicubic;}
.cboxIframe{width:100%; height:100%; display:block; border:0; padding:0; margin:0;}
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box; -moz-box-sizing:content-box; -webkit-box-sizing:content-box;}
/*
User Style:
Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
#cboxOverlay{background:#fff;}
#colorbox{outline:0;}
#cboxTopLeft{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat 0 0;}
#cboxTopCenter{height:25px; background:url(../images/colorbox/border1.png) repeat-x 0 -50px;}
#cboxTopRight{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat -25px 0;}
#cboxBottomLeft{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat 0 -25px;}
#cboxBottomCenter{height:25px; background:url(../images/colorbox/border1.png) repeat-x 0 -75px;}
#cboxBottomRight{width:25px; height:25px; background:url(../images/colorbox/border1.png) no-repeat -25px -25px;}
#cboxMiddleLeft{width:25px; background:url(../images/colorbox/border2.png) repeat-y 0 0;}
#cboxMiddleRight{width:25px; background:url(../images/colorbox/border2.png) repeat-y -25px 0;}
#cboxContent{background:#fff; overflow:hidden;}
.cboxIframe{background:#fff;}
#cboxError{padding:50px; border:1px solid #ccc;}
#cboxLoadedContent{margin-bottom:20px;}
#cboxTitle{position:absolute; bottom:0px; left:0; text-align:center; width:100%; color:#999;}
#cboxCurrent{position:absolute; bottom:0px; left:100px; color:#999;}
#cboxLoadingOverlay{background:#fff url(../images/colorbox/loading.gif) no-repeat 5px 5px;}
/* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
#cboxPrevious, #cboxNext, #cboxSlideshow, #cboxClose {border:0; padding:0; margin:0; overflow:visible; width:auto; background:none; }
/* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
#cboxPrevious:active, #cboxNext:active, #cboxSlideshow:active, #cboxClose:active {outline:0;}
#cboxSlideshow{position:absolute; bottom:0px; right:42px; color:#444;}
#cboxPrevious{position:absolute; bottom:0px; left:0; color:#444;}
#cboxNext{position:absolute; bottom:0px; left:63px; color:#444;}
#cboxClose{position:absolute; bottom:0; right:0; display:block; color:#444;}

@ -210,7 +210,7 @@ span[id^=valid_user] {
p.jRatingInfos { p.jRatingInfos {
position: absolute; position: absolute;
z-index: 9999; z-index: 9999;
background: transparent url('bg_jRatingInfos.png') no-repeat; /*background: transparent url('bg_jRatingInfos.png') no-repeat;*/
color: #CACACA; color: #CACACA;
display: none; display: none;
width: 91px; width: 91px;

@ -391,16 +391,17 @@ blockquote {
border-right: 1px solid #e0e0e0; border-right: 1px solid #e0e0e0;
border-top: 1px solid #e0e0e0; border-top: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0; border-bottom: 1px solid #e0e0e0;
padding-left: .6em; padding-left: 0.6em;
padding-top: .6em; padding-top: 0.6em;
padding-right: .6em; padding-right: 0.6em;
padding-bottom: .6em; padding-bottom: 0.6em;
margin-left: 1.4em; margin-left: 1.4em;
margin-right: .4em; margin-right: 0.4em;
border-radius: 4px; border-radius: 4px;
font-family: "Microsoft YaHei"; font-family: "Microsoft YaHei";
background: url(http://test.forge.trustie.net/images/requirements/xreference.jpg.pagespeed.ic.h4inUJNyH0.jpg); /*background: url('../images/requirements/reference.jpg');*/
background-size: 100% 100%; background-size: 100% 100%;
margin-top:5px;
} }
/*上传项目图片*/ /*上传项目图片*/
.upload_file{margin-left: -60px;margin-top: 40px;width: 50px;position: absolute;height: 24px;opacity: 0;cursor: pointer} .upload_file{margin-left: -60px;margin-top: 40px;width: 50px;position: absolute;height: 24px;opacity: 0;cursor: pointer}

@ -418,6 +418,8 @@ div.flash.notice {
background-color: #dfffdf; background-color: #dfffdf;
border-color: #9fcf9f; border-color: #9fcf9f;
color: #005f00; color: #005f00;
word-wrap: break-word;
word-break: break-all
} }
div.flash.warning, .conflict { div.flash.warning, .conflict {

@ -572,7 +572,7 @@ a.uploadIcon {background:url(images/resource_icon_list.png) 8px -60px no-repeat;
.searchIconPopup{width:31px; height:25px; background-color:#ffffff; background:url(images/resource_icon_list.png) -40px -18px no-repeat; display:inline-block; float:left;} .searchIconPopup{width:31px; height:25px; background-color:#ffffff; background:url(images/resource_icon_list.png) -40px -18px no-repeat; display:inline-block; float:left;}
.courseSend {width:260px; height:15px; line-height:15px; margin-bottom:10px;} .courseSend {width:260px; height:15px; line-height:15px; margin-bottom:10px;}
.courseSendCheckbox {padding:0px; margin:0px; width:12px; height:12px; margin-right:10px; display:inline-block; margin-top:2px;} .courseSendCheckbox {padding:0px; margin:0px; width:12px; height:12px; margin-right:10px; display:inline-block; margin-top:2px;}
.sendCourseName {font-size:12px; color:#5f6060;} .sendCourseName {font-size:12px; color:#5f6060;display:inline-block}
.courseSendSubmit {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#64bdd9; margin-right:25px; float:left;} .courseSendSubmit {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#64bdd9; margin-right:25px; float:left;}
.courseSendCancel {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#c1c1c1; float:left} .courseSendCancel {width:50px; height:25px; line-height:25px; text-align:center; vertical-align:middle; background-color:#c1c1c1; float:left}
a.sendSourceText {font-size:14px; color:#ffffff;} a.sendSourceText {font-size:14px; color:#ffffff;}

Loading…
Cancel
Save