Sha256: f379a86f3f2cf6a943cc1ce317bae6a4f5b927ee0ea0814e0b36fcf5e7a93bc7

Contents?: true

Size: 918 Bytes

Versions: 26

Compression:

Stored size: 918 Bytes

Contents

module Ddr
  module Managers
    class WorkflowManager < Manager

      PUBLISHED = "published"
      UNPUBLISHED = "unpublished"

      def published?
        object.workflow_state == PUBLISHED
      end

      def publish!(include_descendants: true)
        unless published?
          publish
          object.save
        end
        if include_descendants && object.respond_to?(:children)
          object.children.each { |child| child.publish!(include_descendants: include_descendants) }
        end
      end

      def unpublish!
        if published?
          unpublish
          object.save
        end
        if object.respond_to?(:children)
          object.children.each { |child| child.unpublish! }
        end
      end

      private

      def publish
        object.workflow_state = PUBLISHED
      end

      def unpublish
        object.workflow_state = UNPUBLISHED
      end

    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
ddr-models-3.0.8 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.7 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.6 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.5 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.4 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.3 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.2 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.1 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.rc6 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.rc5 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.rc4 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.rc3 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.rc2 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.rc1 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.beta.22 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.beta.21 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.beta.20 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.beta.18 lib/ddr/managers/workflow_manager.rb
ddr-models-3.0.0.beta.17 lib/ddr/managers/workflow_manager.rb