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 &amp; 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 &amp; 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