Вход Регистрация
Файл: concrete5.7.5.6/concrete/controllers/dialog/page/add_block.php
Строк: 133
<?php
namespace ConcreteControllerDialogPage;

use 
Area;
use 
Block;
use 
BlockType;
use 
ConcreteCorePageCollectionCollection;
use 
ConcreteControllerBackendUserInterfacePage as BackendInterfacePageController;
use 
ConcreteCoreBlockViewBlockView;
use 
Exception;
use 
Loader;
use 
PageEditResponse;
use 
Permissions;
use 
Stack;
use 
User;

class 
AddBlock extends BackendInterfacePageController
{

    protected 
$viewPath '/dialogs/page/add_block';

    public function 
on_start()
    {
        
parent::on_start();
        
$request $this->request;

        if (!
Loader::helper('validation/numbers')->integer($_REQUEST['btID'])) {
            throw new 
Exception(t('Access Denied'));
        }

        
$this->blockType BlockType::getByID($_REQUEST['btID']);
        
$this->area Area::get($this->page$_REQUEST['arHandle']);
        
$this->pageToModify $this->page;
        
$this->areaToModify $this->area;
        if (
$this->area->isGlobalArea()) {
            
$this->pageToModify Stack::getByName($_REQUEST['arHandle']);
            
$this->areaToModify Area::get($this->pageToModifySTACKS_AREA_NAME);
        }
        
$this->areaPermissions = new Permissions($this->areaToModify);
        
$cnt $this->blockType->getController();
        if (!
is_a($cnt'ConcreteCoreBlockBlockController')) {
            throw new 
Exception(t(
                                    
'Unable to load the controller for this block type. Perhaps it has been moved or removed.'));
        }
        
$this->blockTypeController $cnt;
        if (isset(
$_REQUEST['arCustomTemplates']) && is_array($_REQUEST['arCustomTemplates'])) {
            foreach(
$_REQUEST['arCustomTemplates'] as $btHandle => $template) {
                
$this->area->setCustomTemplate($btHandle$template);
            }
        }
    }

    public function 
view()
    {
        
$bv = new BlockView($this->blockType);
        
$bv->setAreaObject($this->area);
        
// Handle special posted area parameters here
        
if (isset($_REQUEST['arGridMaximumColumns'])) {
            
$this->area->setAreaGridMaximumColumns(intval($_REQUEST['arGridMaximumColumns']));
        }
        if (isset(
$_REQUEST['arEnableGridContainer']) && $_REQUEST['arEnableGridContainer'] == 1) {
            
$this->area->enableGridContainer();
        }
        if (isset(
$_REQUEST['arCustomTemplates']) && is_array($_REQUEST['arCustomTemplates'])) {
            foreach(
$_REQUEST['arCustomTemplates'] as $btHandle => $template) {
                
$this->area->setCustomTemplate($btHandle$template);
            }
        }
        
$bv->addScopeItems(array('a' => $this->a'cp' => $this->permissions'ap' => $this->areaPermissions));
        
$this->set('blockView'$bv);
        
$this->set('blockType'$this->blockType);
        
$this->set('btHandle'$this->blockType->getBlockTypeHandle());
        
$this->set("blockTypeController"$this->blockTypeController);
        
$this->set('area'$this->area);
    }

    public function 
submit()
    {
        
$pc = new PageEditResponse($this->error);
        
$pc->setPage($this->page);
        if (
$this->validateAction() || is_object($this->blockType)
            && !
$this->blockType->hasAddTemplate()
            && 
Loader::helper('validation/token')->validate()
        ) {

            
$data $_POST;
            
$bt $this->blockType;
            
$u = new User();
            
$data['uID'] = $u->getUserID();

            
$e $this->blockTypeController->validate($data);
            if ((!
is_object($e)) || (($e instanceof ConcreteCoreErrorError) && (!$e->has()))) {

                if (!
$bt->includeAll()) {
                    
$nvc $this->pageToModify->getVersionToModify();
                    
$nb $nvc->addBlock($bt$this->areaToModify$data);
                } else {
                    
// if we apply to all, then we don't worry about a new version of the page
                    
$nb $this->pageToModify->addBlock($bt$this->areaToModify$data);
                }

                if (
$this->area->isGlobalArea() && $nvc instanceof Collection) {
                    
$xvc $this->page->getVersionToModify(); // we need to create a new version of THIS page as well.
                    
$xvc->relateVersionEdits($nvc);
                }

                
// now we check to see if there's a block in this area that we are adding it after.
                
if ($_REQUEST['dragAreaBlockID'] > && Loader::helper('validation/numbers')->integer(
                                                              
$_REQUEST['dragAreaBlockID'])
                ) {
                    
$db Block::getByID($_REQUEST['dragAreaBlockID'], $this->pageToModify$this->areaToModify);
                    if (
is_object($db) && !$db->isError()) {
                        
$nb->moveBlockToDisplayOrderPosition($db);
                    }
                }
                if (!
is_object($db)) {
                    
$nb->moveBlockToDisplayOrderPosition(false);
                }

                
$pc->setAdditionalDataAttribute('btID'$nb->getBlockTypeID());
                
$pc->setAdditionalDataAttribute('bID'$nb->getBlockID());
                
$pc->setAdditionalDataAttribute('arHandle'$this->area->getAreaHandle());

                
$pc->setAdditionalDataAttribute('aID'$this->area->getAreaID());
            } else {
                
$pc->setError($e);
            }

        }
        
$pc->outputJSON();
    }

    protected function 
canAccess()
    {
        return 
$this->areaPermissions->canAddBlock($this->blockType);
    }

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