class ContestnotificationsController < ApplicationController # GET /contestnotifications # GET /contestnotifications.json layout 'base_newcontest' default_search_scope :contestnotifications model_object Contestnotification # before_filter :find_model_object, :except => [:new, :create, :index] # before_filter :find_contest_from_association, :except => [:new, :create, :index] before_filter :find_contest_by_contest_id, :only => [:new, :create] before_filter :find_contest before_filter :find_author # before_filter :authorize, :except => [:index] before_filter :find_optional_contest, :only => [:index] accept_rss_auth :index accept_api_auth :index before_filter :access_edit_destroy, only: [:edit ,:update, :destroy] def find_author @user = @contest.author render_404 if @user.nil? end def find_contest @contest = Contest.find(params[:contest_id]) render_404 if @contest.nil? end def index # @contestnotifications = Contestnotification.all # # respond_to do |format| # format.html # index.html.erb # format.json { render json: @contestnotifications } # end ### begin ### case params[:format] when 'xml', 'json' @offset, @limit = api_offset_and_limit else @limit = 10 end scope = @contest ? @contest.contestnotifications.visible : Contestnotifications.visible @contestnotifications_count = scope.count @contestnotifications_pages = Paginator.new @contestnotifications_count, @limit, params['page'] @offset ||= @contestnotifications_pages.offset @contestnotificationss = scope.all(:include => [:author, :contest], :order => "#{Contestnotification.table_name}.created_at DESC", :offset => @offset, :limit => @limit) respond_to do |format| format.html { @contestnotification = Contestnotification.new # for adding news inline render :layout => 'base_newcontest' } format.api format.atom { render_feed(@contestnotificationss, :title => (@contest ? @contest.name : Setting.app_title) + ": #{l(:label_contest_notification)}") } end ### end ### end # GET /contestnotifications/1 # GET /contestnotifications/1.json def show @contestnotification = Contestnotification.find(params[:id]) # # respond_to do |format| # format.html # show.html.erb # format.json { render json: @contestnotification } # end @notificationcomments = @contestnotification.notificationcomments @notificationcomments.reverse! if User.current.wants_notificationcomments_in_reverse_order? render :layout => 'base_newcontest' end # GET /contestnotifications/new # GET /contestnotifications/new.json def new # @contestnotification = Contestnotification.new # # respond_to do |format| # format.html # new.html.erb # format.json { render json: @contestnotification } # end @contestnotification = Contestnotification.new(:contest => @contest, :author => User.current) render :layout => 'base_newcontest' end # GET /contestnotifications/1/edit def edit @contestnotification = Contestnotification.find(params[:id]) end # POST /contestnotifications # POST /contestnotifications.json def create # @contestnotification = Contestnotification.new(params[:contestnotification]) # # respond_to do |format| # if @contestnotification.save # format.html { redirect_to @contestnotification, notice: 'Contestnotification was successfully created.' } # format.json { render json: @contestnotification, status: :created, location: @contestnotification } # else # format.html { render action: "new" } # format.json { render json: @contestnotification.errors, status: :unprocessable_entity } # end # end @contestnotification = Contestnotification.new(:contest => @contest, :author => User.current) @contestnotification.safe_attributes = params[:contestnotification] @contestnotification.save_attachments(params[:attachments]) if @contestnotification.save render_attachment_warning_if_needed(@contestnotification) flash[:notice] = l(:notice_successful_create) redirect_to contest_contestnotifications_url(@contest) else layout_file = 'base_newcontest' render :action => 'new', :layout => layout_file end end # PUT /contestnotifications/1 # PUT /contestnotifications/1.json def update # @contestnotification = Contestnotification.find(params[:id]) # # respond_to do |format| # if @contestnotification.update_attributes(params[:contestnotification]) # format.html { redirect_to @contestnotification, notice: 'Contestnotification was successfully updated.' } # format.json { head :no_content } # else # format.html { render action: "edit" } # format.json { render json: @contestnotification.errors, status: :unprocessable_entity } # end # end @contestnotification = Contestnotification.find(params[:id]) @contestnotification.safe_attributes = params[:contestnotification] @contestnotification.save_attachments(params[:attachments]) if @contestnotification.save render_attachment_warning_if_needed(@contestnotification) flash[:notice] = l(:notice_successful_update) redirect_to contest_contestnotification_url(@contestnotification.contest, @contestnotification) else render :action => 'edit' end end # DELETE /contestnotifications/1 # DELETE /contestnotifications/1.json def destroy # @contestnotification = Contestnotification.find(params[:id]) # @contestnotification.destroy # # respond_to do |format| # format.html { redirect_to contestnotifications_url } # format.json { head :no_content } # end @contestnotification = Contestnotification.find(params[:id]) @contestnotification.destroy redirect_to contest_contestnotifications_url(@contest) end private def find_optional_contest return true unless params[:id] @contest = Contest.find(params[:id]) # authorize rescue ActiveRecord::RecordNotFound render_404 end def access_edit_destroy if (User.current.admin? && User.current.logged? )||(User.current == @contest.author && User.current.logged?) return true else render_403 end end end