Sha256: 9b49a09fbf0167ff3433a3ceaad36a15fecc69d61137d46ee7f0387be2363a2d

Contents?: true

Size: 1.38 KB

Versions: 3

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true
require_dependency 'c/admin_controller'

module C
  class Admin::ProjectsController < AdminController
    before_action :load_from_url, only: [:edit, :update, :destroy]
    load_and_authorize_resource class: C::Project

    def index
      @projects = filter_and_paginate(@projects, 'created_at desc')
    end

    def create
      @project = C::Project.new(project_params)
      if @project.save
        redirect_to projects_path, notice: 'Project created'
      else
        render :new
      end
    end

    def update
      if params[:commit] == 'upload'
        @project.assign_attributes(new_image_params)
        render :edit
      elsif @project.update(project_params)
        redirect_to projects_path, notice: 'Project updated'
      else
        render :edit
      end
    end

    def destroy
      @project.destroy
      respond_to do |format|
        format.js
        format.html { redirect_to projects_path }
      end
    end

    private

    def load_from_url
      @project = C::Project.get_from_url(params[:id])
    end

    def new_image_params
      params.require(:project).permit(new_images: [], images_attributes: [:id, :_destroy, :alt, :caption])
    end

    def project_params
      params.require(:project).permit(:name, :body, :published, :url_alias, C::Page::IMAGEABLE_ATTRIBUTES, C::Page::PAGE_INFO_ATTRIBUTES, new_images: [])
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cd2_catton_cms-1.1.30 app/controllers/c/admin/projects_controller.rb
cd2_catton_cms-1.1.20 app/controllers/c/admin/projects_controller.rb
cd2_catton_cms-1.1.10 app/controllers/c/admin/projects_controller.rb