Вход Регистрация
Файл: concrete5.7.5.6/concrete/controllers/panel/page/design.php
Строк: 111
<?php
namespace ConcreteControllerPanelPage;
use 
ConcreteControllerBackendUserInterfacePage as BackendUIPageController;
use 
ConcreteCorePageCollectionVersionVersion;
use 
ConcreteCorePageTypeType;
use 
Permissions;
use 
PageTemplate;
use 
PageTheme;
use 
Request;
use 
PageEditResponse;
use 
Loader;
use 
Response;
use 
View;
use 
User;
use 
ConcreteCoreWorkflowRequestApprovePageRequest;
use 
Config;

class 
Design extends BackendUIPageController {

    protected 
$viewPath '/panels/page/design';
    public function 
canAccess() {
        return 
$this->permissions->canEditPageTemplate() || $this->permissions->canEditPageTheme();
    }

    public function 
view() {
        
$c $this->page;
        
$cp $this->permissions;

        
$pagetype $c->getPageTypeObject();
        if (
is_object($pagetype)) {
            
$_templates $pagetype->getPageTypePageTemplateObjects();
        } else {
            
$_templates PageTemplate::getList();
        }

        
$pTemplateID $c->getPageTemplateID();
        
$templates = array();
        if (
$pTemplateID) {
            
$selectedTemplate PageTemplate::getByID($pTemplateID);
            
$templates[] = $selectedTemplate;
        }

        foreach(
$_templates as $tmp) {
            if (!
in_array($tmp$templates)) {
                
$templates[] = $tmp;
            }
        }

        
$tArrayTmp array_merge(PageTheme::getGlobalList(), PageTheme::getLocalList());
        
$_themes = array();
        foreach(
$tArrayTmp as $pt) {
            if (
$cp->canEditPageTheme($pt)) {
                
$_themes[] = $pt;
            }
        }

        
$pThemeID $c->getCollectionThemeID();
        if (
$pThemeID) {
            
$selectedTheme PageTheme::getByID($pThemeID);
        } else {
            
$selectedTheme PageTheme::getSiteTheme();
        }

        
$themes = array($selectedTheme);
        foreach(
$_themes as $t) {
            if (!
in_array($t$themes)) {
                
$themes[] = $t;
            }
        }

        
$templatesSelect = array();
        
$themesSelect = array();
        foreach(
$_themes as $pt) {
            
$themesSelect[$pt->getThemeID()] = $pt->getThemeDisplayName();
        }
        foreach(
$_templates as $pt) {
            
$templatesSelect[$pt->getPageTemplateID()] = $pt->getPageTemplateDisplayName();
        }

        
$typeList Type::getList();
        
$typesSelect = array('0' => t('** None'));
        foreach(
$typeList as $_pagetype) {
            
$typesSelect[$_pagetype->getPageTypeID()] = $_pagetype->getPageTypeDisplayName();
        }

        
$this->set('templatesSelect'$templatesSelect);
        
$this->set('themesSelect'$themesSelect);
        
$this->set('themes'$themes);
        
$this->set('templates'$templates);
        
$this->set('typesSelect'$typesSelect);
        
$this->set('selectedTheme'$selectedTheme);
        
$this->set('selectedType'$pagetype);
        
$this->set('selectedTemplate'$selectedTemplate);
    }

    public function 
preview() {
        
$this->setViewObject(new View('/panels/details/page/preview'));
    }

    public function 
preview_contents() {
        
$req Request::getInstance();
        
$req->setCurrentPage($this->page);
        
$controller $this->page->getPageController();
        
$view $controller->getViewObject();
        if (
$_REQUEST['pTemplateID']) {
            
$pt PageTemplate::getByID(Loader::helper('security')->sanitizeInt($_REQUEST['pTemplateID']));
            if (
is_object($pt)) {
                
$view->setCustomPageTemplate($pt);
            }
        }
        if (
$_REQUEST['pThemeID']) {
            
$pt PageTheme::getByID(Loader::helper('security')->sanitizeInt($_REQUEST['pThemeID']));
            if (
is_object($pt)) {
                
$view->setCustomPageTheme($pt);
            }
        }
        
$req->setCustomRequestUser(-1);
        
$response = new Response();
        
$content $view->render();
        
$response->setContent($content);
        return 
$response;
    }

    public function 
submit() {
        if (
$this->validateAction()) {
            
$cp $this->permissions;
            
$c $this->page;

              
$nvc $c->getVersionToModify();

            if (
$this->permissions->canEditPageTheme()) {
                
$pl false;
                if (
$_POST['pThemeID']) {
                    
$pl PageTheme::getByID($_POST['pThemeID']);
                }
                
$data = array();
                if (
is_object($pl)) {
                    
$nvc->setTheme($pl);
                }
            }

            if (!
$c->isGeneratedCollection()) {

                if (
$_POST['pTemplateID'] && $cp->canEditPageTemplate()) {
                    
// now we have to check to see if you're allowed to update this page to this page type.
                    // We do this by checking to see whether the PARENT page allows you to add this page type here.
                    // if this is the home page then we assume you are good

                    
$template PageTemplate::getByID($_POST['pTemplateID']);
                    
$proceed true;
                    
$pagetype $c->getPageTypeObject();
                    if (
is_object($pagetype)) {
                        
$templates $pagetype->getPageTypePageTemplateObjects();
                        if (!
in_array($template$templates)) {
                            
$proceed false;
                        }
                    }
                    if (
$proceed) {
                        
$data['pTemplateID'] = $_POST['pTemplateID'];
                        
$nvc->update($data);
                    }
                }

                if (
$cp->canEditPageType()) {
                    
$ptID $c->getPageTypeID();
                    if (
$ptID != $_POST['ptID']) {
                        
// the page type has changed.
                        
if ($_POST['ptID']) {
                            
$type Type::getByID($_POST['ptID']);
                            if (
is_object($type)) {
                                
$nvc->setPageType($type);
                            }
                        } else {
                            
$nvc->setPageType(null);
                        }
                    }
                }
            }

            
$r = new PageEditResponse();
            
$r->setPage($c);
            if (
$this->request->request->get('sitemap')) {
                
$r->setMessage(t('Page updated successfully.'));
                if (
$this->permissions->canApprovePageVersions() && Config::get('concrete.misc.sitemap_approve_immediately')) {
                    
$pkr = new ApprovePageRequest();
                    
$u = new User();
                    
$pkr->setRequestedPage($this->page);
                    
$v Version::get($this->page"RECENT");
                    
$pkr->setRequestedVersionID($v->getVersionID());
                    
$pkr->setRequesterUserID($u->getUserID());
                    
$response $pkr->trigger();
                    
$u->unloadCollectionEdit();
                }
            } else {
                  
$r->setRedirectURL(URL::to($c));
            }
            
$r->outputJSON();
        }
    }
}
Онлайн: 1
Реклама