Вход Регистрация
Файл: concrete5.7.5.6/concrete/controllers/panel/detail/page/location.php
Строк: 155
<?php
namespace ConcreteControllerPanelDetailPage;
use 
ConcreteControllerBackendUserInterfacePage as BackendInterfacePageController;
use 
ConcreteCorePagePagePath;
use 
ConcreteCoreWorkflowRequestApprovePageRequest;
use 
PageEditResponse;
use 
PermissionKey;
use 
Exception;
use 
Loader;
use 
PageType;
use 
Permissions;
use 
User;
use 
Page;
use 
Request;
use 
ConcreteCorePageCollectionVersionVersion;
use 
Database;
use 
ConcreteCoreWorkflowRequestMovePageRequest as MovePagePageWorkflowRequest;
use 
ConcreteCoreWorkflowProgressResponse as WorkflowProgressResponse;

class 
Location extends BackendInterfacePageController {

    protected 
$viewPath '/panels/details/page/location';
    protected 
$controllerActionPath '/ccm/system/panels/details/page/location';
    protected 
$validationToken '/panels/details/page/location';

    protected function 
canAccess() {
        return (
$this->page->getCollectionID() != HOME_CID && is_object($this->asl) && $this->asl->allowEditPaths());
    }

    public function 
on_start() {
        
parent::on_start();
        
$pk PermissionKey::getByHandle('edit_page_properties');
        
$pk->setPermissionObject($this->page);
        
$this->asl $pk->getMyAssignment();
    }

    public function 
view() {
        
$c $this->page;
        
$this->requireAsset('core/sitemap');
        
$cParentID $c->getCollectionParentID();
        if (
$c->isPageDraft()) {
            
$cParentID $c->getPageDraftTargetParentPageID();
        }
        
$this->set('parent'Page::getByID($cParentID'ACTIVE'));
        
$this->set('cParentID'$cParentID);


        
// First, we pass in the auto generated page path. This is not actually necessarily a page path
        // pulled from the table,it's what it WOULD be based on URL slugs
        
$autoGeneratedPath $this->page->getAutoGeneratedPagePathObject();

        
// now that we know the auto generated page path, we loop through all page paths. If a path matching
        // this path is set to be canonical, then we check that checkbox.
        
$paths = array();
        foreach(
$c->getPagePaths() as $path) {
            if (
$path->getPagePath() == $autoGeneratedPath->getPagePath()) {
                if (
$path->isPagePathCanonical()) {
                    
$autoGeneratedPath->setPagePathIsCanonical(true);
                }
            } else {
                
$paths[] = $path;
            }
        }

        
$this->set('autoGeneratedPath'$autoGeneratedPath);
        
$this->set('paths'$paths);
    }

    public function 
submit() {
        
$r = new PageEditResponse();
        if (
$this->validateAction()) {
            
$oc $this->page;
            if (
$oc->getCollectionParentID() != $_POST['cParentID']) {
                
$dc Page::getByID($_POST['cParentID'], 'RECENT');
                if (!
is_object($dc) || $dc->isError()) {
                    throw new 
Exception('Invalid parent page.');
                }
                
$dcp = new Permissions($dc);
                
$ct PageType::getByID($this->page->getPageTypeID());
                if (!
$dcp->canAddSubpage($ct)) {
                    throw new 
Exception('You do not have permission to add this subpage here.');
                }
                if (!
$oc->canMoveCopyTo($dc)) {
                    throw new 
Exception('You cannot add a page beneath itself.');
                }

                if (
$oc->isPageDraft()) { 
                    
$oc->setPageDraftTargetParentPageID($dc->getCollectionID());
                } else {
                    
$u = new User();
                    
$pkr = new MovePagePageWorkflowRequest();
                    
$pkr->setRequestedPage($oc);
                    
$pkr->setRequestedTargetPage($dc);
                    
$pkr->setSaveOldPagePath(false);
                    
$pkr->setRequesterUserID($u->getUserID());
                    
$u->unloadCollectionEdit($oc);
                    
$response $pkr->trigger();
                    if (
$response instanceof WorkflowProgressResponse && !$this->request->request->get('sitemap')) {
                        
$nc Page::getByID($oc->getCollectionID());
                        
$r->setRedirectURL(Loader::helper('navigation')->getLinkToCollection($nc));
                    }
                }
            }

            
// now we do additional page URLs
            
$req Request::getInstance();
            
$oc->clearPagePaths();

            
$canonical $req->request->get('canonical');
            
$pathArray $req->request->get('path');
            if (
is_array($pathArray)) {
                foreach(
$pathArray as $i => $path) {
                    
$p = new PagePath();
                    
$p->setPagePath($path);
                    
$p->setPageObject($this->page);
                    if (
$canonical == $i) {
                        
$p->setPagePathIsCanonical(true);
                    }
                    
Database::get()->getEntityManager()->persist($p);
                }
            }

            
Database::get()->getEntityManager()->flush();

            
$r->setTitle(t('Page Updated'));
            
$r->setMessage(t('Page location information saved successfully.'));
            
$r->setPage($this->page);
            
$nc Page::getByID($this->page->getCollectionID(), 'ACTIVE');
            
$r->outputJSON();
        }
    }

}
Онлайн: 1
Реклама