xowiki::Page instproc www-delete-revision (public)
<instance of xowiki::Page> www-delete-revision
Defined in /var/www/openacs.org/packages/xowiki/tcl/xowiki-www-procs.tcl
This web-callable method deletes a single revision of a Page, which is actually performed by the "delete_revision" method of the package, which is responsible for caching. Since we instantiate the Page based on the "revision_id" query parameter, it is sufficient to delete here just based on the current instance variable of the revision_id.
- Testcases:
- No testcase defined.
Source code: set item_id ${:item_id} ::xo::dc 1row -prepare integer get_revision { select latest_revision,live_revision from cr_items where item_id = :item_id } # do real deletion via package ${:package_id} delete_revision -revision_id ${:revision_id} -item_id $item_id if {$live_revision == ${:revision_id}} { # latest revision might have changed by delete_revision, so we have to fetch here xo::dc 1row -prepare integer get_revision {select latest_revision from cr_items where item_id = :item_id} if {$latest_revision eq ""} { # we are out of luck, this was the final revision, delete the item ${:package_id} delete -name ${:name} -item_id $item_id } else { # 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 ""} { # otherwise, "delete" did already the redirect ${:package_id} returnredirect [:query_parameter return_url:localurl [export_vars -base [${:package_id} url] {{m revisions}}]] }XQL Not present: Generic, PostgreSQL, Oracle