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

abstract class BASE_CTRL_AjaxComponentPanel extends PEEP_ActionController
{
    private 
$actions = array();
    private 
$debug = array();

    
/**
     * @see PEEP_ActionController::init()
     *
     */
    
public function init()
    {
        if ( !
PEEP::getRequest()->isAjax() )
        {
            throw new 
Redirect404Exception();
        }

        
$this->registerAction('saveComponentPlacePositions', array($this'saveComponentPlacePositions'));
        
$this->registerAction('cloneComponent', array($this'cloneComponent'));
        
$this->registerAction('deleteComponent', array($this'deleteComponent'));
        
$this->registerAction('getSettingsMarkup', array($this'getSettingsMarkup'));
        
$this->registerAction('saveSettings', array($this'saveSettings'));
        
$this->registerAction('savePlaceScheme', array($this'savePlaceScheme'));
        
$this->registerAction('moveComponentToPanel', array($this'moveComponentToPanel'));
        
$this->registerAction('reload', array($this'reloadComponent'));
    }

    public function 
registerAction$actionName$actionCallback )
    {
        
$this->actions[$actionName] = $actionCallback;
    }

    public function 
processQueue()
    {
        
$requestQueue json_decode(urldecode($_POST['request']), true);

        
$responseQueue = array();
        
$exception false;

        foreach ( 
$requestQueue as $request )
        {
            if ( !isset(
$this->actions[$request['command']]) )
            {
                continue;
            }
            
$command $request['command'];
            
$commandId $request['commandId'];
            
$data = empty($request['data']) ? array() : $request['data'];

            
BASE_CLASS_Widget::setPlaceData($request['data']);

            
$result call_user_func($this->actions[$request['command']], $request['data']);
            
$responseQueue[$commandId] = $result;
        }

        
$response = array(
            
'responseQueue' => $responseQueue,
            
'debug' => $this->debug
        
);

        echo 
json_encode($response);
        exit();
    }

    protected function 
debug$var )
    {
        
array_push($this->debug$var);
    }

    private function 
checkComponentClass$componentClassName )
    {
        
$reflectionClass = new ReflectionClass($componentClassName);

        if ( !
$reflectionClass->isSubclassOf('BASE_CLASS_Widget') )
        {
            throw new 
LogicException('Component is not configurable');
        }
    }

    protected function 
getComponentSettingList$componentClassName$params = array() )
    {
        
$this->checkComponentClass($componentClassName);

        return 
call_user_func(array($componentClassName'getSettingList'), $params["componentId"]);
    }

    protected function 
getComponentAccess$componentClassName$params = array() )
    {
        
$this->checkComponentClass($componentClassName);

        return 
call_user_func(array($componentClassName'getAccess'), $params["componentId"]);
    }

    protected function 
getComponentStandardSettingValueList$componentClassName$params = array() )
    {
        
$this->checkComponentClass($componentClassName);

        return 
call_user_func(array($componentClassName'getStandardSettingValueList'), $params["componentId"]);
    }

    protected function 
validateComponentSettingList$componentClassName$settingList$place$params = array() )
    {
        
$this->checkComponentClass($componentClassName);

        return 
call_user_func(array($componentClassName'validateSettingList'), $settingList$place$params["componentId"]);
    }

    protected function 
processSettingList$componentClassName$settingList$place$isAdmin$params = array() )
    {
        
$this->checkComponentClass($componentClassName);

        return 
call_user_func(array($componentClassName'processSettingList'), $settingList$place$isAdmin$params["componentId"]);
    }

    protected function 
getComponentMarkupBASE_CMP_DragAndDropItem $viewInstance$renderView false )
    {

        
/* @var $document PEEP_AjaxDocument */
        
$document PEEP::getDocument();

        
$responce = array();

        if ( 
$renderView )
        {
            
$responce['content'] = $viewInstance->renderView();
        }
        else
        {
            
$responce['content'] = $viewInstance->renderScheme();
        }

        foreach ( 
$document->getScripts() as $script )
        {
            
$responce['scriptFiles'][] = $script;
        }

        
$onloadScript $document->getOnloadScript();
        if ( !empty(
$onloadScript) )
        {
            
$responce['onloadScript'] = $onloadScript;
        }

        
$styleDeclarations $document->getStyleDeclarations();
        if ( !empty(
$styleDeclarations) )
        {
            
$responce['styleDeclarations'] = $styleDeclarations;
        }

        
$styleSheets $document->getStyleSheets();
        if ( !empty(
$styleSheets) )
        {
            
$responce['styleSheets'] = $styleSheets;
        }

        return 
$responce;
    }

    protected function 
getSettingFormMarkupPEEP_Component $viewInstance )
    {
        
/* @var $document PEEP_AjaxDocument */
        
$document PEEP::getDocument();

        
$responce = array();
        
$responce['content'] = $viewInstance->render();

        foreach ( 
$document->getScripts() as $script )
        {
            
$responce['scriptFiles'][] = $script;
        }

        
$onloadScript $document->getOnloadScript();
        if ( !empty(
$onloadScript) )
        {
            
$responce['onloadScript'] = $onloadScript;
        }

        
$styleDeclarations $document->getStyleDeclarations();
        if ( !empty(
$styleDeclarations) )
        {
            
$responce['styleDeclarations'] = $styleDeclarations;
        }

        
$styleSheets $document->getStyleSheets();
        if ( !empty(
$styleSheets) )
        {
            
$responce['styleSheets'] = $styleSheets;
        }

        return 
$responce;
    }
}
Онлайн: 1
Реклама