From 90b8c85f6de8f2156d19ea428a9188dc244cec8f Mon Sep 17 00:00:00 2001 From: Andy Olliver Date: Wed, 21 May 2014 21:39:32 +0100 Subject: [PATCH] enable publish 1st draft on save, when no changes --- lib/cms/behaviors/versioning.rb | 9 +++++++-- test/unit/behaviors/publishing_mini_test.rb | 6 ++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/cms/behaviors/versioning.rb b/lib/cms/behaviors/versioning.rb index 63bcb8b1e..f8ac3bd7b 100644 --- a/lib/cms/behaviors/versioning.rb +++ b/lib/cms/behaviors/versioning.rb @@ -220,8 +220,13 @@ def create_or_update self.skip_callbacks = false unless different_from_last_draft? logger.debug { "No difference between this version and last. Skipping save" } - self.skip_callbacks = true - return true + if !published && publish_on_save + logger.debug { "Publishing current draft version" } + return publish + else + self.skip_callbacks = true + return true + end end logger.debug { "Saving #{self.class} #{self.attributes}" } if new_record? diff --git a/test/unit/behaviors/publishing_mini_test.rb b/test/unit/behaviors/publishing_mini_test.rb index bd09c2bcd..3ff318cc4 100644 --- a/test/unit/behaviors/publishing_mini_test.rb +++ b/test/unit/behaviors/publishing_mini_test.rb @@ -64,6 +64,12 @@ draft_block.versions.size.must_equal 1 end + it "should publish a draft block, without creating a version, when saving 1st draft version as published" do + draft_block.save.must_equal true + draft_block.must_be_published + draft_block.versions.size.must_equal 1 + end + it "should return false if there was no draft copy to publish" do block.publish.must_equal false block.must_be_published