Index: openacs-4/packages/xowiki/tcl/xowiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-procs.tcl,v diff -u -N -r1.472.2.51 -r1.472.2.52 --- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 6 May 2015 09:26:23 -0000 1.472.2.51 +++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 12 Aug 2015 15:53:26 -0000 1.472.2.52 @@ -1418,7 +1418,23 @@ return $object } + # + # Define a specialized version of CrItem.set_live_revision updating the item index. + # + FormPage ad_instproc set_live_revision {-revision_id:required {-publish_status "ready"}} { + @param revision_id + @param publish_status one of 'live', 'ready' or 'production' + } { + next + + # Fetch fresh instance from db so that we have actual values + # from the live revision for the update of the item_index. + + set page [::xo::db::CrClass get_instance_from_db -revision_id $revision_id] + $page update_item_index + } + # # helper for nls and lang # Index: openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl,v diff -u -N -r1.320.2.28 -r1.320.2.29 --- openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 3 Mar 2015 16:04:19 -0000 1.320.2.28 +++ openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 12 Aug 2015 15:53:26 -0000 1.320.2.29 @@ -344,7 +344,11 @@ my instvar package_id name $package_id delete -name $name -item_id $item_id } else { - ::xo::db::sql::content_item set_live_revision -revision_id $latest_revision + # Fetch fresh instance from db so that we have actual values + # from the latest revision for e.g. the update of the + # item_index. + set page [::xo::db::CrClass get_instance_from_db -item_id $item_id -revision_id $latest_revision] + $page set_live_revision -revision_id $latest_revision } } if {$latest_revision ne ""} { @@ -1025,11 +1029,15 @@ # Page instproc make-live-revision {} { - my instvar revision_id item_id package_id - #my log "--M set_live_revision($revision_id)" - ::xo::db::sql::content_item set_live_revision -revision_id $revision_id - set page_id [my query_parameter "page_id"] - ::xo::clusterwide ns_cache flush xotcl_object_cache ::$item_id + my instvar package_id + set page_id [my query_parameter "revision_id"] + if {[string is integer -strict $page_id]} { + set revision_id $page_id + } else { + set revision_id [my set revision_id] + } + #my log "--M set_live_revision $revision_id" + my set_live_revision -revision_id $revision_id ::$package_id returnredirect [my query_parameter "return_url" \ [export_vars -base [$package_id url] {{m revisions}}]] } Index: openacs-4/packages/xowiki/www/admin/set-publish-state.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/admin/set-publish-state.tcl,v diff -u -N -r1.9.2.1 -r1.9.2.2 --- openacs-4/packages/xowiki/www/admin/set-publish-state.tcl 11 Feb 2014 11:58:20 -0000 1.9.2.1 +++ openacs-4/packages/xowiki/www/admin/set-publish-state.tcl 12 Aug 2015 15:53:26 -0000 1.9.2.2 @@ -9,20 +9,17 @@ @param query } -parameter { {-state:required} - {-revision_id:required} + {-revision_id:integer,required} {-return_url "."} } -set item_id [xo::dc get_value get_item_id \ - {select item_id from cr_revisions where revision_id = :revision_id}] +set page [::xo::db::CrClass get_instance_from_db -revision_id $revision_id] +$page set_live_revision \ + -revision_id $revision_id \ + -publish_status $state -ns_cache flush xotcl_object_cache ::$item_id ns_cache flush xotcl_object_cache ::$revision_id -::xo::db::sql::content_item set_live_revision \ - -revision_id $revision_id \ - -publish_status $state - if {$state ne "production"} { ::xowiki::notification::do_notifications -revision_id $revision_id ::xowiki::datasource $revision_id