Пример #1
0
 /**
  * @return HttpResponse
  * @throws CMSException
  */
 public function getAjaxSettingsBox()
 {
     $pageModel = new PageModel($this->db);
     $cmsPage = $pageModel->getPageByID($this->route->getParam(1));
     $moduleModel = new ModuleModel($this->db);
     $elementInstance = $moduleModel->getElementInstanceByID($this->route->getParam(0), $cmsPage, false, false);
     if ($elementInstance instanceof CmsElementSettingsLoadable === false) {
         return $this->generateResponse(404, 'No configurable module');
     }
     try {
         /** @var CmsElementSettingsLoadable $elementInstance */
         $res = $elementInstance->generateConfigBox($this, $cmsPage->getID());
     } catch (PHPException $e) {
         return $this->generateResponse(500, '<p><b>PHP Error:</b> ' . $e->getMessage() . ' in ' . $e->getFile() . ' (Line: ' . $e->getLine() . ')</p><pre>' . $e->getTraceAsString() . '</pre>');
     } catch (\Exception $e) {
         return $this->generateResponse(500, '<p>' . $e->getMessage() . '</p>');
     }
     return $this->generateResponse(200, $res);
 }
Пример #2
0
 /**
  * @return HttpResponse
  * @throws CMSException
  * @throws HttpException
  * @throws \Exception
  */
 public function restoreElementAjax()
 {
     list($elementType, $elementID, $elementPageID) = explode('-', $this->httpRequest->getVar('module', 'strip_tags'));
     $revisionFile = $this->httpRequest->getVar('revision', 'strip_tags');
     $cmsPage = $this->pageModel->getPageByID($elementPageID);
     $moduleModel = new ModuleModel($this->db);
     $modInstance = $moduleModel->getElementInstanceByID($elementID, $cmsPage);
     try {
         $this->db->setListenersMute(true);
         $this->db->beginTransaction();
         $revisionControl = new RevisionControl($this->db);
         $revisionControl->restoreFromFile($revisionFile);
         $fileNameParts = explode('.', StringUtils::afterLast($revisionFile, '/'));
         $this->updateElementRevision($modInstance, $fileNameParts[2]);
         $this->db->commit();
         $this->db->setListenersMute(false);
     } catch (\Exception $e) {
         $this->db->setListenersMute(false);
         $this->db->rollBack();
         $this->logger->error('Could not restore element ' . $e->getMessage());
         return new HttpResponse(500, 'Could not restore element: ' . $e->getMessage());
     }
     // RENDER ELEMENT AGAIN, SEND BACK
     if ($modInstance instanceof CmsElementSettingsLoadable) {
         /** @var CmsElement $modInstance */
         $moduleModel->reloadSettings($modInstance, $cmsPage);
     }
     $referrerPath = StringUtils::beforeFirst($this->httpRequest->getVar('referrer', 'strip_tags'), '?');
     $httpRequestFrontend = clone $this->httpRequest;
     $httpRequestFrontend->setPath($referrerPath);
     $httpRequestFrontend->setRequestMethod('GET');
     $frontendController = new FrontendController($this->core, $httpRequestFrontend, $this->route);
     $frontendController->deliverCMSPage();
     // @TODO render and replace parent module of this one
     $newModuleHtml = $modInstance->render($frontendController, $this->moduleView);
     return new HttpResponse(200, $newModuleHtml);
 }