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

use 
ConcreteControllerBackendUserInterfaceBlock as BackendInterfaceBlockController;
use 
ConcreteCoreBlockViewBlockView;
use 
BlockType;
use 
ConcreteCoreCacheCache;
use 
Core;
use 
Area;

class 
Edit extends BackendInterfaceBlockController
{

    protected 
$viewPath '/dialogs/block/edit';

    public function 
view()
    {
        
$bv = new BlockView($this->block);
        if (isset(
$_REQUEST['arGridMaximumColumns'])) {
            
$this->area->setAreaGridMaximumColumns(intval($_REQUEST['arGridMaximumColumns']));
        }
        if (isset(
$_REQUEST['arEnableGridContainer']) && $_REQUEST['arEnableGridContainer'] == 1) {
            
$this->area->enableGridContainer();
        }
        
$bv->addScopeItems(array('c' => $this->page'a' => $this->area'dialogController' => $this));
        
$this->set('bv'$bv);
    }

    public function 
submit()
    {
        if (
$this->validateAction() && $this->canAccess()) {

            
$c $this->page;
            
$a Area::get($this->page$_REQUEST['arHandle']);
            
$ax $a;
            
$cx $c;
            if (
$a->isGlobalArea()) {
                
$ax STACKS_AREA_NAME;
                
$cx Stack::getByName($_REQUEST['arHandle']);
            }
            
$b Block::getByID($_REQUEST['bID'], $cx$ax);

            
$pr = new ConcreteCorePageEditResponse();
            
$pr->setPage($this->page);

            
$bi $b->getInstance();
            if (
$b->getBlockTypeHandle() == BLOCK_HANDLE_SCRAPBOOK_PROXY) {
                
$_b Block::getByID($bi->getOriginalBlockID());
                
$bi $_b->getInstance(); // for validation
            
}
            
$e $bi->validate($_POST);
            
$pr->setAdditionalDataAttribute('aID'$a->getAreaID());
            
$pr->setAdditionalDataAttribute('arHandle'$a->getAreaHandle());
            
$pr->setError($e);

            if ((!
is_object($e)) || (($e instanceof ConcreteCoreErrorError) && (!$e->has()))) {
                
$bt BlockType::getByHandle($b->getBlockTypeHandle());
                if (!
$bt->includeAll()) {
                    
// we make sure to create a new version, if necessary
                    
$nvc $cx->getVersionToModify();
                } else {
                    
$nvc $cx// keep the same one
                
}

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

                
$ob $b;
                
// replace the block with the version of the block in the later version (if applicable)
                
$b Block::getByID($_REQUEST['bID'], $nvc$ax);

                if (
$b->getBlockTypeHandle() == BLOCK_HANDLE_SCRAPBOOK_PROXY) {
                    
// if we're editing a scrapbook display block, we add a new block in this position for the real block type
                    // set the block to the display order
                    // delete the scrapbook display block, and save the data
                    /*
                    $originalDisplayOrder = $b->getBlockDisplayOrder();
                    $btx = BlockType::getByHandle($_b->getBlockTypeHandle());
                    $nb = $nvc->addBlock($btx, $ax, array());
                    $nb->setAbsoluteBlockDisplayOrder($originalDisplayOrder);
                    $b->deleteBlock();
                    $b = &$nb;
                    */

                    
$originalDisplayOrder $b->getBlockDisplayOrder();
                    
$cnt $b->getController();
                    
$ob Block::getByID($cnt->getOriginalBlockID());
                    
$ob->loadNewCollection($nvc);
                    if (!
is_object($ax)) {
                        
$ax Area::getOrCreate($cx$ax);
                    }
                    
$ob->setBlockAreaObject($ax);
                    
$nb $ob->duplicate($nvc);
                    
$nb->setAbsoluteBlockDisplayOrder($originalDisplayOrder);
                    
$b->deleteBlock();
                    
$b = & $nb;

                } else {
                    if (
$b->isAlias()) {

                        
// then this means that the block we're updating is an alias. If you update an alias, you're actually going
                        // to duplicate the original block, and update the newly created block. If you update an original, your changes
                        // propagate to the aliases
                        
$nb $ob->duplicate($nvc);
                        
$b->deleteBlock();
                        
$b = &$nb;
                    }
                }

                
$pr->setAdditionalDataAttribute('bID'$b->getBlockID());
                
// we can update the block that we're submitting
                
$b->update($_POST);
            }
            
$pr->outputJSON();
        }
    }

    protected function 
canAccess()
    {
        return 
$this->permissions->canEditBlock();
    }

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