# encoding: utf-8 namespace :ecm do namespace :cms do namespace :db do desc "Purges and creates example data" task :populate!, [] => [:environment] do |t, args| Rake::Task["ecm:cms:db:clear!"].execute Rake::Task["ecm:cms:db:populate"].execute end desc "Clears all data!" task :clear!, [] => [:environment] do |t, args| Rake::Task["ecm:cms:db:clear_navigations!"].execute Rake::Task["ecm:cms:db:clear_navigation_items!"].execute Rake::Task["ecm:cms:db:clear_folders!"].execute Rake::Task["ecm:cms:db:clear_pages!"].execute # Rake::Task["ecm:cms:db:clear_templates!"].execute # Rake::Task["ecm:cms:db:clear_partials!"].execute end desc "Clears all navigations!" task :clear_navigations!, [] => [:environment] do |t, args| Ecm::Cms::Navigation.delete_all end desc "Clears all navigation items!" task :clear_navigation_items!, [] => [:environment] do |t, args| Ecm::Cms::NavigationItem.delete_all end desc "Clears all folders!" task :clear_folders!, [] => [:environment] do |t, args| Ecm::Cms::Folder.delete_all end desc "Clears all pages!" task :clear_pages!, [] => [:environment] do |t, args| Ecm::Cms::Page.delete_all end desc "Clears all partials!" task :clear_partials!, [] => [:environment] do |t, args| Ecm::Cms::Partial.delete_all end desc "Clears all templates!" task :clear_templates!, [] => [:environment] do |t, args| Ecm::Cms::Template.delete_all end desc "Creates example data" task :populate, [] => [:environment] do |t, args| Rake::Task["ecm:cms:db:populate_folders"].execute Rake::Task["ecm:cms:db:populate_pages"].execute # Rake::Task["ecm:cms:db:populate_templates"].execute # Rake::Task["ecm:cms:db:populate_partials"].execute Rake::Task["ecm:cms:db:populate_navigations"].execute Rake::Task["ecm:cms:db:populate_navigation_items"].execute end desc "Creates example navigations" task :populate_navigations, [] => [:environment] do |t, args| navigations = { :de => [ { :name => 'i18n' }, { :name => 'legal' }, { :name => 'main' } ], :en => [ { :name => 'i18n' }, { :name => 'legal' }, { :name => 'main' } ] }.with_indifferent_access I18n.available_locales.each do |locale| navigations[locale].each do |navigation| Ecm::Cms::Navigation.create!(navigation.reverse_merge!({ :locale => locale.to_s })) end if navigations.has_key?(locale) end end desc "Creates example navigation items" task :populate_navigation_items, [] => [:environment] do |t, args| items = { :de => { :i18n => [ { :name => 'Deutsch', :key => 'i18n_de', :url => '/de', :options => nil}, { :name => 'English', :key => 'i18n_de', :url => '/en', :options => nil} ], :legal => [ { :name => 'Impressum', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'impressum', :locale => 'de').first, :key => 'imprint', :url => nil, :options => nil}, { :name => 'AGB', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'agb', :locale => 'de').first, :key => 'terms_of_service', :url => nil, :options => nil} ], :main => [ { :name => 'Home', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'home', :locale => 'de').first, :key => 'home', :url => nil, :options => nil }, { :name => 'Über uns', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'ueber-uns', :locale => 'de').first, :key => 'about_us', :url => nil , :options => nil }, { :name => 'Anfahrt', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'anfahrt', :locale => 'de').first, :key => 'approach', :url => nil, :options => nil }, { :name => 'Kontakt', :ecm_cms_page => nil, :key => 'contact', :url => '/de/kontakt', :options => nil } ] }, :en => { :i18n => [ { :name => 'Deutsch', :key => 'i18n_de', :url => '/de', :options => nil}, { :name => 'English', :key => 'i18n_en', :url => '/en', :options => nil} ], :legal => [ { :name => 'Imprint', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'imprint', :locale => 'en').first, :key => 'imprint', :url => nil, :options => nil}, { :name => 'Terms of Service', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'terms-of-service', :locale => 'en').first, :key => 'terms_of_service', :url => nil, :options => nil} ], :main => [ { :name => 'Home', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'home', :locale => 'en').first, :key => 'home', :url => nil, :options => nil }, { :name => 'About us', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'about-us', :locale => 'en').first, :key => 'about_us', :url => nil , :options => nil }, { :name => 'Approach', :ecm_cms_page => Ecm::Cms::Page.where(:basename => 'approach', :locale => 'en').first, :key => 'approach', :url => nil, :options => nil }, { :name => 'Contact', :ecm_cms_page => nil, :key => 'contact', :url => '/en/contact', :options => nil } ] } }.with_indifferent_access I18n.available_locales.each do |locale| Ecm::Cms::Navigation.where(:locale => locale,:name => [items[locale].keys]).all.each do |navigation| items[locale][navigation.name].each do |item| navigation.ecm_cms_navigation_items.create!(item) end end end end desc "Creates example folders" task :populate_folders, [] => [:environment] do |t, args| end desc "Creates example pages" task :populate_pages, [] => [:environment] do |t, args| pages = { :en => [ { :title => 'Home', :body => '