Файл: concrete5.7.5.6/concrete/controllers/dialog/page/add/compose.php
Строк: 65
<?php
namespace ConcreteControllerDialogPageAdd;
use ConcreteCoreControllerController;
use ConcreteCorePageEditResponse;
use ConcreteCorePageTemplate;
use ConcreteCorePageTypeType;
use ConcreteCoreViewDialogView;
use Page;
use Permissions;
use Core;
class Compose extends Controller
{
protected $controllerActionPath = '/ccm/system/dialogs/page/add/compose';
public function view($ptID, $cParentID)
{
$pagetype = Type::getByID($ptID);
$e = Core::make('error');
if (is_object($pagetype)) {
$ptp = new Permissions($pagetype);
if (!$ptp->canAddPageType()) {
$e->add(t('You do not have permission to add a page of this type.'));
}
} else {
$e->add(t('Invalid page type.'));
}
$parent = Page::getByID($cParentID);
if (!is_object($parent) || $parent->isError()) {
$e->add(t('Invalid parent page.'));
}
if (!$e->has()) {
$this->view = new DialogView('/dialogs/page/add/compose');
$this->set('parent', $parent);
$this->set('pagetype', $pagetype);
} else {
$pr = new EditResponse();
$pr->setError($e);
$pr->outputJSON();
}
if (!$this->view) {
throw new Exception(t('Access Denied.'));
}
}
public function submit()
{
$e = Core::make('error');
$pagetype = Type::getByID($this->request->request->get('ptID'));
if (is_object($pagetype)) {
$configuredTarget = $pagetype->getPageTypePublishTargetObject();
$cParentID = $configuredTarget->getPageTypePublishTargetConfiguredTargetParentPageID();
if (!$cParentID) {
$cParentID = $this->request->request->get('cParentID');
}
}
$parent = Page::getByID($cParentID);
if ($this->request->request->get('ptComposerPageTemplateID')) {
$template = Template::getByID($this->request->request->get('ptComposerPageTemplateID'));
}
if (!is_object($template)) {
$template = $pagetype->getPageTypeDefaultPageTemplateObject();
}
if (is_object($pagetype)) {
$validator = $pagetype->getPageTypeValidatorObject();
$e->add($validator->validateCreateDraftRequest($template));
$e->add($validator->validatePublishLocationRequest($parent));
if ($this->request->request('addPageComposeAction') == 'publish') {
$e->add($validator->validatePublishDraftRequest());
}
}
$pr = new EditResponse();
$pr->setError($e);
if (!$e->has()) {
$d = $pagetype->createDraft($template);
$d->setPageDraftTargetParentPageID($cParentID);
$pagetype->savePageTypeComposerForm($d);
if ($this->request->request('addPageComposeAction') == 'publish') {
$pagetype->publish($d);
$pr->setAdditionalDataAttribute('cParentID', $cParentID);
$pr->setMessage(t('Page Added Successfully.'));
} else {
$pr->setRedirectURL($d->getCollectionLink(true));
}
}
$pr->outputJSON();
}
}