|
- 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
|