Вход Регистрация
Файл: base-sys/base/components/drag_and_drop_entity_panel.php
Строк: 313
<?php

class BASE_CMP_DragAndDropEntityPanel extends BASE_CMP_DragAndDropPanel
{
    private 
$entityScheme;
    private 
$entitySettingList = array();
    private 
$entityPositionList = array();
    private 
$entityComponentList = array();
    private 
$entityClonedNameList = array();
    private 
$customizeMode false;
    private 
$allowCustomize false;
    private 
$responderController 'BASE_CTRL_AjaxComponentEntityPanel';
    private 
$entityId;

    public function 
__construct$placeName$entityId, array $componentList$customizeMode$componentTemplate$responderController null )
    {
        
parent::__construct($placeName$componentList$componentTemplate);

        
$this->entityId = (int) $entityId;

        if ( !empty(
$responderController) )
        {
            
$this->responderController $responderController;
        }

        
$this->customizeMode = (bool) $customizeMode;

        
PEEP_ViewRenderer::getInstance()->registerFunction('dd_component', array($this'tplComponent'));

        
$this->assign('customizeMode'$this->customizeMode);
        
$this->assign('allowCustomize'$this->allowCustomize);
        
$this->assign('placeName'$placeName);
        
$this->assign('entityId'$this->entityId);

        
$this->sharedData['entity'] = $this->entityId;
    }

    public function 
onBeforeRender()
    {
        
parent::onBeforeRender();

        if ( 
$this->customizeMode )
        {
            
parent::initializeJs($this->responderController'PEEP_Components_DragAndDrop'$this->sharedData);

            
$jsDragAndDropUrl PEEP::getPluginManager()->getPlugin('BASE')->getStaticJsUrl() . 'drag_and_drop.js';
            
PEEP::getDocument()->addScript($jsDragAndDropUrl);
        }
    }

    public function 
allowCustomize$allowed true )
    {
        
$this->allowCustomize $allowed;
        
$this->assign('allowCustomize'$allowed);
    }

    public function 
customizeControlCunfigure$customizeUrl$normalUrl )
    {
        if ( 
$this->allowCustomize )
        {
            
$js = new UTIL_JsGenerator();
            
$js->newVariable('dndCustomizeUrl'$customizeUrl);
            
$js->newVariable('dndNormalUrl'$normalUrl);
            
$js->jQueryEvent('#goto_customize_btn''click''if(dndCustomizeUrl) window.location.href=dndCustomizeUrl;');
            
$js->jQueryEvent('#goto_normal_btn''click''if(dndNormalUrl) window.location.href=dndNormalUrl;');
            
PEEP::getDocument()->addOnloadScript($js);
        }
    }

    public function 
setEntityScheme$scheme )
    {
        
$this->entityScheme $scheme;
    }

    public function 
setEntitySettingList( array $settingList )
    {
        
$this->entitySettingList $settingList;
    }

    public function 
setEntityPositionList( array $positionList )
    {
        
$this->entityPositionList $positionList;
    }

    public function 
setEntityComponentList( array $entityComponentList )
    {
        
$this->entityComponentList $entityComponentList;
    }

    protected function 
getCurrentScheme$defaultScheme )
    {
        if ( empty(
$this->entityScheme) )
        {
            return 
$defaultScheme;
        }

        return 
$this->entityScheme;
    }

    protected function 
makePositionList$defaultPositions )
    {
        
$entityComponentList $this->entityComponentList;

        
$tmpList = array();

        foreach ( 
$defaultPositions as $item )
        {
            
$componentFreezed = isset($this->settingList[$item['componentPlaceUniqName']]['freeze'])
                && 
$this->settingList[$item['componentPlaceUniqName']]['freeze'];

            if ( isset(
$entityComponentList[$item['componentPlaceUniqName']]) && !$componentFreezed )
            {
                continue;
            }

            
$tmpList[$item['componentPlaceUniqName']] = $item;
        }

        foreach ( 
$this->entityPositionList as $item )
        {
            
$tmpList[$item['componentPlaceUniqName']] = $item;
        }

        return 
parent::makePositionList($tmpList);
    }

    protected function 
makeComponentList$defaultComponentList )
    {
        
$entityList = array();
        foreach ( 
$this->entityComponentList as $item )
        {
            if ( !isset(
$defaultComponentList[$item['uniqName']]) )
            {
                
$this->entityClonedNameList[] = $item['uniqName'];
            }
            
$entityList[$item['uniqName']] = $item;
        }

        return 
parent::makeComponentList(array_merge($defaultComponentList$entityList));
    }

    protected function 
makeSettingList$defaultSettingtList )
    {
        foreach ( 
$this->entitySettingList as $key => $item )
        {
            
$defaultSettingtList[$key] = empty($defaultSettingtList[$key]) ? $this->entitySettingList[$key] : array_merge($defaultSettingtList[$key], $this->entitySettingList[$key]);
        }

        return 
parent::makeSettingList($defaultSettingtList);
    }

    public function 
tplComponent$params )
    {
        
$uniqName $params['uniqName'];
        
$render = !empty($params['render']);

        
$componentPlace $this->componentList[$uniqName];
        
$template $this->customizeMode 'drag_and_drop_item_customize' null;

        
$viewInstance = new $this->itemClassName($uniqNamein_array($uniqName$this->entityClonedNameList), $template$this->sharedData);
        
$viewInstance->setSettingList(empty($this->settingList[$uniqName]) ? array() : $this->settingList[$uniqName]);
        
$viewInstance->componentParamObject->additionalParamList $this->additionalSettingList;
        
$viewInstance->componentParamObject->customizeMode $this->customizeMode;

        if ( !empty(
$this->standartSettings[$componentPlace['className']]) )
        {
            
$viewInstance->setStandartSettings($this->standartSettings[$componentPlace['className']]);
        }

        
$viewInstance->setContentComponentClass($componentPlace['className']);

        if ( 
$render )
        {
            return 
$viewInstance->renderView();
        }

        return 
$viewInstance->renderScheme();
    }
}
Онлайн: 1
Реклама