image copying

This commit is contained in:
Torsten 2022-12-30 21:10:33 +02:00
parent ee157a18d1
commit 3e9667470d
4 changed files with 25 additions and 10 deletions

View File

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

View File

@ -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])

View File

@ -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(".")

View File

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