/**
  * Handle the persisting of the currently loaded model.
  *
  * @return void
  */
 private function doPersist()
 {
     if (!$this->model->getMeta(ModelInterface::IS_CHANGED)) {
         return;
     }
     $this->handlePrePersist();
     // FIXME: manual sorting property handling is not enabled here as it originates from the backend defininiton.
     // Save the model.
     $dataProvider = $this->environment->getDataProvider($this->model->getProviderName());
     $dataProvider->save($this->model);
     $this->handlePostPersist();
     $this->storeVersion($this->model);
 }
コード例 #2
0
ファイル: EditMask.php プロジェクト: zonky2/dc-general
 /**
  * Handle the persisting of the currently loaded model.
  *
  * @return bool True means everything is okay, False error.
  */
 protected function doPersist()
 {
     $environment = $this->getEnvironment();
     $dataProvider = $environment->getDataProvider($this->model->getProviderName());
     $inputProvider = $environment->getInputProvider();
     if (!$this->model->getMeta(ModelInterface::IS_CHANGED)) {
         return true;
     }
     $this->handlePrePersist();
     if ($this->model->getId() === null && $this->getManualSortingProperty()) {
         $models = $dataProvider->getEmptyCollection();
         $models->push($this->model);
         $controller = $environment->getController();
         if ($inputProvider->hasParameter('after')) {
             $after = IdSerializer::fromSerialized($inputProvider->getParameter('after'));
             $previousDataProvider = $environment->getDataProvider($after->getDataProviderName());
             $previousFetchConfig = $previousDataProvider->getEmptyConfig();
             $previousFetchConfig->setId($after->getId());
             $previousModel = $previousDataProvider->fetch($previousFetchConfig);
             if ($previousModel) {
                 $controller->pasteAfter($previousModel, $models, $this->getManualSortingProperty());
             } else {
                 $controller->pasteTop($models, $this->getManualSortingProperty());
             }
         } elseif ($inputProvider->hasParameter('into')) {
             $into = IdSerializer::fromSerialized($inputProvider->getParameter('into'));
             $parentDataProvider = $environment->getDataProvider($into->getDataProviderName());
             $parentFetchConfig = $parentDataProvider->getEmptyConfig();
             $parentFetchConfig->setId($into->getId());
             $parentModel = $parentDataProvider->fetch($parentFetchConfig);
             if ($parentModel) {
                 $controller->pasteInto($parentModel, $models, $this->getManualSortingProperty());
             } else {
                 $controller->pasteTop($models, $this->getManualSortingProperty());
             }
         } else {
             $controller->pasteTop($models, $this->getManualSortingProperty());
         }
         $environment->getClipboard()->clear()->saveTo($environment);
     } else {
         if (!$this->allValuesUnique()) {
             return false;
         }
         // Save the model.
         $dataProvider->save($this->model);
     }
     $this->handlePostPersist();
     $this->storeVersion($this->model);
     return true;
 }
コード例 #3
0
ファイル: ButtonRenderer.php プロジェクト: zonky2/dc-general
 /**
  * Recursively determine all child ids of the passed model.
  *
  * @param ModelInterface $model The model to fetch the ids from.
  *
  * @return string[]
  */
 private function getChildIds(ModelInterface $model)
 {
     if (null === ($childCollections = $model->getMeta($model::CHILD_COLLECTIONS))) {
         return array();
     }
     $result = array(ModelId::fromModel($model)->getSerialized());
     foreach ($childCollections as $collection) {
         foreach ($collection as $child) {
             $result += $this->getChildIds($child);
         }
     }
     return $result;
 }
コード例 #4
0
ファイル: TreeView.php プロジェクト: zonky2/dc-general
 /**
  * Render a given model.
  *
  * @param ModelInterface $objModel    The model to render.
  *
  * @param string         $strToggleID The id of the toggler.
  *
  * @return string
  */
 protected function parseModel($objModel, $strToggleID)
 {
     $event = new FormatModelLabelEvent($this->environment, $objModel);
     $this->environment->getEventDispatcher()->dispatch(DcGeneralEvents::FORMAT_MODEL_LABEL, $event);
     $objModel->setMeta($objModel::LABEL_VALUE, $event->getLabel());
     $objTemplate = $this->getTemplate('dcbe_general_treeview_entry');
     if ($objModel->getMeta($objModel::SHOW_CHILDREN)) {
         $toggleTitle = $this->getEnvironment()->getTranslator()->translate('collapseNode', 'MSC');
     } else {
         $toggleTitle = $this->getEnvironment()->getTranslator()->translate('expandNode', 'MSC');
     }
     $toggleScript = sprintf('Backend.getScrollOffset(); return BackendGeneral.loadSubTree(this, ' . '{\'toggler\':\'%s\', \'id\':\'%s\', \'providerName\':\'%s\', \'level\':\'%s\', \'mode\':\'%s\'});', $strToggleID, $objModel->getId(), $objModel->getProviderName(), $objModel->getMeta('dc_gen_tv_level'), 6);
     $toggleUrlEvent = new AddToUrlEvent('ptg=' . $objModel->getId() . '&provider=' . $objModel->getProviderName());
     $this->getEnvironment()->getEventDispatcher()->dispatch(ContaoEvents::BACKEND_ADD_TO_URL, $toggleUrlEvent);
     $this->addToTemplate('environment', $this->getEnvironment(), $objTemplate)->addToTemplate('objModel', $objModel, $objTemplate)->addToTemplate('select', $this->isSelectModeActive(), $objTemplate)->addToTemplate('intMode', 6, $objTemplate)->addToTemplate('strToggleID', $strToggleID, $objTemplate)->addToTemplate('toggleUrl', $toggleUrlEvent->getUrl(), $objTemplate)->addToTemplate('toggleTitle', $toggleTitle, $objTemplate)->addToTemplate('toggleScript', $toggleScript, $objTemplate);
     return $objTemplate->parse();
 }