Home / Forum / eZ 4.x Custom Edit Handler

eZ 4.x Custom Edit Handler

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein

Autor Nachricht

internet innovations

Registriert seit: 26.03.2009

Beiträge: 14

Dienstag, 14. April 2009 21:28:13

Hallo,
kennt sich hier vielleicht jemand mit dem Custom Edit Handler von Łukasz aus?

Ich habe den jetzt unter 4.1.0 zum laufen bekommen . . .

<?php
class CustomEditHandler extends eZContentObjectEditHandler
{
   function fetchInput( $http, &$module, &$class, $object, &$version, $contentObjectAttributes, $editVersion, $editLanguage, $fromLanguage )
   {

   }

   static function storeActionList()
   {
       return array();
   }

   function publish( $contentObjectID, $contentObjectVersion )
   {
        // fetch object
        $object =& eZContentObject::fetch( $contentObjectID );
        // get content class object
        $contentClass =& $object->attribute('content_class');
 
        // check if currently published object is USER
        if ( $contentClass->attribute( 'id' ) == 4 )
        {
            include_once( 'lib/ezutils/classes/ezoperationhandler.php' );
 
            // prepare new object data
            $parentNodeID = 2;
            $userID = $object->attribute( 'id' );
            $class = eZContentClass::fetchByIdentifier( 'folder' );
            $parentContentObjectTreeNode = eZContentObjectTreeNode::fetch( $parentNodeID );
            $parentContentObject = $parentContentObjectTreeNode->attribute( 'object' );
            $sectionID = $parentContentObject->attribute( 'section_id' );
 
            $contentObject = $class->instantiate( $userID, $sectionID );
            $contentObjectID = $contentObject->attribute( 'id' );
 
            $nodeAssignment = eZNodeAssignment::create( array( 
                                     'contentobject_id' => $contentObject->attribute( 'id' ),
                                     'contentobject_version' => $contentObject->attribute( 'current_version' ),
                                     'parent_node' => $parentContentObjectTreeNode->attribute( 'node_id' ),
                                     'sort_field' => 2, // Published

                                     'sort_order' => 1, // Descending
                                     'is_main' => 1 ) );
            $nodeAssignment->store();
 
            $contentObjectAttributes =& $contentObject->contentObjectAttributes();
 
            $loopLenght = count( $contentObjectAttributes );
 
            // Fill up content object name attribute with user object name
            for( $i = 0; $i < $loopLenght; $i++ )
            {
                switch( $contentObjectAttributes[$i]->attribute( 'contentclass_attribute_identifier' ) )
                {
                    case 'name':
                        $contentObjectAttributes[$i]->setAttribute( 'data_text', $object->attribute( 'name' ) );
                        $contentObjectAttributes[$i]->store();
                        break;
                }
            }
 
            $contentObject->setAttribute( 'status', EZ_VERSION_STATUS_DRAFT );
            $contentObject->store();
 
            // publish new object
            $operationResult = eZOperationHandler::execute( 'content', 'publish', array( 'object_id' => $contentObjectID, 'version' => 1 ) );
        }
 
    }
}
?>


1. Was muss jetzt gemacht werden das nicht bei jedem edit - ein neuer Ordner für den User angelegt wird?
$params= array( 'Depth'=> 1);
$childs = eZContentObjectTreeNode::subTree( $params ,$parentNodeID );
$already_has_folder=false;
foreach ($childs as $child)
{
if ($child->ContentObject->OwnerID==$userID)
$already_has_folder=true;
break;
}
if ($already_has_folder==false)
{
//folder creation code
}

So steht es zumindest mal auf: http://serwatka.net/index.php/en/..._publish_3_8_new_custom_edit_handler
funktioniert bei mir aber nicht egal wo ich das einbaue. . .

2. Momentan wird der Vor- und Nachname für den Ordner benützt.
Was muss denn geändert werden damit der Loginname dafür hergenommen wird?
Kann ich auch gleich hier einen URL Handler mit einbauen damit ich folgendes erhalte: <login>.domain.url bzw. das jeder Ordner über Subdomain erreichbar ist!? Oder muss das an anderer Stelle gemacht werden?

3. Kann ich im gleichen Schritt auch Blog und Forum etc. mit anlegen oder sind eigene Handler dafür besser?
Das wäre dann die Krönung wenn in einem Rutsch folgendes angelegt werden könnte:
folder_user14 = <login>.domain.url
-blog_user14 = <login>.domain.url/blog
-forum_user14 = <login>.domain.url/forum

Für jede Idee bin ich dankbar und freue mich schon auf eure Anregungen und Vorschläge!

Gruss

<<-------------------->>
xiixx: internet innovations

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein