lib/scrivito/workspace.rb in scrivito_sdk-0.18.1 vs lib/scrivito/workspace.rb in scrivito_sdk-0.30.0.rc1

- old
+ new

@@ -1,5 +1,7 @@ +require 'active_model/naming' + module Scrivito # This class represents a CMS workspace # @api public class Workspace @@ -121,10 +123,14 @@ response = CmsRestApi.public_send(verb, "#{backend_url}#{path}", payload) reload if [:post, :put, :delete].include?(verb) response end + def task_unaware_api_request(verb, path, payload = nil) + CmsRestApi.task_unaware_request(verb, "#{backend_url}#{path}", payload) + end + # Updates this workspace's attributes # @api public # @param [Hash] attributes # @return [Scrivito::Workspace] def update(attributes) @@ -140,21 +146,13 @@ end # Publish the changes of this workspace # @api public def publish - internal_publish - end + CmsRestApi.put("#{backend_url}/publish", {}) - def conditional_publish - internal_publish(if_content_state_id_equals: content_state.content_state_id) - rescue Scrivito::ClientError => e - if e.message.starts_with?('The specified condition for content_state_id') - raise PublishPreventedDueToContentChange.new(e.message) - else - raise e - end + reset_workspace_if_current end # Rebases the current workspace on the published content # @api public def rebase @@ -198,10 +196,14 @@ def rtc? self.id == 'rtc' end + def outdated? + !published? && Workspace.published.revision.id != base_revision_id + end + def revision @revision ||= Revision.new(id: revision_id, content_state: content_state, workspace: self) end def base_revision @@ -248,24 +250,10 @@ def inspect "<#{self.class} id=\"#{id}\" title=\"#{title}\">" end - def as_json(options = {}) - { - id: id, - title: title, - memberships: memberships, - } - end - private - - def internal_publish(data={}) - CmsRestApi.put("#{backend_url}/publish", data) - - reset_workspace_if_current - end def backend_url "/workspaces/#{id}" end