From 711110a6e096cc969f3d9935e0b8639aaa207ba4 Mon Sep 17 00:00:00 2001 From: did <didier@nocoffee.fr> Date: Thu, 7 Jul 2011 16:59:50 +0200 Subject: [PATCH] snippets were missing in the export --- doc/TODO | 1 - lib/locomotive/export.rb | 14 ++++++++------ lib/tasks/locomotive.rake | 9 +++++++++ spec/fixtures/themes/default.zip | Bin 401210 -> 403470 bytes spec/lib/locomotive/export_spec.rb | 14 +++++++++++++- spec/lib/locomotive/import_spec.rb | 4 ++++ 6 files changed, 34 insertions(+), 8 deletions(-) diff --git a/doc/TODO b/doc/TODO index ed3b7f5d..50588466 100644 --- a/doc/TODO +++ b/doc/TODO @@ -78,7 +78,6 @@ x export: problems with templatized pages (source => multi levels pages) - [bushido] guiders / welcome page / devise cas authentication (SSO) - BACKLOG: - custom_fields: diff --git a/lib/locomotive/export.rb b/lib/locomotive/export.rb index 5e7fa007..e82332a8 100644 --- a/lib/locomotive/export.rb +++ b/lib/locomotive/export.rb @@ -97,7 +97,7 @@ module Locomotive def copy_snippets @site.snippets.each do |snippet| - File.open(File.join(self.snippets_folder, snippet.slug), 'w') do |f| + File.open(File.join(self.snippets_folder, "#{snippet.slug}.liquid"), 'w') do |f| f.write(snippet.template) end end @@ -262,13 +262,15 @@ module Locomotive case field.kind when 'file' uploader = content.send(field._name) - filepath = File.join('/samples', content_type.slug, content.send("#{field._name}_filename")) - - self.copy_file_from_an_uploader(uploader, File.join(self.public_folder, filepath)) - + unless uploader.blank? + filepath = File.join('/samples', content_type.slug, content.send("#{field._name}_filename")) + self.copy_file_from_an_uploader(uploader, File.join(self.public_folder, filepath)) + else + filepath = nil + end hash[field._alias] = filepath when 'text' - value = self.replace_asset_urls_in(content.send(field._name.to_sym)) + value = self.replace_asset_urls_in(content.send(field._name.to_sym) || '') hash[field._alias] = value else hash[field._alias] = content.send(field._name.to_sym) diff --git a/lib/tasks/locomotive.rake b/lib/tasks/locomotive.rake index 2d0a83c6..bf4224ab 100644 --- a/lib/tasks/locomotive.rake +++ b/lib/tasks/locomotive.rake @@ -11,6 +11,15 @@ namespace :locomotive do puts '...done' end + desc 'Rebuild the serialized template of all the site pages' + task :rebuild_serialized_page_templates do + Page.all.each do |page| + next unless page.template.nil? + page.send :_parse_and_serialize_template + page.save + end + end + desc 'Import a remote template described by its URL -- 2 options: SITE=name or id, RESET=by default false' task :import => :environment do url, site_name_or_id, reset = ENV['URL'], ENV['SITE'], Boolean.set(ENV['RESET']) || false diff --git a/spec/fixtures/themes/default.zip b/spec/fixtures/themes/default.zip index 22fa15647e1d35383e454cd137a7be4d841535ae..b157828b6836b61ff907452b662f30af82f120af 100644 GIT binary patch delta 4546 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 delta 2422 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 JMadQT@qa^?`40d9 diff --git a/spec/lib/locomotive/export_spec.rb b/spec/lib/locomotive/export_spec.rb index 2b05b6c6..ed0432ef 100644 --- a/spec/lib/locomotive/export_spec.rb +++ b/spec/lib/locomotive/export_spec.rb @@ -24,6 +24,17 @@ describe Locomotive::Export do Dir[File.join(self.zip_folder, 'app', 'views', 'pages', '**/*.liquid')].size.should == 10 end + it 'includes snippets' do + self.unzip + Dir[File.join(self.zip_folder, 'app', 'views', 'snippets', '*.liquid')].size.should == 1 + end + + it 'has yaml files describing the content types as well as their data' do + self.unzip + Dir[File.join(self.zip_folder, 'app', 'content_types', '*.yml')].size.should == 4 + Dir[File.join(self.zip_folder, 'data', '*.yml')].size.should == 4 + end + def import_it job = Locomotive::Import::Job.new(FixturedTheme.duplicate_and_open('default.zip'), @site, { :samples => true, :reset => true }) job.perform @@ -35,7 +46,7 @@ describe Locomotive::Export do end def zip_folder - File.join(File.dirname(@zip_file), 'acme-website') + File.join(File.dirname(@zip_file), 'locomotive-test-website-2') end def unzip @@ -51,6 +62,7 @@ describe Locomotive::Export do end after(:all) do + FileUtils.rm_rf(self.zip_folder) if File.exists?(self.zip_folder) Site.destroy_all end diff --git a/spec/lib/locomotive/import_spec.rb b/spec/lib/locomotive/import_spec.rb index 5dbcc5b3..10b29bfa 100644 --- a/spec/lib/locomotive/import_spec.rb +++ b/spec/lib/locomotive/import_spec.rb @@ -67,6 +67,10 @@ describe Locomotive::Import::Job do page.redirect_url.should == 'http://blog.locomotivecms.com' end + it 'inserts snippets' do + @site.snippets.count.should == 1 + end + after(:all) do Site.destroy_all end