From 8f94985186b1faa812a0e6701656fe60d71b0b3d Mon Sep 17 00:00:00 2001 From: sw <939547590@qq.com> Date: Fri, 6 Jun 2014 10:28:37 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E4=BD=9C=E4=B8=9A=E6=97=B6?= =?UTF-8?q?=E6=9D=83=E9=99=90=E5=88=A4=E6=96=AD=202.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=88=90=E5=91=98tab=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_attach_controller.rb | 56 ++++---- app/helpers/homework_attach_helper.rb | 24 ++++ app/helpers/projects_helper.rb | 1 - .../homework_attach/_edit_homework.html.erb | 23 +++ .../homework_attach/_homework_member.html.erb | 131 ++++++++++++++++++ config/locales/zh.yml | 1 + 6 files changed, 209 insertions(+), 27 deletions(-) create mode 100644 app/views/homework_attach/_edit_homework.html.erb create mode 100644 app/views/homework_attach/_homework_member.html.erb diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb index 1c3e8cabe..f7564a2de 100644 --- a/app/controllers/homework_attach_controller.rb +++ b/app/controllers/homework_attach_controller.rb @@ -20,36 +20,40 @@ class HomeworkAttachController < ApplicationController def create bid = Bid.find params[:bid_id] if User.current.admin? || User.current.member_of?(bid.courses.first) - user_id = params[:user_id] - bid_id = params[:bid_id] - sta = 0 - name = params[:new_form][:name] - description = params[:new_form][:description] - options = { - :user_id => user_id, - :state => sta, - :name => name, - :description => description, - :bid_id => bid_id - } - - - #@homework_list = @bid.homeworks - - @homework = HomeworkAttach.new(options) - @homework.save_attachments(params[:attachments]) - render_attachment_warning_if_needed(@homework) - - if @homework.save - respond_to do |format| - format.html { redirect_to project_for_bid_path @homework.bid } - format.json { head :no_content } + if bid.homeworks.where("user_id = ?",User.current).count == 0 + user_id = params[:user_id] + bid_id = params[:bid_id] + sta = 0 + name = params[:new_form][:name] + description = params[:new_form][:description] + options = { + :user_id => user_id, + :state => sta, + :name => name, + :description => description, + :bid_id => bid_id + } + + + #@homework_list = @bid.homeworks + + @homework = HomeworkAttach.new(options) + @homework.save_attachments(params[:attachments]) + render_attachment_warning_if_needed(@homework) + + if @homework.save + respond_to do |format| + format.html { redirect_to project_for_bid_path @homework.bid } + format.json { head :no_content } + end + else + render_403 :message => :notice_not_authorized end else - render_403 :message => :notice_not_authorized + render_403 :message => :notice_has_homework end else - + render_403 :message => :notice_not_authorized end end diff --git a/app/helpers/homework_attach_helper.rb b/app/helpers/homework_attach_helper.rb index 1abac35d6..8dc3eadb3 100644 --- a/app/helpers/homework_attach_helper.rb +++ b/app/helpers/homework_attach_helper.rb @@ -1,10 +1,34 @@ module HomeworkAttachHelper + #判断是否具有删除的权限 def attach_delete(project) if User.current.logged? && (User.current.admin? || (!Member.where('user_id = ? and project_id = ?', User.current.id, project.bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, project.bid.courses.first.id).first.roles&Role.where('id = ? or id = ?', 3, 7)).size >0) || project.user_id == User.current.id) true else false end + end + #作业添加、编辑界面的tab页 + def homework_settings_tabs f + @project = Project.find 205 + @f = f + tabs = [{:name => 'info', :action => :edit_homework, :partial => 'homework_attach/edit_homework', :label => :label_information_plural}, + {:name => 'members', :action => :homework_member, :partial => 'homework_attach/homework_member', :label => :label_member_plural} + ] + #tabs.select {|tab| User.current.allowed_to?(tab[:action], @homework)} + end + + def render_principals_for_new_members(project) + scope = Principal.active.sorted.not_member_of(project).like(params[:q]) + principal_count = scope.count + principal_pages = Redmine::Pagination::Paginator.new principal_count, 10, params['page'] #by young + principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all + + s = content_tag('div', principals_check_box_tags_ex('membership[user_ids][]', principals), :id => 'principals') + + links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options| + link_to text, autocomplete_project_memberships_path(project, parameters.merge(:q => params[:q], :format => 'js')), :remote => true + } + s + content_tag('div', content_tag('ul', links), :class => 'pagination_new') end end \ No newline at end of file diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 085035a2c..c859fec23 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -150,7 +150,6 @@ module ProjectsHelper {:name => 'members', :action => :manage_members, :partial => 'projects/settings/members', :label => :label_member_plural} ] tabs.select {|tab| User.current.allowed_to?(tab[:action], @project)} - end #Ended by young diff --git a/app/views/homework_attach/_edit_homework.html.erb b/app/views/homework_attach/_edit_homework.html.erb new file mode 100644 index 000000000..25f90f186 --- /dev/null +++ b/app/views/homework_attach/_edit_homework.html.erb @@ -0,0 +1,23 @@ +
+ +

+ 标 题: + <%= @f.text_field "name", :required => true, :size => 60, :style => "width:490px;" %> +

+

+ 描 述: + + <%= @f.text_area "description", :rows => 8, :class => 'wiki-edit', :style => "font-size:small;width:490px;margin-left:10px;" %> + +

+

+

+ + <%= l(:label_attachment_plural) %> + +

+ <%= render :partial => 'attachments/form' %> +

+
+

+
\ No newline at end of file diff --git a/app/views/homework_attach/_homework_member.html.erb b/app/views/homework_attach/_homework_member.html.erb new file mode 100644 index 000000000..f69f9edff --- /dev/null +++ b/app/views/homework_attach/_homework_member.html.erb @@ -0,0 +1,131 @@ +<%= error_messages_for 'member' %> +<% + roles = Role.givable.all + if @project.project_type == Project::ProjectType_course + roles = roles[3..5] + else + roles = roles[0..2] + end + members = @project.member_principals.includes(:roles, :principal).all.sort +%> + +
+ <% if members.any? %> + + + + + + + <%= call_hook(:view_projects_settings_members_table_header, :project => @project) %> + + + + <% members.each do |member| %> + <% next if member.new_record? %> + + + + + <% if @project.project_type == 1 %> + <% if member.roles.first.to_s == "Manager" %> + + <% else %> + + <% end %> + <% else %> + + <% end %> + + <%= call_hook(:view_projects_settings_members_table_row, {:project => @project, :member => member}) %> + + <% end; reset_cycle %> + +
<%= l(:label_user) %><%= l(:label_role_plural) %>
<%= link_to_user member.principal %> + + <%= h member.roles.sort.collect(&:to_s).join(', ') %> + + <%= form_for(member, {:as => :membership, :remote => true, :url => membership_path(member), + :method => :put, + :html => {:id => "member-#{member.id}-roles-form", :class => 'hol'}} + ) do |f| %> + +

+ <% roles.each do |role| %> +
+ <% end %>

+ <%= hidden_field_tag 'membership[role_ids][]', '' %> +

<%= submit_tag l(:button_change), :class => "small" %> + <%= link_to_function l(:button_cancel), + "$('#member-#{member.id}-roles').show(); $('#member-#{member.id}-roles-form').hide(); return false;" + %>

+ <% end %> +
+ <%= link_to_function l(:button_edit), + "$('#member-#{member.id}-roles').hide(); $('#member-#{member.id}-roles-form').show(); return false;", + :class => 'icon icon-edit' %> + <%= delete_link membership_path(member), + :remote => true, + :data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %> + + <%= link_to_function l(:button_edit), + "$('#member-#{member.id}-roles').hide(); $('#member-#{member.id}-roles-form').show(); return false;", + :class => 'icon icon-edit' %> + <%= delete_link membership_path(member), + :remote => true, + :data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %> +
+ <% else %> +

<%= l(:label_no_data) %>

+ <% end %> +
+ +
+ <% if roles.any? %> + <% if @project.applied_projects.any? %> +
+ <%= form_for(@applied_members, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %> +
+ <%= l(:label_apply_project) %> + +
+ <%= render_principals_for_applied_members(@project) %> +
+ +

<%= l(:label_role_plural) %>: + <% roles.each do |role| %> + + + <% end %>

+ +

<%= submit_tag l(:label_approve), :id => 'member-add-submit' %> + <%= submit_tag l(:label_refusal), :name => "refusal_button", :id => 'member-refusal-submit' %> +

+
+ <% end %> +
+ <% end %> + + <%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %> +
+ <%= l(:label_member_new) %> + +

<%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %>

+ <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %> + +
+ <%= render_principals_for_new_members(@project) %> +
+ +

<%= l(:label_role_plural) %>: + <% roles.each do |role| %> + + + <% end %>

+ +

<%= submit_tag l(:button_add), :id => 'member-add-submit' %>

+
+ <% end %> + <% end %> +
diff --git a/config/locales/zh.yml b/config/locales/zh.yml index aecf2f19a..c0dfb3ca9 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -176,6 +176,7 @@ zh: notice_file_not_found: 您访问的页面不存在或已被删除。 notice_locking_conflict: 数据已被另一位用户更新 notice_not_authorized: 对不起,您无权访问此页面。 + notice_has_homework: 您已经提交过一份作业 notice_not_contest_setting_authorized: 对不起,您无权配置此竞赛。 notice_not_contest_delete_authorized: 对不起,您无权删除此竞赛。 notice_not_authorized_archived_project: 要访问的项目已经归档。