diff --git a/app/controllers/merged/images_controller.rb b/app/controllers/merged/images_controller.rb index 2ba5f77..34a7258 100644 --- a/app/controllers/merged/images_controller.rb +++ b/app/controllers/merged/images_controller.rb @@ -1,8 +1,8 @@ require "mini_magick" module Merged - class ImagesController < MergedController + before_action :set_image, only: %i[ update destroy show copy ] def index @images = Image.all @@ -19,13 +19,11 @@ module Merged end def destroy - @image = Image.find(params[:id]) @image.destroy redirect_to :images , notice: "Image #{@image.name} deleted" end def update - @image = Image.find(params[:id]) mini = MiniMagick::Image.new( @image.full_filename) if(params[:scale]) message = "Image was scaled" @@ -39,14 +37,20 @@ module Merged @image.init_file_data redirect_to image_path , notice: message end + def show - @image = Image.find(params[:id]) @sections = Section.where(image_id: params[:id].to_i) @cards = Card.where(image_id: params[:id].to_i) @used = ((@cards.length > 0) || (@sections.length > 0)) @image_data = @image.attributes end + def copy + image = @image.copy + image.add_save(current_member.email) + redirect_to image_path(image.id) , notice: "Image copied" + end + def create image = Image.create_new(params['filename'] ,params['tags'], params['image_file']) image.add_save current_member.email @@ -56,6 +60,9 @@ module Merged private + def set_image + @image = Image.find(params[:id] || params[:image_id]) + end def determine_redirect(image) if(params[:section_id]) view_context.section_set_image_url(params[:section_id],image_id: image.id ) diff --git a/app/controllers/merged/sections_controller.rb b/app/controllers/merged/sections_controller.rb index bca211e..1c01b04 100644 --- a/app/controllers/merged/sections_controller.rb +++ b/app/controllers/merged/sections_controller.rb @@ -1,7 +1,6 @@ module Merged class SectionsController < MergedController before_action :set_section , except: [:index ,:new] - #, only: %i[ show edit update destroy set_image select_image] def index @page = Page.find(params[:page_id]) diff --git a/app/models/merged/image.rb b/app/models/merged/image.rb index b2ea286..a9ab002 100644 --- a/app/models/merged/image.rb +++ b/app/models/merged/image.rb @@ -1,4 +1,5 @@ - require "mini_magick" +require "mini_magick" +require "fileutils" module Merged class Image < ActiveBase @@ -15,13 +16,21 @@ module Merged ratio = self.ratio ratios = (1..9).collect{ |i| ((ratio * i) - (ratio * i).round(0)).abs } min , min_index = ratios.each_with_index.min - [(ratio * (min_index + 1) ).to_i , (min_index + 1) ] + [(ratio * (min_index + 1) ).round(0).to_i , (min_index + 1) ] end def ratio self.width.to_f / self.height end + def copy() + image = Image.new name: "#{name}_copy" , type: type , tags: (tags || "") + Image.insert(image) # assigns next id + FileUtils.cp full_filename , image.full_filename + image.init_file_data + image + end + #save an io as new image. The filename is the id, type taken from io def self.create_new(name , tags, io) original , ending = io.original_filename.split("/").last.split(".") diff --git a/config/routes.rb b/config/routes.rb index 5badfb4..d8395c0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -9,7 +9,6 @@ Merged::Engine.routes.draw do resources :pages , except: [:edit , :new] , shallow: true do resources :sections do - get :select_image get :set_image get :select_template get :set_template @@ -17,11 +16,12 @@ Merged::Engine.routes.draw do get :set_card_template get :move resources :cards do - get :select_image get :set_image get :move end end end - resources :images + resources :images do + get :copy + end end