image class with attributes
This commit is contained in:
parent
4814f53d1e
commit
76b29123a6
@ -2,32 +2,18 @@ module Cms
|
||||
|
||||
class ImagesController < CmsController
|
||||
|
||||
@@root = "app/assets/images/cms/"
|
||||
@@files = Set.new Dir[Rails.root + @@root + "*.*"].collect{|f|f.split("/").last}
|
||||
|
||||
def index
|
||||
@files = files
|
||||
@images = Image.all
|
||||
end
|
||||
|
||||
def new
|
||||
end
|
||||
|
||||
def create
|
||||
io = params['image_file']
|
||||
ending = io.original_filename.split("/").last.split(".").last
|
||||
filename = params['filename'] + "." + ending
|
||||
File.open(Rails.root.join('app/assets/images/cms', filename), "wb") do |f|
|
||||
f.write io.read
|
||||
end
|
||||
@@files << filename
|
||||
Image.save_image(params['filename'] , params['image_file'])
|
||||
redirect_to cms_image_index_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def files
|
||||
@@files
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
48
app/models/cms/image.rb
Normal file
48
app/models/cms/image.rb
Normal file
@ -0,0 +1,48 @@
|
||||
module Cms
|
||||
class Image
|
||||
include ActiveModel::API
|
||||
include ActiveModel::Conversion
|
||||
extend ActiveModel::Naming
|
||||
|
||||
@@images = {}
|
||||
|
||||
attr_reader :name , :type , :created_at , :updated_at
|
||||
|
||||
def initialize(filename)
|
||||
puts filename
|
||||
@name , @type = filename.split(".")
|
||||
file = File.new(Rails.root.join(Image.root,filename))
|
||||
@created_at = file.birthtime
|
||||
@updated_at = file.ctime
|
||||
end
|
||||
|
||||
def self.all
|
||||
return @@images unless @@images.empty?
|
||||
Dir[Rails.root.join Image.root + "*.*"].each do |f|
|
||||
file = f.split("/").last
|
||||
self.add( file )
|
||||
end
|
||||
@@images
|
||||
end
|
||||
|
||||
#save an io with given name (without ending, that is taken from io)
|
||||
def self.create_new(filename , io)
|
||||
ending = io.original_filename.split("/").last.split(".").last
|
||||
full_filename = filename + "." + ending
|
||||
File.open(Rails.root.join(Image.root, full_filename), "wb") do |f|
|
||||
f.write( io.read )
|
||||
end
|
||||
self.add( full_filename )
|
||||
end
|
||||
|
||||
def self.root
|
||||
"app/assets/images/cms/"
|
||||
end
|
||||
|
||||
private
|
||||
def self.add(filename)
|
||||
key = filename.split(".").first
|
||||
@@images[key] = Image.new(filename)
|
||||
end
|
||||
end
|
||||
end
|
@ -3,17 +3,12 @@
|
||||
Add Image
|
||||
|
||||
.grid.grid-cols-6.gap-4.m-8
|
||||
-@files.each do |file|
|
||||
-@images.each do |name , image|
|
||||
.relative.block.border.border-gray-100
|
||||
%button.absolute.right-4.top-4.rounded-full.bg-black.p-2.text-white{:type => "button"}
|
||||
%span.sr-only Wishlist
|
||||
%svg.h-4.w-4{:fill => "none", :stroke => "currentColor", :viewbox => "0 0 24 24", :xmlns => "http://www.w3.org/2000/svg"}
|
||||
%path{:d => "M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z", "stroke-linecap" => "round", "stroke-linejoin" => "round", "stroke-width" => "2"}
|
||||
=image_tag("cms/#{file}" , class: "h-56 w-full object-contain lg:h-72")
|
||||
=image_tag("cms/#{name}" , class: "h-56 w-full object-contain lg:h-72")
|
||||
.p-6
|
||||
%strong.inline-block.bg-yellow-400.px-3.py-1.text-xs.font-medium
|
||||
New
|
||||
%h3.mt-4.text-lg.font-bold= file.split(".").first
|
||||
%p.mt-2.text-sm.text-gray-700 $14.99
|
||||
%button.mt-4.block.w-full.rounded-sm.bg-yellow-500.p-4.text-sm.font-medium{:type => "button"}
|
||||
Add to Cart
|
||||
=image.type
|
||||
%h3.mt-4.text-lg.font-bold= image.name
|
||||
%p.mt-2.text-sm.text-gray-700
|
||||
= "#{image.created_at.to_date} ---- #{image.updated_at.to_date}"
|
||||
|
Loading…
Reference in New Issue
Block a user