Index: openacs-4/packages/acs-content-repository/www/doc/guide/revisions.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/revisions.adp,v
diff -u -r1.2.2.1 -r1.2.2.2
--- openacs-4/packages/acs-content-repository/www/doc/guide/revisions.adp 20 Aug 2015 17:19:50 -0000 1.2.2.1
+++ openacs-4/packages/acs-content-repository/www/doc/guide/revisions.adp 25 Aug 2015 18:02:05 -0000 1.2.2.2
@@ -4,10 +4,10 @@
At a basic level, creating a new revision of a content item
-involves the following steps: At a basic level, creating a new revision of a content item
+involves the following steps: Content revisions are initialized using the
+ Content revisions are initialized using the
content_revision.new function. The only parameters
required to create the revision are a title, a content item ID, and
-some text:Creating Content Revisions
+
+Creating Content Revisions
+
Use the Content Revision API to create a revision
Use the Content Revision API to create a revision
+
+some text:
revision_id := content_revision.new( title => 'A Revision', item_id => :item_id, text => 'Once upon a time Goldilocks crossed the street. Here comes a car...uh oh! The End' ); -
The item_id parameter is ID of the content item with -which the revision is associated.
The content_item.new function accepts a number of other + +
The item_id parameter is ID of the content item with +which the revision is associated.
+The content_item.new function accepts a number of other optional parameters: description, mime_type, and publish_date. The standard creation_date, creation_user, and creation_ip should be specified for auditing purposes. Instead of the text parameter, this function can be called with a data -parameter, in which data is a blob:
+parameter, in which data is a blob: ++revision_id := content_revision.new( title => 'A Revision', description => 'A Description of a revision', @@ -46,17 +52,21 @@ creation_user => :user_id, creation_ip => :ip_address ); -Insert additional attributes
Given that there is no way (AFAIK) to pass variable parameters +
Given that there is no way (AFAIK) to pass variable parameters to a PL/SQL function, there is no way to make content_revision.new generic enough to support submission of the attributes for all different content types. This leaves you -with three alternatives:
The last option is made possible by an instead of +
The last option is made possible by an instead of insert trigger on the attribute view for each content type. (An attribute view joins together the storage tables for the ancestors of each content type, including acs_objects @@ -68,32 +78,44 @@ and executed with each call to content_type.create_attribute. The trigger makes it possible to create complete revisions with a single insert -statement:
+statement: ++insert into cr_revisionsx ( item_id, revision_id, title ) values ( 18, 19, 'All About Revisions' ); -Because a special trigger is generated for each content type +
Because a special trigger is generated for each content type that includes insert statements for all inherited tables, revisions -with extended attributes may be created in the same fashion:
+with extended attributes may be created in the same fashion: ++insert into cr_imagesx ( item_id, revision_id, title, height, width ) values ( 18, 19, 'A Nice Drawing', 300, 400 ); -Inserting content via file or text upload
Selecting a live revision
The live revision of a content item can be obtained with the -content_item.get_live_revision function:
++Inserting content via file or text upload
+Selecting a live revision
+The live revision of a content item can be obtained with the +content_item.get_live_revision function:
+live_revision_id := content_item.get_live_revision( item_id => :item_id ); -The item_id identifies the content item with which the -revision is associated.
Likewise, the most recent revision of a content item can be +
The item_id identifies the content item with which the +revision is associated.
+Likewise, the most recent revision of a content item can be obtained with the content_item.get_latest_revision -function:
+function: ++latest_revision_id := content_item.get_latest_revision( item_id => :item_id ); -
karlg\@arsdigita.comLast Modified: $Id: revisions.html,v 1.1.1.1 2001/03/13 22:59:26 +
Last Modified: $Id: revisions.html,v 1.1.1.1 2001/03/13 22:59:26 ben Exp $
-