diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb
index 008a08f2f..73d1e357c 100644
--- a/app/api/mobile/apis/courses.rb
+++ b/app/api/mobile/apis/courses.rb
@@ -258,7 +258,7 @@ module Mobile
requires :course_id,type: Integer,desc: '课程id'
optional :name,type:String,desc:'课件名称可能包含的字符'
end
- get ":course_id/attachments" do
+ post ":course_id/attachments" do
cs = CoursesService.new
count = cs.course_attachments params
present :data, count, with: Mobile::Entities::Attachment
diff --git a/app/api/mobile/apis/users.rb b/app/api/mobile/apis/users.rb
index 147cbfda5..675ad33c5 100644
--- a/app/api/mobile/apis/users.rb
+++ b/app/api/mobile/apis/users.rb
@@ -94,6 +94,31 @@ module Mobile
present :status, 0
end
+ desc "用户留言"
+ params do
+ requires :token, type: String
+ requires :user_id, type: Integer,desc: '被留言的用户id'
+ end
+ get ':user_id/messages' do
+ us = UsersService.new
+ jours = us.get_all_messages params
+ present :data,jours,with:Mobile::Entities::Jours
+ present :status,0
+ end
+
+ desc "给用户留言或回复用户留言"
+ params do
+ requires :token, type: String
+ requires :user_id, type: Integer,desc: '被留言的用户id'
+ requires :content,type:String,desc:'留言内容'
+ optional :refer_user_id,type:Integer,desc:'被回复的用户id'
+ end
+ post ':user_id/leave_message' do
+ us = UsersService.new
+ jours = us.leave_messages params,current_user
+ present :status,0
+ end
+
end
end
end
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index d616daadc..be69b1777 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -342,10 +342,15 @@ class CoursesController < ApplicationController
def export_course_member_excel
@all_members = student_homework_score(0,0,0,"desc")
+ filename="#{@course.teacher.lastname.to_s + @course.teacher.firstname.to_s }_#{@course.name}_#{@course.time.to_s + @course.term}#{l(:excel_member_list)}";
+ # 如果是ie11 需要转码
+ if(/rv\:11\.0/.match(request.env["HTTP_USER_AGENT"]) != nil)
+ filename= URI::encode(filename)
+ end
respond_to do |format|
format.xls {
send_data(member_to_xls(@all_members,@course.course_groups), :type => "text/excel;charset=utf-8; header=present",
- :filename => "#{@course.teacher.lastname.to_s + @course.teacher.firstname.to_s }_#{@course.name}_#{@course.time.to_s + @course.term}#{l(:excel_member_list)}.xls")
+ :filename => "#{filename}.xls")
}
end
end
diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb
index 69e7105aa..aa2c9574b 100644
--- a/app/controllers/files_controller.rb
+++ b/app/controllers/files_controller.rb
@@ -23,7 +23,7 @@ class FilesController < ApplicationController
before_filter :auth_login1, :only => [:index]
before_filter :logged_user_by_apptoken,:only => [:index]
before_filter :find_project_by_project_id#, :except => [:getattachtype]
- before_filter :authorize, :except => [:getattachtype,:quote_resource_show,:search,:search_project,:quote_resource_show_project,:search_tag_attachment]
+ before_filter :authorize, :except => [:getattachtype,:quote_resource_show,:search,:searchone4reload,:search_project,:quote_resource_show_project,:search_tag_attachment]
helper :sort
include SortHelper
@@ -46,6 +46,13 @@ class FilesController < ApplicationController
@obj_attachments = paginateHelper @all_attachments,10
end
+ def searchone4reload
+ attachment = Attachment.find_by_id(params[:fileid]);
+ respond_to do |format|
+ format.html{render :layout => nil,:locals=>{:file=>attachment,:course=>@course}}
+ end
+ end
+
def search
sort = ""
@sort = ""
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index b6035ca51..8acca7f81 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -84,15 +84,10 @@ class IssuesController < ApplicationController
@issue_pages = Paginator.new @issue_count, @limit, params['page']
@offset ||= @issue_pages.offset
@issues = @query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version],
- :order => sort_clause,
- :offset => @offset,
- :limit => @limit)
+ :order => sort_clause,
+ :offset => @offset,
+ :limit => @limit)
@issue_count_by_group = @query.issue_count_by_group
-
-
-
-
-
respond_to do |format|
format.js
format.html { render :template => 'issues/index', :layout => @project_base_tag }#by young
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 06a157c0f..c79d0862f 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -31,7 +31,7 @@ class ProjectsController < ApplicationController
before_filter :authorize, :only => [:show, :settings, :edit, :sort_project_members, :update, :modules, :close, :reopen,:view_homework_attaches,:course]
before_filter :authorize_global, :only => [:new, :create,:view_homework_attaches]
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy, :calendar]
- before_filter :file, :statistics, :watcherlist
+ before_filter :file, :statistics #:watcherlist
# 除非项目内人员,不可查看成员, TODO: 完了写报表里去
before_filter :memberAccess, only: :member
@@ -417,10 +417,14 @@ class ProjectsController < ApplicationController
@members = @project.member_principals.includes(:roles, :principal).all.sort
end
else
- roles = Role.find_all_givable
- @subPage_title = l :label_member_list
- @members = @project.member_principals.includes(:roles, :principal).joins("LEFT JOIN #{OptionNumber.table_name} ON #{OptionNumber.table_name}.user_id = #{Member.table_name}.user_id and #{OptionNumber.table_name}.score_type = 2 AND #{Member.table_name}.project_id = #{OptionNumber.table_name}.project_id").order("#{OptionNumber.table_name}.total_score DESC").all
- @applied_members = appied_project_members(@project, @members)
+ if !@project.is_public? && !User.current.member_of?(@project) && !User.current.admin?
+ render_403
+ else
+ roles = Role.find_all_givable
+ @subPage_title = l :label_member_list
+ @members = @project.member_principals.includes(:roles, :principal).joins("LEFT JOIN #{OptionNumber.table_name} ON #{OptionNumber.table_name}.user_id = #{Member.table_name}.user_id and #{OptionNumber.table_name}.score_type = 2 AND #{Member.table_name}.project_id = #{OptionNumber.table_name}.project_id").order("#{OptionNumber.table_name}.total_score DESC").all
+ @applied_members = appied_project_members(@project, @members)
+ end
end
@members = paginateHelper @members
render :layout => 'base_courses' if @project.project_type == 1
@@ -677,10 +681,12 @@ class ProjectsController < ApplicationController
end
def watcherlist
- if !@project.is_public? && !User.current.member_of?(@project) && !User.current.admin?
- render_403
- else
- @users -= watched.watcher_users if @watched
+ unless @project.nil?
+ if !@project.is_public? && !User.current.member_of?(@project) && !User.current.admin?
+ render_403
+ else
+ @users -= watched.watcher_users if @watched
+ end
end
end
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index b72a191db..aae150728 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -67,29 +67,33 @@ module IssuesHelper
s.html_safe
end
- #获取跟踪类型
- #REDO:时间紧需要优化,两个方法可以综合成一个
+ #获取跟踪类型及样式
+ #REDO:时间紧可以优化.
def get_issue_type(value)
+ issuetype = []
if value == "缺陷" || value == 1
- class_type = "red_btn_cir ml10"
+ issuetype << "red_btn_cir ml10"
+ issuetype << "缺陷"
elsif value == "功能" || value == 2
- class_type = "blue_btn_cir ml10"
+ issuetype << "blue_btn_cir ml10"
+ issuetype << "功能"
elsif value == "支持" || value == 3
- class_type = "green_btn_cir ml10"
+ issuetype << "green_btn_cir ml10"
+ issuetype << "支持"
+ elsif value == "任务" || value == 4
+ issuetype << "orange_btn_cir ml10"
+ issuetype << "任务"
else
- class_type = "orange_btn_cir ml10"
+ issuetype << "bgreen_btn_cir ml10"
+ issuetype << "周报"
end
end
- def get_issue_typevalue(value)
- if value == "缺陷" || value == 1
- assign = "缺陷"
- elsif value == "功能" || value == 2
- assign = "功能"
- elsif value == "支持" || value == 3
- assign = "支持"
+ def principals_options_for_isuue_list(project)
+ if User.current.member_of?(project)
+ project.members.order("lower(users.login)").map{|c| [c.name, c.user_id]}.unshift(["<< #{l(:label_me)} >>", User.current.id]).unshift(["指派给", 0])
else
- assign = "任务"
+ project.members.order("lower(users.login)").map{|c| [c.name, c.user_id]}.unshift(["指派给", 0])
end
end
diff --git a/app/services/users_service.rb b/app/services/users_service.rb
index afefc6ff1..6e566b519 100644
--- a/app/services/users_service.rb
+++ b/app/services/users_service.rb
@@ -4,6 +4,7 @@ class UsersService
include AvatarHelper
include CoursesHelper
include ApiHelper
+ include WordsHelper
#将用户注册的功能函数写这里
#参数约定
#成功返回注册后的User实例,失败直接抛异常
@@ -154,6 +155,25 @@ class UsersService
@user
end
+ # 获取某个用户的所有留言信息
+ def get_all_messages params
+ user = User.find(params[:user_id])
+ jours = user.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
+ jours.update_all(:is_readed => true, :status => false)
+ jours.each do |journal|
+ fetch_user_leaveWord_reply(journal).update_all(:is_readed => true, :status => false)
+ end
+ jours
+ end
+
+ # 给某个用户留言
+ def leave_messages params,current_user
+ user = User.find(params[:user_id])
+ user.add_jour(current_user, params[:content], params[:refer_user_id] ||= 0)
+ unless params[:refer_user_id].nil? || params[:refer_user_id] == 0 || params[:refer_user_id] == User.current.id
+ User.find(params[:refer_user_id]).add_jour(current_user, params[:content], params[:refer_user_id])
+ end
+ end
diff --git a/app/views/attachments/add_exist_file_to_courses.js.erb b/app/views/attachments/add_exist_file_to_courses.js.erb
index eec1e255a..c84a89184 100644
--- a/app/views/attachments/add_exist_file_to_courses.js.erb
+++ b/app/views/attachments/add_exist_file_to_courses.js.erb
@@ -4,4 +4,5 @@
$("#error_show").html("<%= @message.html_safe %>");
<% else %>
closeModal();
+ searchone4reload('<%=params[:file_id]%>');
<% end %>
diff --git a/app/views/files/_course_file.html.erb b/app/views/files/_course_file.html.erb
index 1769b1a45..ebccfcaf4 100644
--- a/app/views/files/_course_file.html.erb
+++ b/app/views/files/_course_file.html.erb
@@ -1,4 +1,15 @@
- <%= form_tag(projects_search_path, :method => :get, :id => "project_search_form") do %>
- <%= text_field_tag 'name', params[:name], :size => 20, :onkeyup => "regexName();", :style => "float:left" %>
- <%= hidden_field_tag 'project_type', params[:project_type] %>
- <%#= submit_tag l(:label_search), :class => "enterprise", :name => nil %>
-
- <%= l(:label_search)%>
-
-
-
- <% end %>
-
-