From c579ee51feb4dc233247dda4a65340ae46f409fe Mon Sep 17 00:00:00 2001 From: huang Date: Sun, 6 Sep 2015 15:31:48 +0800 Subject: [PATCH 001/101] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/onclick_time.rb | 3 ++ .../20150906065702_create_onclick_times.rb | 10 +++++ db/schema.rb | 42 ++++++++++++------- spec/factories/onclick_times.rb | 7 ++++ spec/models/onclick_time_spec.rb | 5 +++ 5 files changed, 51 insertions(+), 16 deletions(-) create mode 100644 app/models/onclick_time.rb create mode 100644 db/migrate/20150906065702_create_onclick_times.rb create mode 100644 spec/factories/onclick_times.rb create mode 100644 spec/models/onclick_time_spec.rb diff --git a/app/models/onclick_time.rb b/app/models/onclick_time.rb new file mode 100644 index 000000000..16b17ea9a --- /dev/null +++ b/app/models/onclick_time.rb @@ -0,0 +1,3 @@ +class OnclickTime < ActiveRecord::Base + attr_accessible :onclick_time, :user_id +end diff --git a/db/migrate/20150906065702_create_onclick_times.rb b/db/migrate/20150906065702_create_onclick_times.rb new file mode 100644 index 000000000..3922b775e --- /dev/null +++ b/db/migrate/20150906065702_create_onclick_times.rb @@ -0,0 +1,10 @@ +class CreateOnclickTimes < ActiveRecord::Migration + def change + create_table :onclick_times do |t| + t.integer :user_id + t.datetime :onclick_time + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 5bf838c25..5867a62e5 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 => 20150906025009) do +ActiveRecord::Schema.define(:version => 20150906065702) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -497,23 +497,26 @@ ActiveRecord::Schema.define(:version => 20150906025009) 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| @@ -936,6 +939,13 @@ ActiveRecord::Schema.define(:version => 20150906025009) do t.datetime "updated_at", :null => false end + create_table "onclick_times", :force => true do |t| + t.integer "user_id" + t.datetime "onclick_time" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + create_table "open_id_authentication_associations", :force => true do |t| t.integer "issued" t.integer "lifetime" diff --git a/spec/factories/onclick_times.rb b/spec/factories/onclick_times.rb new file mode 100644 index 000000000..fcdda983d --- /dev/null +++ b/spec/factories/onclick_times.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + factory :onclick_time do + user_id 1 +onclick_time "2015-09-06 14:57:02" + end + +end diff --git a/spec/models/onclick_time_spec.rb b/spec/models/onclick_time_spec.rb new file mode 100644 index 000000000..bc453f545 --- /dev/null +++ b/spec/models/onclick_time_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe OnclickTime, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end From ed5f14c9ebb2c0a3b06c3cd1d772ddca29eff7a8 Mon Sep 17 00:00:00 2001 From: huang Date: Sun, 6 Sep 2015 17:42:10 +0800 Subject: [PATCH 002/101] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 859f19f19..7744f20a4 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -105,6 +105,16 @@ class UsersController < ApplicationController redirect_to signin_url return end + # 记录当前点击按钮的时间 + if OnclickTime.where("user_id =?", User.current).first.nil? + message_new_time = OnclickTime.new + message_new_time.user_id = User.current.id + message_new_time.onclick_time = Time.now + message_new_time.save + else + message_new_time = OnclickTime.where("user_id =?", User.current) + message_new_time.update_attributes(:onclick_time => Time.now) + end # 当前用户查看消息,则设置消息为已读 if params[:viewed] == "all" course_querys = @user.course_messages From ecd0056f0a8219e982b495a2978a4179b313e7eb Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 7 Sep 2015 11:13:15 +0800 Subject: [PATCH 003/101] =?UTF-8?q?1=E3=80=81=E5=AE=8C=E6=88=90=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=82=B9=E5=87=BB=E8=AE=B0=E5=90=8E=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=BA=A2=E7=82=B9=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=82=202=E3=80=81=E9=A6=96=E6=AC=A1=E7=99=BB?= =?UTF-8?q?=E9=99=86=E4=BB=A5=E2=80=9C=E6=9C=80=E5=90=8E=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E2=80=9D=E4=B8=BA=E5=87=86=EF=BC=8C=E5=90=8E?= =?UTF-8?q?=E9=9D=A2=E4=BB=A5=E7=82=B9=E5=87=BB=E6=97=B6=E9=97=B4=E4=B8=BA?= =?UTF-8?q?=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 2 +- app/models/onclick_time.rb | 2 ++ app/models/user.rb | 21 ++++++++++++++++----- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 7744f20a4..4bbb9848a 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -112,7 +112,7 @@ class UsersController < ApplicationController message_new_time.onclick_time = Time.now message_new_time.save else - message_new_time = OnclickTime.where("user_id =?", User.current) + message_new_time = OnclickTime.where("user_id =?", User.current).first message_new_time.update_attributes(:onclick_time => Time.now) end # 当前用户查看消息,则设置消息为已读 diff --git a/app/models/onclick_time.rb b/app/models/onclick_time.rb index 16b17ea9a..c62a9274c 100644 --- a/app/models/onclick_time.rb +++ b/app/models/onclick_time.rb @@ -1,3 +1,5 @@ class OnclickTime < ActiveRecord::Base attr_accessible :onclick_time, :user_id + + belongs_to :user end diff --git a/app/models/user.rb b/app/models/user.rb index b08b29981..e7f4a8c50 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -132,6 +132,7 @@ class User < Principal has_many :course_messages has_many :memo_messages has_many :user_feedback_messages + has_one :onclick_time # 虚拟转换 has_many :new_jours, :as => :jour, :class_name => 'JournalsForMessage', :conditions => "status=1" @@ -209,7 +210,7 @@ class User < Principal before_save :update_hashed_password before_destroy :remove_references_before_destroy # added by fq - after_create :act_as_activity + after_create :act_as_activity, :add_onclick_time # end scope :in_group, lambda {|group| @@ -257,10 +258,16 @@ class User < Principal # 新消息统计 def count_new_message - course_count = CourseMessage.where("user_id =? and viewed =?", User.current.id, 0).count - forge_count = ForgeMessage.where("user_id =? and viewed =?", User.current.id, 0).count - user_feedback_count = UserFeedbackMessage.where("user_id =? and viewed =?", User.current.id, 0).count - user_memo_count = MemoMessage.where("user_id =? and viewed =?", User.current.id, 0).count + if OnclickTime.where("user_id =?", User.current).first.nil? + message_new_time = OnclickTime.new + message_new_time.user_id = User.current.id + message_new_time.onclick_time = User.current.last_login_on.nil? ? Time.now : User.current.last_login_on + message_new_time.save + end + course_count = CourseMessage.where("user_id =? and viewed =? and created_at >?", User.current.id, 0, User.current.onclick_time.onclick_time).count + forge_count = ForgeMessage.where("user_id =? and viewed =? and created_at >?", User.current.id, 0, User.current.onclick_time.onclick_time).count + user_feedback_count = UserFeedbackMessage.where("user_id =? and viewed =? and created_at >?", User.current.id, 0, User.current.onclick_time.onclick_time).count + user_memo_count = MemoMessage.where("user_id =? and viewed =? and created_at >?", User.current.id, 0, User.current.onclick_time.onclick_time).count messages_count = course_count + forge_count + user_feedback_count + user_memo_count end @@ -994,6 +1001,10 @@ class User < Principal self.acts << Activity.new(:user_id => self.id) end + def add_onclick_time + self.onclick_time << OnclickTime.new(:user_id => self.id, :onclick_time => self.created_on) + end + # Removes references that are not handled by associations # Things that are not deleted are reassociated with the anonymous user def remove_references_before_destroy From ef011ad473178f18ab122cb9fcb97cc14a66f839 Mon Sep 17 00:00:00 2001 From: ouyangxuhua Date: Mon, 7 Sep 2015 15:23:34 +0800 Subject: [PATCH 004/101] =?UTF-8?q?=E9=A1=B9=E7=9B=AE--=E9=82=80=E8=AF=B7-?= =?UTF-8?q?-=E5=8F=91=E9=80=81=E9=82=AE=E4=BB=B6=E9=82=80=E8=AF=B7?= =?UTF-8?q?=E7=94=A8=E6=88=B7,=E5=AF=B9=E8=BE=93=E5=85=A5=E7=9A=84?= =?UTF-8?q?=E9=82=AE=E7=AE=B1=E5=90=8D=E8=BF=9B=E8=A1=8C=E5=88=A4=E6=96=AD?= =?UTF-8?q?=EF=BC=8C=E5=90=8C=E6=97=B6=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../projects/invite_members_by_mail.html.erb | 18 +++++++++++++----- public/stylesheets/public.css | 2 ++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/views/projects/invite_members_by_mail.html.erb b/app/views/projects/invite_members_by_mail.html.erb index 4c6ee47d8..8c951a485 100644 --- a/app/views/projects/invite_members_by_mail.html.erb +++ b/app/views/projects/invite_members_by_mail.html.erb @@ -24,16 +24,24 @@ if(email == "") { $("#valid_email").text("<%= l(:label_input_email_blank)%>"); + return false; } - else if (filter.test(email)) { - $("#valid_email").html(""); - return true; + else if(!filter.test(email)) + { + $("#valid_email").text("<%= l(:label_email_format_error)%>"); + return false; + } + else if(email.split('@')[0].length >= 20) + { + $("#valid_email").text("邮箱名过长,最长为20个字符"); + return false; } else { - $("#valid_email").text("<%= l(:label_email_format_error)%>"); + $("#valid_email").text(""); + return true; } - return false; + } function senderEmail(obj) diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index 4cc859721..2288c4994 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -418,6 +418,8 @@ div.flash.notice { background-color: #dfffdf; border-color: #9fcf9f; color: #005f00; + word-wrap: break-word; + word-break: break-all } div.flash.warning, .conflict { From 103d61056d7d7ea0c8799a77581c52ce0b724e13 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 7 Sep 2015 16:08:04 +0800 Subject: [PATCH 005/101] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=9A=201=E3=80=81=E6=B7=BB=E5=8A=A0=E2=80=9C=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E6=B6=88=E6=81=AF=E2=80=9D=E5=88=86=E7=B1=BB=202?= =?UTF-8?q?=E3=80=81=E6=96=B0=E6=B3=A8=E5=86=8C=E7=94=A8=E6=88=B7=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E7=82=B9=E5=87=BB=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 12 +++++++++++- app/helpers/users_helper.rb | 9 +++++++++ app/models/user.rb | 5 ++++- app/views/users/user_messages.html.erb | 6 +++--- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 4bbb9848a..f05fa891a 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -106,6 +106,7 @@ class UsersController < ApplicationController return end # 记录当前点击按钮的时间 + # 考虑到用户未退出刷新消息页面 if OnclickTime.where("user_id =?", User.current).first.nil? message_new_time = OnclickTime.new message_new_time.user_id = User.current.id @@ -132,10 +133,19 @@ class UsersController < ApplicationController case params[:type] when nil @message_alls = [] - messages = MessageAll.where("user_id =?",@user).order("created_at desc") + messages = MessageAll.where("user_id =?" ,@user).order("created_at desc") messages.each do |message_all| @message_alls << message_all.message end + when 'unviewed' + @message_alls = [] + messages = MessageAll.where("user_id =?", @user).order("created_at desc") + messages.each do |message_all| + # 在点击或者刷新消息列表后未读的消息存放在数组 + if message_all.message.viewed == 0 + @message_alls << message_all.message + end + end when 'homework' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "HomeworkCommon", @user).order("created_at desc") when 'course_message' diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 269630ec3..c806f3493 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -52,6 +52,15 @@ module UsersHelper end end + # 统计未读消息数 + def unviewed_message(user) + course_count = CourseMessage.where("user_id =? and viewed =?", user, 0).count + forge_count = ForgeMessage.where("user_id =? and viewed =?", user, 0).count + user_feedback_count = UserFeedbackMessage.where("user_id =? and viewed =?", user, 0).count + user_memo_count = MemoMessage.where("user_id =? and viewed =?", user, 0).count + messages_count = course_count + forge_count + user_feedback_count + user_memo_count + end + def user_mail_notification_options(user) user.valid_notification_options.collect {|o| [l(o.last), o.first]} end diff --git a/app/models/user.rb b/app/models/user.rb index e7f4a8c50..2ccc41783 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1001,8 +1001,11 @@ class User < Principal self.acts << Activity.new(:user_id => self.id) end + # 注册用户的时候消息默认点击时间为用户创建时间 def add_onclick_time - self.onclick_time << OnclickTime.new(:user_id => self.id, :onclick_time => self.created_on) + if OnclickTime.where("user_id =?" , self.id).first.nil? + OnclickTime.create(:user_id => self.id, :onclick_time => self.created_on) + end end # Removes references that are not handled by associations diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index c3c1a447b..6a6597af9 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -4,6 +4,7 @@
    • <%= link_to "全部",user_message_path(User.current), :class => "resourcesGrey" %>
    • +
    • <%= link_to "未读消息", user_message_path(User.current, :type => 'unviewed'), :class => "resourcesGrey" %>
    • <%# 课程相关消息 %>
    • <%= link_to "作业消息", user_message_path(User.current, :type => 'homework'), :class => "resourcesGrey" %>
    • <%= link_to "课程讨论",user_message_path(User.current, :type => 'course_message'), :class => "resourcesGrey" %>
    • @@ -22,16 +23,15 @@
    • <%= link_to "贴吧帖子", user_message_path(User.current, :type => 'forum'), :class => "resourcesGrey" %>
    • <%# 系统贴吧 %>
    • <%= link_to "用户留言",user_message_path(User.current, :type => 'user_feedback'), :class => "resourcesGrey" %>
    • -
  • -<% if params[:type].nil? %> +<% if params[:type].nil? || params[:type] == "unviewed" %> <% end %> <% if @message_alls.count >0 %> From 0a45e0848816d8d8b8aec37949429c56ebd4eb8f Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 7 Sep 2015 16:14:34 +0800 Subject: [PATCH 006/101] =?UTF-8?q?1=E3=80=81=E6=B6=88=E6=81=AF=E4=B8=BA0?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E5=80=99=E4=B8=8D=E6=98=BE=E7=A4=BA=20?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=95=B0=E5=92=8C=E2=80=9C=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=B7=B2=E8=AF=BB=E2=80=9D=E3=80=82=202?= =?UTF-8?q?=E3=80=81=E6=B6=88=E6=81=AF=E4=B8=8D=E4=B8=BA=E7=A9=BA=EF=BC=8C?= =?UTF-8?q?=E6=9C=AA=E8=AF=BB=E6=B6=88=E6=81=AF=E4=B8=BA=E7=A9=BA=E7=9A=84?= =?UTF-8?q?=E6=97=B6=E5=80=99=E4=B8=8D=E6=98=BE=E7=A4=BA=E2=80=9C=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E8=AE=BE=E4=B8=BA=E5=B7=B2=E8=AF=BB=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/user_messages.html.erb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index 6a6597af9..cd64fb227 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -29,12 +29,15 @@
    -<% if params[:type].nil? || params[:type] == "unviewed" %> - -<% end %> <% if @message_alls.count >0 %> + <% if params[:type].nil? || params[:type] == "unviewed" %> +
    + 有 <%= unviewed_message(@user) %> 条未读 + <% unless unviewed_message(@user) == 0 %> + <%= link_to "全部设为已读", user_message_path(User.current, :viewed => 'all') %> + <% end %> +
    + <% end %> <%# 课程消息 %> <% unless @message_alls.nil? %> <% @message_alls.each do |ma| %> From fb6688265c9748d1dfc6fb7ce0b5292d99388748 Mon Sep 17 00:00:00 2001 From: ouyangxuhua Date: Mon, 7 Sep 2015 17:16:25 +0800 Subject: [PATCH 007/101] =?UTF-8?q?wiki=E5=88=A0=E9=99=A4=E5=90=8E?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wiki_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index f74fbb04d..da6d48b8d 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -264,7 +264,7 @@ class WikiController < ApplicationController end @page.destroy respond_to do |format| - format.html { redirect_to project_wiki_index_url(@project) } + format.html {redirect_to edit_project_wiki_page_url @project, @page.title} format.api { render_api_ok } end end From 8d72a9a5390fafcc0b6f593765f3750d26cddcee Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 8 Sep 2015 09:22:15 +0800 Subject: [PATCH 008/101] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E9=A1=B9=E7=9B=AEbas?= =?UTF-8?q?e=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/base_projects.html.erb | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 425b720d9..ddafdab52 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -49,16 +49,6 @@ <%= link_to l(:field_homepage), home_path %> > <%=l(:label_project_hosting_platform) %> ><%= link_to @project.name, project_path(@project.id) %>

    - - - - - - - - - -
    From 4c73e00eafde6ee333cf7e42e72e75ec943564a6 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 8 Sep 2015 09:43:41 +0800 Subject: [PATCH 009/101] =?UTF-8?q?=E4=BD=9C=E5=93=81=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 9f8d25c7e..9bc7b52ed 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -67,13 +67,14 @@ class StudentWorkController < ApplicationController end 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字段 query_student_work = @homework.course_messages From 2dacc882dfd2bd1056e1ebf8d9fe86da41e0d79a Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Tue, 8 Sep 2015 10:33:40 +0800 Subject: [PATCH 010/101] test --- app/controllers/users_controller.rb | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 9853130ab..deeb3c42f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -27,19 +27,13 @@ class UsersController < ApplicationController menu_item :user_course, :only => :user_courses menu_item :user_homework, :only => :user_homeworks menu_item :user_project, :only => [:user_projects, :watch_projects] - # menu_item :requirement_focus, :only => :watch_bids menu_item :requirement_focus, :only => :watch_contests menu_item :user_newfeedback, :only => :user_newfeedback menu_item :user_messages, :only => :user_messages - #Ended by young - - # edit - # before_filter :can_show_course, :only => [:user_courses,:user_homeworks] - #edit has been deleted by huang, 2013-9-23 before_filter :find_user, :only => [:user_fanslist, :user_watchlist, :show, :edit, :update, :destroy, :edit_membership, :user_courses, :user_homeworks, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :watch_contests, :info, :watch_projects, :show_score, :topic_score_index, :project_score_index, From ae2aa2feddcfe8f1d1f0ea89c2a047d15198b936 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 8 Sep 2015 14:14:49 +0800 Subject: [PATCH 011/101] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=89=80=E6=9C=89=E9=80=BB=E8=BE=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 9bc7b52ed..3ed5eb914 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -69,12 +69,21 @@ class StudentWorkController < ApplicationController def index # 作业消息状态更新 @homework.course_messages.each do |homework_message| - if User.current.id == homework_message.user_id - homework_message.update_attributes(:viewed => true) + if User.current.id == homework_message.user_id && homework_message.viewed == 0 + homework_message.update_attributes(:viewed => true) if homework_message.viewed == 0 end end - # 作品消息状态更新 - + # 作品打分消息状态更新 + studentworks_scores = CourseMessage.where("user_id =? and course_id =? and course_message_type =? and viewed =?", User.current.id, @homework.course, "StudentWorksScore", 0) + studentworks_scores.each do |studentworks_score| + studentworks_score.update_attributes(:viewed => true) if studentworks_score.viewed == 0 + end + # 作品评论消息状态更新 + journals_for_teacher = CourseMessage.where("user_id =? and course_id =? and course_message_type =? and viewed =?", User.current.id, @homework.course, "JournalsForMessage", 0) + journals_for_teacher.each do |journal_for_teacher| + journal_for_teacher.update_attributes(:viewed => true) + end + # 作品留言 # 消息end #设置作业对应的forge_messages表的viewed字段 query_student_work = @homework.course_messages 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 012/101] 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 013/101] =?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 d01a52904030dab8d9ddeb207b606fb27367308e Mon Sep 17 00:00:00 2001 From: ouyangxuhua Date: Tue, 8 Sep 2015 15:27:58 +0800 Subject: [PATCH 014/101] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/news/_project_form.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/news/_project_form.html.erb b/app/views/news/_project_form.html.erb index dfe1fb937..269420bfe 100644 --- a/app/views/news/_project_form.html.erb +++ b/app/views/news/_project_form.html.erb @@ -1,7 +1,7 @@ <%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg' %>
  • - +

  • 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 015/101] =?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 966bd8f94cb8b18e91a99b2d6bc8c0d1c153dd14 Mon Sep 17 00:00:00 2001 From: ouyangxuhua Date: Tue, 8 Sep 2015 16:31:19 +0800 Subject: [PATCH 016/101] =?UTF-8?q?admin=E9=85=8D=E7=BD=AE=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E7=BC=96=E8=BE=91=E6=A1=86=E6=A0=B7=E5=BC=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/application.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 3e01d68ff..ed274a61e 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -1833,7 +1833,7 @@ input#time_entry_comments { width: 90%;} .tabular.settings p{ padding-left: 300px; } .tabular.settings label{ margin-left: -300px; width: 295px; } -.tabular.settings textarea { width: 99%; } +.tabular.settings textarea { width: 96%; } .settings.enabled_scm table {width:100%} .settings.enabled_scm td.scm_name{ font-weight: bold; } 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 017/101] =?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%>
    • diff --git a/app/views/users/user_homeworks.html.erb b/app/views/users/user_homeworks.html.erb index e925ccd6b..b3aaf5ece 100644 --- a/app/views/users/user_homeworks.html.erb +++ b/app/views/users/user_homeworks.html.erb @@ -17,7 +17,7 @@
    -<% 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 0746408a9df9a92af52a0c8285e3987cf0db07f9 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 8 Sep 2015 16:55:36 +0800 Subject: [PATCH 018/101] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E5=8A=A0=E5=85=A5=E9=A1=B9=E7=9B=AE=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=8F=90=E9=86=92=E5=8A=9F=E8=83=BD=EF=BC=88=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E6=94=B6=E5=88=B0=E6=B6=88=E6=81=AF=E6=8F=90?= =?UTF-8?q?=E9=86=92=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 2 ++ app/models/applied_project.rb | 18 +++++++++++++++--- app/views/users/user_messages.html.erb | 15 +++++++++++++++ 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index f05fa891a..c738ab89a 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -146,6 +146,8 @@ class UsersController < ApplicationController @message_alls << message_all.message end end + when 'invite_info' + @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?" , "AppliedProject", @user).order("created_at desc") when 'homework' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "HomeworkCommon", @user).order("created_at desc") when 'course_message' diff --git a/app/models/applied_project.rb b/app/models/applied_project.rb index accbc90e2..fb8bf90af 100644 --- a/app/models/applied_project.rb +++ b/app/models/applied_project.rb @@ -1,8 +1,21 @@ class AppliedProject < ActiveRecord::Base attr_accessible :project_id, :user_id - belongs_to :user - belongs_to :project + belongs_to :user + belongs_to :project + has_many :forge_messages, :class_name => 'ForgeMessage', :as => :forge_message, :dependent => :destroy + + after_create :send_appliled_message + + def send_appliled_message + # if MessageAll.where("message_type = '#{self.class.to_s}' and message_id = '#{self.id}'").first.nil? + self.project.members.each do |m| + if m.roles.first.to_s.include?("Manager") + self.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => self.project_id, :viewed => false) + end + end + # end + end #删除用户申请 def self.deleteappiled(userid, projectid) @@ -11,5 +24,4 @@ class AppliedProject < ActiveRecord::Base applied.destroy end end - end diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index cd64fb227..778805db6 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -134,6 +134,21 @@ <% end %> <% if ma.class == ForgeMessage %> + <% if ma.forge_message_type == "AppliedProject" %> + + <% end %> <% if ma.forge_message_type == "Issue" %>
    • From 51d964d37149bf1de5d447ca239a4dcae279d30c Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 8 Sep 2015 17:26:10 +0800 Subject: [PATCH 019/101] =?UTF-8?q?=E7=82=B9=E5=87=BB=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E5=AE=9A=E4=BD=8D=E5=88=B0=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E7=9A=84=E6=9F=90=E4=B8=80=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/projects/settings.html.erb | 12 +++++++----- app/views/users/user_messages.html.erb | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/views/projects/settings.html.erb b/app/views/projects/settings.html.erb index e70e20cef..3fc9a89d6 100644 --- a/app/views/projects/settings.html.erb +++ b/app/views/projects/settings.html.erb @@ -2,13 +2,15 @@ $(function(){ <%if @select_tab%> <%if @select_tab == "modules"%> - project_setting(2); + project_setting(2); + <% elsif @select_tab == "members"%> + project_setting(3); <% elsif @select_tab == "versions"%> - project_setting(4); - $("#pro_st_edit_ban").toggle(); + project_setting(4); + $("#pro_st_edit_ban").toggle(); <% elsif @select_tab == "repositories" %> - project_setting(6); - $("#pro_st_edit_ku").toggle(); + project_setting(6); + $("#pro_st_edit_ku").toggle(); <%else%> <% end%> <% end%> diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index 778805db6..e3f8c04d0 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -144,7 +144,7 @@ ">申请加入项目:
    • - <%= link_to ma.project, project_path(ma.project_id), :class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}",:title => "#{ma.project}" %> + <%= link_to ma.project, settings_project_path(:id => ma.project, :tab => "members"), :class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}",:title => "#{ma.project}" %>
    • <%= time_tag(ma.created_at).html_safe %>
    From a7f2f0a6d2a22af97a48034f533c9b684951f4d6 Mon Sep 17 00:00:00 2001 From: ouyangxuhua Date: Tue, 8 Sep 2015 17:31:16 +0800 Subject: [PATCH 020/101] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=BA=93=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E4=B8=BAflash.now[:error]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 77933666f..0f44be36c 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -342,7 +342,7 @@ class ProjectsController < ApplicationController if params[:repository] == "pswd_is_null" html << l(:label_password_not_null) end - flash[:error] = html if !html.to_s.blank? + flash.now[:error] = html if !html.to_s.blank? end scm = params[:repository_scm] || (Redmine::Scm::Base.all & Setting.enabled_scm).first @repository = Repository.factory(scm) 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 021/101] =?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 022/101] =?UTF-8?q?admin=E7=95=8C=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E6=9C=80=E5=90=8E=E7=99=BB=E5=BD=95=E7=9A=84=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=88=97=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 1a6f81f3020e585279a8164c760c5b6491f26091 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 9 Sep 2015 10:15:05 +0800 Subject: [PATCH 023/101] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=EF=BC=8C=E5=8C=BA=E5=88=86=E5=B7=B2=E8=AF=BB=E5=92=8C=E6=9C=AA?= =?UTF-8?q?=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 6 ++++++ app/controllers/users_controller.rb | 2 +- app/views/users/user_messages.html.erb | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 77933666f..04041bdf6 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -322,6 +322,12 @@ class ProjectsController < ApplicationController end def settings + # 修改查看消息状态 + applied_messages = ForgeMessage.where("user_id =? and project_id =? and forge_message_type =? and viewed =?", User.current.id, @project, "AppliedProject", 0) + applied_messages.each do |applied_message| + applied_message.update_attributes(:viewed => true) + end + # end @issue_custom_fields = IssueCustomField.sorted.all @issue_category ||= IssueCategory.new @member ||= @project.members.new diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index c738ab89a..5680a333e 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -146,7 +146,7 @@ class UsersController < ApplicationController @message_alls << message_all.message end end - when 'invite_info' + when 'apply' @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?" , "AppliedProject", @user).order("created_at desc") when 'homework' @message_alls = CourseMessage.where("course_message_type =? and user_id =?", "HomeworkCommon", @user).order("created_at desc") diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index e3f8c04d0..a37ce30ff 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -5,6 +5,7 @@
    • <%= link_to "全部",user_message_path(User.current), :class => "resourcesGrey" %>
    • <%= link_to "未读消息", user_message_path(User.current, :type => 'unviewed'), :class => "resourcesGrey" %>
    • +
    • <%= link_to "用户申请", user_message_path(User.current, :type => 'apply'), :class => "resourcesGrey" %>
    • <%# 课程相关消息 %>
    • <%= link_to "作业消息", user_message_path(User.current, :type => 'homework'), :class => "resourcesGrey" %>
    • <%= link_to "课程讨论",user_message_path(User.current, :type => 'course_message'), :class => "resourcesGrey" %>
    • From 20bef515dae1cea366f8f5a3a0ac8f5a718cd042 Mon Sep 17 00:00:00 2001 From: ouyangxuhua Date: Wed, 9 Sep 2015 11:42:06 +0800 Subject: [PATCH 024/101] =?UTF-8?q?issue=E5=91=A8=E6=8A=A5=E5=8F=91?= =?UTF-8?q?=E9=80=81=E6=B6=88=E6=81=AF=E7=BB=99=E6=89=80=E6=9C=89=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/issues_controller.rb | 6 ++++-- app/models/issue.rb | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 6a0b351ba..47e425710 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -114,8 +114,10 @@ class IssuesController < ApplicationController def show # 当前用户查看指派给他的缺陷消息,则设置消息为已读 query = @issue.forge_messages - if User.current.id == @issue.assigned_to_id - query.update_all(:viewed => true) + query.each do |m| + if m.user_id == User.current.id + m.update_attribute(:viewed, true) + end end # 缺陷状态更新 query_journals = @issue.journals diff --git a/app/models/issue.rb b/app/models/issue.rb index fa8cee988..f7f596e17 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -147,6 +147,13 @@ class Issue < ActiveRecord::Base unless self.author_id == self.assigned_to_id self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, :project_id => self.project_id, :viewed => false) end + if self.tracker_id == 5 + self.project.members.each do |m| + if m.roles.first.to_s.include?("Manager") && m.user_id != self.author_id && m.user_id != self.assigned_to_id + self.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => self.project_id, :viewed => false) + end + end + end end # 更新缺陷 @@ -1009,7 +1016,7 @@ class Issue < ActiveRecord::Base if leaf.start_date # Only move subtask if it starts at the same date as the parent # or if it starts before the given date - if start_date == leaf.start_date || date > leaf.start_date + if start_date == leaf.start_date || date > leaf.start_date leaf.reschedule_on!(date) end else From 24dce81b316bd67ed7daaa80088a8995a5f0e449 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Wed, 9 Sep 2015 14:57:42 +0800 Subject: [PATCH 025/101] =?UTF-8?q?=E9=AB=98=E5=BA=A6=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E7=94=A8=E4=B8=80=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/init_KindEditor.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/public/javascripts/init_KindEditor.js b/public/javascripts/init_KindEditor.js index 36f6934a5..18e7182fb 100644 --- a/public/javascripts/init_KindEditor.js +++ b/public/javascripts/init_KindEditor.js @@ -1,18 +1,18 @@ function init_editor(params){ - var minHeight; //最小高度 + // var minHeight; //最小高度 var paramsHeight = params.height; //设定的高度 var editor = params.kindutil.create(params.textarea, { resizeType : 1,minWidth:"1px",width:"100%", - height:paramsHeight == undefined ? "30px":paramsHeight+"px", - minHeight:paramsHeight == undefined ? "30px":paramsHeight+"px", + height:"30px",// == undefined ? "30px":paramsHeight+"px", + minHeight:"30px",// == undefined ? "30px":paramsHeight+"px", items:['emoticons'], afterChange:function(){//按键事件 nh_check_field({content:this,contentmsg:params.contentmsg,textarea:params.textarea}); var edit = this.edit; var body = edit.doc.body; - edit.iframe.height(minHeight); - this.resize(null, Math.max((params.kindutil.IE ? body.scrollHeight : body.offsetHeight) + (paramsHeight == undefined ? 30:paramsHeight), minHeight)); + edit.iframe.height(paramsHeight); + this.resize(null, Math.max((params.kindutil.IE ? body.scrollHeight : body.offsetHeight) + (paramsHeight == undefined ? 30:paramsHeight), paramsHeight)); }, afterCreate:function(){ var toolbar = $("div[class='ke-toolbar']",params.div_form); @@ -26,9 +26,9 @@ function init_editor(params){ //reset height var edit = this.edit; var body = edit.doc.body; - minHeight = paramsHeight == undefined ? params.kindutil.removeUnit(this.height) : paramsHeight; - edit.iframe.height(minHeight); - this.resize(null, Math.max((params.kindutil.IE ? body.scrollHeight : body.offsetHeight)+ (paramsHeight == undefined ? 30:paramsHeight) , minHeight)); + paramsHeight = paramsHeight == undefined ? params.kindutil.removeUnit(this.height) : paramsHeight; + edit.iframe.height(paramsHeight); + this.resize(null, Math.max((params.kindutil.IE ? body.scrollHeight : body.offsetHeight)+ (paramsHeight == undefined ? 30:paramsHeight) , paramsHeight)); } }).loadPlugin('paste'); 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 026/101] =?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 027/101] =?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 028/101] =?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 %> - \ No newline at end of file From 97f9d4fa60ea0ea1934fc7c988e2797a3bf69e20 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Thu, 10 Sep 2015 10:26:16 +0800 Subject: [PATCH 039/101] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=99=E5=B8=88?= =?UTF-8?q?=E8=8A=82=E7=A5=9D=E7=A6=8F=E8=AF=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/new_base_user.html.erb | 2 + app/views/users/show.html.erb | 66 +++++++++++------------ public/images/TeachersDay.jpg | Bin 0 -> 34823 bytes public/stylesheets/new_user.css | 5 +- 4 files changed, 38 insertions(+), 35 deletions(-) create mode 100644 public/images/TeachersDay.jpg diff --git a/app/views/layouts/new_base_user.html.erb b/app/views/layouts/new_base_user.html.erb index ae8fd774e..3ab40d101 100644 --- a/app/views/layouts/new_base_user.html.erb +++ b/app/views/layouts/new_base_user.html.erb @@ -27,6 +27,8 @@
    +
    +
    diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 13f2518e1..aab715b16 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -1,41 +1,41 @@ -
    +
    最新动态
      -
    • -
        -
      • -
          -
        • 课程动态
        • -
        • <%= link_to "作业动态", {:controller => "users", :action => "show", :type => "course_homework"}, :class => "homepagePostTypeAssignment postTypeGrey"%> -
        • -
        • <%= link_to "通知动态", {:controller => "users", :action => "show", :type => "course_news"}, :class => "homepagePostTypeNotice postTypeGrey"%> - -
        • <%= link_to "论坛动态", {:controller => "users", :action => "show", :type => "course_message"}, :class => "homepagePostTypeForum postTypeGrey"%> -
        • <%= link_to "问卷动态", {:controller => "users", :action => "show", :type => "course_poll"}, :class => "homepagePostTypeQuiz postTypeGrey"%> - - -
        -
      • -
      • -
          -
        • 项目动态
        • -
        • <%= link_to "问题动态", {:controller => "users", :action => "show", :type => "project_issue"}, :class => "homepagePostTypeQuestion postTypeGrey"%> -
        • <%= link_to "论坛动态", {:controller => "users", :action => "show", :type => "project_message"}, :class => "homepagePostTypeForum postTypeGrey"%> - -
        -
      • -
      • -
          -
        • 更多
        • -
        • <%= link_to "我的动态", {:controller => "users", :action => "show", :type => "current_user"}, :class =>"homepagePostTypeAll postTypeGrey"%> -
        • <%= link_to "全部动态", {:controller => "users", :action => "show", :type => nil}, :class =>"homepagePostTypeAll postTypeGrey"%> -
        -
      • +
      • +
          +
        • +
            +
          • 课程动态
          • +
          • <%= link_to "作业动态", {:controller => "users", :action => "show", :type => "course_homework"}, :class => "homepagePostTypeAssignment postTypeGrey"%> +
          • +
          • <%= link_to "通知动态", {:controller => "users", :action => "show", :type => "course_news"}, :class => "homepagePostTypeNotice postTypeGrey"%> + +
          • <%= link_to "论坛动态", {:controller => "users", :action => "show", :type => "course_message"}, :class => "homepagePostTypeForum postTypeGrey"%> +
          • <%= link_to "问卷动态", {:controller => "users", :action => "show", :type => "course_poll"}, :class => "homepagePostTypeQuiz postTypeGrey"%> + + +
          +
        • +
        • +
            +
          • 项目动态
          • +
          • <%= link_to "问题动态", {:controller => "users", :action => "show", :type => "project_issue"}, :class => "homepagePostTypeQuestion postTypeGrey"%> +
          • <%= link_to "论坛动态", {:controller => "users", :action => "show", :type => "project_message"}, :class => "homepagePostTypeForum postTypeGrey"%> + +
          +
        • +
        • +
            +
          • 更多
          • +
          • <%= link_to "我的动态", {:controller => "users", :action => "show", :type => "current_user"}, :class =>"homepagePostTypeAll postTypeGrey"%> +
          • <%= link_to "全部动态", {:controller => "users", :action => "show", :type => nil}, :class =>"homepagePostTypeAll postTypeGrey"%>
        -
    + + +
    <%= render :partial => 'users/user_activities', :locals => {:user_activities => @user_activities,:page => 0,:type => @type} %> diff --git a/public/images/TeachersDay.jpg b/public/images/TeachersDay.jpg new file mode 100644 index 0000000000000000000000000000000000000000..036a6f7299e301b3b7796e7ab8aa0d2ca336204a GIT binary patch literal 34823 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 fgDea#T+l&eXQ5rOxxqsjjQ&)sXx literal 0 HcmV?d00001 diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index 0515da364..b6e1919f2 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -465,8 +465,8 @@ a.homepageSearchIcon:hover {background:url(../images/nav_icon.png) -49px 3px no- /*.navHomepageProfile ul li ul {display:none;} .navHomepageProfile ul li:hover ul {display:block;}*/ .homepageLeft {width:240px; float:left; margin-right:10px; margin-bottom:10px;} -.homepageRight {width:750px; float:left; margin-top:15px; margin-bottom:10px;} -.homepagePortraitContainer {width:208px; border:1px solid #dddddd; background-color:#ffffff; margin-top:15px; padding:15px;} +.homepageRight {width:750px; float:left; margin-top:10px; margin-bottom:10px;} +.homepagePortraitContainer {width:208px; border:1px solid #dddddd; background-color:#ffffff; margin-top:10px; padding:15px;} .homepagePortraitImage {width:78px; height:78px; position:relative; border:1px solid #cbcbcb; padding: 2px;} .homepagePortraitImage:hover {border:1px solid #269ac9;} .homepageFollow {background:url(../images/homepage_icon.png) -10px -8px no-repeat; width:20px; height:20px; position:absolute; right:9px; top:9px;} @@ -505,6 +505,7 @@ 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;} .homepageRightBanner {width:718px; margin:0px auto; float:right; background-color: #ffffff; padding:10px 15px; border:1px solid #dddddd;} +.homepageRightBannerImg{width:1000px; margin:0px auto; height: 60px; margin-top: 10px; background:url(../images/TeachersDay.jpg)} .NewsBannerName {font-size:16px; color:#4b4b4b; display:block; width:150px; float:left;} .newsType {width:60px; background-color:#ffffff; float:left; list-style:none; position:absolute; border:1px solid #eaeaea; border-radius:5px; top:15px; padding:5px 10px; left:-40px; font-size:12px; color:#888888; display:none; line-height:2; z-index:9999;} .newsReadSetting {width:700px; background-color:#f6f6f6; border-bottom:1px solid #eeeeee; margin:10px auto; height:39px; line-height:39px; vertical-align:middle; font-size:14px; color:#7a7a7a; padding-left:10px;} From 8d415b085690c81e40da41a882a3b6decb334448 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Thu, 10 Sep 2015 10:51:53 +0800 Subject: [PATCH 040/101] =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9A=84=E7=BC=96=E8=BE=91=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_user_homework_list.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/users/_user_homework_list.html.erb b/app/views/users/_user_homework_list.html.erb index 642373d58..1a24b1499 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%>
    • From a29ab60481a788aaa1fb6ae9413bf760fed07980 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Thu, 10 Sep 2015 11:34:10 +0800 Subject: [PATCH 041/101] =?UTF-8?q?=E8=80=81=E5=B8=88=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=BB=93=E6=9E=9C=E8=83=BD=E6=98=BE=E7=A4=BA=E5=87=BA?= =?UTF-8?q?=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 2 +- app/controllers/users_controller.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 593d6bf53..018a293e3 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -631,7 +631,7 @@ class StudentWorkController < ApplicationController unless @homework.save logger.debug @homework.errors.full_messages else - 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 end end student_work diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 9b2d49f2d..d71b24fc8 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -354,7 +354,7 @@ class UsersController < ApplicationController @user = User.current @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 = StudentWork.where(homework_common_id: @homework.id, user_id: User.current.id).first if @student_work.nil? @student_work = StudentWork.new end @@ -369,7 +369,7 @@ class UsersController < ApplicationController def user_commit_homework homework = HomeworkCommon.find(params[:homework]) - 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 student_work.save flash[:notice] = l(:notice_successful_create) From 596c512d0afc6800226c9343e2b326d73d1ac91c Mon Sep 17 00:00:00 2001 From: ouyangxuhua Date: Thu, 10 Sep 2015 11:39:53 +0800 Subject: [PATCH 042/101] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 2 ++ app/views/users/user_messages.html.erb | 29 ++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 23106c954..220781ed9 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -148,6 +148,8 @@ class UsersController < ApplicationController @message_alls << message_all.message end end + when 'system_message' + @message_alls = SystemMessage.order("created_at desc").all when 'apply' @message_alls = ForgeMessage.where("forge_message_type =? and user_id =?" , "AppliedProject", @user).order("created_at desc") when 'homework' diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index e36fd4f32..b5473edee 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -6,6 +6,8 @@
    • <%= link_to "全部",user_message_path(User.current), :class => "resourcesGrey" %>
    • <%= link_to "未读消息", user_message_path(User.current, :type => 'unviewed'), :class => "resourcesGrey" %>
    • <%= link_to "用户申请", user_message_path(User.current, :type => 'apply'), :class => "resourcesGrey" %>
    • + <%# 系统消息 %> +
    • <%= link_to "系统消息", user_message_path(User.current, :type => 'system_message'), :class => "resourcesGrey" %>
    • <%# 课程相关消息 %>
    • <%= link_to "作业消息", user_message_path(User.current, :type => 'homework'), :class => "resourcesGrey" %>
    • <%= link_to "课程讨论",user_message_path(User.current, :type => 'course_message'), :class => "resourcesGrey" %>
    • @@ -42,8 +44,14 @@ <%# 系统消息 %> <% @user_system_messages.each do |usm| %> <% end %> <% end %> + <% if ma.class == SystemMessage %> + + <% end %> <% end %>
        <%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%> From fb155c84583d943a810a32e35656aa427973b8f2 Mon Sep 17 00:00:00 2001 From: ouyangxuhua Date: Thu, 10 Sep 2015 11:42:53 +0800 Subject: [PATCH 043/101] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/user_messages.html.erb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index b5473edee..36392c7ac 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -311,6 +311,7 @@
      <% end %> <% end %> + <%# 系统消息 %> <% if ma.class == SystemMessage %>
      • From fce5405c419d717a200c72e7e381350164876fc7 Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Thu, 10 Sep 2015 14:44:25 +0800 Subject: [PATCH 044/101] =?UTF-8?q?=E5=8F=91=E5=B8=83=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E6=A0=B7=E5=BC=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_user_homework_form.html.erb | 4 ++-- public/stylesheets/new_user.css | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/views/users/_user_homework_form.html.erb b/app/views/users/_user_homework_form.html.erb index 4af5742a9..949fb7f83 100644 --- a/app/views/users/_user_homework_form.html.erb +++ b/app/views/users/_user_homework_form.html.erb @@ -5,7 +5,7 @@
        - +

        @@ -34,7 +34,7 @@
        - <%= 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 w709",:value => "请选择发布作业的课程"} %>

        diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index b6e1919f2..a37123d76 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -856,6 +856,8 @@ a:hover.BlueCirBtn{ background:#269ac9; color:#fff;} .w708{width: 708px;} .w712{width:712px;max-width:712px;min-width: 712px;} .w720{width:721px;} +.w709{width: 709px;} +.w701{width: 701px;} a.AnnexBtn{ background: url(../images/homepage_icon2.png) 0px -343px no-repeat; width:70px; height:20px; display:block; padding-left:20px; color:#888888;} a:hover.AnnexBtn{background: url(../images/homepage_icon2.png) -90px -343px no-repeat; color:#269ac9;} a.FilesBtn{ background: url(../images/homepage_icon2.png) 0px -373px no-repeat; width:70px; height:20px; display:block; padding-left:20px; color:#888888;} From 5f0aac9265e63597602f5b6a9edb26d4bcc825d8 Mon Sep 17 00:00:00 2001 From: cxt Date: Thu, 10 Sep 2015 15:01:59 +0800 Subject: [PATCH 045/101] =?UTF-8?q?=E7=82=B9=E5=87=BB=E6=89=93=E5=BC=80?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E8=B5=84=E6=96=99=EF=BC=8C=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E7=9A=84=E6=80=A7=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/my/account.html.erb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/views/my/account.html.erb b/app/views/my/account.html.erb index 688d7e2ac..0e36d5fd9 100644 --- a/app/views/my/account.html.erb +++ b/app/views/my/account.html.erb @@ -213,6 +213,7 @@ <% occupation1 = User.current.user_extensions.occupation %> <% occupation = User.current.user_extensions.occupation %> <% title = User.current.user_extensions.technical_title %> + <% gender = User.current.user_extensions.gender %> <% language = User.current.language %> <% else %> <% province = "湖南省" %> @@ -510,6 +511,13 @@ } } } + function init_gender(pField, gender) { + for (var i=0; i" init_identity_and_title(document.getElementById('userIdentity'), identity, document.getElementById('userTechnical_title'), title, language); + //sex + var gender = "<%= "#{gender}" %>" + init_gender(document.getElementById('gender'), gender); + $("#userIdentity").change(); <% if( !@act.nil? && @act == 'password') %> $("#users_tb_2").click(); From e6d5d1785963bb8db69c0de0dcf8125f4559fb8a Mon Sep 17 00:00:00 2001 From: cxt Date: Thu, 10 Sep 2015 15:08:10 +0800 Subject: [PATCH 046/101] =?UTF-8?q?=E8=BD=BB=E6=8A=9A=E5=B1=95=E5=BC=80?= =?UTF-8?q?=E6=9B=B4=E5=A4=9A->=E5=B1=95=E5=BC=80=E6=9B=B4=E5=A4=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_user_activities.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/users/_user_activities.html.erb b/app/views/users/_user_activities.html.erb index 5ab315fab..6955f5f69 100644 --- a/app/views/users/_user_activities.html.erb +++ b/app/views/users/_user_activities.html.erb @@ -62,7 +62,7 @@ <% end %> <% if user_activities.count == 10%> -
        轻抚展开更多<%=link_to "", user_activities_path(@user.id,:type => type,:page => page),:id => "more_activities_link",:remote => "true",:class => "none" %>
        +
        展开更多<%=link_to "", user_activities_path(@user.id,:type => type,:page => page),:id => "more_activities_link",:remote => "true",:class => "none" %>
        <%#= link_to "点击展开更多",user_activities_path(@user.id,:type => type,:page => page),:id => "show_more_activities",:remote => "true",:class => "loadMore mt10 f_grey"%> <% end%> From 756aae0cf2f58b567d1d9f093ed20b4f61b5ae85 Mon Sep 17 00:00:00 2001 From: lizanle <491823689@qq.com> Date: Thu, 10 Sep 2015 15:45:08 +0800 Subject: [PATCH 047/101] =?UTF-8?q?=E5=8F=91=E5=B8=83issue=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=99=A8=E5=8F=AF=E4=BB=A5=E4=B8=8A=E4=BC=A0=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=B9=B6=E9=AB=98=E4=BA=AE=E6=98=BE=E7=A4=BA=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/bids/edit.html.erb | 3 +- app/views/layouts/base_projects.html.erb | 6 +- .../lib/rails_kindeditor/helper.rb | 6 +- public/assets/kindeditor/kindeditor.js | 8 +- public/assets/kindeditor/plugins/code/code.js | 5 +- .../kindeditor/plugins/code/previewcode.css | 76 + public/javascripts/prettify.js | 1655 +++++++++++++++++ public/stylesheets/prettify.css | 77 + 8 files changed, 1824 insertions(+), 12 deletions(-) create mode 100644 public/assets/kindeditor/plugins/code/previewcode.css create mode 100644 public/javascripts/prettify.js create mode 100644 public/stylesheets/prettify.css diff --git a/app/views/bids/edit.html.erb b/app/views/bids/edit.html.erb index da3d19267..554702d97 100644 --- a/app/views/bids/edit.html.erb +++ b/app/views/bids/edit.html.erb @@ -1,4 +1,5 @@ -<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg' %> +<%= javascript_include_tag "/assets/kindeditor/kindeditor",'prettify','/assets/kindeditor/pasteimg' %> +<%= stylesheet_link_tag 'prettify'%> <%= labelled_form_for @bid,:html => { :multipart => true } do |f| %> <%= render :partial => 'new_homework_form', :locals => { :bid => @bid, :bid_id => "edit_bid_#{@bid.id}",:f=>f,:edit_mode => true} %> <% end %> diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 425b720d9..ca1b324a4 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -12,8 +12,8 @@ <%= favicon %> <%= javascript_heads %> <%= heads_for_theme %> - <%= stylesheet_link_tag 'public', 'pleft', 'project','jquery/jquery-ui-1.9.2','header' %> - <%= javascript_include_tag 'cookie','project', 'header','select_list_move' %> + <%= stylesheet_link_tag 'public', 'pleft', 'project','prettify','jquery/jquery-ui-1.9.2','header' %> + <%= javascript_include_tag 'cookie','project', 'header','prettify','select_list_move' %> <%= call_hook :view_layouts_base_html_head %> <%= yield :header_tags -%> @@ -21,7 +21,7 @@ - +