Merge pull request #302 from giorgian/fix_asset_urls_importing_contents

Fix asset urls importing contents
This commit is contained in:
Didier Lafforgue 2012-03-03 05:46:28 -08:00
commit e1d75ddac3
6 changed files with 34 additions and 16 deletions

View File

@ -41,6 +41,20 @@ module Locomotive
def open_sample_asset(url)
File.open(File.join(self.theme_path, 'public', url))
end
def replace_images!(template)
return if template.blank?
template.gsub!(/\/samples\/(.*\.[a-zA-Z0-9]{3})/) do |match|
name = File.basename($1)
if asset = site.assets.where(:source_filename => name).first
asset.source.url
else
match
end
end
end
end
end
end

View File

@ -161,7 +161,9 @@ module Locomotive
field.category_items.build :name => value
end
value
else # string, text
when 'text'
replace_images!(value)
else # string
value
end)

View File

@ -42,7 +42,7 @@ module Locomotive
self.reset! if @options[:reset]
%w(site content_types assets snippets pages).each do |step|
%w(site assets content_types snippets pages).each do |step|
if @options[:enabled][step] != false
"Locomotive::Import::#{step.camelize}".constantize.process(context, @options)
@worker.update_attributes :step => step if @worker

View File

@ -147,20 +147,6 @@ module Locomotive
parent || self.add_page(parent_fullpath)
end
def replace_images!(template)
return if template.blank?
template.gsub!(/\/samples\/(.*\.[a-zA-Z0-9]{3})/) do |match|
name = File.basename($1)
if asset = site.assets.where(:source_filename => name).first
asset.source.url
else
match
end
end
end
def pages
@pages ||= self.retrieve_pages
end

BIN
spec/fixtures/themes/default2.zip vendored Normal file

Binary file not shown.

View File

@ -137,4 +137,20 @@ describe Locomotive::Import::Job do
end
end
context 'with a content referencing an asset' do
before(:all) do
@site = FactoryGirl.create(:site)
job = Locomotive::Import::Job.new(FixturedTheme.duplicate_and_open('default2.zip'), @site, { :samples => true, :reset => true })
job.perform
job.success nil
end
it 'will fix the url inside content' do
content = @site.content_types.where(:slug => 'messages').first.contents.first
asset = @site.assets.first
content.message.should == "<img src=\"/sites/#{@site.id}/assets/#{asset.id}/#{asset.source_filename}\" />"
end
end
end