class ProposalsController

Controlador para las propuestas ciudadanas

Public Instance Methods

create() click to toggle source

Creación de nueva propuesta ciudadana

# File app/controllers/proposals_controller.rb, line 98
def create
  @proposal = current_user.proposals.new(params[:proposal])
  # @proposal.organization_id = Organization.find_by_tag_name("_gobierno_vasco") if @proposal.organization_id.blank?
  if @proposal.save
    email = Notifier.create_new_proposal(@proposal)
    Notifier.deliver(email)
    
    respond_to do |format|
      format.html do
        if request.xhr?
          render :action => "create", :layout => false
        else
          if @proposal.approved?
            flash[:notice] = t('proposals.gracias')
          else
            flash[:notice] = t('proposals.gracias_revisaremos')
          end
          redirect_to proposals_path(:s => "f")
        end
      end
      format.json do
        render :json => {:sequence_finished => true, 
                         :success_message => @proposal.approved? ? t('proposals.gracias') : t('proposals.gracias_revisaremos'), 
                         :refresh_controller => true}.to_json
        
      end
    end
  else
    respond_to do |format|
      format.html {render :action => "new"}
      format.json {render :json => {:error_message => @proposal.errors.inject('') {|messages, err| messages += err[1] + ". "},
        :needs_auth => false}.to_json}
    end
  end
end
department() click to toggle source
# File app/controllers/proposals_controller.rb, line 143
def department
  @department = Department.find(params[:id])
  @feed_title = t('proposals.feed_title', :name => @department.name)
  organization_ids = [@department.id] + @department.organization_ids
  @proposals = Proposals.approved_and_published_proposals.find :all, 
    :conditions => "organization_id in (#{organization_ids.join(',')})",
    :order => 'published_at DESC', :limit => 10
  render :action => "index.rss", :layout => false
end
image() click to toggle source
# File app/controllers/proposals_controller.rb, line 134
def image
  uploader = ImageUploader.cache_from_io!(request.body, params.delete(:qqfile))
  @image = {
    :success => true,
    :image_cache_name => uploader.cache_name
  }
  render :text => @image.to_json and return
end
index() click to toggle source

Listado de propuestas

# File app/controllers/proposals_controller.rb, line 32
def index
  get_proposals
  
  respond_to do |format|
    format.html do
      if request.xhr?
        render :partial => '/shared/list_items', :locals => {:items => @proposals, :type => 'proposals'}, :layout => false
      else
        render
      end
    end
    format.floki {render :template => "mob_app/proposals.json", :layout => false, :content_type => "application/json"}
    format.rss do
      @feed_title = t('proposals.feed_title', :name => @context ? @context.name : t('site_name'))
      render :layout => false        
    end
  end
end
new() click to toggle source

Formulario de nueva propuesta ciudadana

# File app/controllers/proposals_controller.rb, line 89
def new
  @proposal = Proposal.new(:area_id => params[:area_id])
  respond_to do |format|
    format.html
    format.floki { render :action => 'new.floki', :content_type => 'application/json', :layout => false}
  end
end
show() click to toggle source

Vista de una propuesta

# File app/controllers/proposals_controller.rb, line 58
def show
  begin
    @proposal = Proposal.approved.published.find(params[:id])
  rescue ActiveRecord::RecordNotFound
    @proposal = Proposal.find_by_id(params[:id].to_i)
    if @proposal.present? && !(logged_in? && (is_admin? || @proposal.user_id == current_user.id))
      raise ActiveRecord::RecordNotFound and return
    elsif @proposal.nil?
      @debate = Debate.published.find(params[:id])
      redirect_to debate_path(@debate) and return
    end
  end
  
  @parent = @proposal
  
  @comments = @proposal.comments.approved.paginate :page => params[:page], :per_page => 25
  @arguments = @proposal.arguments.published.paginate :page => params[:page], :per_page => 50
  
  if params[:n_id].present?
    notification = current_user.notifications.find(params[:n_id])
    notification.read_at = Time.zone.now if notification.read_at.nil?
    notification.save
  end

  respond_to do |format|
    format.html { render }
    format.floki { render }
  end
end
summary() click to toggle source
# File app/controllers/proposals_controller.rb, line 51
def summary
  @proposals = Proposal.approved.published.find(:all, :order => "published_at DESC", :limit => 2)
  @debates = Debate.published.translated.find(:all, :order => "published_at DESC", :limit => 2)
  render :layout => !request.xhr?
end