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