From 157502d45086dc831b4a6f84711f06fac52fa7b2 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 15 Jan 2016 10:35:56 +0800 Subject: [PATCH 01/20] =?UTF-8?q?=E7=B2=BE=E5=93=81=E8=AF=BE=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/base_courses.html.erb | 40 +++++++++++++++++++ ...160115021923_add_is_excellent_to_course.rb | 5 +++ .../20160115022341_add_excellent_course.rb | 7 ++++ public/stylesheets/courses.css | 2 + public/stylesheets/public.css | 1 + 5 files changed, 55 insertions(+) create mode 100644 db/migrate/20160115021923_add_is_excellent_to_course.rb create mode 100644 db/migrate/20160115022341_add_excellent_course.rb diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb index cb5c2502f..862424786 100644 --- a/app/views/layouts/base_courses.html.erb +++ b/app/views/layouts/base_courses.html.erb @@ -204,6 +204,46 @@
+ +
diff --git a/db/migrate/20160115021923_add_is_excellent_to_course.rb b/db/migrate/20160115021923_add_is_excellent_to_course.rb new file mode 100644 index 000000000..39bbf2dd5 --- /dev/null +++ b/db/migrate/20160115021923_add_is_excellent_to_course.rb @@ -0,0 +1,5 @@ +class AddIsExcellentToCourse < ActiveRecord::Migration + def change + add_column :courses, :is_excellent, :integer, :default => false + end +end diff --git a/db/migrate/20160115022341_add_excellent_course.rb b/db/migrate/20160115022341_add_excellent_course.rb new file mode 100644 index 000000000..6d743d0c3 --- /dev/null +++ b/db/migrate/20160115022341_add_excellent_course.rb @@ -0,0 +1,7 @@ +class AddExcellentCourse < ActiveRecord::Migration + def up + end + + def down + end +end diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css index 16ef3c5df..985fd5c97 100644 --- a/public/stylesheets/courses.css +++ b/public/stylesheets/courses.css @@ -1257,3 +1257,5 @@ div.disable_link {background-color: #c1c1c1 !important;} .fn {font-weight:normal} .boutiqueP {position:absolute; left:0px; top:0px;} +/*160114课程推荐*/ +.courseR {width:220px; padding:10px; background-color:#ffffff; margin-top:10px;} diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index 87097a052..08625c6ef 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -216,6 +216,7 @@ a.c_green{ color:#28be6c;} .fontGrey {color:#cecece;} .fontGrey2 {color:#888888;} .fontGrey3 {color:#484848;} +.fontGrey4{color:#999999;} .fontBlue {color:#3498db;} a.underline {text-decoration:underline;} a.fontBlue {color:#297fb8;} From f52b0c1cc69c30820d90567f73cae64f6651db21 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 18 Jan 2016 10:16:29 +0800 Subject: [PATCH 02/20] =?UTF-8?q?=E6=A0=87=E8=AE=B0=E7=B2=BE=E5=93=81?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=EF=BC=8C=E7=B2=BE=E5=93=81=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 5 +++ app/views/courses/_recommendation.html.erb | 41 ++++++++++++++++++++++ app/views/layouts/_project_info.html.erb | 4 +-- app/views/layouts/base_courses.html.erb | 40 +-------------------- config/locales/zh.yml | 4 ++- db/schema.rb | 3 +- 6 files changed, 54 insertions(+), 43 deletions(-) create mode 100644 app/views/courses/_recommendation.html.erb diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 07f7a0ed8..336c6937b 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -49,6 +49,11 @@ module ApplicationHelper end end + # 判断课程是否为精品课程 + def is_excellent_course course + course.is_excellent? ? true : false + end + # 获取项目/课程总分 # 发布缺陷 4分 回复缺陷 1分 提交一次 4分 讨论帖子 2分 回复帖子 1分 发布新闻 1分 def static_project_score obj diff --git a/app/views/courses/_recommendation.html.erb b/app/views/courses/_recommendation.html.erb new file mode 100644 index 000000000..8e14e1130 --- /dev/null +++ b/app/views/courses/_recommendation.html.erb @@ -0,0 +1,41 @@ + \ No newline at end of file diff --git a/app/views/layouts/_project_info.html.erb b/app/views/layouts/_project_info.html.erb index 60fc6f96d..9a9d34e54 100644 --- a/app/views/layouts/_project_info.html.erb +++ b/app/views/layouts/_project_info.html.erb @@ -3,14 +3,14 @@ <% student_num = studentCount(@course) %> <% course_file_num = visable_attachemnts_incourse(@course).count%>
<%= @course.is_public == 0 ? "私有课程" : "公开课程" %> - <% if @course.id == 370 %> + <% if is_excellent_course(@course) %> 精品课程 <% end %>
diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb index b57e9ac54..9d61a6fbb 100644 --- a/app/views/layouts/base_courses.html.erb +++ b/app/views/layouts/base_courses.html.erb @@ -205,45 +205,7 @@
- + <%= render :partial => 'courses/recommendation', :locals => {:course => @course} %>
diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 34a526734..d5b249e8d 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2106,4 +2106,6 @@ zh: label_org_name: 组织名称: label_blank_user_lists_for_org: 用户不能为空 - + # 课程推荐 + label_homework_commont: 作业 + label_homework_recommendation: 课程推荐 \ No newline at end of file diff --git a/db/schema.rb b/db/schema.rb index bac1882c5..601b09561 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 => 20160115125217) do +ActiveRecord::Schema.define(:version => 20160118014219) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -499,6 +499,7 @@ ActiveRecord::Schema.define(:version => 20160115125217) do t.integer "is_delete", :default => 0 t.integer "end_time" t.string "end_term" + t.integer "is_excellent", :default => 0 end create_table "custom_fields", :force => true do |t| From ef0a2a54c5ccf85249fea2a08d46017e69f691bd Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 18 Jan 2016 15:48:26 +0800 Subject: [PATCH 03/20] =?UTF-8?q?=E7=B2=BE=E5=93=81=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 5 ++ app/helpers/courses_helper.rb | 26 ++++++++ app/models/course.rb | 25 +++++--- app/views/courses/_recommendation.html.erb | 59 ++++++------------- .../20160118014219_define_excellent_course.rb | 17 ++++++ 5 files changed, 84 insertions(+), 48 deletions(-) create mode 100644 db/migrate/20160118014219_define_excellent_course.rb diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 336c6937b..66f60d020 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -54,6 +54,11 @@ module ApplicationHelper course.is_excellent? ? true : false end + # 判断课程对成员是否可见 + def visible_course?(course) + (course.is_delete? or (!course.is_public? && !User.current.member_of_course?(course))) ? false : true + end + # 获取项目/课程总分 # 发布缺陷 4分 回复缺陷 1分 提交一次 4分 讨论帖子 2分 回复帖子 1分 发布新闻 1分 def static_project_score obj diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 097a3c1a4..780d73de2 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -11,6 +11,32 @@ module CoursesHelper #StudentRoles = [5, 10] #AllPeople = StudentRoles+TeacherRoles ## return people count + + # 推荐的精品课程 + def excellent_course_recommend course + q = "%#{course.name.strip}%" + result = find_excelletn_course(q, course) + end + + # 查询符合条件的精品课程 + def find_excelletn_course keywords, course + # 用新课程名去匹配精品课程中按课程名和Tag名 + if !course.is_public? && !User.current.member_of_course?(course) + sql = "SELECT distinct c.* FROM `courses` c, tags t, taggings ts where t.id = ts.tag_id and ts.taggable_id = c.id and c.is_excellent = 1 and is_delete = 0 and + ts.taggable_type = 'Course' and (t.name like '%#{keywords}%'or c.name like '%#{keywords}%')" + resultSetTag = Course.find_by_sql(sql) + else + sql = "SELECT distinct c.* FROM `courses` c, tags t, taggings ts where t.id = ts.tag_id and ts.taggable_id = c.id and c.is_excellent = 1 and is_delete = 0 and + ts.taggable_type = 'Course' and (t.name like '%#{keywords}%'or c.name like '%#{keywords}%') ORDER BY c.updated_at desc limit 0,5;" + resultSetTag = Course.visible.find_by_sql(sql) + end + + end + + # 判断精品课程是否可见,非课程成员无法查看私有课程 + def visible_excellent_course obj + # if course.is_pu + end # 返回x项目成员数量,即roles表中定义的所有成员 def projectCount project diff --git a/app/models/course.rb b/app/models/course.rb index 24e955d15..13e6be0ae 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -72,7 +72,7 @@ class Course < ActiveRecord::Base before_save :self_validate # 公开课程变成私有课程,所有资源都变成私有 after_update :update_files_public,:update_course_ealasticsearch_index,:update_activity - after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index + after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index, :add_course_ead before_destroy :delete_all_members,:delete_course_ealasticsearch_index safe_attributes 'extra', @@ -384,6 +384,12 @@ class Course < ActiveRecord::Base def act_as_course_message self.course_messages << CourseMessage.new(:user_id => self.tea_id, :course_id => self.id, :viewed => false) end + + # 发布新课导语 + def add_course_ead + + end + #项目与课程分离后,很多课程的名称等信息为空,这些数据信息存储在项目表中!!就是数据兼容的问题 #def name # read_attribute('name') || Project.find_by_identifier(self.extra).try(:name) @@ -405,6 +411,7 @@ class Course < ActiveRecord::Base self.__elasticsearch__.index_document end end + def update_course_ealasticsearch_index if self.is_public == 1 and self.is_delete == 0 #如果是初次更新成为公开或者恢复被删除的情况,会报错,那么这条记录尚未被索引过。没有报错就是更新的其他属性 begin @@ -428,13 +435,17 @@ class Course < ActiveRecord::Base end end + + #动态的更新 + def update_activity + update_course_activity(self.class, self.id) + update_user_activity(self.class, self.id) + update_org_activity(self.class, self.id) + end + end -#动态的更新 -def update_activity - update_course_activity(self.class, self.id) - update_user_activity(self.class, self.id) - update_org_activity(self.class, self.id) -end + + # Delete the previous articles index in Elasticsearch # Course.__elasticsearch__.client.indices.delete index: Course.index_name rescue nil diff --git a/app/views/courses/_recommendation.html.erb b/app/views/courses/_recommendation.html.erb index 8e14e1130..c7e459c95 100644 --- a/app/views/courses/_recommendation.html.erb +++ b/app/views/courses/_recommendation.html.erb @@ -1,41 +1,18 @@ - \ No newline at end of file +<% unless excellent_course_recommend(course).count == 0 %> +
    +

    <%= l(:label_homework_recommendation) %>

    + <% excellent_course_recommend(course).each do |c_course| %> +
  • <%= image_tag(url_to_avatar(c_course), :width => "40", :height => "40", :class => "fl mr10 rankPortrait", :alt => "logo") %> +
    +

    +

    + <%= l(:project_module_attachments) %>(<%= link_to c_course.attachments.count, course_files_path(c_course), :class => "linkBlue2" %>) + <%= l(:label_homework_commont) %>(<%= link_to c_course.homework_commons.count, homework_common_index_path(c_course), :class => "linkBlue2" %>)

    +
    +
    +
  • + <% end %> +
    +
+<% end %> + diff --git a/db/migrate/20160118014219_define_excellent_course.rb b/db/migrate/20160118014219_define_excellent_course.rb new file mode 100644 index 000000000..911c14a3e --- /dev/null +++ b/db/migrate/20160118014219_define_excellent_course.rb @@ -0,0 +1,17 @@ +class DefineExcellentCourse < ActiveRecord::Migration + def up + arr = [302,192,370,394,183,361,117,218,379,178,418,203,342,403,225] + for i in 0..arr.length-1 + begin + puts arr[i] + course = Course.find(arr[i]) + course.update_attribute(:is_excellent, true) + rescue + logger.error("Course is not found!") + end + end + end + + def down + end +end \ No newline at end of file From b93b86b9a0c926c4d617de688cfe9b486ee26765 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 18 Jan 2016 17:16:33 +0800 Subject: [PATCH 04/20] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=8F=91=E9=80=81board?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 2 +- app/models/course.rb | 5 ++++- app/views/users/_course_message.html.erb | 8 ++++++++ db/migrate/20160118083751_add_status_to_message.rb | 5 +++++ db/schema.rb | 3 ++- 5 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20160118083751_add_status_to_message.rb diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 279975c77..43a49c7d9 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -509,7 +509,7 @@ class CoursesController < ApplicationController if @course respond_to do |format| flash[:notice] = l(:notice_successful_create) - format.html {redirect_to settings_course_url(@course, :course_type => 1)} + format.html {redirect_to course_url(@course)} format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'courses', :action => 'show', :id => @course.id) } end else diff --git a/app/models/course.rb b/app/models/course.rb index 13e6be0ae..433a5801e 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -387,7 +387,10 @@ class Course < ActiveRecord::Base # 发布新课导语 def add_course_ead - + name = Redmine::Configuration['course_message_lead_subject'] + content = Redmine::Configuration['course_message_lead_content'] + # message的status状态为0为正常,为1表示创建课程时发送的message + Message.create(:subject => name, :content => content, :board_id => self.boards.first.id, :author_id => self.tea_id , :sticky => true, :status => true ) end #项目与课程分离后,很多课程的名称等信息为空,这些数据信息存储在项目表中!!就是数据兼容的问题 diff --git a/app/views/users/_course_message.html.erb b/app/views/users/_course_message.html.erb index d8268d698..7d732bc8e 100644 --- a/app/views/users/_course_message.html.erb +++ b/app/views/users/_course_message.html.erb @@ -43,6 +43,14 @@ <%= activity.parent.content.to_s.html_safe%> <% end %>
+ <% if activity.status == 1 %> + <%= activity.created_on.year %> + + <%= activity.created_on.month %> + + <%= activity.created_on.day %> + + <% end %>
diff --git a/db/migrate/20160118083751_add_status_to_message.rb b/db/migrate/20160118083751_add_status_to_message.rb new file mode 100644 index 000000000..46d63de3a --- /dev/null +++ b/db/migrate/20160118083751_add_status_to_message.rb @@ -0,0 +1,5 @@ +class AddStatusToMessage < ActiveRecord::Migration + def change + add_column :messages, :status, :integer, :default => false + end +end diff --git a/db/schema.rb b/db/schema.rb index 601b09561..1cad3bd21 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 => 20160118014219) do +ActiveRecord::Schema.define(:version => 20160118083751) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -1073,6 +1073,7 @@ ActiveRecord::Schema.define(:version => 20160118014219) do t.integer "sticky", :default => 0 t.integer "reply_id" t.integer "quotes" + t.integer "status", :default => 0 end add_index "messages", ["author_id"], :name => "index_messages_on_author_id" From 5862c16c680d503e41d6e04d431d3f70a1e95f84 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 18 Jan 2016 17:36:18 +0800 Subject: [PATCH 05/20] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=B2=BE=E5=93=81?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=8E=A8=E8=8D=90=20=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E6=8E=89=E7=A7=81=E6=9C=89=E8=AF=BE=E7=A8=8B=20=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=8E=89=E5=B7=B2=E5=88=A0=E9=99=A4=E7=9A=84=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/courses_helper.rb | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 780d73de2..712f2d075 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -21,16 +21,10 @@ module CoursesHelper # 查询符合条件的精品课程 def find_excelletn_course keywords, course # 用新课程名去匹配精品课程中按课程名和Tag名 - if !course.is_public? && !User.current.member_of_course?(course) - sql = "SELECT distinct c.* FROM `courses` c, tags t, taggings ts where t.id = ts.tag_id and ts.taggable_id = c.id and c.is_excellent = 1 and is_delete = 0 and + sql = "SELECT distinct c.* FROM `courses` c, tags t, taggings ts where t.id = ts.tag_id and ts.taggable_id = c.id and c.is_excellent = 1 and is_delete = 0 and ts.taggable_type = 'Course' and (t.name like '%#{keywords}%'or c.name like '%#{keywords}%')" - resultSetTag = Course.find_by_sql(sql) - else - sql = "SELECT distinct c.* FROM `courses` c, tags t, taggings ts where t.id = ts.tag_id and ts.taggable_id = c.id and c.is_excellent = 1 and is_delete = 0 and - ts.taggable_type = 'Course' and (t.name like '%#{keywords}%'or c.name like '%#{keywords}%') ORDER BY c.updated_at desc limit 0,5;" - resultSetTag = Course.visible.find_by_sql(sql) - end - + resultSetTag = Course.find_by_sql(sql).select{|e_course| e_course.is_public ==1 unless User.current.member_of_course?(e_course)}.first(3) + resultSetTag end # 判断精品课程是否可见,非课程成员无法查看私有课程 From 610b54b27c632627d7f50a1f54069ad72aaf5ae4 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 19 Jan 2016 10:29:57 +0800 Subject: [PATCH 06/20] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=AF=BC=E8=AF=AD?= =?UTF-8?q?=E6=94=BE=E7=BD=AE=E8=AF=BE=E7=A8=8B=E5=8A=A8=E6=80=81=E4=B9=8B?= =?UTF-8?q?=E5=90=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/course.rb | 10 +--------- app/models/course_activity.rb | 13 +++++++++++++ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/models/course.rb b/app/models/course.rb index 433a5801e..480c00480 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -72,7 +72,7 @@ class Course < ActiveRecord::Base before_save :self_validate # 公开课程变成私有课程,所有资源都变成私有 after_update :update_files_public,:update_course_ealasticsearch_index,:update_activity - after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index, :add_course_ead + after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index before_destroy :delete_all_members,:delete_course_ealasticsearch_index safe_attributes 'extra', @@ -385,14 +385,6 @@ class Course < ActiveRecord::Base self.course_messages << CourseMessage.new(:user_id => self.tea_id, :course_id => self.id, :viewed => false) end - # 发布新课导语 - def add_course_ead - name = Redmine::Configuration['course_message_lead_subject'] - content = Redmine::Configuration['course_message_lead_content'] - # message的status状态为0为正常,为1表示创建课程时发送的message - Message.create(:subject => name, :content => content, :board_id => self.boards.first.id, :author_id => self.tea_id , :sticky => true, :status => true ) - end - #项目与课程分离后,很多课程的名称等信息为空,这些数据信息存储在项目表中!!就是数据兼容的问题 #def name # read_attribute('name') || Project.find_by_identifier(self.extra).try(:name) diff --git a/app/models/course_activity.rb b/app/models/course_activity.rb index e1f9ab9f5..88351acfd 100644 --- a/app/models/course_activity.rb +++ b/app/models/course_activity.rb @@ -6,6 +6,7 @@ class CourseActivity < ActiveRecord::Base belongs_to :user has_many :user_acts, :class_name => 'UserAcivity',:as =>:act after_save :add_user_activity, :add_course_activity + after_create :add_course_lead before_destroy :destroy_user_activity, :destroy_org_activity #在个人动态里面增加当前动态 @@ -60,4 +61,16 @@ class CourseActivity < ActiveRecord::Base org_activity = OrgActivity.where("org_act_type = '#{self.course_act_type.to_s}' and org_act_id = '#{self.course_act_id}'") org_activity.destroy_all end + + # 发布新课导语 + # 导语要放置在课程创建信息之后 + # 导语 + def add_course_lead + if self.course_act_type == "Course" + name = Redmine::Configuration['course_message_lead_subject'] + content = Redmine::Configuration['course_message_lead_content'] + # message的status状态为0为正常,为1表示创建课程时发送的message + Message.create(:subject => name, :content => content, :board_id => self.course.boards.first.id, :author_id => self.course.tea_id , :sticky => true, :status => true ) + end + end end From 18c3c23d2c3d8ca3e94022db1147dbb0057ed675 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 20 Jan 2016 15:43:33 +0800 Subject: [PATCH 07/20] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/courses_helper.rb | 37 ++++++++++++++++------ app/models/course.rb | 30 +++++++++++++++++- app/views/courses/_recommendation.html.erb | 10 +++--- public/stylesheets/public.css | 1 + 4 files changed, 63 insertions(+), 15 deletions(-) diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 712f2d075..6d16dbb4a 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -12,19 +12,38 @@ module CoursesHelper #AllPeople = StudentRoles+TeacherRoles ## return people count + # 推荐的精品课程 - def excellent_course_recommend course - q = "%#{course.name.strip}%" - result = find_excelletn_course(q, course) + def excellent_course_recommend new_course + q = "%#{new_course.name.strip}%" + result = find_excelletn_course(q, new_course) end # 查询符合条件的精品课程 - def find_excelletn_course keywords, course - # 用新课程名去匹配精品课程中按课程名和Tag名 - sql = "SELECT distinct c.* FROM `courses` c, tags t, taggings ts where t.id = ts.tag_id and ts.taggable_id = c.id and c.is_excellent = 1 and is_delete = 0 and - ts.taggable_type = 'Course' and (t.name like '%#{keywords}%'or c.name like '%#{keywords}%')" - resultSetTag = Course.find_by_sql(sql).select{|e_course| e_course.is_public ==1 unless User.current.member_of_course?(e_course)}.first(3) - resultSetTag + # 用新课程名去匹配精品课程中按课程名和Tag名 + def find_excelletn_course keywords, current_course + # 获取tag匹配结果ID + a_tags = [] + # kc = keywords.to_a + Course.visible.where("is_excellent =?", 2).each do |ec| + if ec.tags.any?{|value| current_course.name.include?(value.to_s)} + #if ec.tags.find_all{|ect| kc.include? ect}.length != 0 + a_tags << ec.id + end + end + # sql = "SELECT distinct c.* FROM `courses` c, tags t, taggings ts where t.id = ts.tag_id and ts.taggable_id = c.id and c.is_excellent = 1 and is_delete = 0 and + # ts.taggable_type = 'Course' and t.name like '%#{keywords}%'" + # a_tags = Course.find_by_sql(sql).select{|course| course.is_public ==1 unless User.current.member_of_course?(course)} + # 通过elastic结果获取精品课程 + a_courses = [] + courses = Course.search(keywords) + courses.each do |c| + a_courses << c.id unless current_course.id != c.id + end + a_courses << a_tags unless a_tags.length == 0 + # 过滤条件:精品课程、本身不在搜索范围 + e_courses = Course.where("is_excellent =? and id in (?)",1,a_courses.uniq).where("id !=?",current_course.id) + e_courses end # 判断精品课程是否可见,非课程成员无法查看私有课程 diff --git a/app/models/course.rb b/app/models/course.rb index 480c00480..e715e9198 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -72,7 +72,7 @@ class Course < ActiveRecord::Base before_save :self_validate # 公开课程变成私有课程,所有资源都变成私有 after_update :update_files_public,:update_course_ealasticsearch_index,:update_activity - after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index + after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index, :add_course_ead before_destroy :delete_all_members,:delete_course_ealasticsearch_index safe_attributes 'extra', @@ -145,6 +145,26 @@ class Course < ActiveRecord::Base ) end + def self.e_search(query) + __elasticsearch__.search( + { + query: { + multi_match: { + query: query, + type:"most_fields", + operator: "or", + fields: ['name', 'description^0.5'] + } + }, + sort: { + _score:{order: "desc" }, + updated_at:{order:"desc"} + + } + } + ) + end + def visible?(user=User.current) user.allowed_to?(:view_course, self) end @@ -385,6 +405,14 @@ class Course < ActiveRecord::Base self.course_messages << CourseMessage.new(:user_id => self.tea_id, :course_id => self.id, :viewed => false) end + # 发布新课导语 + def add_course_ead + name = Redmine::Configuration['course_message_lead_subject'] + content = Redmine::Configuration['course_message_lead_content'] + # message的status状态为0为正常,为1表示创建课程时发送的message + Message.create(:subject => name, :content => content, :board_id => self.boards.first.id, :author_id => self.tea_id , :sticky => true, :status => true ) + end + #项目与课程分离后,很多课程的名称等信息为空,这些数据信息存储在项目表中!!就是数据兼容的问题 #def name # read_attribute('name') || Project.find_by_identifier(self.extra).try(:name) diff --git a/app/views/courses/_recommendation.html.erb b/app/views/courses/_recommendation.html.erb index c7e459c95..bd44afad2 100644 --- a/app/views/courses/_recommendation.html.erb +++ b/app/views/courses/_recommendation.html.erb @@ -1,13 +1,13 @@ <% unless excellent_course_recommend(course).count == 0 %>

    <%= l(:label_homework_recommendation) %>

    - <% excellent_course_recommend(course).each do |c_course| %> -
  • <%= image_tag(url_to_avatar(c_course), :width => "40", :height => "40", :class => "fl mr10 rankPortrait", :alt => "logo") %> + <% excellent_course_recommend(course).each do |e_course| %> +
  • <%= image_tag(url_to_avatar(e_course), :width => "40", :height => "40", :class => "fl mr10 rankPortrait", :alt => "logo") %>
    -

    +

    <%=link_to e_course.name, course_path(e_course.id), :class => "hidden fl w170" %>

    - <%= l(:project_module_attachments) %>(<%= link_to c_course.attachments.count, course_files_path(c_course), :class => "linkBlue2" %>) - <%= l(:label_homework_commont) %>(<%= link_to c_course.homework_commons.count, homework_common_index_path(c_course), :class => "linkBlue2" %>)

    + <%= l(:project_module_attachments) %>(<%= link_to e_course.attachments.count, course_files_path(e_course), :class => "linkBlue2" %>) + <%= l(:label_homework_commont) %>(<%= link_to e_course.homework_commons.count, homework_common_index_path(e_course), :class => "linkBlue2" %>)

  • diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index 08625c6ef..42e18a7cf 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -141,6 +141,7 @@ h4{ font-size:14px; color:#3b3b3b;} .w100{width: 100px;} .w210{ width:210px;} .w150{ width:150px;} +.w170{width:170px;} .w230{width:230px !important;} .w235{ width:235px !important;} .w280{ width:280px;} From c5d935108e7280959d82ff0ebb98df661821d278 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 20 Jan 2016 15:59:30 +0800 Subject: [PATCH 08/20] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8C=89tag=E6=90=9C=E7=B4=A2=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/courses_helper.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 6d16dbb4a..13d8e99b6 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -25,9 +25,8 @@ module CoursesHelper # 获取tag匹配结果ID a_tags = [] # kc = keywords.to_a - Course.visible.where("is_excellent =?", 2).each do |ec| + Course.visible.where("is_excellent =?", 1).each do |ec| if ec.tags.any?{|value| current_course.name.include?(value.to_s)} - #if ec.tags.find_all{|ect| kc.include? ect}.length != 0 a_tags << ec.id end end @@ -42,7 +41,7 @@ module CoursesHelper end a_courses << a_tags unless a_tags.length == 0 # 过滤条件:精品课程、本身不在搜索范围 - e_courses = Course.where("is_excellent =? and id in (?)",1,a_courses.uniq).where("id !=?",current_course.id) + e_courses = Course.where("is_excellent =? and id in (?)",1,a_courses.flatten.uniq).where("id !=?",current_course.id) e_courses end From 0db69e1ebfc991a88f3785bf2b19f1a885660d17 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 20 Jan 2016 16:32:47 +0800 Subject: [PATCH 09/20] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=AF=BC=E8=AF=AD=E6=97=B6=E9=97=B4=E5=92=8C=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=8A=A8=E6=80=81=E6=97=B6=E9=97=B4=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/courses_helper.rb | 2 +- app/models/course.rb | 10 +--------- app/models/course_activity.rb | 4 +++- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 13d8e99b6..7b7bcbcf4 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -37,7 +37,7 @@ module CoursesHelper a_courses = [] courses = Course.search(keywords) courses.each do |c| - a_courses << c.id unless current_course.id != c.id + a_courses << c.id end a_courses << a_tags unless a_tags.length == 0 # 过滤条件:精品课程、本身不在搜索范围 diff --git a/app/models/course.rb b/app/models/course.rb index e715e9198..0d663b19a 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -72,7 +72,7 @@ class Course < ActiveRecord::Base before_save :self_validate # 公开课程变成私有课程,所有资源都变成私有 after_update :update_files_public,:update_course_ealasticsearch_index,:update_activity - after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index, :add_course_ead + after_create :create_board_sync, :act_as_course_activity, :act_as_course_message,:create_course_ealasticsearch_index before_destroy :delete_all_members,:delete_course_ealasticsearch_index safe_attributes 'extra', @@ -405,14 +405,6 @@ class Course < ActiveRecord::Base self.course_messages << CourseMessage.new(:user_id => self.tea_id, :course_id => self.id, :viewed => false) end - # 发布新课导语 - def add_course_ead - name = Redmine::Configuration['course_message_lead_subject'] - content = Redmine::Configuration['course_message_lead_content'] - # message的status状态为0为正常,为1表示创建课程时发送的message - Message.create(:subject => name, :content => content, :board_id => self.boards.first.id, :author_id => self.tea_id , :sticky => true, :status => true ) - end - #项目与课程分离后,很多课程的名称等信息为空,这些数据信息存储在项目表中!!就是数据兼容的问题 #def name # read_attribute('name') || Project.find_by_identifier(self.extra).try(:name) diff --git a/app/models/course_activity.rb b/app/models/course_activity.rb index 88351acfd..194e1183a 100644 --- a/app/models/course_activity.rb +++ b/app/models/course_activity.rb @@ -70,7 +70,9 @@ class CourseActivity < ActiveRecord::Base name = Redmine::Configuration['course_message_lead_subject'] content = Redmine::Configuration['course_message_lead_content'] # message的status状态为0为正常,为1表示创建课程时发送的message - Message.create(:subject => name, :content => content, :board_id => self.course.boards.first.id, :author_id => self.course.tea_id , :sticky => true, :status => true ) + message = Message.create(:subject => name, :content => content, :board_id => self.course.boards.first.id, :author_id => self.course.tea_id , :sticky => true, :status => true ) + # 更新的目的是为了排序,因为该条动态的时间可能与课程创建的动态创建时间一直 + message.course_acts.first.update_attribute(:updated_at, message.course_acts.first.updated_at + 1) end end end From f3b5f4e5f762b6c52bf698c2b12b33cbd546f0a6 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 20 Jan 2016 16:58:41 +0800 Subject: [PATCH 10/20] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B5=8F=E8=A7=88?= =?UTF-8?q?=E5=99=A8tab=E9=A1=B5=E9=80=9A=E8=BF=87=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E7=9A=84=E6=A8=A1=E5=9D=97=E5=B1=95=E7=A4=BA=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 66f60d020..ebc60c312 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -969,7 +969,17 @@ module ApplicationHelper first_page = FirstPage.find_by_page_type('project') if args.empty? title = @html_title || [] - title << @project.name if @project + if @project + title << @project.name + elsif @course + title << @course.name + elsif @organization + title << @organization.name + elsif @user + title << @user.login + else + title << User.current.login + end if first_page.nil? || first_page.web_title.nil? title << Setting.app_title unless Setting.app_title == title.last else From 01016c67a92b06abf6d635507b9b73f2b56a50cd Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 20 Jan 2016 18:28:27 +0800 Subject: [PATCH 11/20] =?UTF-8?q?issue=E5=B1=9E=E6=80=A7=E5=B1=80=E9=83=A8?= =?UTF-8?q?=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_project_issue.html.erb | 2 + .../users/_project_issue_detail.html.erb | 134 ++++++++++++++++++ public/stylesheets/project.css | 6 +- public/stylesheets/public.css | 4 + 4 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 app/views/users/_project_issue_detail.html.erb diff --git a/app/views/users/_project_issue.html.erb b/app/views/users/_project_issue.html.erb index 6f1fc8b7a..4c89110ad 100644 --- a/app/views/users/_project_issue.html.erb +++ b/app/views/users/_project_issue.html.erb @@ -57,6 +57,8 @@ <% end %> + <%# 局部刷新:修改xissue属性 %> + <%= render :partial => 'users/project_issue_detail', :locals => {:activity => activity} %>
    diff --git a/app/views/users/_project_issue_detail.html.erb b/app/views/users/_project_issue_detail.html.erb new file mode 100644 index 000000000..0c0ac2f1d --- /dev/null +++ b/app/views/users/_project_issue_detail.html.erb @@ -0,0 +1,134 @@ + +
    +
    +
      +
    • +

       状态  : 

      +

      新增

      + +
    • +
      +
    • +

       指派  : 

      + + +
    • +
      +
    +
      +
    • +

       优先级  : 

      + 立刻 + +
    • +
      +
    • +

       完成度  : 

      + 0% + +
    • +
      +
    +
      +
    • +

       开始  : 

      +

      2015-12-11

      +
    • +
      +
    • +

       周期  : 

      + 0.00 小时
    • +
      +
    + + +
    \ No newline at end of file diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index 46364eee0..cf23eb963 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -1163,4 +1163,8 @@ a.uploadIcon {background:url(images/resource_icon_list.png) 8px -60px no-repeat; .mb10 {margin-bottom: 10px} .mb15 {margin-bottom: 15px} div.disable_link {background-color: #c1c1c1 !important;} -.reUploadDetail{border:1px solid #dddddd; float:left; resize:none; width:400px; height:80px; overflow-y:auto;outline: none;} \ No newline at end of file +.reUploadDetail{border:1px solid #dddddd; float:left; resize:none; width:400px; height:80px; overflow-y:auto;outline: none;} + +/*问题跟踪局部修改属性*/ +.proInfoBox2{ border:1px solid #dddddd; height:45px; padding:10px 0; background-color:#f1f1f1;} +.proInfoBox2 ul li{ height:24px; position:relative;} \ No newline at end of file diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index 2126e36d8..baa3f6fcf 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -140,6 +140,7 @@ h4{ font-size:14px; color:#3b3b3b;} .w50 {width:50px;} .w60{ width:60px;} .w70{ width:70px;} +.w80{ width:80px;} .w90{ width:90px;} .w100{width: 100px;} .w210{ width:210px;} @@ -323,6 +324,9 @@ a:hover.bgreen_n_btn{background:#08a384;} .pic_text02{display:block; background:url(../images/new_project/public_icon.png) 0px -642px no-repeat; width:20px; height:19px;} .pic_edit{display:block; background:url(../images/new_project/public_icon.png) 0px -32px no-repeat; width:20px; height:15px;} .pic_edit:hover{display:block; background:url(../images/new_project/public_icon.png) -32px -32px no-repeat; width:20px; height:15px;} +.pic_edit2{display:inline-block; background:url(../images/public_icon.png) 0px -32px no-repeat; width:20px; height:15px; vertical-align:middle; display:none;} +.pic_edit2:hover{display:inline-block; background:url(../images/public_icon.png) -32px -32px no-repeat; width:20px; height:15px;} + From c7522067e6e1f5b4d5779d19d0c9f47d57f9576f Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 20 Jan 2016 18:37:39 +0800 Subject: [PATCH 12/20] =?UTF-8?q?=E4=BF=AE=E6=94=B9base=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/courses/_recommendation.html.erb | 2 +- app/views/layouts/base_courses.html.erb | 2 +- app/views/layouts/base_projects.html.erb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/courses/_recommendation.html.erb b/app/views/courses/_recommendation.html.erb index bd44afad2..455ced056 100644 --- a/app/views/courses/_recommendation.html.erb +++ b/app/views/courses/_recommendation.html.erb @@ -1,6 +1,6 @@ <% unless excellent_course_recommend(course).count == 0 %>
      -

      <%= l(:label_homework_recommendation) %>

      +

      <%= l(:label_homework_recommendation) %>:

      <% excellent_course_recommend(course).each do |e_course| %>
    • <%= image_tag(url_to_avatar(e_course), :width => "40", :height => "40", :class => "fl mr10 rankPortrait", :alt => "logo") %>
      diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb index 12331b088..5f53e5203 100644 --- a/app/views/layouts/base_courses.html.erb +++ b/app/views/layouts/base_courses.html.erb @@ -199,7 +199,7 @@
      -

      <%= l(:label_tag)%>:

      +

      <%= l(:label_tag)%>:

      <%= render :partial => 'tags/new_tag', :locals => {:obj => @course, :object_flag => "9"} %>
      diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 880c6cc1c..657873f8b 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -150,7 +150,7 @@
      -

      <%= l(:label_tag)%>:

      +

      <%= l(:label_tag)%>:

      <%= render :partial => 'tags/project_tag', :locals => {:obj => @project,:object_flag => "2"}%> From 7de48f143e71abb49ea3f9d077b9ee3d83e92649 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 21 Jan 2016 10:38:07 +0800 Subject: [PATCH 13/20] =?UTF-8?q?issue=E7=8A=B6=E6=80=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 5 +++++ config/routes.rb | 1 + 2 files changed, 6 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 449d8b9de..4f404eb93 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -93,6 +93,11 @@ class UsersController < ApplicationController end end + # 更新issue状态 + def user_act_issue_assign_to + + end + # 用户消息 # 说明: homework 发布作业;message:讨论区; news:新闻; poll:问卷;works_reviewers:作品评阅;works_reply:作品回复,exercise:课程测验 # issue:问题;journal:缺陷状态更新; forum:公共贴吧: user_feedback: 用户留言; new_reply:新闻回复(comment) diff --git a/config/routes.rb b/config/routes.rb index ccbe67004..f55c69403 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -523,6 +523,7 @@ RedmineApp::Application.routes.draw do match 'file_score_index', :to => 'projects#file_score_index', :via => [:get, :post] match 'code_submit_score_index', :to => 'projects#code_submit_score_index', :via => [:get, :post] match 'projects_topic_score_index', :to => 'projects#projects_topic_score_index', :via => [:get, :post] + match 'user_act_issue_assign_to', :to => 'users#user_act_issue_assign_to', :via => [:get, :post] get 'edit_brief_introduction' get "user_resource" get "resource_search" From e2fc88e3d1d4d0b93fbc9a3d837ee67e647bdd2e Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 21 Jan 2016 16:14:39 +0800 Subject: [PATCH 14/20] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E8=AE=A8=E8=AE=BA?= =?UTF-8?q?=E5=8C=BA=E6=A0=B7=E5=BC=8F=E6=B7=B7=E4=B9=B1=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_course_message.html.erb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/views/users/_course_message.html.erb b/app/views/users/_course_message.html.erb index abfbba993..dbc9c3041 100644 --- a/app/views/users/_course_message.html.erb +++ b/app/views/users/_course_message.html.erb @@ -35,11 +35,11 @@ 更新时间:<%= format_time(CourseActivity.where("course_act_type='#{activity.class}' and course_act_id =#{activity.id}").first.updated_at) %>
      - <% if activity.parent_id.nil? %> + <% if activity.parent_id.nil? %> <% content = activity.content%> - <% else %> + <% else %> <% content = activity.parent.content%> - <% end %> + <% end %> <%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>user_activity_id, :content=>content} %> <% if activity.status == 1 %> <%= activity.created_on.year %> @@ -49,7 +49,6 @@ <%= activity.created_on.day %> <% end %> -
      From 448a412abf0c03bd14a205030c847e54ea36467c Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 21 Jan 2016 17:29:46 +0800 Subject: [PATCH 15/20] =?UTF-8?q?issue=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=9C=A8=20user=E5=8A=A8=E6=80=81=E3=80=81project=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E4=B8=AD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../users/_project_issue_detail.html.erb | 98 +++++++------------ public/stylesheets/new_user.css | 11 +++ 2 files changed, 49 insertions(+), 60 deletions(-) diff --git a/app/views/users/_project_issue_detail.html.erb b/app/views/users/_project_issue_detail.html.erb index 0c0ac2f1d..f6d66a371 100644 --- a/app/views/users/_project_issue_detail.html.erb +++ b/app/views/users/_project_issue_detail.html.erb @@ -36,98 +36,76 @@
      •  状态  : 

        -

        新增

        - +

        <%= activity.status.name %>

        + <%= select( :issue,:status, [["新增",1],["正在解决",2],["已解决",3],["反馈",4],["关闭",5],["拒绝",6]].unshift(["状态",0]), + { :include_blank => false,:selected=>@status_id ? @status_id : 0 + }, + {:onchange=>"remote_function();",:id=>"status_id",:name=>"status_id",:class=>"w70 undis issueEdit"} + ) + %>
      •  指派  : 

        - - + + <%= link_to activity.try(:assigned_to), user_path(activity.assigned_to_id), :class => "linkBlue hidden", :style => "max-width:50px; display:inline-block;" %> + + <%= select( :issue, :user_id, principals_options_for_isuue_list(activity.project), + { :include_blank => false,:selected=>@assign_to_id ? @assign_to_id : 0 + }, + {:onchange=>"remote_function();",:id=>"assigned_to_id",:name=>"assigned_to_id",:class=>"w70 undis issueEdit"} + ) + %>
      •  优先级  : 

        - 立刻 - + <%= activity.priority.name %> + <%= select( :issue,:prior, [["低",1],["正常",2],["高",3],["紧急",4],["立刻",5]].unshift(["优先级",0]), + { :include_blank => false,:selected=>@priority_id ? @priority_id : 0 + }, + {:onchange=>"remote_function();",:id=>"priority_id",:name=>"priority_id",:class=>"w70 undis issueEdit"} + ) + %>
      •  完成度  : 

        - 0% - + <%= activity.done_ratio %>% + <%= select( :issue,:done_ratio, ((0..10).to_a.collect { |r| ["#{r*10} %", r*10] }), + { :include_blank => false,:selected=>@priority_id ? @priority_id : 0 + }, + {:onchange=>"remote_function();",:id=>"priority_id",:name=>"priority_id",:class=>"w70 undis issueEdit"} + ) + %> + <%#= select :done_ratio, ((0..10).to_a.collect { |r| ["#{r*10} %", r*10] }), + {:required => @issue.required_attribute?('done_ratio'), :no_label => true}, + :onchange => "PrecentChange(this.value)", + :class => "w150" %>
      •  开始  : 

        -

        2015-12-11

        +

        <%= format_date(activity.start_date) %>

      •  周期  : 

        - 0.00 小时
      • + <%= l_hours(activity.estimated_hours) %>
      •  计划完成  : 

        - --
      • + <%= format_date(activity.due_date)? format_date(activity.due_date) : "--" %>
      •  目标版本  : 

        -
      • + <%= (activity.fixed_version ? link_to_version(activity.fixed_version) : "--") %>
      diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index b1f950960..26bf53c62 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -1422,3 +1422,14 @@ span.at a{color:#269ac9;text-decoration: none;} .orgSendSearch {border:1px solid #dddddd; outline:none; width:262px; height:22px; padding-left:10px; float:left;} .relatePWrap{max-height: 210px;overflow:hidden;} + +/*20160115问题跟踪*/ +.proInfoBox2{ border:1px solid #dddddd; height:45px; padding:10px 0; background-color:#f1f1f1;} +.proInfoBox2 ul li{ height:24px; position:relative;} +.pic_edit2{display:inline-block; background:url(../images/public_icon.png) 0px -32px no-repeat; width:20px; height:15px; vertical-align:middle; display:none;} +.pic_edit2:hover{display:inline-block; background:url(../images/public_icon.png) -32px -32px no-repeat; width:20px; height:15px;} +.w70{ width:70px;} +.w80{ width:80px;} +.label03{ width:70px; text-align:right; display:block; float:left;} +.pro_info_p{color:#0781b4 !important; float:left; width:80px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; } +.proInfoP{color:#000000 !important; float:left; width:80px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; } \ No newline at end of file From 42cc8bc69e3d3013d61b5acd2654a6fb2a75d81a Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 22 Jan 2016 09:30:52 +0800 Subject: [PATCH 16/20] =?UTF-8?q?issue=E5=B1=9E=E6=80=A7=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_project_issue_detail.html.erb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/views/users/_project_issue_detail.html.erb b/app/views/users/_project_issue_detail.html.erb index f6d66a371..34405e5db 100644 --- a/app/views/users/_project_issue_detail.html.erb +++ b/app/views/users/_project_issue_detail.html.erb @@ -30,17 +30,20 @@ stopPropagation(e); }); }); + function remote_function(id) { + $(id).submit(); + }
        + <%= form_tag({:controller => 'issues', :action => 'update', :project_id => activity.project},:remote=>'true', :method => :post, :id=>"issue_query_form_#{activity.id}", :class => 'query_form') do %>
      •  状态  : 

        <%= activity.status.name %>

        <%= select( :issue,:status, [["新增",1],["正在解决",2],["已解决",3],["反馈",4],["关闭",5],["拒绝",6]].unshift(["状态",0]), - { :include_blank => false,:selected=>@status_id ? @status_id : 0 - }, - {:onchange=>"remote_function();",:id=>"status_id",:name=>"status_id",:class=>"w70 undis issueEdit"} + {:include_blank => false, :selected => @status_id ? @status_id : 0 }, + {:onchange=>"remote_function('#issue_query_form_#{activity.id}');",:id=>"status_id",:name=>"status_id",:class=>"w70 undis issueEdit"} ) %>
      • @@ -53,7 +56,7 @@ <%= select( :issue, :user_id, principals_options_for_isuue_list(activity.project), { :include_blank => false,:selected=>@assign_to_id ? @assign_to_id : 0 }, - {:onchange=>"remote_function();",:id=>"assigned_to_id",:name=>"assigned_to_id",:class=>"w70 undis issueEdit"} + {:onchange=>"remote_function();",:id=>"assigned_to_id", :name => "assigned_to_id",:class=>"w70 undis issueEdit"} ) %> @@ -75,7 +78,7 @@

         完成度  : 

        <%= activity.done_ratio %>% <%= select( :issue,:done_ratio, ((0..10).to_a.collect { |r| ["#{r*10} %", r*10] }), - { :include_blank => false,:selected=>@priority_id ? @priority_id : 0 + { :include_blank => false, :selected => @priority_id ? @priority_id : 0 }, {:onchange=>"remote_function();",:id=>"priority_id",:name=>"priority_id",:class=>"w70 undis issueEdit"} ) @@ -85,6 +88,7 @@ :onchange => "PrecentChange(this.value)", :class => "w150" %> + <% end %>
        From 8ef3018adc3566a7a89937d38b93b6c31a214944 Mon Sep 17 00:00:00 2001 From: ouyangxuhua Date: Fri, 22 Jan 2016 09:41:05 +0800 Subject: [PATCH 17/20] =?UTF-8?q?issue=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E4=BD=BF=E7=94=A8update,=E6=96=B9=E5=BC=8F=E6=98=AFput?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_project_issue_detail.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/users/_project_issue_detail.html.erb b/app/views/users/_project_issue_detail.html.erb index 34405e5db..b984c54fb 100644 --- a/app/views/users/_project_issue_detail.html.erb +++ b/app/views/users/_project_issue_detail.html.erb @@ -37,7 +37,7 @@
          - <%= form_tag({:controller => 'issues', :action => 'update', :project_id => activity.project},:remote=>'true', :method => :post, :id=>"issue_query_form_#{activity.id}", :class => 'query_form') do %> + <%= form_tag({:controller => 'issues', :action => 'update', :project_id => activity.project},:remote=>'true', :method => :put, :id=>"issue_query_form_#{activity.id}", :class => 'query_form') do %>
        •  状态  : 

          <%= activity.status.name %>

          From edd198e91f4babc0e4ab004a71c8f63240adbf22 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 22 Jan 2016 14:21:17 +0800 Subject: [PATCH 18/20] =?UTF-8?q?issue=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/issues_controller.rb | 42 +++++++++++++----- app/helpers/users_helper.rb | 5 +++ app/views/issues/add_journal.js.erb | 2 + app/views/users/_project_issue.html.erb | 8 ++-- .../users/_project_issue_detail.html.erb | 43 +++++++++---------- 5 files changed, 65 insertions(+), 35 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index af8990f37..72dd0a741 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -81,6 +81,7 @@ class IssuesController < ApplicationController @priority_id = params[:priority_id] @status_id = params[:status_id] @subject = params[:subject] + @done_ratio = parmas[:done_ratio] @issue_count = @query.issue_count @issue_pages = Paginator.new @issue_count, @limit, params['page'] params[:page] = (params[:page] || 1).to_i + 1 #页码需要加1 @@ -220,19 +221,27 @@ class IssuesController < ApplicationController end def update - return unless update_issue_from_params - @issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads])) - saved = false - begin - @saved = @issue.save_issue_with_child_records(params, @time_entry) - rescue ActiveRecord::StaleObjectError - @conflict = true - if params[:last_journal_id] - @conflict_journals = @issue.journals_after(params[:last_journal_id]).all - @conflict_journals.reject!(&:private_notes?) unless User.current.allowed_to?(:view_private_notes, @issue.project) + if params[:issue_detail] + issue = Issue.find(params[:issue_id]) + issue = update_user_issue_detail(issue, params) + @saved = update_user_issue_detail(issue, params) + return + else + return unless update_issue_from_params + @issue.save_attachments(params[:attachments] || (params[:issue] && params[:issue][:uploads])) + saved = false + begin + @saved = @issue.save_issue_with_child_records(params, @time_entry) + rescue ActiveRecord::StaleObjectError + @conflict = true + if params[:last_journal_id] + @conflict_journals = @issue.journals_after(params[:last_journal_id]).all + @conflict_journals.reject!(&:private_notes?) unless User.current.allowed_to?(:view_private_notes, @issue.project) + end end end + if @saved #修改界面增加跟踪者 watcherlist = @issue.watcher_users @@ -278,6 +287,19 @@ class IssuesController < ApplicationController end end + def update_user_issue_detail(issue, params) + case params[:type] + when "status" + issue.update_attribute(:status_id, params[:status_id]) + when "assigned" + issue.update_attribute(:assigned_to_id, params[:assigned_to_id]) + when "ratio" + issue.update_attribute(:done_ratio, params[:done_ratio]) + when "prior" + issue.update_attribute(:priority_id, params[:priority_id]) + end + end + # Updates the issue form when changing the project, status or tracker # on issue creation/update def update_form diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index bfc01a102..43ef7cefc 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -85,6 +85,11 @@ module UsersHelper end end + def link_to_user_version(version, options = {}) + return '' unless version && version.is_a?(Version) + link_to_if version.visible?, format_version_name(version), { :controller => 'versions', :action => 'show', :id => version }, :class => " f16 fb c_dblue " + end + # 统计未读消息数 def unviewed_message(user) course_count = CourseMessage.where("user_id =? and viewed =?", user, 0).count diff --git a/app/views/issues/add_journal.js.erb b/app/views/issues/add_journal.js.erb index eca7685cb..e6a84da50 100644 --- a/app/views/issues/add_journal.js.erb +++ b/app/views/issues/add_journal.js.erb @@ -1,6 +1,7 @@ <% if @issue_id %> //issue详情中回复 $("#reply_div_<%= @issue_id %>").html("<%= escape_javascript(render :partial => 'issues/issue_replies', :locals => {:issue => Issue.find( @issue_id),:replies_all_i=>0}) %>"); $("#div_issue_attachment_<%=@issue.id %>").html("<%= escape_javascript(render :partial => 'issues/issue_attachments', :locals => {:issue => Issue.find( @issue_id)}) %>"); +// $("#div_user_issue_detail_<%#=@issue.id %>").html("<%#= escape_javascript(render :partial => 'users/project_issue_detail', :locals => {:issue => Issue.find( @issue_id), :activity => Issue.find( @issue_id)}) %>"); $("#issue_edit").replaceWith('<%= escape_javascript(render :partial => 'issues/edit') %>') sd_create_editor_from_data(<%= @issue.id%>, null, "100%"); issue_desc_editor = KindEditor.create('#issue_description', @@ -17,6 +18,7 @@ "uploadJson":"/kindeditor/upload", "fileManagerJson":"/kindeditor/filemanager"}); // $("#issue_test_<%#= @issue.id %>").html("<%#= escape_javascript(render :partial => 'issues/edit', :locals => {:issue => Issue.find( @issue_id)}) %>"); + $(".homepagePostReplyBannerCount").html('回复(<%= Issue.find( @issue_id).journals.count %>)') sd_create_editor_from_data(<%= @issue.id %>, null, "100%"); <%else%> diff --git a/app/views/users/_project_issue.html.erb b/app/views/users/_project_issue.html.erb index 9f4e396de..f0dc4f19e 100644 --- a/app/views/users/_project_issue.html.erb +++ b/app/views/users/_project_issue.html.erb @@ -52,7 +52,9 @@
        <%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>user_activity_id, :content=>activity.description} %> <%# 局部刷新:修改xissue属性 %> - <%= render :partial => 'users/project_issue_detail', :locals => {:activity => activity} %> +
        + <%= render :partial => 'users/project_issue_detail', :locals => {:activity => activity} %> +
        @@ -136,8 +138,8 @@
        <%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(activity.author_id), :alt => "用户头像" %>
        -
        - <%= form_for('new_form',:url => add_journal_issue_path(activity.id),:method => "post", :remote => true) do |f|%> +
        + <%= form_for('new_form',:url => add_journal_issue_path(activity.id),:method => "post", :remote => true) do |f| %>
        diff --git a/app/views/users/_project_issue_detail.html.erb b/app/views/users/_project_issue_detail.html.erb index b984c54fb..e46761bd1 100644 --- a/app/views/users/_project_issue_detail.html.erb +++ b/app/views/users/_project_issue_detail.html.erb @@ -37,7 +37,12 @@
          - <%= form_tag({:controller => 'issues', :action => 'update', :project_id => activity.project},:remote=>'true', :method => :put, :id=>"issue_query_form_#{activity.id}", :class => 'query_form') do %> + <%#= labelled_fields_for :issue, @issue do |f| %> + <%#= f.select :status_id, ([["新增",1],["正在解决",2],["已解决",3],["反馈",4],["关闭",5],["拒绝",6]].unshift(["状态",0])), + {:include_blank => false, :selected => @status_id ? @status_id : 0 }, + {:onchange=>"remote_function('#issue_query_form_#{activity.id}');",:id=>"status_id",:name=>"status_id",:class=>"w70 undis issueEdit"} %> + <%# end %> + <%= form_tag({:controller => 'issues', :action => 'update', :issue_id => activity.id, :issue_detail => true, :type => "status"},:remote=>'true', :method => :put, :id=>"issue_query_form_#{activity.id}", :class => 'query_form') do %>
        •  状态  : 

          <%= activity.status.name %>

          @@ -47,48 +52,42 @@ ) %>
        • + <% end %>
          + <%= form_tag({:controller => 'issues', :action => 'update', :issue_id => activity.id, :issue_detail => true, :type => "assigned"},:remote=>'true', :method => :put, :id=>"issue_query_assign_form_#{activity.id}", :class => 'query_form') do %>
        •  指派  : 

          <%= link_to activity.try(:assigned_to), user_path(activity.assigned_to_id), :class => "linkBlue hidden", :style => "max-width:50px; display:inline-block;" %> <%= select( :issue, :user_id, principals_options_for_isuue_list(activity.project), - { :include_blank => false,:selected=>@assign_to_id ? @assign_to_id : 0 - }, - {:onchange=>"remote_function();",:id=>"assigned_to_id", :name => "assigned_to_id",:class=>"w70 undis issueEdit"} - ) - %> + { :include_blank => false,:selected => @assign_to_id ? @assign_to_id : 0}, + {:onchange=>"remote_function('#issue_query_assign_form_#{activity.id}');", :id =>"assigned_to_id", :name => "assigned_to_id",:class=>"w70 undis issueEdit"}) %>
        • + <% end %>
          + <%= form_tag({:controller => 'issues', :action => 'update', :issue_id => activity.id, :issue_detail => true, :type => "prior"},:remote=>'true', :method => :put, :id=>"issue_query_prior_form_#{activity.id}", :class => 'query_form') do %>
        •  优先级  : 

          <%= activity.priority.name %> <%= select( :issue,:prior, [["低",1],["正常",2],["高",3],["紧急",4],["立刻",5]].unshift(["优先级",0]), - { :include_blank => false,:selected=>@priority_id ? @priority_id : 0 - }, - {:onchange=>"remote_function();",:id=>"priority_id",:name=>"priority_id",:class=>"w70 undis issueEdit"} - ) - %> + {:include_blank => false,:selected=>@priority_id ? @priority_id : 0}, + {:onchange=>"remote_function('#issue_query_prior_form_#{activity.id}');",:id=>"priority_id",:name=>"priority_id",:class=>"w70 undis issueEdit"}) %>
        • + <% end %>
          + <%= form_tag({:controller => 'issues', :action => 'update', :issue_id => activity.id, :issue_detail => true, :type => "ratio"},:remote=>'true', :method => :put, :id=>"issue_query_done_form_#{activity.id}", :class => 'query_form') do %>
        •  完成度  : 

          <%= activity.done_ratio %>% <%= select( :issue,:done_ratio, ((0..10).to_a.collect { |r| ["#{r*10} %", r*10] }), - { :include_blank => false, :selected => @priority_id ? @priority_id : 0 - }, - {:onchange=>"remote_function();",:id=>"priority_id",:name=>"priority_id",:class=>"w70 undis issueEdit"} - ) - %> - <%#= select :done_ratio, ((0..10).to_a.collect { |r| ["#{r*10} %", r*10] }), - {:required => @issue.required_attribute?('done_ratio'), :no_label => true}, - :onchange => "PrecentChange(this.value)", - :class => "w150" %> -
        • + {:include_blank => false, :selected => @done_ratio ? @done_ratio : 0}, + {:onchange=>"remote_function('#issue_query_done_form_#{activity.id}');",:id=>"done_ratio",:name=>"done_ratio",:class=>"w70 undis issueEdit"}) %> <% end %> + +
          @@ -109,7 +108,7 @@
        •  目标版本  : 

          - <%= (activity.fixed_version ? link_to_version(activity.fixed_version) : "--") %>
        • + <%= (activity.fixed_version ? link_to_user_version(activity.fixed_version) : "--") %>
        From 2947ff89979ebd0b84d020d42815216639920060 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 22 Jan 2016 16:46:23 +0800 Subject: [PATCH 19/20] =?UTF-8?q?=E7=B2=BE=E5=93=81=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 2 +- ...22083400_add_excellent_option_to_course.rb | 6 +++++ ...22083507_define_excellent_option_course.rb | 19 ++++++++++++++++ db/schema.rb | 22 ++++++++----------- 4 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 db/migrate/20160122083400_add_excellent_option_to_course.rb create mode 100644 db/migrate/20160122083507_define_excellent_option_course.rb diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 22c7df263..51138f2ef 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -51,7 +51,7 @@ module ApplicationHelper # 判断课程是否为精品课程 def is_excellent_course course - course.is_excellent? ? true : false + (course.is_excellent? or course.excellent_option?) ? true : false end # 判断课程对成员是否可见 diff --git a/db/migrate/20160122083400_add_excellent_option_to_course.rb b/db/migrate/20160122083400_add_excellent_option_to_course.rb new file mode 100644 index 000000000..560153781 --- /dev/null +++ b/db/migrate/20160122083400_add_excellent_option_to_course.rb @@ -0,0 +1,6 @@ +class AddExcellentOptionToCourse < ActiveRecord::Migration + def change + add_column :courses, :excellent_option, :integer, :default => false + end +end + diff --git a/db/migrate/20160122083507_define_excellent_option_course.rb b/db/migrate/20160122083507_define_excellent_option_course.rb new file mode 100644 index 000000000..7b4a4ae4a --- /dev/null +++ b/db/migrate/20160122083507_define_excellent_option_course.rb @@ -0,0 +1,19 @@ +class DefineExcellentOptionCourse < ActiveRecord::Migration + def up + arr = [151,122,15,227,139,410,291,224,55,137,414,43,417,52,205,44,216,132,204,258,411,50, + 419,390,420,133,91,112,202,95,194,34,172,403,177,252,138,352,225,46,279,382,397,286,344,27,175, + 124,265,88,59,110,72,92,392,413,26,201,94,57,156,393,154,12,262] + for i in 0..arr.length-1 + begin + puts arr[i] + course = Course.find(arr[i]) + course.update_attribute(:excellent_option, true) + rescue + logger.error("Course is not found!") + end + end + end + + def down + end +end diff --git a/db/schema.rb b/db/schema.rb index be1fdb1a4..7e6291806 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 => 20160121070232) do +ActiveRecord::Schema.define(:version => 20160122083507) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -500,6 +500,7 @@ ActiveRecord::Schema.define(:version => 20160121070232) do t.integer "end_time" t.string "end_term" t.integer "is_excellent", :default => 0 + t.integer "excellent_option", :default => 0 end create_table "custom_fields", :force => true do |t| @@ -1084,14 +1085,14 @@ ActiveRecord::Schema.define(:version => 20160121070232) do create_table "news", :force => true do |t| t.integer "project_id" - t.string "title", :limit => 60, :default => "", :null => false - t.string "summary", :default => "" + t.string "title", :limit => 60, :default => "", :null => false + t.string "summary", :default => "" t.text "description" - t.integer "author_id", :default => 0, :null => false + t.integer "author_id", :default => 0, :null => false t.datetime "created_on" - t.integer "comments_count", :default => 0, :null => false + t.integer "comments_count", :default => 0, :null => false t.integer "course_id" - t.integer "sticky", :default => 0 + t.integer "sticky", :default => 0 t.integer "org_subfield_id" end @@ -1216,7 +1217,6 @@ ActiveRecord::Schema.define(:version => 20160121070232) do create_table "org_members", :force => true do |t| t.integer "user_id" t.integer "organization_id" - t.string "role" t.datetime "created_at", :null => false t.datetime "updated_at", :null => false end @@ -1265,8 +1265,8 @@ ActiveRecord::Schema.define(:version => 20160121070232) do t.integer "home_id" t.string "domain" t.boolean "is_public" - 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.boolean "allow_guest_download", :default => true end @@ -1714,10 +1714,6 @@ ActiveRecord::Schema.define(:version => 20160121070232) do t.string "extra" end - create_table "temp", :id => false, :force => true do |t| - t.integer "id", :default => 0, :null => false - end - create_table "time_entries", :force => true do |t| t.integer "project_id", :null => false t.integer "user_id", :null => false From faf1fcaf229416d89d54f1ceb5d02c8f4d8e8915 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 22 Jan 2016 17:27:21 +0800 Subject: [PATCH 20/20] =?UTF-8?q?issue=E5=9B=9E=E5=A4=8D=E5=B1=80=E9=83=A8?= =?UTF-8?q?=E5=88=B7=E6=96=B0=20=E9=99=84=E4=BB=B6=E6=B5=8F=E8=A7=88?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20=E6=98=B5=E7=A7=B0=E6=94=B9=E6=88=90?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 2 +- app/api/mobile/apis/users.rb | 2 +- app/views/account/login.html.erb | 6 +- app/views/admin/latest_login_users.html.erb | 2 +- app/views/attachments/_form.html.erb | 2 +- app/views/attachments/_form_project.html.erb | 2 +- app/views/courses/_searchmembers.html.erb | 2 +- app/views/courses/settings.html.erb | 2 +- .../homework_attach/_homeworks_list.html.erb | 2 +- app/views/issues/add_journal.js.erb | 4 +- app/views/organizations/setting.html.erb | 2 +- .../_student_work_attachment_form.html.erb | 2 +- app/views/users/_project_issue.html.erb | 90 +------------------ app/views/users/_project_issue_reply.html.erb | 89 ++++++++++++++++++ app/views/welcome/_search_project.html.erb | 2 +- config/locales/navigatiors/zh.yml | 2 +- config/locales/projects/zh.yml | 2 +- config/locales/zh.yml | 2 +- 18 files changed, 109 insertions(+), 108 deletions(-) create mode 100644 app/views/users/_project_issue_reply.html.erb diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 076e0b1c7..591a4e288 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -272,7 +272,7 @@ module Mobile params do requires :token,type:String requires :course_id,type:Integer,desc: '课程id' - optional :name,type:String,desc:'学生的姓名或者昵称或者学号可能包含的字符' + optional :name,type:String,desc:'学生的姓名或者登录名或者学号可能包含的字符' end get ":course_id/members" do cs = CoursesService.new diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb index 583a130d1..6ce3cacbb 100644 --- a/app/api/mobile/apis/users.rb +++ b/app/api/mobile/apis/users.rb @@ -82,7 +82,7 @@ module Mobile desc "用户搜索" params do requires :name, type: String, desc: '用户名关键字' - requires :search_by, type: String,desc: '搜索依据:0 昵称,1 用户名,2 邮箱,3 昵称和姓名' + requires :search_by, type: String,desc: '搜索依据:0 登录名,1 用户名,2 邮箱,3 登录名和姓名' optional :is_search_assitant,type:Integer,desc:'是否搜索注册用户来作为助教' optional :course_id,type:Integer,desc: '课程id,搜索注册用户不为该课程教师的其他用户' optional :user_id,type:Integer,desc:'用户id' diff --git a/app/views/account/login.html.erb b/app/views/account/login.html.erb index 3d07f69b2..f2b43c9a3 100644 --- a/app/views/account/login.html.erb +++ b/app/views/account/login.html.erb @@ -224,7 +224,7 @@ <%= back_url_hidden_field_tag %>
        <%= text_field_tag 'username', params[:username], :tabindex => '1' , - :class=>'loginSignBox',:placeholder=>'请输入邮箱地址或昵称', :onkeypress => "user_name_keypress(event);"%> + :class=>'loginSignBox',:placeholder=>'请输入邮箱地址或登录名', :onkeypress => "user_name_keypress(event);"%>
        <% if Setting.openid? %> @@ -283,8 +283,8 @@
        - <%= f.text_field :login, :size => 25,:placeholder=>"请输入用户昵称",:class=>'loginSignBox'%> - + <%= f.text_field :login, :size => 25,:placeholder=>"请输入用户登录名",:class=>'loginSignBox'%> +
        diff --git a/app/views/admin/latest_login_users.html.erb b/app/views/admin/latest_login_users.html.erb index 28ef8091e..a32bdd33a 100644 --- a/app/views/admin/latest_login_users.html.erb +++ b/app/views/admin/latest_login_users.html.erb @@ -38,7 +38,7 @@ 用户姓名 - 用户昵称 + 用户登录名 用户身份 diff --git a/app/views/attachments/_form.html.erb b/app/views/attachments/_form.html.erb index aac365a15..6786a06a7 100644 --- a/app/views/attachments/_form.html.erb +++ b/app/views/attachments/_form.html.erb @@ -31,7 +31,7 @@ <%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %> - <%= button_tag "文件浏览", :type=>"button", :onclick=>"$('#_file').click();",:onmouseover => 'this.focus()',:class => 'sub_btn' %> + <%= button_tag "上传附件", :type=>"button", :onclick=>"$('#_file').click();",:onmouseover => 'this.focus()',:class => 'sub_btn' %> <%= file_field_tag 'attachments[dummy][file]', :id => '_file', :class => 'file_selector', diff --git a/app/views/attachments/_form_project.html.erb b/app/views/attachments/_form_project.html.erb index a9cb068ad..f97bd8bea 100644 --- a/app/views/attachments/_form_project.html.erb +++ b/app/views/attachments/_form_project.html.erb @@ -109,7 +109,7 @@ <%#= button_tag "浏览", :type=>"button", :onclick=>"CompatibleSend();" %> - <%= button_tag "文件浏览", :type=>"button", :onclick=>"_file.click()", :class =>"sub_btn",:style => ie8? ? 'display:none' : '' %> + <%= button_tag "上传附件", :type=>"button", :onclick=>"_file.click()", :class =>"sub_btn",:style => ie8? ? 'display:none' : '' %> <%= file_field_tag 'attachments[dummy][file]', :id => '_file', :class => 'file_selector', diff --git a/app/views/courses/_searchmembers.html.erb b/app/views/courses/_searchmembers.html.erb index 1956f34c4..b864bfd8f 100644 --- a/app/views/courses/_searchmembers.html.erb +++ b/app/views/courses/_searchmembers.html.erb @@ -1,5 +1,5 @@ <%= form_tag( searchmembers_course_path(@course), method: 'get',:class => "f_l",:remote=>true,:id => "search_student") do %> - <%= text_field_tag 'name', params[:name], name: "name", :class => 'st_search_input', :placeholder => '输入学生昵称、姓名、学号进行搜索'%> + <%= text_field_tag 'name', params[:name], name: "name", :class => 'st_search_input', :placeholder => '输入学生登录名、姓名、学号进行搜索'%> <% if @group %> <%= hidden_field "search_group_id", params[:search_group_id],:value => "#{@group.id}", name: 'search_group_id' %> diff --git a/app/views/courses/settings.html.erb b/app/views/courses/settings.html.erb index f62951236..32db48def 100644 --- a/app/views/courses/settings.html.erb +++ b/app/views/courses/settings.html.erb @@ -109,7 +109,7 @@
        <%= form_tag(search_member_course_path,:id => "course_member_search_form", :method => :get, :class => "search_form_course",:remote => true) do %> - <%= text_field_tag 'name', params[:name], :placeholder => "昵称、学号、姓名搜索", :class => "search_text fl" %> + <%= text_field_tag 'name', params[:name], :placeholder => "登录名、学号、姓名搜索", :class => "search_text fl" %> <%= l(:label_search)%> diff --git a/app/views/homework_attach/_homeworks_list.html.erb b/app/views/homework_attach/_homeworks_list.html.erb index c82a729de..2696bf9ec 100644 --- a/app/views/homework_attach/_homeworks_list.html.erb +++ b/app/views/homework_attach/_homeworks_list.html.erb @@ -20,7 +20,7 @@ <%= link_to l(:label_export_excel), get_batch_homeworks_homework_attach_index_path(:bid_id => @bid.id,:format => 'xls'),:class=>'xls' if is_batch_homeworks%> <%= link_to l(:label_export_excel), get_not_batch_homework_homework_attach_index_path(:bid_id => @bid.id,:format => 'xls'),:class=>'xls' if not_batch_homework%> <%= link_to l(:label_export_excel), get_homeworks_homework_attach_index_path(:bid_id => @bid.id,:format => 'xls'),:class=>'xls' if is_all_homeworks%> - + 搜索 diff --git a/app/views/issues/add_journal.js.erb b/app/views/issues/add_journal.js.erb index e6a84da50..5708f6b3d 100644 --- a/app/views/issues/add_journal.js.erb +++ b/app/views/issues/add_journal.js.erb @@ -1,7 +1,6 @@ <% if @issue_id %> //issue详情中回复 $("#reply_div_<%= @issue_id %>").html("<%= escape_javascript(render :partial => 'issues/issue_replies', :locals => {:issue => Issue.find( @issue_id),:replies_all_i=>0}) %>"); $("#div_issue_attachment_<%=@issue.id %>").html("<%= escape_javascript(render :partial => 'issues/issue_attachments', :locals => {:issue => Issue.find( @issue_id)}) %>"); -// $("#div_user_issue_detail_<%#=@issue.id %>").html("<%#= escape_javascript(render :partial => 'users/project_issue_detail', :locals => {:issue => Issue.find( @issue_id), :activity => Issue.find( @issue_id)}) %>"); $("#issue_edit").replaceWith('<%= escape_javascript(render :partial => 'issues/edit') %>') sd_create_editor_from_data(<%= @issue.id%>, null, "100%"); issue_desc_editor = KindEditor.create('#issue_description', @@ -18,11 +17,10 @@ "uploadJson":"/kindeditor/upload", "fileManagerJson":"/kindeditor/filemanager"}); // $("#issue_test_<%#= @issue.id %>").html("<%#= escape_javascript(render :partial => 'issues/edit', :locals => {:issue => Issue.find( @issue_id)}) %>"); - $(".homepagePostReplyBannerCount").html('回复(<%= Issue.find( @issue_id).journals.count %>)') sd_create_editor_from_data(<%= @issue.id %>, null, "100%"); <%else%> - $("#user_activity_<%= @user_activity_id %>").replaceWith("<%= escape_javascript(render :partial => 'users/project_issue', :locals => {:activity => @issue,:user_activity_id =>@user_activity_id}) %>"); + $("#div_user_issue_reply_<%=@user_activity_id %>").replaceWith("<%= escape_javascript(render :partial => 'users/project_issue_reply', :locals => {:activity => @issue, :user_activity_id => @user_activity_id}) %>"); init_activity_KindEditor_data(<%= @user_activity_id %>,"","87%", 'UserActivity'); // sd_create_editor_from_data(<%#= @issue.id%>, null, "100%"); <%end %> diff --git a/app/views/organizations/setting.html.erb b/app/views/organizations/setting.html.erb index 436d571f5..21e611929 100644 --- a/app/views/organizations/setting.html.erb +++ b/app/views/organizations/setting.html.erb @@ -86,7 +86,7 @@

        添加成员

        <%= form_tag url_for(:controller => 'org_member',:action => 'create',:org=>@organization),:id=>'org_member_add_form',:remote=>true do |f|%> - + <%= javascript_tag "observeSearchfield('not_org_member_search', null, '#{ escape_javascript org_member_autocomplete_org_member_index_path(:org=>@organization, :format => 'js') }')" %>
        <%= find_user_not_in_current_org_by_name(@project) %> diff --git a/app/views/student_work/_student_work_attachment_form.html.erb b/app/views/student_work/_student_work_attachment_form.html.erb index d82aea7f9..21928492e 100644 --- a/app/views/student_work/_student_work_attachment_form.html.erb +++ b/app/views/student_work/_student_work_attachment_form.html.erb @@ -3,7 +3,7 @@
        - <%= button_tag "文件浏览", :type=>"button", :onclick=>"$('#_file#{work.id}').click();",:onmouseover => 'this.focus()',:class => 'sub_btn mb0' %> + <%= button_tag "上传附件", :type=>"button", :onclick=>"$('#_file#{work.id}').click();",:onmouseover => 'this.focus()',:class => 'sub_btn mb0' %> <%= file_field_tag 'attachments[dummy][file]', :id => "_file#{work.id}", :class => 'file_selector', diff --git a/app/views/users/_project_issue.html.erb b/app/views/users/_project_issue.html.erb index f0dc4f19e..618dc3185 100644 --- a/app/views/users/_project_issue.html.erb +++ b/app/views/users/_project_issue.html.erb @@ -65,93 +65,7 @@
        - <% count = activity.journals.count %> -
        -
        -
        回复 - <%= count>0 ? "(#{count})" : "" %> - - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> - -
        -
        <%#= format_date(activity.updated_on) %>
        - <% if count > 3 %> - - <% end %> -
        - - <% replies_all_i = 0 %> - <% if count > 0 %> -
        -
          - <% activity.journals.reorder("created_on desc").each do |reply| %> - - <% replies_all_i=replies_all_i + 1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(reply.user), :width => "33", :height => "33"), user_path(reply.user_id), :alt => "用户头像" %> -
          -
          -
          - <% if reply.try(:user).try(:realname) == ' ' %> - <%= link_to reply.try(:user), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to reply.try(:user).try(:realname), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(reply.created_on) %> - - <% if reply.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> - -
          -
          - <% if reply.details.any? %> - <% details_to_strings(reply.details).each do |string| %> -

          <%= string %>

          - <% end %> - <% end %> -

          <%= reply.notes.html_safe %>

          -
          -
          -
          -
        • - <% end %> -
        -
        - <% end %> - -
        -
        <%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(activity.author_id), :alt => "用户头像" %>
        -
        -
        - <%= form_for('new_form',:url => add_journal_issue_path(activity.id),:method => "post", :remote => true) do |f| %> - - -
        - -
        -

        - <% end%> -
        -
        -
        -
        -
        - +
        + <%= render :partial => 'users/project_issue_reply', :locals => {:activity => activity, :user_activity_id => user_activity_id} %>
        diff --git a/app/views/users/_project_issue_reply.html.erb b/app/views/users/_project_issue_reply.html.erb new file mode 100644 index 000000000..0a84ba9c4 --- /dev/null +++ b/app/views/users/_project_issue_reply.html.erb @@ -0,0 +1,89 @@ +<% count = activity.journals.count %> +
        +
        +
        回复 + <%= count>0 ? "(#{count})" : "" %> + + <% if activity.author == User.current %> + + <% else %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> + <% end %> + +
        +
        <%#= format_date(activity.updated_on) %>
        + <% if count > 3 %> + + <% end %> +
        + + <% replies_all_i = 0 %> + <% if count > 0 %> +
        +
          + <% activity.journals.reorder("created_on desc").each do |reply| %> + + <% replies_all_i=replies_all_i + 1 %> +
        • +
          + <%= link_to image_tag(url_to_avatar(reply.user), :width => "33", :height => "33"), user_path(reply.user_id), :alt => "用户头像" %> +
          +
          +
          + <% if reply.try(:user).try(:realname) == ' ' %> + <%= link_to reply.try(:user), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> + <% else %> + <%= link_to reply.try(:user).try(:realname), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> + <% end %> + <%= format_time(reply.created_on) %> + + <% if reply.user == User.current %> + + <% else %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> + <% end %> + +
          +
          + <% if reply.details.any? %> + <% details_to_strings(reply.details).each do |string| %> +

          <%= string %>

          + <% end %> + <% end %> +

          <%= reply.notes.html_safe %>

          +
          +
          +
          +
        • + <% end %> +
        +
        + <% end %> + +
        +
        <%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(activity.author_id), :alt => "用户头像" %>
        +
        +
        + <%= form_for('new_form',:url => add_journal_issue_path(activity.id, :user_activity_id => user_activity_id),:method => "post", :remote => true) do |f| %> + + +
        + +
        +

        + <% end%> +
        +
        +
        +
        +
        + +
        \ No newline at end of file diff --git a/app/views/welcome/_search_project.html.erb b/app/views/welcome/_search_project.html.erb index 6679f559d..fba855bde 100644 --- a/app/views/welcome/_search_project.html.erb +++ b/app/views/welcome/_search_project.html.erb @@ -91,7 +91,7 @@ form #search_by { if($("#search_type").val() == "users") { - $("#q").attr('placeholder','昵称/姓名/邮箱'); + $("#q").attr('placeholder','登录名/姓名/邮箱'); // $("#search_by").show(); } else diff --git a/config/locales/navigatiors/zh.yml b/config/locales/navigatiors/zh.yml index 97c6da61a..c0df616f3 100644 --- a/config/locales/navigatiors/zh.yml +++ b/config/locales/navigatiors/zh.yml @@ -63,7 +63,7 @@ zh: course: 课程 user: 用户 userinfo: - nickname: 昵称 + nickname: 登录名 showname: 姓名 email: 邮箱 diff --git a/config/locales/projects/zh.yml b/config/locales/projects/zh.yml index 765060675..8bf3f03be 100644 --- a/config/locales/projects/zh.yml +++ b/config/locales/projects/zh.yml @@ -369,7 +369,7 @@ zh: label_input_email: 请输入邮箱地址 label_invite_trustie_user: "邀请Trustie注册用户" - label_invite_trustie_user_tips: "支持姓名、邮箱、昵称搜索!" + label_invite_trustie_user_tips: "支持姓名、邮箱、登录名搜索!" label_user_role_null: 用户和角色不能留空! label_invite_project: 邀请您加入项目 label_mail_invite_success: 您已成功加入项目! diff --git a/config/locales/zh.yml b/config/locales/zh.yml index d5b249e8d..daa0c3a31 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -1855,7 +1855,7 @@ zh: excel_user_id: 学生id excel_user_name: 用户名 - excel_nickname: 昵称 + excel_nickname: 登录名 excel_student_id: 学号 excel_mail: 电子邮箱 excel_homework_name: 作品名