/**
  * Überschreibt die AbstractEntityController FUnktion die den FormPanel abspeichert
  * 
  */
 protected function processEntityFormRequest(Entity $entity, FormData $requestData, $revision)
 {
     $dataName = 'layoutManager';
     if (isset($requestData->{$dataName}) && count($requestData->{$dataName}) > 0) {
         $serialized = $requestData->{$dataName};
     }
     /*else {
         throw $this->err->validationError($dataName, NULL, new \Psc\Exception('Das Layout muss mindestens 1 Element enthalten'));
       }*/
     // da wir keine unique constraints haben und neu sortieren müssen , nehmen wir die holzhammer methode:
     // delete all
     foreach ($entity->getEntries() as $entry) {
         // den entry selbst löschen
         $this->repository->remove($entry);
     }
     // auch aus dem CS löschen, weil der sonst automatisch persisted und das remove oben keinen effect hat
     $entity->getEntries()->clear();
     /*
      PS: im Moment werden Entries von ContentStreams innerhalb des ContentStreams nicht mit delete all gelöscht
      d.h. hier bleiben relativ viele leichen übrig (auch contentstreams selbst). Bei unserialize wird im 
      sub-ContentStream einfach eine neue instanz erzeugt die dann automatisch persisted wird
     */
     if (isset($serialized)) {
         // persist new
         $this->getContentStreamConverter()->convertUnserialized($requestData->{$dataName}, $entity);
     }
 }
示例#2
0
 /**
  * @return Psc\CMS\RequestMeta
  */
 public function getDeleteRequestMeta(Entity $entity = NULL)
 {
     if (!isset($this->deleteRequestMeta)) {
         $idIsInt = ($type = $this->getIdentifier()->getType()) instanceof IntegerType;
         $this->deleteRequestMeta = new RequestMeta(\Psc\Net\HTTP\Request::DELETE, $this->constructUrl(array($this->getEntityName(), $idIsInt ? '%d' : '%s')), array($type));
     }
     if (isset($entity)) {
         $meta = clone $this->deleteRequestMeta;
         return $meta->setInput($entity->getIdentifier());
     }
     return $this->deleteRequestMeta;
 }
 /**
  * 
  * @return EntityFormPanel
  */
 public function createFormPanel(Entity $entity, $panelLabel = NULL)
 {
     $entityMeta = $this->getEntityMeta();
     $panel = $this->ev->createFormPanel($panelLabel ?: ($entity->isNew() ? $entityMeta->getNewLabel() : $entityMeta->getEditLabel()), $this->ev->createEntityForm($entity, $entity->isNew() ? $entityMeta->getNewRequestMeta($entity) : $entityMeta->getSaveRequestMeta($entity)));
     return $panel;
 }
示例#4
0
 /**
  * Das Label z.b. für RightContentLinkable
  */
 public function getLinkLabel()
 {
     return $this->linkLabel ?: $this->entity->getContextLabel($this->context);
     // sollte dann rightcontent sein oder so
 }
示例#5
0
 /**
  * Erstellt aus dem Request und dem FormPanel ein Set mit allen FormularDaten
  *
  * man könnte sich hier auch mal vorstellen die formulardaten im set aufzusplitten
  * Sicherheit: alle Felder die nicht registriert sind durch Componenten oder den Formpanel (getControlFields) schmeissen hier eine Exception
  */
 public function createFormDataSet(FormData $requestData, EntityFormPanel $panel, Entity $entity)
 {
     $meta = $entity->getSetMeta();
     // wir müssen die Spezial-Felder vom EntityFormPanel hier tracken
     foreach ($panel->getControlFields() as $field) {
         $meta->setFieldType($field, Type::create('String'));
     }
     // sonderfeld disabled wird ignored
     $meta->setFieldType('disabled', Type::create('Array'));
     try {
         $set = new Set((array) $requestData, $meta);
     } catch (\Psc\Data\FieldNotDefinedException $e) {
         throw \Psc\Exception::create("In den FormularDaten befindet sich ein Feld '%s', welches kein Feld aus Entity getSetMeta ist (%s).", implode('.', $e->field), implode(', ', $e->avaibleFields));
     }
     return $set;
 }
示例#6
0
 protected function onDelete(Entity $entity)
 {
     $em = $this->dc->getEntityManager();
     foreach ($entity->getNavigationNodes() as $node) {
         $node->setPage($inactivePage = $this->createInactivePage('acreated-page'));
         $em->persist($inactivePage);
         $em->persist($node);
     }
     return parent::onDelete($entity);
 }