diff --git a/app/controllers/merged/pages_controller.rb b/app/controllers/merged/pages_controller.rb index a2df5f4..7e80cb0 100644 --- a/app/controllers/merged/pages_controller.rb +++ b/app/controllers/merged/pages_controller.rb @@ -25,13 +25,19 @@ module Merged def create name = params[:name] if( name.blank? ) - @pages = Page.all - flash.now.alert = "Must enter name" - render :index + flash.alert = "Must enter name" + redirect_to pages_url else @page = Page.new_page(name , params[:type]) @page.add_save(current_member.email) - redirect_to new_page_section_url(@page.id) , notice: "Page was successfully created." + template = PageStyle.find_by_type(@page.type).section_template + if(template) + section = @page.new_section(template) + section.add_save(current_member.email) + redirect_to section_url(section.id) , notice: "Page was successfully created." + else + redirect_to new_page_section_url(@page.id) , notice: "Page was successfully created. Choose first section" + end end end diff --git a/app/models/merged/page.rb b/app/models/merged/page.rb index c29e271..558cac8 100644 --- a/app/models/merged/page.rb +++ b/app/models/merged/page.rb @@ -63,8 +63,8 @@ module Merged super end - def self.new_page(name ) - data = { name: name.dup , updated_at: Time.now } + def self.new_page(name , type) + data = { name: name.dup , updated_at: Time.now , type: type} Page.new(data) end diff --git a/app/views/merged/pages/index.haml b/app/views/merged/pages/index.haml index 806da3e..589769c 100644 --- a/app/views/merged/pages/index.haml +++ b/app/views/merged/pages/index.haml @@ -27,20 +27,19 @@ =page.updated_by - s = page.sections_update %td.whitespace-nowrap.px-4.py-2.text-gray-700 - =distance_of_time_in_words_to_now(s.updated_at) + =distance_of_time_in_words_to_now(s.updated_at) if s %td.whitespace-nowrap.px-4.py-2.text-gray-700 - =s.updated_by + =s.updated_by if s %td.whitespace-nowrap.px-4.py-2 %strong.rounded.bg-green-100.px-3.text-xs.font-medium.text-green-700{:class => "py-1.5"} = link_to 'Sections', merged.page_sections_path(page.id) %strong.rounded.bg-amber-100.px-3.text-xs.font-medium.text-amber-700{:class => "py-1.5"} = link_to 'Edit', merged.page_path(page.id) -.grid.grid-cols-3.gap-2.m-8.new_page - .relative.block.border.border-gray-100 - = form_tag( merged.pages_path , {method: :post } ) do - %label.block - %h4.text-lg.font-bold Name - = text_field_tag( :name , params[:name], class: "block w-full rounded-lg border-gray-200 p-4 pr-12 text-sm shadow-sm") - - @page_styles.each do |page| - %button.mt-3.bg-cyan-200{class: button_classes , name: :type , value: page.type}= "New #{page.type.capitalize}" +.flex.mx-20.new_page + = form_tag( merged.pages_path , {method: :post } ) do + %label.block + %h4.text-lg.font-bold Name + = text_field_tag( :name , params[:name], class: "block w-full rounded-lg border-gray-200 p-4 pr-12 text-sm shadow-sm") + - @page_styles.each do |page| + %button.mt-3.bg-cyan-200{class: button_classes , name: :type , value: page.type}= "New #{page.type.capitalize}" diff --git a/test/integration/pages_test.rb b/test/integration/pages_test.rb index 4caad90..ee4b278 100644 --- a/test/integration/pages_test.rb +++ b/test/integration/pages_test.rb @@ -31,14 +31,14 @@ class PagesWrite < ActionDispatch::IntegrationTest click_on ("Update") end end - def test_new_works_without + def test_new_handles_noinput visit "/merged/pages" within(".new_page") do click_on ("New Page") end assert_equal "/merged/pages" , current_path end - def test_new_works_with_name + def test_new_page_works_with_name visit "/merged/pages" within(".new_page") do fill_in 'Name', with: 'New Page' @@ -47,6 +47,15 @@ class PagesWrite < ActionDispatch::IntegrationTest assert_equal "/merged/sections/41/select_template" , current_path end + def test_new_blog_works_with_name + visit "/merged/pages" + within(".new_page") do + fill_in 'Name', with: 'New Page' + click_on ("New Blog") + end + assert_equal "/merged/sections/41" , current_path + end + def test_delete_works id = Merged::Page.first.id visit merged.page_sections_path(id) diff --git a/test/models/change_set_test.rb b/test/models/change_set_test.rb index 268621c..46f97c6 100644 --- a/test/models/change_set_test.rb +++ b/test/models/change_set_test.rb @@ -49,7 +49,7 @@ module Merged end def test_page_new - studios = Page.new_page("new") + studios = Page.new_page("new" , :page) studios.add_save("email") assert_equal "new" , change.added("Page").first.last assert_nil change.edited("Page").first diff --git a/test/models/option_definition_test.rb b/test/models/option_definition_test.rb index 349d106..6d5c366 100644 --- a/test/models/option_definition_test.rb +++ b/test/models/option_definition_test.rb @@ -11,7 +11,7 @@ module Merged assert_equal OptionDefinition.first.class , OptionDefinition end def test_there_options - assert_equal OptionDefinition.all.length , 18 + assert_equal OptionDefinition.all.length , 19 end def test_has_option_objects assert_equal first.class , OptionDefinition diff --git a/test/models/page_test.rb b/test/models/page_test.rb index f9fbd07..21fb92a 100644 --- a/test/models/page_test.rb +++ b/test/models/page_test.rb @@ -10,11 +10,6 @@ module Merged def test_all assert_equal 2 , Page.all.length end - def test_creates_page - name = "randomname" - page = Page.new_page( name) - assert_equal page.name , name - end def test_has_type assert_equal index.type , "page" diff --git a/test/models/page_write_test.rb b/test/models/page_write_test.rb index f2f9e21..ba77ea8 100644 --- a/test/models/page_write_test.rb +++ b/test/models/page_write_test.rb @@ -8,6 +8,24 @@ module Merged Page.find_by_name('index') end + def test_creates_page + name = "randomname" + page = Page.new_page( name , "page") + assert_equal page.name , name + assert_equal page.sections.length , 0 + end + + def test_creates_blog + name = "randomname" + page = Page.new_page( name , "blog") + assert_equal page.name , name + page.add_save("me") + template = PageStyle.find_by_type(page.type).section_template + section = page.new_section(template) + section.add_save("me") + assert_equal page.sections.length , 1 + end + def test_deletes id = index.id index.delete