Added continue functionality to snippets.
DeLynn Berry
committed Apr 02, 2011
commit 43194080b42edfdaed082dd40a55519b1e64e3f8
Showing 4
changed files with
61 additions
and 26 deletions
app/controllers/cms_admin/snippets_controller.rb
+12
-12
| @@ | @@ -1,51 +1,51 @@ |
| class CmsAdmin::SnippetsController < CmsAdmin::BaseController | |
| - | |
| + | |
| before_filter :build_cms_snippet, :only => [:new, :create] | |
| before_filter :load_cms_snippet, :only => [:edit, :update, :destroy] | |
| - | |
| + | |
| def index | |
| return redirect_to :action => :new if @cms_site.cms_snippets.count == 0 | |
| @cms_snippets = @cms_site.cms_snippets.all(:order => 'label') | |
| end | |
| - | |
| + | |
| def new | |
| render | |
| end | |
| - | |
| + | |
| def edit | |
| render | |
| end | |
| - | |
| + | |
| def create | |
| @cms_snippet.save! | |
| flash[:notice] = 'Snippet created' | |
| - | redirect_to :action => :edit, :id => @cms_snippet |
| + | redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_snippet}) |
| rescue ActiveRecord::RecordInvalid | |
| flash.now[:error] = 'Failed to create snippet' | |
| render :action => :new | |
| end | |
| - | |
| + | |
| def update | |
| @cms_snippet.update_attributes!(params[:cms_snippet]) | |
| flash[:notice] = 'Snippet updated' | |
| - | redirect_to :action => :edit, :id => @cms_snippet |
| + | redirect_to (params[:commit] ? {:action => :index} : {:action => :edit, :id => @cms_snippet}) |
| rescue ActiveRecord::RecordInvalid | |
| flash.now[:error] = 'Failed to update snippet' | |
| render :action => :edit | |
| end | |
| - | |
| + | |
| def destroy | |
| @cms_snippet.destroy | |
| flash[:notice] = 'Snippet deleted' | |
| redirect_to :action => :index | |
| end | |
| - | |
| + | |
| protected | |
| - | |
| + | |
| def build_cms_snippet | |
| @cms_snippet = @cms_site.cms_snippets.new(params[:cms_snippet]) | |
| end | |
| - | |
| + | |
| def load_cms_snippet | |
| @cms_snippet = @cms_site.cms_snippets.find(params[:id]) | |
| rescue ActiveRecord::RecordNotFound | |
app/views/cms_admin/snippets/edit.html.erb
+4
-1
| @@ | @@ -2,5 +2,8 @@ |
| <%= cms_form_for @cms_snippet, :url => {:action => :update} do |form| %> | |
| <%= render :partial => 'form', :object => form %> | |
| - | <%= form.submit 'Update Snippet' %> |
| + | <%= form.simple_field nil, nil, :class => 'submit_element' do %> |
| + | <%= form.submit 'Update Snippet', :disable_builder => true %> |
| + | <%= form.submit 'Update & Edit'.html_safe, :name => "save", :disable_builder => true %> |
| + | <% end %> |
| <% end %> | |
| \ No newline at end of file | |
app/views/cms_admin/snippets/new.html.erb
+4
-1
| @@ | @@ -2,5 +2,8 @@ |
| <%= cms_form_for @cms_snippet, :url => {:action => :create} do |form| %> | |
| <%= render :partial => 'form', :object => form %> | |
| - | <%= form.submit 'Create Snippet' %> |
| + | <%= form.simple_field nil, nil, :class => 'submit_element' do %> |
| + | <%= form.submit 'Create Snippet', :disable_builder => true %> |
| + | <%= form.submit 'Create & Edit'.html_safe, :name => "save", :disable_builder => true %> |
| + | <% end %> |
| <% end %> | |
| \ No newline at end of file | |
test/functional/cms_admin/snippets_controller_test.rb
+41
-12
| @@ | @@ -8,14 +8,14 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| assert assigns(:cms_snippets) | |
| assert_template :index | |
| end | |
| - | |
| + | |
| def test_get_index_with_no_snippets | |
| CmsSnippet.delete_all | |
| get :index | |
| assert_response :redirect | |
| assert_redirected_to :action => :new | |
| end | |
| - | |
| + | |
| def test_get_new | |
| get :new | |
| assert_response :success | |
| @@ | @@ -23,7 +23,7 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| assert_template :new | |
| assert_select 'form[action=/cms-admin/snippets]' | |
| end | |
| - | |
| + | |
| def test_get_edit | |
| snippet = cms_snippets(:default) | |
| get :edit, :id => snippet | |
| @@ | @@ -32,15 +32,30 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| assert_template :edit | |
| assert_select "form[action=/cms-admin/snippets/#{snippet.id}]" | |
| end | |
| - | |
| + | |
| def test_get_edit_failure | |
| get :edit, :id => 'not_found' | |
| assert_response :redirect | |
| assert_redirected_to :action => :index | |
| assert_equal 'Snippet not found', flash[:error] | |
| end | |
| - | |
| - | def test_creation |
| + | |
| + | def test_create_with_commit |
| + | assert_difference 'CmsSnippet.count' do |
| + | post :create, :cms_snippet => { |
| + | :label => 'Test Snippet', |
| + | :slug => 'test-snippet', |
| + | :content => 'Test Content' |
| + | }, :commit => 'Create Snippet' |
| + | assert_response :redirect |
| + | snippet = CmsSnippet.last |
| + | assert_equal cms_sites(:default), snippet.cms_site |
| + | assert_redirected_to :action => :index |
| + | assert_equal 'Snippet created', flash[:notice] |
| + | end |
| + | end |
| + | |
| + | def test_create_without_commit |
| assert_difference 'CmsSnippet.count' do | |
| post :create, :cms_snippet => { | |
| :label => 'Test Snippet', | |
| @@ | @@ -54,7 +69,7 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| assert_equal 'Snippet created', flash[:notice] | |
| end | |
| end | |
| - | |
| + | |
| def test_creation_failure | |
| assert_no_difference 'CmsSnippet.count' do | |
| post :create, :cms_snippet => { } | |
| @@ | @@ -63,8 +78,22 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| assert_equal 'Failed to create snippet', flash[:error] | |
| end | |
| end | |
| - | |
| - | def test_update |
| + | |
| + | def test_update_with_commit |
| + | snippet = cms_snippets(:default) |
| + | put :update, :id => snippet, :cms_snippet => { |
| + | :label => 'New-Snippet', |
| + | :content => 'New Content' |
| + | }, :commit => 'Update Snippet' |
| + | assert_response :redirect |
| + | assert_redirected_to :action => :index |
| + | assert_equal 'Snippet updated', flash[:notice] |
| + | snippet.reload |
| + | assert_equal 'New-Snippet', snippet.label |
| + | assert_equal 'New Content', snippet.content |
| + | end |
| + | |
| + | def test_update_without_commit |
| snippet = cms_snippets(:default) | |
| put :update, :id => snippet, :cms_snippet => { | |
| :label => 'New-Snippet', | |
| @@ | @@ -77,7 +106,7 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| assert_equal 'New-Snippet', snippet.label | |
| assert_equal 'New Content', snippet.content | |
| end | |
| - | |
| + | |
| def test_update_failure | |
| snippet = cms_snippets(:default) | |
| put :update, :id => snippet, :cms_snippet => { | |
| @@ | @@ -89,7 +118,7 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| assert_not_equal '', snippet.label | |
| assert_equal 'Failed to update snippet', flash[:error] | |
| end | |
| - | |
| + | |
| def test_destroy | |
| assert_difference 'CmsSnippet.count', -1 do | |
| delete :destroy, :id => cms_snippets(:default) | |
| @@ | @@ -98,5 +127,5 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase |
| assert_equal 'Snippet deleted', flash[:notice] | |
| end | |
| end | |
| - | |
| + | |
| end | |
| \ No newline at end of file | |