Saturday 04 September 2004 5:03:27 am
Eirik, This occurs because content/edit doesnt respect the workflow result. I filed this bug a while back: http://ez.no/community/bug_reports/workflow_results_are_ignored_in_content_edit_php Here is a patch i used to get redirects to work. Im not sure if it will work for 'results'. In my workflow i have a line like:
$process->RedirectUrl="/mymodule/myview";
whoich works with this code. Please play with it!
--- old/kernel/content/edit.php 2004-07-27 13:09:30.000000000 +0100
+++ new/kernel/content/edit.php 2004-07-30 15:03:35.408200218 +0100
@@ -30,8 +30,9 @@
// http://www.gnu.org/copyleft/gpl.html.
//
// Contact [email protected] if any conditions of this licencing isn't clear to
// you.
+
//
include_once( 'kernel/classes/eztrigger.php' );
include_once( "lib/ezutils/classes/ezini.php" );
@@ -333,8 +334,38 @@
eZDebug::accumulatorStart( 'publish', '', 'publish' );
$oldObjectName = $object->name();
$operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $object->attribute( 'id' ),
'version' => $version->attribute( 'version' ) ) );
+ $hasRedirected = false;
+switch( $operationResult['status'] )
+{
+ case EZ_MODULE_OPERATION_HALTED:
+ {
+ if ( isset( $operationResult['redirect_url'] ) )
+ {
+
+ eZDebug::writeNotice("redirect_url".$operationResult['redirect_url']);
+ $module->redirectTo( $operationResult['redirect_url'] );
+ $hasRedirected = true;
+ }
+ else if ( isset( $operationResult['result'] ) )
+ {
+ $result =& $operationResult['result'];
+ $resultContent = false;
+ if ( is_array( $result ) )
+ {
+ if ( isset( $result['content'] ) )
+ $resultContent = $result['content'];
+ if ( isset( $result['path'] ) )
+ $Result['path'] = $result['path'];
+ }
+ else
+ $resultContent =& $result;
+ $Result['content'] =& $resultContent;
+ }
+ }break;
+}
+
eZDebug::accumulatorStop( 'publish' );
$object = eZContentObject::fetch( $object->attribute( 'id' ) );
@@ -342,9 +373,8 @@
$http =& eZHttpTool::instance();
$node = $object->mainNode();
- $hasRedirected = false;
if ( $http->hasSessionVariable( 'ParentObject' ) && $http->sessionVariable( 'NewObjectID' ) == $object->attribute( 'id' ) )
{
$parentArray = $http->sessionVariable( 'ParentObject' );
$parentURL = $module->redirectionURI( 'content', 'edit', $parentArray );
paul
|