orbit-basic/app/models/design/layout.rb

61 lines
1.4 KiB
Ruby
Raw Normal View History

class Layout < DesignFile
2011-08-10 09:28:10 +00:00
include Parser
mount_uploader :file_orig, AssetUploader
attr_reader :content
2011-09-01 01:12:41 +00:00
embeds_one :menu
embedded_in :design
embeds_many :layout_parts
after_save :parse_layout
2011-05-18 02:00:00 +00:00
def content
self.file.read.force_encoding("UTF-8")
end
2011-08-10 09:28:10 +00:00
2011-05-18 02:00:00 +00:00
def self.exist_one?
Layout.count > 0
end
2011-08-10 09:28:10 +00:00
def parse_layout
parse_layout_contents(self)
2011-08-10 09:28:10 +00:00
end
def parse_urls
orig_content = content = self.content
self.remove_file!
self.remove_file_orig!
names = []
images = self.design.images
html_name = nil
content.scan(/(?<=\<img)(.*?)(?=\/\>)/){
$1.gsub(' ','').scan(/(?<=src=\")(.*?)(?=\")/){
html_name = $1
}
name = File.basename(html_name).gsub(/[\\\"]/, '')
file_name = images.detect{ |i| i.file_filename.eql?(name) }.file_url rescue nil
names << [html_name, file_name]
}
names.each do |name|
content.gsub!(name[0], name[1])
end
Dir.mktmpdir('f_path') { |dir|
orig_file_name = self.file_filename
temp_file = File.new(dir + '/' + orig_file_name, 'w+')
temp_file.write orig_content.force_encoding("UTF-8")
self.file_orig = temp_file
temp_file = File.new(dir + '/' + orig_file_name, 'w+')
temp_file.write content.force_encoding("UTF-8")
self.file = temp_file
Layout.without_callback(:save, :after, :parse_layout) do
self.save
end
}
end
2011-03-08 09:25:46 +00:00
end