Index: openacs-4/packages/acs-content-repository/www/doc/guide/revisions.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-content-repository/www/doc/guide/revisions.html,v diff -u -r1.1.1.1 -r1.1.1.1.30.1 --- openacs-4/packages/acs-content-repository/www/doc/guide/revisions.html 13 Mar 2001 22:59:26 -0000 1.1.1.1 +++ openacs-4/packages/acs-content-repository/www/doc/guide/revisions.html 22 Jun 2016 07:40:41 -0000 1.1.1.1.30.1 @@ -4,39 +4,39 @@
At a basic level, creating a new revision of a content item involves the following steps:
Content revisions are initialized using the -content_revision.new function. The only parameters required +content_revision.new function. The only parameters required to create the revision are a title, a content item ID, and some text:
@@ -47,16 +47,16 @@ Here comes a car...uh oh! The End' ); -The item_id parameter is ID of the content item with +
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:
+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:
revision_id := content_revision.new( title => 'A Revision', @@ -74,12 +74,12 @@Insert additional attributes
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 +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:
-
-- Call content_revision.new followed by manual +
- Call content_revision.new followed by manual DML statements to write data into the content BLOB and insert attributes.
- Write a PL/SQL package for each of your content types, @@ -88,16 +88,16 @@ for each content type.
The last option is made possible by an instead of insert +
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 and -cr_revisions). Normally it is not possible to insert into a -view. Oracle allows you to create an instead of trigger for +ancestors of each content type, including acs_objects and +cr_revisions). Normally it is not possible to insert into a +view. Oracle allows you to create an instead of trigger for a view, however, which intercepts the DML statement and allows you to execute an arbitrary block of PL/SQL instead. The code to create or replace the trigger is automatically generated and executed with each -call to content_type.create_attribute. The trigger makes it +call to content_type.create_attribute. The trigger makes it possible to create complete revisions with a single insert statement:
@@ -122,17 +122,17 @@Selecting a live revision
The live revision of a content item can be obtained with the -content_item.get_live_revision function:
+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 +
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 +obtained with the content_item.get_latest_revision function:
latest_revision_id := content_item.get_latest_revision(