diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 21653b3e4..c46c039ce 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -500,6 +500,10 @@ class ApplicationController < ActionController::Base #��ȡ�γ� def find_course @course= Course.find(params[:id]) + if @course.is_delete == 1 and !User.current.admin? + render_404 + return + end rescue ActiveRecord::RecordNotFound render_404 end diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb index b17ca6f7f..5295477f5 100644 --- a/app/controllers/contests_controller.rb +++ b/app/controllers/contests_controller.rb @@ -5,10 +5,11 @@ class ContestsController < ApplicationController helper :contest_members helper :users - before_filter :find_contest, :only => [:show, :settings, :update, :contest_activities, :search_member, :private_or_public, :switch_role] + before_filter :find_contest, :only => [:show, :settings, :update, :destroy, :contest_activities, :search_member, :private_or_public, :switch_role, :set_invite_code_halt, :renew] before_filter :is_logged, :only => [:index, :new, :create] - before_filter :is_admin?, :only => [:settings] + before_filter :is_admin?, :only => [:settings, :set_invite_code_halt, :destroy] before_filter :is_member?, :only => [:show, :contest_activities] + layout "base_contests" def show @@ -106,6 +107,10 @@ class ContestsController < ApplicationController end end + def destroy + @contest.update_attributes(:is_delete => true) + end + def private_or_public @contest.update_attributes(:is_public => !@contest.is_public) @@ -231,6 +236,23 @@ class ContestsController < ApplicationController end end + # 邀请码停用/启用 + def set_invite_code_halt + if User.current.admin_of_contest?(@contest) || User.current.admin? + @contest.update_attribute('invite_code_halt', @contest.invite_code_halt == 0 ? 1 : 0) + end + end + + # 恢复已删除的竞赛 + def renew + if User.current.admin? + @contest.update_attributes(:is_delete => false) + redirect_to contest_path(@contest) + else + return 404 + end + end + private def find_contest @@ -239,6 +261,10 @@ class ContestsController < ApplicationController return end @contest = Contest.find(params[:id]) + if @contest.is_delete and !User.current.admin? + render_404 + return + end rescue ActiveRecord::RecordNotFound render_404 end diff --git a/app/views/contests/_contest_base_info.html.erb b/app/views/contests/_contest_base_info.html.erb index 569f74caa..795553b44 100644 --- a/app/views/contests/_contest_base_info.html.erb +++ b/app/views/contests/_contest_base_info.html.erb @@ -32,5 +32,22 @@ <% else %> <%= link_to "加入竞赛",join_contest_contests_path(),:remote => true, :method => "get", :class => "fr sy_btn_blue mt28 ml10" %> <% end %> - 邀请码:<%= @contest.invite_code %> -
\ No newline at end of file + 邀请码: + + + <% if @contest.invite_code_halt == 0 %> + <%=@contest.generate_invite_code %> + <% else %> + 已停用 + <% end %> + + + +<% if User.current.admin_of_contest?(@contest) || User.current.admin? %> +<%= @contest.invite_code_halt == 0 ? "请将邀请码告诉成员" : "邀请码已停用" %>
+<%= @contest.invite_code_halt == 0 ? "他们可以主动加入" : "暂时停止成员主动加入" %>
+