From 1cbda41997581bf7fe4927c6fc734600dfb4ddf7 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Tue, 8 Sep 2015 14:43:59 +0800 Subject: [PATCH 1/9] 11 --- db/schema.rb | 64 ++++++++++++++++------------------------------------ 1 file changed, 19 insertions(+), 45 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 0d6e87acf..15e69a3ba 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -236,13 +236,6 @@ ActiveRecord::Schema.define(:version => 20150907152238) do t.boolean "tracker_in_review_dialog", :default => false end - create_table "code_review_user_settings", :force => true do |t| - t.integer "user_id", :default => 0, :null => false - t.integer "mail_notification", :default => 0, :null => false - t.datetime "created_at" - t.datetime "updated_at" - end - create_table "code_reviews", :force => true do |t| t.integer "project_id" t.integer "change_id" @@ -476,13 +469,6 @@ ActiveRecord::Schema.define(:version => 20150907152238) do add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority" - create_table "discuss_demos", :force => true do |t| - t.string "title" - t.text "body" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - end - create_table "documents", :force => true do |t| t.integer "project_id", :default => 0, :null => false t.integer "category_id", :default => 0, :null => false @@ -1169,18 +1155,18 @@ ActiveRecord::Schema.define(:version => 20150907152238) do create_table "relative_memos", :force => true do |t| t.integer "osp_id" t.integer "parent_id" - t.string "subject", :null => false - t.text "content", :limit => 16777215, :null => false + t.string "subject", :null => false + t.text "content", :null => false t.integer "author_id" - t.integer "replies_count", :default => 0 + t.integer "replies_count", :default => 0 t.integer "last_reply_id" - t.boolean "lock", :default => false - t.boolean "sticky", :default => false - t.boolean "is_quote", :default => false - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.integer "viewed_count_crawl", :default => 0 - t.integer "viewed_count_local", :default => 0 + t.boolean "lock", :default => false + t.boolean "sticky", :default => false + t.boolean "is_quote", :default => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "viewed_count_crawl", :default => 0 + t.integer "viewed_count_local", :default => 0 t.string "url" t.string "username" t.string "userhomeurl" @@ -1205,19 +1191,6 @@ ActiveRecord::Schema.define(:version => 20150907152238) do add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id" - create_table "rich_rich_files", :force => true do |t| - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.string "rich_file_file_name" - t.string "rich_file_content_type" - t.integer "rich_file_file_size" - t.datetime "rich_file_updated_at" - t.string "owner_type" - t.integer "owner_id" - t.text "uri_cache" - t.string "simplified_type", :default => "file" - end - create_table "roles", :force => true do |t| t.string "name", :limit => 30, :default => "", :null => false t.integer "position", :default => 1 @@ -1269,11 +1242,10 @@ ActiveRecord::Schema.define(:version => 20150907152238) do t.string "url" t.string "title" t.integer "share_type" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false t.integer "project_id" t.integer "user_id" - t.string "description" end create_table "softapplications", :force => true do |t| @@ -1296,9 +1268,9 @@ ActiveRecord::Schema.define(:version => 20150907152238) do create_table "student_work_tests", :force => true do |t| t.integer "student_work_id" - t.integer "status" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "status", :default => 9 t.text "results" t.text "src" end @@ -1436,8 +1408,8 @@ ActiveRecord::Schema.define(:version => 20150907152238) do t.integer "zip_code" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false - t.string "technical_title" t.integer "identity" + t.string "technical_title" t.string "student_id" t.string "teacher_realname" t.string "student_realname" @@ -1505,6 +1477,9 @@ ActiveRecord::Schema.define(:version => 20150907152238) do t.integer "active" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false + t.integer "level" + t.integer "file" + t.integer "issue" end create_table "user_statuses", :force => true do |t| @@ -1537,7 +1512,6 @@ ActiveRecord::Schema.define(:version => 20150907152238) do t.string "identity_url" t.string "mail_notification", :default => "", :null => false t.string "salt", :limit => 64 - t.integer "gid" end add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" From 52c2719a465ee6372d1921f6549105465848ca27 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 8 Sep 2015 14:48:02 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E8=80=81=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E7=BC=96=E7=A8=8B=E4=BD=9C=E4=B8=9A=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_user_homework_form.html.erb | 2 +- public/javascripts/homework.js | 25 +------------------- 2 files changed, 2 insertions(+), 25 deletions(-) diff --git a/app/views/users/_user_homework_form.html.erb b/app/views/users/_user_homework_form.html.erb index 72ace3ba5..0549cd5b2 100644 --- a/app/views/users/_user_homework_form.html.erb +++ b/app/views/users/_user_homework_form.html.erb @@ -45,7 +45,7 @@
- 发送 + 发送 取消
diff --git a/public/javascripts/homework.js b/public/javascripts/homework.js index bebb8a973..f29cd7b14 100644 --- a/public/javascripts/homework.js +++ b/public/javascripts/homework.js @@ -99,30 +99,7 @@ $(function(){ $('#program-src').focus(function(){ $(this).css('height', '100px'); }); - var isProgramHomework = function(){ - return !$(".advanced_option").is(":hidden"); - } - - var submit_comm_homework = function(id){ - var valid = true; - if (isProgramHomework()) { - $.each($('.advanced_option textarea.InputBox'), function(i, val){ - if ($(val).val().length<=0) { - $(val).focus(); - valid = false; - return false; - } - }); - if (valid) { - $('input[name=homework_type]').val(2); - }; - } - if (valid) { - submit_homework(id); - } - } - window.submit_comm_homework = submit_comm_homework; - + var datepickerOptions={dateFormat:'yy-mm-dd',firstDay:0,showWeek:true,showOtherMonths:true,selectOtherMonths:true}; $('input.date-input').datepicker(datepickerOptions); From 137a0b16a00574aec7e1771a158c6bbd0a5e17ad Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Tue, 8 Sep 2015 15:40:25 +0800 Subject: [PATCH 3/9] =?UTF-8?q?1=E3=80=81=E6=96=87=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E5=9B=BE=E7=89=87=202=E3=80=81=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E7=BC=96=E7=A8=8B=E5=BC=B9=E6=A1=86=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=BE=93=E5=85=A5=E8=8E=B7=E5=8F=96=E7=84=A6?= =?UTF-8?q?=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_user_homework_form.html.erb | 2 +- public/javascripts/homework.js | 4 ++-- public/stylesheets/new_user.css | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/views/users/_user_homework_form.html.erb b/app/views/users/_user_homework_form.html.erb index 0549cd5b2..4af5742a9 100644 --- a/app/views/users/_user_homework_form.html.erb +++ b/app/views/users/_user_homework_form.html.erb @@ -89,7 +89,7 @@
- +
diff --git a/public/javascripts/homework.js b/public/javascripts/homework.js index f29cd7b14..c136029bf 100644 --- a/public/javascripts/homework.js +++ b/public/javascripts/homework.js @@ -120,6 +120,7 @@ $(function(){ $("a.CloseBtn").on('click', function(){ $("#BluePopupBox" ).dialog("close"); }); + $('#textarea_input_test').focus(); $("#BluePopupBox a.BlueCirBtn").on('click', function(){ var test_numbers = 0; @@ -157,8 +158,7 @@ $(function(){ var html=bt('t:program-input-list',data); $("input[name=homework_type]").after(html); $("#BluePopupBox" ).dialog( "close" ); - }; - + } }); }); diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index 6817907c0..f2521f0d7 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -905,8 +905,8 @@ a:hover.icon_remove{background:url(../images/course/icons.png) -20px -338px no-r .T_C{ text-align:center;} .SearchIcon{background:url(../images/homepage_icon.png) 676px -393px no-repeat; } .SearchIcon:hover{background:url(../images/homepage_icon.png) 676px -419px no-repeat; } -a.link_file{ background:url(../images/course/pic_file.png) 0 2px no-repeat; padding-left:20px; } -a:hover.link_file{ background:url(../images/course/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;} +a.link_file{ background:url(../images/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.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;} .ProResultUl span { display:block; float:left;} From 2e595840317aefb349e394c92be414426d95eebc Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Tue, 8 Sep 2015 16:36:50 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=8C=89=E9=92=AE=E3=80=81=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E3=80=81=E9=A1=B9=E7=9B=AE=E7=AD=89=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 1 + app/views/users/_user_homework_list.html.erb | 4 ++-- app/views/users/user_homeworks.html.erb | 2 +- public/images/homepage_icon2.png | Bin 10889 -> 10323 bytes public/stylesheets/new_user.css | 4 ++-- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 9c6492448..7fcd7f260 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -300,6 +300,7 @@ class UsersController < ApplicationController @page = params[:page] ? params[:page].to_i + 1 : 0 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) + @is_teacher = User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true) respond_to do |format| format.js format.html {render :layout => 'new_base_user'} diff --git a/app/views/users/_user_homework_list.html.erb b/app/views/users/_user_homework_list.html.erb index 1a24b1499..642373d58 100644 --- a/app/views/users/_user_homework_list.html.erb +++ b/app/views/users/_user_homework_list.html.erb @@ -35,8 +35,8 @@ <%= render :partial => 'student_work/work_attachments', :locals => {:attachments => homework_common.attachments} %>
- <%# if is_teacher%> - <% if false%> + <% if is_teacher%> + <%# if false%>
-<% if User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true)%> +<% if @is_teacher%>
<% homework = HomeworkCommon.new %> diff --git a/public/images/homepage_icon2.png b/public/images/homepage_icon2.png index 6cbde8f6235a780dc9116f7507f433dcf4f6cec8..d39624a2e24f10323817e45686e5090365e7f4d7 100644 GIT binary patch delta 7655 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 P1?gz%-73|1_{V<%Q%Chc delta 8226 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 Xu(A2Lj~@6h0LbWunO?1~>mUCGSD1iN diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index f2521f0d7..df6d4d632 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -499,8 +499,8 @@ a.coursesLineGrey:hover {color:#ffffff;} .homepageLeftMenuMore {height:18px;} .homepageLeftMenuMore:hover {background-color:#269ac9;} .homepageLeftMenuMoreIcon {background:url(../images/homepage_icon.png) -74px -240px no-repeat; display:block; height:18px;} -.homepageMenuSetting {display:inline-block; background:url(../images/homepage_icon.png) -190px -365px no-repeat; width:15px; height:15px; margin-top: 16px; margin-right: 15px;} -.homepageMenuSetting:hover {background:url(../images/homepage_icon.png) -190px -407px no-repeat;} +.homepageMenuSetting {display:inline-block; background:url(../images/homepage_icon2.png) -190px -365px no-repeat; width:15px; height:15px; margin-top: 16px; margin-right: 15px;} +.homepageMenuSetting:hover {background:url(../images/homepage_icon2.png) -190px -407px no-repeat;} a.homepageMenuText {color:#484848; font-size:16px; margin-left:20px;} .homepageLeftLabelContainer {width:238px; border:1px solid #dddddd; background-color:#ffffff; margin-top:10px;} .homepageLabelText {color:#484848; font-size:16px; margin-left:10px; margin-bottom:12px; display:block;} From c413d66c4421ffab6e6a42413bebb1d71c137036 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 9 Sep 2015 00:43:54 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E6=89=93=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 35 ++++++++++------------ app/controllers/users_controller.rb | 11 +++++-- app/models/homework_common.rb | 4 +++ app/models/student_work.rb | 22 ++++++++++++++ app/models/student_work_test.rb | 13 ++++++-- 5 files changed, 62 insertions(+), 23 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 17c98e3b1..593d6bf53 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -42,9 +42,6 @@ class StudentWorkController < ApplicationController end end - - - render :json => resultObj end @@ -165,24 +162,23 @@ class StudentWorkController < ApplicationController def create if params[:student_work] - stundet_work = StudentWork.find(params[:student_work_id]) if params[:student_work_id] - stundet_work ||= StudentWork.new - stundet_work.name = params[:student_work][:name] - stundet_work.description = params[:student_work][:description] - stundet_work.project_id = params[:student_work][:project_id] - stundet_work.homework_common_id = @homework.id - stundet_work.user_id = User.current.id - stundet_work.save_attachments(params[:attachments]) + student_work = StudentWork.find(params[:student_work_id]) if params[:student_work_id] + student_work ||= StudentWork.new + student_work.name = params[:student_work][:name] + student_work.description = params[:student_work][:description] + student_work.project_id = params[:student_work][:project_id] + student_work.homework_common_id = @homework.id + student_work.user_id = User.current.id + student_work.save_attachments(params[:attachments]) if Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.parse(Time.now.to_s).strftime("%Y-%m-%d") - stundet_work.late_penalty = @homework.late_penalty + student_work.late_penalty = @homework.late_penalty else - stundet_work.late_penalty = 0 + student_work.late_penalty = 0 end - render_attachment_warning_if_needed(stundet_work) - if stundet_work.save - if @homework.homework_type == 2 && @homework.homework_detail_programing #编程作业,学生提交作品后计算系统得分 - - end + render_attachment_warning_if_needed(student_work) + + if student_work.save + respond_to do |format| format.html { flash[:notice] = l(:notice_successful_create) @@ -624,7 +620,7 @@ class StudentWorkController < ApplicationController end def find_or_save_student_work(is_test) - student_work = @homework.student_works.where(user_id: User.current.id).first + student_work = StudentWork.where(homework_common_id: @homework.id, user_id: User.current.id).first if student_work.nil? @homework.student_works.build( name: params[:title], @@ -633,6 +629,7 @@ class StudentWorkController < ApplicationController is_test: is_test ) unless @homework.save + logger.debug @homework.errors.full_messages else student_work = @homework.student_works.where(user_id: User.current.id).first end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 9c6492448..8bb971dab 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -367,8 +367,15 @@ class UsersController < ApplicationController end def user_commit_homework - flash[:notice] = l(:notice_successful_create) - redirect_to student_work_index_url(:homework => params[:homework]) + homework = HomeworkCommon.find(params[:homework]) + student_work = homework.student_works.where(user_id: User.current.id).first + if student_work + student_work.save + flash[:notice] = l(:notice_successful_create) + redirect_to student_work_index_url(:homework => params[:homework]) + else + render_403 + end end def user_new_homework diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index b51de6c2c..0bff38558 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -56,6 +56,10 @@ class HomeworkCommon < ActiveRecord::Base Mailer.run.homework_added(self) end + def is_program_homework? + self.homework_type == 2 && self.homework_detail_programing + end + delegate :language_name, :to => :homework_detail_programing end diff --git a/app/models/student_work.rb b/app/models/student_work.rb index d7287dcc4..0a5c1b65c 100644 --- a/app/models/student_work.rb +++ b/app/models/student_work.rb @@ -10,10 +10,32 @@ class StudentWork < ActiveRecord::Base has_many :student_work_tests, order: 'id desc' before_destroy :delete_praise + before_save :set_program_score, :set_src acts_as_attachable def delete_praise PraiseTread.where("praise_tread_object_id = #{self.id} AND praise_tread_object_type = 'StudentWork'").destroy_all end + + def last_test + student_work_tests.order('id desc').first + end + + private + def set_program_score + if homework_common.is_program_homework? #编程作业,学生提交作品后计算系统得分 + #根据最后一次测试计算得分 + unless last_test + self.system_score = 0 + else + self.system_score = last_test.test_score + end + end + + end + def set_src + self.description = last_test.src if last_test + end + end diff --git a/app/models/student_work_test.rb b/app/models/student_work_test.rb index 96aa1d6c3..1cfb7f8b2 100644 --- a/app/models/student_work_test.rb +++ b/app/models/student_work_test.rb @@ -34,10 +34,19 @@ class StudentWorkTest < ActiveRecord::Base def test_score if self.status.to_i == 0 - format("%.1f",100.0 / self.student_work.homework_common.homework_tests.count) - else + 100 + elsif self.results.empty? 0 + else + get_success_count * 100 / self.results.count end end + private + def get_success_count + self.results.inject(0) do |sum, result| + sum += (result["status"].to_i == 0 ? 1 : 0) + end || 0 + end + end From e040c20f081c89d387521eab31846f5913940d02 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Wed, 9 Sep 2015 09:36:44 +0800 Subject: [PATCH 6/9] =?UTF-8?q?admin=E7=95=8C=E9=9D=A2=EF=BC=8C=E6=9C=80?= =?UTF-8?q?=E5=90=8E=E7=99=BB=E5=BD=95=E7=9A=84=E7=94=A8=E6=88=B7=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/admin/latest_login_users.html.erb | 26 +++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/app/views/admin/latest_login_users.html.erb b/app/views/admin/latest_login_users.html.erb index c438dcebd..28ef8091e 100644 --- a/app/views/admin/latest_login_users.html.erb +++ b/app/views/admin/latest_login_users.html.erb @@ -70,18 +70,20 @@ <%=link_to(user.login, user_path(user)) %> - <% case user.user_extensions.identity %> - <% when 0 %> - <%='老师' %> - <% when 1 %> - <%='学生' %> - <% when 2 %> - <%='企业' %> - <% when 3 %> - <%='开发者' %> - <% else %> - <%='未知身份' %> - <% end %> + <%if user.user_extensions%> + <% case user.user_extensions.identity %> + <% when 0 %> + <%='老师' %> + <% when 1 %> + <%='学生' %> + <% when 2 %> + <%='企业' %> + <% when 3 %> + <%='开发者' %> + <% else %> + <%='未知身份' %> + <% end %> + <% end%> <% end %> From b1463f08644ab8000b847515e9141d91bc4cf7bc Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Wed, 9 Sep 2015 16:10:11 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E5=8C=BF=E8=AF=84=E4=BD=9C=E4=B8=9A=E4=BD=9C=E5=93=81=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 2 +- app/views/student_work/new.html.erb | 251 ++++++++-------------------- public/javascripts/new_user.js | 94 ++++++++++- public/stylesheets/new_user.css | 9 +- 4 files changed, 172 insertions(+), 184 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f4a70117f..4c78c03df 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2359,7 +2359,7 @@ module ApplicationHelper link_to "提交作品", new_student_work_path(:homework => homework.id),:class => 'c_blue' else if homework.homework_type == 1 && homework.homework_detail_manual && homework.homework_detail_manual.comment_status != 1 #匿评作业,且作业状态不是在开启匿评之前 - link_to "修改作品", "", :class => 'c_blue', :title => "开启匿评后不可修改作品" + link_to "作品已交", "", :class => 'c_blue', :title => "开启匿评后不可修改作品" elsif homework.homework_type == 2 #编程作业不能修改作品 link_to "作品已交", student_work_index_path(:homework => homework.id),:class => 'c_blue',:title => "编程作业不可修改作品" else diff --git a/app/views/student_work/new.html.erb b/app/views/student_work/new.html.erb index f0f4d8e7c..703447756 100644 --- a/app/views/student_work/new.html.erb +++ b/app/views/student_work/new.html.erb @@ -1,8 +1,8 @@ + <% content_for :header_tags do %> <%= javascript_include_tag 'homework','baiduTemplate' %> <% end %> -<% if @homework.homework_type == 1 %> -
-
-
提交作品
-
-
-
-
- <%= form_for(@student_work, - :html => { :multipart => true }, - :url => {:controller => 'student_work', - :action => 'create', - :homework => @homework.id - }) do |f|%> -
- <% if @homework.homework_type == 1%> -
- 提示:匿评作业提交的作品,作品名称和描述中不能出现真实的姓名信息 -
- <% end%> -

- - <%= f.text_field "name", :required => true, :size => 60, :class => "bo fl", :maxlength => 200, :placeholder => "作品名称", :onkeyup => "regexStudentWorkName();" %> - <% if @homework.homework_type != 2%> - - 项目信息 - - - <% end%> -

-

-

-
-

- - <%= f.select :project_id,options_for_select(user_projects_option), {},{:class => "bo02 mb10"} %> -

-
-

- - <% if @homework.homework_type == 2 && @homework.homework_detail_programing%> - <%= f.text_area "description", :class => "w620 hwork_txt h400", :placeholder => "作品描述不能为空", :onkeyup => "regexStudentWorkDescription();", :value => @homework.homework_detail_programing.language == "1" ? c_stantard_code_student : c_stantard_code_student_%> - <% else %> - <%= f.text_area "description", :class => "w620 hwork_txt", :placeholder => "作品描述不能为空", :onkeyup => "regexStudentWorkDescription();"%> - <% end%> -

-

-

-
- <% if @homework.homework_type != 2%> -

- - <%= render :partial => 'attachments/new_form' %> -

-
- <% end%> -

- 提交作品 - <%= link_to "返  回".html_safe, student_work_index_path(:homework => @homework), :class => "blue_btn grey_btn fl c_white mt10 ml10"%> -

-

-
- <% end%> -
-
-
-
-
-<% else %> +
+
提交作品
+
+
+
- - - +
+
+
+
+ <%= form_for(@student_work, + :html => { :multipart => true }, + :url => {:controller => 'student_work', + :action => 'create', + :homework => @homework.id + }) do |f|%> +
+ 提示:匿评作业提交的作品,作品名称和描述中不能出现真实的姓名信息 +
+
-
-
-
提交作品
+
+ <%= f.text_field "name", :required => true, :size => 60, :class => "InputBox W700", :maxlength => 200, :placeholder => "请简洁的概括作品的功能或特性", :onkeyup => "regexStudentWorkName();" %> +
+

+
+
+ <%= f.text_area "description", :class => "InputBox W700 H150", :placeholder => "请介绍你的作品", :onkeyup => "regexStudentWorkDescription();"%> +
+

-
-
-
<%= @homework.name %>
截止时间:<%= @homework.end_time %> -
- <%= @homework.user.show_name %> -

<%= @homework.description %>
-输入 2 1 1 4 4 2 3 6 5
-输出 15
-

-
-

注:迟交扣2分,缺评一个作品扣2

-
-
- <%= form_for(@student_work, - :html => { :multipart => true }, - :url => {:controller => 'student_work', - :action => 'create', - :student_work_id => @student_work.id, - :homework => @homework.id - }, - :method => :post) do |f|%> -
- 请使用 <%= @homework.language_name %> 语言编写 -
-
- <%= f.text_area :name, id: 'program-title', class:"InputBox W700", placeholder:"请概括你的代码的功能" %> -
-
- <%= f.text_area :description, id: 'program-src', class:" W700 H150", placeholder:"请贴入你的代码", rows: 10 %> -
- - <% end %> -
-
-
- <% @student_work.student_work_tests.each_with_index do |test, index| %> -
-

第<%= @student_work.student_work_tests.count - index%>次测试

<%= test.created_at.to_s(:db) %> -
-
- <% if test.status.to_i == -2 %> -
<%= test.results.first %>
- <% else %> -
-
    - <% test.results.each_with_index do |x, i| %> -
  • 测试<%=i+1%> - <% if x["status"].to_i != 0 %> - 测试错误! - 您的输出: - <%=x["result"]%> - 正确输出: - <%=x["output"]%> -
    -
  • - <% else %> - 测试正确! -
    - - <% end %> - <% end %> -
-
- <% end %> - <% end %> -
+
+ <%= render :partial => 'users/user_homework_attachment', :locals => {:container => @student_work, :has_program=>false} %> +
-<% end %> +
+ 确定 + + <%= link_to "取消", user_homeworks_user_path(User.current.id), :class => "fr mr10 mt3"%> +
+
+ <% end%> +
+
diff --git a/public/javascripts/new_user.js b/public/javascripts/new_user.js index fdf739bd0..9ffbf8b93 100644 --- a/public/javascripts/new_user.js +++ b/public/javascripts/new_user.js @@ -177,4 +177,96 @@ function regexStudentWorkDescription() $("#student_work_description_textarea").text(""); return true; } -} \ No newline at end of file +} + +//textarea自适应高度 +(function($){ + + $.fn.autoResize = function(options) { + + // Just some abstracted details, + // to make plugin users happy: + var settings = $.extend({ + onResize : function(){}, + animate : true, + animateDuration : 150, + animateCallback : function(){}, + extraSpace : 20, + limit: 1000 + }, options); + + // Only textarea's auto-resize: + this.filter('textarea').each(function(){ + + // Get rid of scrollbars and disable WebKit resizing: + var textarea = $(this).css({resize:'none','overflow-y':'hidden'}), + + // Cache original height, for use later: + origHeight = textarea.height(), + + // Need clone of textarea, hidden off screen: + clone = (function(){ + + // Properties which may effect space taken up by chracters: + var props = ['height','width','lineHeight','textDecoration','letterSpacing'], + propOb = {}; + + // Create object of styles to apply: + $.each(props, function(i, prop){ + propOb[prop] = textarea.css(prop); + }); + + // Clone the actual textarea removing unique properties + // and insert before original textarea: + return textarea.clone().removeAttr('id').removeAttr('name').css({ + position: 'absolute', + top: 0, + left: -9999 + }).css(propOb).attr('tabIndex','-1').insertBefore(textarea); + + })(), + lastScrollTop = null, + updateSize = function() { + + // Prepare the clone: + clone.height(0).val($(this).val()).scrollTop(10000); + + // Find the height of text: + var scrollTop = Math.max(clone.scrollTop(), origHeight) + settings.extraSpace, + toChange = $(this).add(clone); + + // Don't do anything if scrollTip hasen't changed: + if (lastScrollTop === scrollTop) { return; } + lastScrollTop = scrollTop; + + // Check for limit: + if ( scrollTop >= settings.limit ) { + $(this).css('overflow-y','hidden'); + return; + } + // Fire off callback: + settings.onResize.call(this); + + // Either animate or directly apply height: + settings.animate && textarea.css('display') === 'block' ? + toChange.stop().animate({height:scrollTop}, settings.animateDuration, settings.animateCallback) + : toChange.height(scrollTop); + }; + + // Bind namespaced handlers to appropriate events: + textarea + .unbind('.dynSiz') + .bind('keyup.dynSiz', updateSize) + .bind('keydown.dynSiz', updateSize) + .bind('change.dynSiz', updateSize); + + }); + + // Chain: + return this; + + }; + + + +})(jQuery); \ No newline at end of file diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index df6d4d632..780fb72b7 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -895,6 +895,8 @@ a:hover.icon_remove{background:url(../images/course/icons.png) -20px -338px no-r .HomeWorkBox{ background:#f6f6f6; padding:10px; margin:10px 0;} .c_grey{ color:#888888;} .HomeWorkP{ width:690px; font-size:14px;} +.HomeWorkP p{background-color: transparent !important;} +.HomeWorkP div{background-color: transparent !important;} .H150{ height:150px;} .ProResult{width:748px; background-color:#fff; border:1px solid #dddddd;border-bottom:none; } .ProResultTop{ height:38px; line-height:38px; border-bottom:1px solid #dddddd; background:#f2f2f2; padding:0 10px;} @@ -903,10 +905,11 @@ a:hover.icon_remove{background:url(../images/course/icons.png) -20px -338px no-r .W200{ width:200px;} .ProResultTable{ color:#888888;} .T_C{ text-align:center;} -.SearchIcon{background:url(../images/homepage_icon.png) 676px -393px no-repeat; } -.SearchIcon:hover{background:url(../images/homepage_icon.png) 676px -419px no-repeat; } +.SearchIcon{background:url(../images/homepage_icon2.png) 676px -393px no-repeat; } +.SearchIcon:hover{background:url(../images/homepage_icon2.png) 676px -419px no-repeat; } a.link_file{ background:url(../images/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.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.FilesName02{ max-width:665px;overflow:hidden; white-space:nowrap; text-overflow:ellipsis; display:block;} .ProResultUl span { display:block; float:left;} @@ -1001,7 +1004,7 @@ blockquote { } /* 创建作品 work */ -.Newwork{ width:668px; height:418px;} +.Newwork{ width:668px;} .N_top{ float:right; margin-left:390px; } .N_con{ color:#484747; font-weight:bold; width:660px; margin-top:10px; } .N_con p{ } From 401b0bc7e3911c5bb2da5eadddff92b7504b6a3a Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Wed, 9 Sep 2015 16:50:46 +0800 Subject: [PATCH 8/9] =?UTF-8?q?textarea=E8=87=AA=E5=8A=A8=E6=8B=89?= =?UTF-8?q?=E4=BC=B8=E9=AB=98=E5=BA=A6=E4=BC=98=E5=8C=96=EF=BC=8C=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=99=AE=E9=80=9A=E4=BD=9C=E4=B8=9A=E4=BD=9C=E5=93=81?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/student_work/edit.html.erb | 106 +++++++++--------- app/views/student_work/new.html.erb | 31 ++---- public/javascripts/new_user.js | 157 ++++++++++++--------------- 3 files changed, 134 insertions(+), 160 deletions(-) diff --git a/app/views/student_work/edit.html.erb b/app/views/student_work/edit.html.erb index 5bb362b46..deb6a1201 100644 --- a/app/views/student_work/edit.html.erb +++ b/app/views/student_work/edit.html.erb @@ -1,54 +1,62 @@ -
-
-
编辑作品
-
-
-
-
- <%= labelled_form_for @work,:html => { :multipart => true } do |f|%> -
-

- - - 项目信息 - - -

-

-

-
- -

- - <%= f.select :project,options_for_select(user_projects_option,@work.project_id), {},{:class => "bo02 mb10"} %> -

-
+
+
编辑作品
+
+
-

- - -

-

-
-

- - <%= render :partial => 'attachments/new_form',:locals => {:container => @work} %> -

-
-

- 提交作品 - <%= link_to "返  回".html_safe, student_work_index_path(:homework => @homework), :class => "blue_btn grey_btn fl c_white mt10 ml10"%> -

-

-
- <% end%> +
+
+
+
+ <%= @homework.name%>(作业名称) +
+ + 截止时间:<%= @homework.end_time%> + +
+ + <%= link_to @homework.user.show_name, user_activities_path(@homework.user_id), :class => "c_blue"%> + +
+
+ <%= @homework.description.html_safe %>
-
-
-
+
+
+ +
+ <%= labelled_form_for @work,:html => { :multipart => true } do |f|%> +
+ 提示:作品名称和描述中不要出现真实的姓名信息 +
+
+ +
+ +
+

+
+
+ + +
+

+
+ +
+ <%= render :partial => 'users/user_homework_attachment', :locals => {:container => @work, :has_program=>false} %> +
+ +
+ 确定 + + <%= link_to "取消", student_work_index_path(:homework => @homework), :class => "fr mr10 mt3"%> +
+
+ <% end%> +
diff --git a/app/views/student_work/new.html.erb b/app/views/student_work/new.html.erb index 703447756..1f9f547a0 100644 --- a/app/views/student_work/new.html.erb +++ b/app/views/student_work/new.html.erb @@ -16,23 +16,6 @@ // alert("当前作业已开启匿评,您提交作品后将不会收到任何匿评作品,您的作品也不会被其他用户匿评,如需获得最终成绩,请您联系主讲老师对您的作品单独进行评分"); }); <% end%> - - $(function(){ - $('#student_work_description').autoResize({ - // On resize: - onResize : function() { - $(this).css({opacity:0.8}); - }, - // After resize: - animateCallback : function() { - $(this).css({opacity:1}); - }, - // Quite slow animation: - animateDuration : 100, - // More extra space: - extraSpace : 0 - }); - });
@@ -62,7 +45,7 @@
-
+
<%= form_for(@student_work, :html => { :multipart => true }, :url => {:controller => 'student_work', @@ -70,19 +53,23 @@ :homework => @homework.id }) do |f|%>
- 提示:匿评作业提交的作品,作品名称和描述中不能出现真实的姓名信息 + 提示:作品名称和描述中不要出现真实的姓名信息
-
+
<%= f.text_field "name", :required => true, :size => 60, :class => "InputBox W700", :maxlength => 200, :placeholder => "请简洁的概括作品的功能或特性", :onkeyup => "regexStudentWorkName();" %>
-

+

<%= f.text_area "description", :class => "InputBox W700 H150", :placeholder => "请介绍你的作品", :onkeyup => "regexStudentWorkDescription();"%> +
-

+

diff --git a/public/javascripts/new_user.js b/public/javascripts/new_user.js index 9ffbf8b93..8362217a7 100644 --- a/public/javascripts/new_user.js +++ b/public/javascripts/new_user.js @@ -179,94 +179,73 @@ function regexStudentWorkDescription() } } -//textarea自适应高度 -(function($){ - - $.fn.autoResize = function(options) { - - // Just some abstracted details, - // to make plugin users happy: - var settings = $.extend({ - onResize : function(){}, - animate : true, - animateDuration : 150, - animateCallback : function(){}, - extraSpace : 20, - limit: 1000 - }, options); - - // Only textarea's auto-resize: - this.filter('textarea').each(function(){ - - // Get rid of scrollbars and disable WebKit resizing: - var textarea = $(this).css({resize:'none','overflow-y':'hidden'}), - - // Cache original height, for use later: - origHeight = textarea.height(), - - // Need clone of textarea, hidden off screen: - clone = (function(){ - - // Properties which may effect space taken up by chracters: - var props = ['height','width','lineHeight','textDecoration','letterSpacing'], - propOb = {}; - - // Create object of styles to apply: - $.each(props, function(i, prop){ - propOb[prop] = textarea.css(prop); - }); - - // Clone the actual textarea removing unique properties - // and insert before original textarea: - return textarea.clone().removeAttr('id').removeAttr('name').css({ - position: 'absolute', - top: 0, - left: -9999 - }).css(propOb).attr('tabIndex','-1').insertBefore(textarea); - - })(), - lastScrollTop = null, - updateSize = function() { - - // Prepare the clone: - clone.height(0).val($(this).val()).scrollTop(10000); - - // Find the height of text: - var scrollTop = Math.max(clone.scrollTop(), origHeight) + settings.extraSpace, - toChange = $(this).add(clone); - - // Don't do anything if scrollTip hasen't changed: - if (lastScrollTop === scrollTop) { return; } - lastScrollTop = scrollTop; - - // Check for limit: - if ( scrollTop >= settings.limit ) { - $(this).css('overflow-y','hidden'); - return; - } - // Fire off callback: - settings.onResize.call(this); - - // Either animate or directly apply height: - settings.animate && textarea.css('display') === 'block' ? - toChange.stop().animate({height:scrollTop}, settings.animateDuration, settings.animateCallback) - : toChange.height(scrollTop); - }; - - // Bind namespaced handlers to appropriate events: - textarea - .unbind('.dynSiz') - .bind('keyup.dynSiz', updateSize) - .bind('keydown.dynSiz', updateSize) - .bind('change.dynSiz', updateSize); - - }); - - // Chain: - return this; - +//textarea自适应高度 纯js写的 有浏览器判断 +/** + * 文本框根据输入内容自适应高度 + * @param {HTMLElement} 输入框元素 + * @param {Number} 设置光标与输入框保持的距离(默认0) + * @param {Number} 设置最大高度(可选) + */ +var autoTextarea = function (elem, extra, maxHeight) { + extra = extra || 0; + var isFirefox = !!document.getBoxObjectFor || 'mozInnerScreenX' in window, + isOpera = !!window.opera && !!window.opera.toString().indexOf('Opera'), + addEvent = function (type, callback) { + elem.addEventListener ? + elem.addEventListener(type, callback, false) : + elem.attachEvent('on' + type, callback); + }, + getStyle = elem.currentStyle ? function (name) { + var val = elem.currentStyle[name]; + + if (name === 'height' && val.search(/px/i) !== 1) { + var rect = elem.getBoundingClientRect(); + return rect.bottom - rect.top - + parseFloat(getStyle('paddingTop')) - + parseFloat(getStyle('paddingBottom')) + 'px'; + }; + + return val; + } : function (name) { + return getComputedStyle(elem, null)[name]; + }, + minHeight = parseFloat(getStyle('height')); + + + elem.style.resize = 'none'; + + var change = function () { + var scrollTop, height, + padding = 0, + style = elem.style; + + if (elem._length === elem.value.length) return; + elem._length = elem.value.length; + + if (!isFirefox && !isOpera) { + padding = parseInt(getStyle('paddingTop')) + parseInt(getStyle('paddingBottom')); + }; + scrollTop = document.body.scrollTop || document.documentElement.scrollTop; + + elem.style.height = minHeight + 'px'; + if (elem.scrollHeight > minHeight) { + if (maxHeight && elem.scrollHeight > maxHeight) { + height = maxHeight - padding; + style.overflowY = 'auto'; + } else { + height = elem.scrollHeight - padding; + style.overflowY = 'hidden'; + }; + style.height = height + extra + 'px'; + scrollTop += parseInt(style.height) - elem.currHeight; + document.body.scrollTop = scrollTop; + document.documentElement.scrollTop = scrollTop; + elem.currHeight = parseInt(style.height); + }; }; - - -})(jQuery); \ No newline at end of file + addEvent('propertychange', change); + addEvent('input', change); + addEvent('focus', change); + change(); +}; \ No newline at end of file From adcd3b1ad56f030834a45da82c255fd60c735d17 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Wed, 9 Sep 2015 16:54:08 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E7=9A=84js?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/student_work/new.html.erb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/views/student_work/new.html.erb b/app/views/student_work/new.html.erb index 1f9f547a0..8f36d3dd5 100644 --- a/app/views/student_work/new.html.erb +++ b/app/views/student_work/new.html.erb @@ -1,8 +1,4 @@ -<% content_for :header_tags do %> - <%= javascript_include_tag 'homework','baiduTemplate' %> -<% end %> -