diff --git a/app/controllers/exercise_controller.rb b/app/controllers/exercise_controller.rb
index db09c50a5..55daf0562 100644
--- a/app/controllers/exercise_controller.rb
+++ b/app/controllers/exercise_controller.rb
@@ -6,6 +6,14 @@ class ExerciseController < ApplicationController
include ExerciseHelper
def index
+ publish_exercises = Exercise.where("publish_time is not null and exercise_status = 1 and publish_time <=?",Time.now)
+ publish_exercises.each do |exercise|
+ exercise.update_column('exercise_status', 2)
+ end
+ end_exercises = Exercise.where("end_time <=? and exercise_status = 2",Time.now)
+ end_exercises.each do |exercise|
+ exercise.update_column('exercise_status', 3)
+ end
if @course.is_public == 0 && !User.current.member_of_course?(@course)
render_403
return
@@ -24,6 +32,14 @@ class ExerciseController < ApplicationController
end
def show
+ publish_exercises = Exercise.where("publish_time is not null and exercise_status = 1 and publish_time <=?",Time.now)
+ publish_exercises.each do |exercise|
+ exercise.update_column('exercise_status', 2)
+ end
+ end_exercises = Exercise.where("end_time <=? and exercise_status = 2",Time.now)
+ end_exercises.each do |exercise|
+ exercise.update_column('exercise_status', 3)
+ end
unless User.current.member_of_course?(@course)
render_403
return
diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb
index d2aba1386..dd2a5b5fc 100644
--- a/app/controllers/student_work_controller.rb
+++ b/app/controllers/student_work_controller.rb
@@ -3,8 +3,8 @@ class StudentWorkController < ApplicationController
include StudentWorkHelper
require 'bigdecimal'
require "base64"
- before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:set_score_rule,:forbidden_anonymous_comment]
- before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work]
+ before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:set_score_rule,:forbidden_anonymous_comment,:delete_work]
+ before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work,:retry_work]
before_filter :member_of_course, :only => [:index, :new, :create, :show, :add_score, :praise_student_work]
before_filter :author_of_work, :only => [:edit, :update, :destroy]
before_filter :teacher_of_course, :only => [:student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :set_score_rule, :forbidden_anonymous_comment]
@@ -222,7 +222,7 @@ class StudentWorkController < ApplicationController
def edit
@user = User.current
- if !User.current.admin? && @homework.homework_type == 2 #编程作业不能修改作业
+ if (!User.current.admin? && @homework.homework_type == 2) || Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") #编程作业不能修改作业|| 截止日期已到不能修改作业
render_403
else
respond_to do |format|
@@ -284,6 +284,23 @@ class StudentWorkController < ApplicationController
end
end
+ def delete_work
+ @work = StudentWork.where("user_id =? and homework_common_id =?", User.current.id, @homework.id).first
+ if @work
+ @work.destroy
+ end
+ redirect_to user_homeworks_user_path(User.current.id)
+ end
+
+ def retry_work
+ if @work.destroy
+ @student_work = StudentWork.new
+ respond_to do |format|
+ format.js
+ end
+ end
+ end
+
#添加评分,已评分则为修改评分
def add_score
@is_last = params[:is_last] == "true"
diff --git a/app/views/exercise/_edit_head.html.erb b/app/views/exercise/_edit_head.html.erb
index 64f34b5aa..a071904ce 100644
--- a/app/views/exercise/_edit_head.html.erb
+++ b/app/views/exercise/_edit_head.html.erb
@@ -35,6 +35,5 @@
$("#exercise_time").val("<%=exercise.time if exercise.time!= -1 %>");
$("#exercise_publish_time").val("<%= Time.parse(format_time(exercise.publish_time)).strftime("%Y-%m-%d") if !exercise.publish_time.nil?%>");
/*$("#exercise_description").text("<%#=exercise.exercise_description.html_safe %>");*/
- document.getElementById("exercise_description").innerHTML = <%=exercise.exercise_description.html_safe %>;
}
\ No newline at end of file
diff --git a/app/views/student_work/_revise_attachments.html.erb b/app/views/student_work/_revise_attachments.html.erb
new file mode 100644
index 000000000..1321da368
--- /dev/null
+++ b/app/views/student_work/_revise_attachments.html.erb
@@ -0,0 +1,30 @@
+
+
+
+ 上传附件
+ <%#= button_tag "上传附件", :type=>"button", :onclick=>"$('#_file#{work.id}').click();",:onmouseover => 'this.focus()',:class => 'blueCir ml5' %>
+ <%= file_field_tag 'attachments[dummy][file]',
+ :id => "_file#{work.id}",
+ :class => 'file_selector',
+ :multiple => true,
+ :onchange => "addReviseFiles(this, '#{work.id}');",
+ :style => 'display:none',
+ :data => {
+ :max_file_size => Setting.attachment_max_size.to_i.kilobytes,
+ :max_file_size_message => l(:error_attachment_too_big, :max_size => number_to_human_size(Setting.attachment_max_size.to_i.kilobytes)),
+ :max_concurrent_uploads => Redmine::Configuration['max_concurrent_ajax_uploads'].to_i,
+ :upload_path => uploads_path(:format => 'js'),
+ :description_placeholder => l(:label_optional_description),
+ :field_is_public => l(:field_is_public),
+ :are_you_sure => l(:text_are_you_sure),
+ :file_count => l(:label_file_count),
+ :lebel_file_uploding => l(:lebel_file_uploding),
+ :delete_all_files => l(:text_are_you_sure_all),
+ :containerid => "#{work.id}"
+ } %>
+
+ <% content_for :header_tags do %>
+ <%= javascript_include_tag 'attachments' %>
+ <% end %>
+
+
diff --git a/app/views/student_work/_show.html.erb b/app/views/student_work/_show.html.erb
index 1b0202536..894f9fb39 100644
--- a/app/views/student_work/_show.html.erb
+++ b/app/views/student_work/_show.html.erb
@@ -61,6 +61,31 @@
+
+ <%#= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename link_file', :readonly=>'readonly')%>
+ <%#= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 254, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
+
+ <%#= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false,:class => 'is_public')%>
+ <%#= link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload') unless attachment.id.nil? %>
+ <%#= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
+
+
<%student_work_scores.each do |student_score|%>
diff --git a/app/views/student_work/_work_information.html.erb b/app/views/student_work/_work_information.html.erb
index f8a55a03d..90d749af1 100644
--- a/app/views/student_work/_work_information.html.erb
+++ b/app/views/student_work/_work_information.html.erb
@@ -19,9 +19,10 @@
-
+
确 定
+ <%= link_to("重试", retry_work_student_work_path(@student_work.id),:class => "tijiao",:style =>"margin-bottom: 15px;margin-top:15px;",:remote => true)%>
diff --git a/app/views/student_work/create.js.erb b/app/views/student_work/create.js.erb
index afd8617aa..67a1ccb50 100644
--- a/app/views/student_work/create.js.erb
+++ b/app/views/student_work/create.js.erb
@@ -11,7 +11,7 @@
showModal('ajax-modal', '500px');
$('#ajax-modal').siblings().remove();
$('#ajax-modal').before("" +
- "
");
+ "
");
$('#ajax-modal').parent().css("top","").css("left","");
$('#ajax-modal').parent().addClass("anonymos");
<% else %>
diff --git a/app/views/student_work/new.html.erb b/app/views/student_work/new.html.erb
index 4f9999277..ee0dd7e9b 100644
--- a/app/views/student_work/new.html.erb
+++ b/app/views/student_work/new.html.erb
@@ -99,7 +99,7 @@
@@ -111,9 +111,9 @@
-
确定
+
提交
或
- <%= link_to "取消", user_homeworks_user_path(User.current.id), :class => "fr mr10 mt3"%>
+ <%= link_to "取消", delete_work_student_work_index_path(:homework =>@homework.id), :class => "fr mr10 mt3"%>
<% end%>
diff --git a/app/views/student_work/retry_work.js.erb b/app/views/student_work/retry_work.js.erb
new file mode 100644
index 000000000..c5fca76d4
--- /dev/null
+++ b/app/views/student_work/retry_work.js.erb
@@ -0,0 +1,2 @@
+hideModal('#popbox02');
+$("#homework_attachments").html("<%= escape_javascript(render :partial => 'users/user_homework_attachment', :locals => {:container => @student_work, :has_program=>false})%>");
\ No newline at end of file
diff --git a/app/views/users/_user_homework_form.html.erb b/app/views/users/_user_homework_form.html.erb
index efaed2d9d..cfc098645 100644
--- a/app/views/users/_user_homework_form.html.erb
+++ b/app/views/users/_user_homework_form.html.erb
@@ -97,7 +97,7 @@
-
+
diff --git a/config/routes.rb b/config/routes.rb
index bfe62bc3f..f6fe95a33 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -206,11 +206,13 @@ RedmineApp::Application.routes.draw do
resources :student_work do
member do
post 'add_score'
+ get 'retry_work'
get 'praise_student_work'
get 'forbidden_anonymous_comment'
end
collection do
post 'add_score_reply'
+ get 'delete_work'
get 'destroy_score_reply'
get 'student_work_absence_penalty'
get 'absence_penalty_list'
diff --git a/db/migrate/20151203030635_add_attachment_type.rb b/db/migrate/20151203030635_add_attachment_type.rb
new file mode 100644
index 000000000..2c41aa5f2
--- /dev/null
+++ b/db/migrate/20151203030635_add_attachment_type.rb
@@ -0,0 +1,9 @@
+# encoding: utf-8
+class AddAttachmentType < ActiveRecord::Migration
+ def up
+ Attachmentstype.create(typeId:3,typeName:'修订附件')
+ end
+
+ def down
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index c6ca6a0ce..a7e3224d2 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20151130033906) do
+ActiveRecord::Schema.define(:version => 20151203030635) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@@ -543,23 +543,26 @@ ActiveRecord::Schema.define(:version => 20151130033906) do
add_index "documents", ["created_on"], :name => "index_documents_on_created_on"
add_index "documents", ["project_id"], :name => "documents_project_id"
- create_table "dts", :force => true do |t|
- t.string "IPLineCode"
- t.string "Description"
- t.string "Num"
- t.string "Variable"
- t.string "TraceInfo"
- t.string "Method"
+ create_table "dts", :primary_key => "Num", :force => true do |t|
+ t.string "Defect", :limit => 50
+ t.string "Category", :limit => 50
t.string "File"
- t.string "IPLine"
- t.string "Review"
- t.string "Category"
- t.string "Defect"
- t.string "PreConditions"
- t.string "StartLine"
+ t.string "Method"
+ t.string "Module", :limit => 20
+ t.string "Variable", :limit => 50
+ t.integer "StartLine"
+ t.integer "IPLine"
+ t.string "IPLineCode", :limit => 200
+ t.string "Judge", :limit => 15
+ t.integer "Review", :limit => 1
+ t.string "Description"
+ t.text "PreConditions", :limit => 2147483647
+ t.text "TraceInfo", :limit => 2147483647
+ t.text "Code", :limit => 2147483647
t.integer "project_id"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "id", :null => false
end
create_table "enabled_modules", :force => true do |t|
@@ -735,6 +738,17 @@ ActiveRecord::Schema.define(:version => 20151130033906) do
add_index "homework_commons", ["course_id", "id"], :name => "index_homework_commons_on_course_id_and_id"
+ create_table "homework_detail_groups", :force => true do |t|
+ t.integer "homework_common_id"
+ t.integer "min_num"
+ t.integer "max_num"
+ t.integer "base_on_project"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
+ end
+
+ add_index "homework_detail_groups", ["homework_common_id"], :name => "index_homework_detail_groups_on_homework_common_id"
+
create_table "homework_detail_manuals", :force => true do |t|
t.float "ta_proportion"
t.integer "comment_status"
@@ -891,16 +905,6 @@ ActiveRecord::Schema.define(:version => 20151130033906) do
add_index "journal_details", ["journal_id"], :name => "journal_details_journal_id"
- create_table "journal_details_copy", :force => true do |t|
- t.integer "journal_id", :default => 0, :null => false
- t.string "property", :limit => 30, :default => "", :null => false
- t.string "prop_key", :limit => 30, :default => "", :null => false
- t.text "old_value"
- t.text "value"
- end
-
- add_index "journal_details_copy", ["journal_id"], :name => "journal_details_journal_id"
-
create_table "journal_replies", :id => false, :force => true do |t|
t.integer "journal_id"
t.integer "user_id"
diff --git a/lib/tasks/delete_evalution.rake b/lib/tasks/delete_evalution.rake
deleted file mode 100644
index 94075ae00..000000000
--- a/lib/tasks/delete_evalution.rake
+++ /dev/null
@@ -1,21 +0,0 @@
-namespace :delete_evalution do
- desc "delete evaluation"
- task :delete => :environment do
- homework = HomeworkCommon.where("id = 844").first
- homework_detail_manual = homework.homework_detail_manual
- homework_detail_manual.update_column('comment_status', 3)
- student_work_score = StudentWorksScore.where("student_work_id = 28088 and user_id = 9263").first
- student_work_score.destroy
- student_work_9203 = StudentWork.where("id = 28088").first
- student_work_9263 = StudentWork.where("homework_common_id = 844 and user_id = 9263").first
- student_work_9203.update_column("student_score",91)
- student_work_9203.update_column("final_score",91)
- student_work_9263.update_column("absence_penalty",student_work_9263.absence_penalty+homework_detail_manual.absence_penalty)
- work_ids = "(" + homework.student_works.map(&:id).join(",") + ")"
- homework.student_works.each do |student_work|
- absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count
- student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0
- student_work.save
- end
- end
-end
\ No newline at end of file
diff --git a/lib/tasks/exercise_publish.rake b/lib/tasks/exercise_publish.rake
new file mode 100644
index 000000000..aacd67c1f
--- /dev/null
+++ b/lib/tasks/exercise_publish.rake
@@ -0,0 +1,18 @@
+#coding=utf-8
+
+namespace :exercise_publish do
+ desc "publish exercise and end exercise"
+ task :publish => :environment do
+ exercises = Exercise.where("publish_time is not null and exercise_status = 1 and publish_time <=?",Time.now)
+ exercises.each do |exercise|
+ exercise.update_column('exercise_status', 2)
+ end
+ end
+
+ task :end => :environment do
+ exercises = Exercise.where("end_time <=? and exercise_status = 2",Time.now)
+ exercises.each do |exercise|
+ exercise.update_column('exercise_status', 3)
+ end
+ end
+end
diff --git a/lib/tasks/homework_evaluation.rake b/lib/tasks/homework_evaluation.rake
index 6be2d6a04..84082eb9b 100644
--- a/lib/tasks/homework_evaluation.rake
+++ b/lib/tasks/homework_evaluation.rake
@@ -52,7 +52,7 @@ namespace :homework_evaluation do
#自动关闭匿评的任务
task :end_evaluation => :environment do
- homework_detail_manuals = HomeworkDetailManual.where("evaluation_end <= '#{Date.today}'")
+ homework_detail_manuals = HomeworkDetailManual.where("evaluation_end = '#{Date.today}'")
homework_detail_manuals.each do |homework_detail_manual|
homework_common = homework_detail_manual.homework_common
if homework_common.anonymous_comment == 0 && homework_detail_manual.comment_status == 2 #开启匿评状态才可关闭匿评
diff --git a/lib/tasks/homework_publishtime.rake b/lib/tasks/homework_publishtime.rake
index 8e231fafd..5eaeb37cb 100644
--- a/lib/tasks/homework_publishtime.rake
+++ b/lib/tasks/homework_publishtime.rake
@@ -22,7 +22,7 @@ namespace :homework_publishtime do
end
task :end => :environment do
- homework_commons = HomeworkCommon.where("end_time < '#{Date.today}'")
+ homework_commons = HomeworkCommon.where("end_time = '#{Date.today}'")
homework_commons.each do |homework|
if homework.anonymous_comment == 1
homework_detail_manual = homework.homework_detail_manual
diff --git a/public/images/course/hwork_icon.png b/public/images/course/hwork_icon.png
new file mode 100644
index 000000000..82c78ac60
Binary files /dev/null and b/public/images/course/hwork_icon.png differ
diff --git a/public/images/course/right-arrow.png b/public/images/course/right-arrow.png
new file mode 100644
index 000000000..b152e9ce9
Binary files /dev/null and b/public/images/course/right-arrow.png differ
diff --git a/public/javascripts/homework.js b/public/javascripts/homework.js
index f1b6e1814..468548179 100644
--- a/public/javascripts/homework.js
+++ b/public/javascripts/homework.js
@@ -19,7 +19,7 @@ $(function(){
return false;
}
return true;
- }
+ };
var test_program = function(cb){
var homework_id = $('#test-program-btn').attr('data-homework-id');
@@ -171,7 +171,7 @@ $(function(){
$("input[name=homework_type]").after(html);
}
return valid;
- }
+ };
$("#BluePopupBox a.BlueCirBtn").live('click', function(){
if(saveProgramAnswers()){
diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css
index 2fb32e2d0..584a49a4f 100644
--- a/public/stylesheets/courses.css
+++ b/public/stylesheets/courses.css
@@ -1175,4 +1175,25 @@ a:hover.testEdit{ background:url(images/icons.png) -21px -272px no-repeat;}
.rankList li p {width:100%; overflow:hidden; white-space:normal; text-overflow:ellipsis; color:#585858;word-wrap: normal; word-break: normal;}
.rankPortrait {border-radius:50%; width:35px; height:35px;}
.numIntro {position:absolute; text-align:left; z-index:999; box-shadow:0px 2px 8px rgba(146, 153, 169, 0.5); border:1px solid #eaeaea; background-color:#ffffff; padding:3px 5px; left:15px; color:#585858; white-space: nowrap;}
-.font_cus {font-family: "微软雅黑","宋体"; font-size: 12px; line-height: 1.5;}
+.font_cus {font-family: "微软雅黑","宋体"; font-size: 12px; line-height: 1.5;}
+/*20151130课程项目集成Tim*/
+a.testBtn{background: url(/images/course/hwork_icon.png) -2px -5px no-repeat !important; height:20px; display:block; padding-left:20px; color:#888888; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+a:hover.testBtn{background: url(/images/course/hwork_icon.png) -81px -5px no-repeat !important; color:#3598db; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+a.groupBtn{ background: url(/images/course/hwork_icon.png) -2px -61px no-repeat !important; height:20px; display:block; padding-left:20px; color:#888888; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+a:hover.groupBtn{background: url(/images/course/hwork_icon.png) -80px -61px no-repeat !important; color:#3598db; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+.markInput { outline:none; border:1px solid #e6e6e6; height:30px; width:50px; color:#3d3c3c; margin-right:5px; text-align:center; padding-left:0px;}
+.groupPopUp {width:290px; height:auto; padding:15px; background-color:#ffffff; z-index:1000; position:relative;}
+.popClose {background:url(/images/resource_icon_list.png) 0px -40px no-repeat; width:20px; height:20px; display:inline-block; position: absolute; z-index: 1000; right:2px; top:3px;}
+a.memberBtn{ background: url(/images/course/hwork_icon.png) -7px -90px no-repeat !important; height:20px; display:block; padding-left:20px; color:#888888; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+a:hover.memberBtn{background: url(/images/course/hwork_icon.png) -80px -90px no-repeat !important; color:#3598db; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+.addMemberC {float:left; max-height:150px; margin-bottom:10px; overflow:auto; overflow-x:hidden; width:227px; background-color:#f1f1f1; min-height:150px; padding-top:10px;}
+.addMemberC li {padding-left:10px; line-height:18px;}
+.addMemberC li:hover {cursor:pointer; background-color:#cccccc;}
+.addMemberCP {width:514px; height:auto; border:3px solid #269ac9; padding-left:16px; padding-bottom:16px; background-color:#ffffff; position:absolute; z-index:1000;}
+.rightArrow {margin:50px 15px 0px 15px; float:left;}
+.relateText {font-size:16px; color:#269ac9; line-height:16px; padding-top:20px; display:inline-block; font-weight: bold;}
+
+.resubAtt {border-top:1px solid #dddddd; position:relative; margin-top:15px;}
+.resubTitle {position:absolute; top:-10px; left:5px; background-color:#ffffff; display:block; font-weight:bold; padding:0px 2px;}
+a.blueCir{ display:inline-block; padding:2px 5px; background-color:#ffffff;border:1px solid #3598db; color:#3598db; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;}
+a:hover.blueCir{ background:#3598db; color:#fff;}
diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css
index a08fd6f33..ad07259d3 100644
--- a/public/stylesheets/new_user.css
+++ b/public/stylesheets/new_user.css
@@ -1349,3 +1349,19 @@ span.author { font-size: 0.9em; color: #888; }
.pageCell:hover {border:1px solid #3498db; z-index:10;}
.pageCellActive {background-color:#3498db; border:1px solid #3498db !important; position:relative; color:#ffffff;}
+/*20151130课程项目集成Tim*/
+a.testBtn{background: url(/images/course/hwork_icon.png) -2px -5px no-repeat !important; height:20px; display:block; padding-left:20px; color:#888888; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+a:hover.testBtn{background: url(/images/course/hwork_icon.png) -81px -5px no-repeat !important; color:#3598db; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+a.groupBtn{ background: url(/images/course/hwork_icon.png) -2px -61px no-repeat !important; height:20px; display:block; padding-left:20px; color:#888888; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+a:hover.groupBtn{background: url(/images/course/hwork_icon.png) -80px -61px no-repeat !important; color:#3598db; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+.markInput { outline:none; border:1px solid #e6e6e6; height:30px; width:50px; color:#3d3c3c; margin-right:5px; text-align:center; padding-left:0px;}
+.groupPopUp {width:290px; height:auto; padding:15px; background-color:#ffffff; z-index:1000; position:relative;}
+.popClose {background:url(/images/resource_icon_list.png) 0px -40px no-repeat; width:20px; height:20px; display:inline-block; position: absolute; z-index: 1000; right:2px; top:3px;}
+a.memberBtn{ background: url(/images/course/hwork_icon.png) -7px -90px no-repeat !important; height:20px; display:block; padding-left:20px; color:#888888; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+a:hover.memberBtn{background: url(/images/course/hwork_icon.png) -80px -90px no-repeat !important; color:#3598db; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;}
+.addMemberC {float:left; max-height:150px; margin-bottom:10px; overflow:auto; overflow-x:hidden; width:227px; background-color:#f1f1f1; min-height:150px; padding-top:10px;}
+.addMemberC li {padding-left:10px; line-height:18px;}
+.addMemberC li:hover {cursor:pointer; background-color:#cccccc;}
+.addMemberCP {width:514px; height:auto; border:3px solid #269ac9; padding-left:16px; padding-bottom:16px; background-color:#ffffff; position:absolute; z-index:1000;}
+.rightArrow {margin:50px 15px 0px 15px; float:left;}
+.relateText {font-size:16px; color:#269ac9; line-height:16px; padding-top:20px; display:inline-block; font-weight: bold;}