diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 263155f91..0940dbdf8 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -58,27 +58,26 @@ class IssuesController < ApplicationController include ApplicationHelper def index + # 为了性能所有用了两种模式,issue的@query查询所有的没有优势 + # 但是对过滤条件很有有时 if params[:set_filter] != "1" @project_base_tag = (params[:project_id] || @issue.project) ? 'base_projects':'base' - @issues_filter = Issue.where(:project_id => @project.id).order('updated_on desc') + if User.current.member_of?(@project) + @issues_filter = Issue.where(:project_id => @project.id).order('updated_on desc') + else + @issues_filter = Issue.where(:project_id => @project.id, :is_private => 0).order('updated_on desc') + end + open_and_close_num(@project) @issue_count = @issues_filter.count @limit = 10 @is_remote = true @issue_pages = Paginator.new @issue_count, @limit, params['page'] || 1 @offset ||= @issue_pages.offset @issues = paginateHelper @issues_filter, @limit - # if params[:set_filter] - # @set_filter = params[:set_filter] - # end - # @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 format.api {Issue.load_visible_relations(@issues) if include_in_api_response?('relations')} - # format.json { render :json => @issues.map { |issue| issue.to_json}} #:json => @issues.map { |issue| issue.to_json} - # format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } - # format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'issues.csv') } - # format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'issues.pdf') } format.xls {filename = "#{@project.name.to_s}_#{l(:label_issue_list_xls)}.xls" send_data(issue_list_xls(@issues_filter), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename)) } @@ -88,20 +87,8 @@ class IssuesController < ApplicationController sort_init(@query.sort_criteria.empty? ? [['id', 'desc']] : @query.sort_criteria) sort_update(@query.sortable_columns) @query.sort_criteria = sort_criteria.to_a - @project_base_tag = (params[:project_id] || @issue.project) ? 'base_projects':'base' - if @query.valid? - # case params[:format] - # when 'csv', 'pdf' - # @limit = 10#Setting.issues_export_limit.to_i - # when 'atom' - # @limit = 10#Setting.feeds_limit.to_i - # when 'xml', 'json' - # @offset, @limit = api_offset_and_limit({:limit => 10}) - # else - # @limit = 10#per_page_option - # end @tracker_id = params[:tracker_id] @assign_to_id = params[:assigned_to_id] @author_id = params[:author_id] @@ -111,9 +98,6 @@ class IssuesController < ApplicationController @fixed_version_id = params[:fixed_version_id] @issue_count = @query.issue_count @test = params[:test] - # @issue_pages = Paginator.new @issue_count, @limit, params['page'] - # params[:page] = (params[:page] || 1).to_i + 1 #页码需要加1 - # @offset ||= @issue_pages.offset @project_sort = 'issues.updated_on desc' if params[:test] != "0" case @test @@ -127,6 +111,7 @@ class IssuesController < ApplicationController @project_sort = 'issues.updated_on asc' end end + open_and_close_num(@project) @issues_filter_assign_count = @query.issues.select{|issue| issue.assigned_to_id == User.current.id }.count @issues_filter_author_count = @query.issues.select{|issue| issue.author_id == User.current.id }.count @issues_filter = @query.issues(:order => @project_sort) @@ -135,35 +120,17 @@ class IssuesController < ApplicationController @issue_pages = Paginator.new @issue_count, @limit, params['page'] || 1 @offset ||= @issue_pages.offset @issues = paginateHelper @issues_filter, @limit - # if params[:set_filter] - # @set_filter = params[:set_filter] - # end - # @issue_count_by_group = @query.issue_count_by_group - if params[:export_issue_hidden] == "1" - # index(:format=>'xls', :export_issue_hidden => 0) - params[:export_issue_hidden] = "0" - redirect_to project_issues_path(:project_id => @project, :format => 'xls') - - # respond_to do |format| - # format.xls {filename = "#{@project.name.to_s}_#{l(:label_issue_list_xls)}.xls" - # send_data(issue_list_xls(@issues_filter), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename)) - # return - # } - # return - # end - else - respond_to do |format| - format.js - format.html { render :template => 'issues/index', :layout => @project_base_tag }#by young - format.api {Issue.load_visible_relations(@issues) if include_in_api_response?('relations')} - # format.json { render :json => @issues.map { |issue| issue.to_json}} #:json => @issues.map { |issue| issue.to_json} - format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } - format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'issues.csv') } - format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'issues.pdf') } - format.xls {filename = "#{@project.name.to_s}_#{l(:label_issue_list_xls)}.xls" - send_data(issue_list_xls(@issues_filter), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename)) - } - end + respond_to do |format| + format.js + format.html { render :template => 'issues/index', :layout => @project_base_tag }#by young + format.api {Issue.load_visible_relations(@issues) if include_in_api_response?('relations')} + # format.json { render :json => @issues.map { |issue| issue.to_json}} #:json => @issues.map { |issue| issue.to_json} + format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } + format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'issues.csv') } + format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'issues.pdf') } + format.xls {filename = "#{@project.name.to_s}_#{l(:label_issue_list_xls)}.xls" + send_data(issue_list_xls(@issues_filter), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename)) + } end else respond_to do |format| @@ -174,12 +141,21 @@ class IssuesController < ApplicationController end end end - - rescue ActiveRecord::RecordNotFound render_404 end + # 获取issue的开启统计数 + def open_and_close_num project + if User.current.member_of?(project) + @issue_open_count = Issue.where("project_id=#{project.id} and status_id in (1,2,3,4,6)").count + @issue_close_count = Issue.where(:project_id => project.id, :status_id => 5 ).count + else + @issue_open_count = Issue.where("project_id=#{project.id} and status_id in (1,2,3,4,6) and is_private = 0").count + @issue_close_count = Issue.where(:project_id => project.id, :status_id => 5, :is_private => 0).count + end + end + def show # 打开编辑内容 @is_edit = true unless params[:edit].nil? diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index a0d981b22..27b6ed272 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -106,13 +106,13 @@ class StudentWorkController < ApplicationController rescue Timeout::Error tEndtime = Time.now tUsedtime = (tEndtime.to_i-tStarttime.to_i)*1000+(tEndtime.usec - tStarttime.usec)/1000 - logger.debug "program_test_ex user wait time = #{tUsedtime} 毫秒" + logger.info "program_test_ex user wait time = #{tUsedtime} 毫秒" #status 0:答案正确 -5program_test_ex 函数出错 -4judge代码出错 -3http超时 -2:编译错误 -1:答案错误 2:程序运行超时 resultObj[:status] = -3 CodeTests.create(:homework_id=>@homework.id,:language=>@homework.homework_detail_programing.language,:status=>-3,:wait_time=>tUsedtime,:student_work_id=>student_work.id) rescue => e #-4 judge代码 出错 - logger.debug "program_test_error #{e}" + logger.info "program_test_error #{e}" resultObj[:status] = -4 tmpstatus = -4 CodeTests.create(:homework_id=>@homework.id,:language=>@homework.homework_detail_programing.language,:status=>tmpstatus,:time_used=>0,:wait_time=>0,:student_work_id=>student_work.id) @@ -217,7 +217,7 @@ class StudentWorkController < ApplicationController end rescue #-5 program_test_ex 函数出错 - logger.debug "program_test_error 2" + logger.info "program_test_error 2" resultObj[:status] = -5 tmpstatus = -5 CodeTests.create(:homework_id=>@homework.id,:language=>@homework.homework_detail_programing.language,:status=>tmpstatus,:time_used=>0,:wait_time=>0,:student_work_id=>student_work.id) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 87dc127a0..c13039696 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -3200,6 +3200,7 @@ class UsersController < ApplicationController ori = Attachment.find_by_id(send_id) # 如果该附件已经存课程中,则只更新附件创建时间 mul_container.attachments.each do |att| + @exist = false if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from att.created_on = Time.now att.save diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 0ab09802f..7aec64718 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -60,9 +60,9 @@ module IssuesHelper def states_done_ratio(issue) done_ratio = issue.done_ratio if done_ratio == 100 - "#{l(:label_done_ratio_endding)}".html_safe + "#{l(:label_done_ratio_endding)}".html_safe else - "#{l(:label_done_ratio_doing)}".html_safe + "#{l(:label_done_ratio_doing)}".html_safe end end diff --git a/app/views/calendars/show.html.erb b/app/views/calendars/show.html.erb index 26ad8501c..05ce3bcac 100644 --- a/app/views/calendars/show.html.erb +++ b/app/views/calendars/show.html.erb @@ -5,12 +5,6 @@ <%= form_tag({:controller => 'calendars', :action => 'show', :project_id => @project}, :method => :get, :id => 'query_form') do %> <%= hidden_field_tag 'set_filter', '1' %> -
"> - <%= l(:label_filter_plural) %> -
"> - <%= render :partial => 'queries/filters', :locals => {:query => @query} %> -
-

<%= link_to_previous_month(@year, @month) %> | <%= link_to_next_month(@year, @month) %>

diff --git a/app/views/common/_calendar.html.erb b/app/views/common/_calendar.html.erb index b2aad3812..2f4c61a77 100644 --- a/app/views/common/_calendar.html.erb +++ b/app/views/common/_calendar.html.erb @@ -24,10 +24,9 @@ <%= render_issue_tooltip i %> <% else %> - - <%= h("#{i.project} -") unless @project && @project == i.project %> - <%= link_to_version i%> - + + <%= h("#{i.project} -") unless @project && @project == i.project %> + <%= link_to_version i%> <% end %> <% end %> diff --git a/app/views/courses/_courses_jours.html.erb b/app/views/courses/_courses_jours.html.erb index 0aefb0d18..05691db9e 100644 --- a/app/views/courses/_courses_jours.html.erb +++ b/app/views/courses/_courses_jours.html.erb @@ -7,9 +7,9 @@ span.ke-icon-emoticons:hover{background-position:-79px -671px;width:50px;height:26px;} div.ke-toolbar .ke-outline{border:none;} - div.respond-form .reply_btn{margin-left:565px;margin-top:5px;} + div.respond-form .reply_btn{margin-left:625px;margin-top:5px;} div.recall_con{width:570px;} - div.recall_con .reply_btn{margin-left:525px;margin-top:5px;} + div.recall_con .reply_btn{margin-left:585px;margin-top:5px;} /*.ke-container{height: 80px !important;}*/ <%= content_for(:header_tags) do %> @@ -19,7 +19,7 @@ -
+

<%= l(:label_leave_message) %>

<% if !User.current.logged?%> diff --git a/app/views/courses/_history.html.erb b/app/views/courses/_history.html.erb index 35e0726a8..eb7ecff7a 100644 --- a/app/views/courses/_history.html.erb +++ b/app/views/courses/_history.html.erb @@ -5,7 +5,7 @@
<%= link_to image_tag(url_to_avatar(journal.user),:width => '46',:height => '46'), user_path(journal.user) %>
-
+
diff --git a/app/views/courses/feedback.html.erb b/app/views/courses/feedback.html.erb index 5eae03656..3b2d3030c 100644 --- a/app/views/courses/feedback.html.erb +++ b/app/views/courses/feedback.html.erb @@ -2,7 +2,7 @@
-
+

<%= l(:label_contest_userresponse) %>

diff --git a/app/views/issues/_issue_filter_all.html.erb b/app/views/issues/_issue_filter_all.html.erb new file mode 100644 index 000000000..64242df9b --- /dev/null +++ b/app/views/issues/_issue_filter_all.html.erb @@ -0,0 +1 @@ +<%= @issue_count %> \ No newline at end of file diff --git a/app/views/issues/index.html.erb b/app/views/issues/index.html.erb index ac42dfff8..9f8accdaa 100644 --- a/app/views/issues/index.html.erb +++ b/app/views/issues/index.html.erb @@ -47,12 +47,30 @@ // }); } - function remote_function_export() { - $("#export_issue_hidden").attr("value","1"); -// $("#issue_query_form").attr("format","xls"); - $("#issue_query_form").submit(); + function remote_function_export(project_id) { +// $("#export_issue_hidden").attr("value","1"); +// $("#issue_query_form").attr("set_filter","1"); +// $("#issue_query_form").attr("action","/projects/"+project_id+"/issues.xls"); +// $("#issue_query_form").submit(); +// $("#issue_query_form").attr("action","/projects/"+project_id+"/issues"); // $("#issue_query_form").removeAttr("format"); - $("#export_issue_hidden").attr("value","0"); +// $("#issue_query_form").attr("set_filter","0"); +// $("#export_issue_hidden").attr("value","0"); + + var tracker_id = $("#tracker_id").attr("value"); + var subject = $("#v_subject").attr("value"); + var assigned_to_id = $("#assigned_to_id").attr("value"); + var fixed_version_id = $("#fixed_version_id").attr("value"); + var status_id = $("#status_id").attr("value"); + var done_ratio = $("#done_ratio").attr("value"); + var test = $("#test").attr("value"); + var author_id = $("#author_id").attr("value"); + var issue_create_date_start = $("#issue_date_start_issue_export").attr("value"); + var issue_create_date_end = $("#issue_date_end_issue_export").attr("value"); + $("#sendexcel").attr("href","/projects/"+project_id+"/issues.xls?export=true&set_filter=1&tracker_id="+tracker_id+"&assigned_to_id="+assigned_to_id+"&fixed_version_id="+fixed_version_id+"&status_id="+status_id+"&done_ratio="+done_ratio+"&test="+test+"&author_id="+author_id+"&subject="+subject+"&issue_create_date_start="+issue_create_date_start+"&issue_create_date_end="+issue_create_date_end); + ///projects/1811/issues.xls?export=true&set_filter=1 + + } // function nh_reset_form() { @@ -105,15 +123,15 @@ - - " class="hw_btn_blue fr" alt="导出EXCEL" onclick="remote_function_export()">导出EXCEL + + " id="sendexcel" class="hw_btn_blue fr" alt="导出EXCEL" onclick="remote_function_export('<%= @project.id %>')">导出EXCEL
<% unless @project.enabled_modules.where("name = 'issue_tracking'").empty? %> - <%= form_tag({:controller => 'issues', :action => 'index', :project_id => @project},:remote=>'true', :method => :get,:id=>"issue_query_form", :class => 'query_form') do %> + <%= form_tag({:controller => 'issues', :action => 'index', :project_id => @project},:remote=>'xls', :method => :get,:id=>"issue_query_form", :class => 'query_form') do %> <%= hidden_field_tag 'set_filter', '1' %> <%= hidden_field_tag 'export_issue_hidden', '0' %> @@ -125,12 +143,12 @@ 清除
- + <%= calendar_for('issue_create_date_end_show')%>
- + <%= calendar_for('issue_create_date_start_show')%>
@@ -141,7 +159,8 @@
  • - 所有<%= @project.project_score.issue_num %> + 所有 + <%= render :partial => "issues/issue_filter_all" %>
  • diff --git a/app/views/projects/member.html.erb b/app/views/projects/member.html.erb index 1f3f76ea3..eb46a41e6 100644 --- a/app/views/projects/member.html.erb +++ b/app/views/projects/member.html.erb @@ -1,4 +1,4 @@ -
    +

    <%= @subPage_title %>

    <% if is_project_manager?(User.current, @project) %> @@ -11,3 +11,7 @@ <%= render :partial => @render_file, :locals => {:members => @members} %>
    + + diff --git a/app/views/projects/watcherlist.html.erb b/app/views/projects/watcherlist.html.erb index 76e7c9d04..180cd22b0 100644 --- a/app/views/projects/watcherlist.html.erb +++ b/app/views/projects/watcherlist.html.erb @@ -1,7 +1,7 @@ -
    +

    <%= l(:label_user_watcher)%>

    -
    +
    加入时间
    @@ -23,4 +23,8 @@
    -<% html_title(l(:label_followers)) -%> \ No newline at end of file +<% html_title(l(:label_followers)) -%> + + \ No newline at end of file diff --git a/app/views/quality_analysis/_result_list.html.erb b/app/views/quality_analysis/_result_list.html.erb index 0c2bc9497..f4cd55c5f 100644 --- a/app/views/quality_analysis/_result_list.html.erb +++ b/app/views/quality_analysis/_result_list.html.erb @@ -2,7 +2,7 @@ // $("#ajax-indicator span").text("载入中..."); $("#ajax-indicator").show(); -
    +

    分析结果

      @@ -35,4 +35,8 @@ <%#= 数据为空时候界面,待完善 %> <% end %> + + diff --git a/app/views/quality_analysis/_show.html.erb b/app/views/quality_analysis/_show.html.erb index d6c8c0a56..0e2b9b4d4 100644 --- a/app/views/quality_analysis/_show.html.erb +++ b/app/views/quality_analysis/_show.html.erb @@ -1,5 +1,5 @@ <%= javascript_include_tag 'highcharts','highcharts-more' %> -
      +

      质量分析

      @@ -161,3 +161,7 @@
      <% end %> + + diff --git a/app/views/student_work/_homework_post_brief.html.erb b/app/views/student_work/_homework_post_brief.html.erb index 6b3c0d542..bcc8e2235 100644 --- a/app/views/student_work/_homework_post_brief.html.erb +++ b/app/views/student_work/_homework_post_brief.html.erb @@ -22,7 +22,7 @@ <% end %> <% is_pro = homework.homework_type == 2 && is_teacher %> -<% is_base_group = homework.homework_type == 3 && homework.homework_detail_group.base_on_project == 1 && !is_teacher %> +<% is_base_group = homework.homework_type == 3 && (homework.homework_detail_group.base_on_project == 1 || !(cur_user_works_for_homework(homework).nil?)) && !is_teacher %>
      <%= render :partial => 'users/homework_opr', :locals => {:activity => homework, :is_teacher => is_teacher, :hw_status => 5, :user_activity_id => homework.id} %> <% if is_pro || is_base_group %> @@ -42,7 +42,7 @@
      -
      +
      <%= homework.description.html_safe %>
      diff --git a/app/views/users/_project_issue.html.erb b/app/views/users/_project_issue.html.erb index e4f24d4e0..5a0065f86 100644 --- a/app/views/users/_project_issue.html.erb +++ b/app/views/users/_project_issue.html.erb @@ -95,7 +95,9 @@
      - +
      + <%= render :partial => 'users/project_issue_reply', :locals => {:activity => activity, :user_activity_id => user_activity_id} %> +