image copying
This commit is contained in:
parent
ee157a18d1
commit
3e9667470d
@ -1,8 +1,8 @@
|
|||||||
require "mini_magick"
|
require "mini_magick"
|
||||||
|
|
||||||
module Merged
|
module Merged
|
||||||
|
|
||||||
class ImagesController < MergedController
|
class ImagesController < MergedController
|
||||||
|
before_action :set_image, only: %i[ update destroy show copy ]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@images = Image.all
|
@images = Image.all
|
||||||
@ -19,13 +19,11 @@ module Merged
|
|||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@image = Image.find(params[:id])
|
|
||||||
@image.destroy
|
@image.destroy
|
||||||
redirect_to :images , notice: "Image #{@image.name} deleted"
|
redirect_to :images , notice: "Image #{@image.name} deleted"
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@image = Image.find(params[:id])
|
|
||||||
mini = MiniMagick::Image.new( @image.full_filename)
|
mini = MiniMagick::Image.new( @image.full_filename)
|
||||||
if(params[:scale])
|
if(params[:scale])
|
||||||
message = "Image was scaled"
|
message = "Image was scaled"
|
||||||
@ -39,14 +37,20 @@ module Merged
|
|||||||
@image.init_file_data
|
@image.init_file_data
|
||||||
redirect_to image_path , notice: message
|
redirect_to image_path , notice: message
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@image = Image.find(params[:id])
|
|
||||||
@sections = Section.where(image_id: params[:id].to_i)
|
@sections = Section.where(image_id: params[:id].to_i)
|
||||||
@cards = Card.where(image_id: params[:id].to_i)
|
@cards = Card.where(image_id: params[:id].to_i)
|
||||||
@used = ((@cards.length > 0) || (@sections.length > 0))
|
@used = ((@cards.length > 0) || (@sections.length > 0))
|
||||||
@image_data = @image.attributes
|
@image_data = @image.attributes
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def copy
|
||||||
|
image = @image.copy
|
||||||
|
image.add_save(current_member.email)
|
||||||
|
redirect_to image_path(image.id) , notice: "Image copied"
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
image = Image.create_new(params['filename'] ,params['tags'], params['image_file'])
|
image = Image.create_new(params['filename'] ,params['tags'], params['image_file'])
|
||||||
image.add_save current_member.email
|
image.add_save current_member.email
|
||||||
@ -56,6 +60,9 @@ module Merged
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def set_image
|
||||||
|
@image = Image.find(params[:id] || params[:image_id])
|
||||||
|
end
|
||||||
def determine_redirect(image)
|
def determine_redirect(image)
|
||||||
if(params[:section_id])
|
if(params[:section_id])
|
||||||
view_context.section_set_image_url(params[:section_id],image_id: image.id )
|
view_context.section_set_image_url(params[:section_id],image_id: image.id )
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
module Merged
|
module Merged
|
||||||
class SectionsController < MergedController
|
class SectionsController < MergedController
|
||||||
before_action :set_section , except: [:index ,:new]
|
before_action :set_section , except: [:index ,:new]
|
||||||
#, only: %i[ show edit update destroy set_image select_image]
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@page = Page.find(params[:page_id])
|
@page = Page.find(params[:page_id])
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
require "mini_magick"
|
require "mini_magick"
|
||||||
|
require "fileutils"
|
||||||
|
|
||||||
module Merged
|
module Merged
|
||||||
class Image < ActiveBase
|
class Image < ActiveBase
|
||||||
@ -15,13 +16,21 @@ module Merged
|
|||||||
ratio = self.ratio
|
ratio = self.ratio
|
||||||
ratios = (1..9).collect{ |i| ((ratio * i) - (ratio * i).round(0)).abs }
|
ratios = (1..9).collect{ |i| ((ratio * i) - (ratio * i).round(0)).abs }
|
||||||
min , min_index = ratios.each_with_index.min
|
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
|
end
|
||||||
|
|
||||||
def ratio
|
def ratio
|
||||||
self.width.to_f / self.height
|
self.width.to_f / self.height
|
||||||
end
|
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
|
#save an io as new image. The filename is the id, type taken from io
|
||||||
def self.create_new(name , tags, io)
|
def self.create_new(name , tags, io)
|
||||||
original , ending = io.original_filename.split("/").last.split(".")
|
original , ending = io.original_filename.split("/").last.split(".")
|
||||||
|
@ -9,7 +9,6 @@ Merged::Engine.routes.draw do
|
|||||||
|
|
||||||
resources :pages , except: [:edit , :new] , shallow: true do
|
resources :pages , except: [:edit , :new] , shallow: true do
|
||||||
resources :sections do
|
resources :sections do
|
||||||
get :select_image
|
|
||||||
get :set_image
|
get :set_image
|
||||||
get :select_template
|
get :select_template
|
||||||
get :set_template
|
get :set_template
|
||||||
@ -17,11 +16,12 @@ Merged::Engine.routes.draw do
|
|||||||
get :set_card_template
|
get :set_card_template
|
||||||
get :move
|
get :move
|
||||||
resources :cards do
|
resources :cards do
|
||||||
get :select_image
|
|
||||||
get :set_image
|
get :set_image
|
||||||
get :move
|
get :move
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
resources :images
|
resources :images do
|
||||||
|
get :copy
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user