Вход Регистрация
Файл: library/XenForo/ControllerAdmin/TemplateModification.php
Строк: 160
<?php

class XenForo_ControllerAdmin_TemplateModification extends XenForo_ControllerAdmin_TemplateModificationAbstract
{
    protected 
$_viewPrefix 'XenForo_ViewAdmin_TemplateModification_';
    protected 
$_templatePrefix 'template_modification_';
    protected 
$_routePrefix 'template-modifications';
    protected 
$_dataWriter 'XenForo_DataWriter_TemplateModification';

    protected function 
_preDispatch($action)
    {
        
$this->assertAdminPermission('style');
    }

    public function 
actionIndex()
    {
        
$response parent::actionIndex();
        if (
$response instanceof XenForo_ControllerResponse_View)
        {
            
$response->params['canCreateModification'] = XenForo_Application::debugMode();
        }

        return 
$response;
    }

    public function 
actionLog()
    {
        
$response parent::actionLog();
        if (
$response instanceof XenForo_ControllerResponse_View)
        {
            
/** @var $styleModel XenForo_Model_Style */
            
$styleModel $this->getModelFromCache('XenForo_Model_Style');

            
$response->params['styles'] = $styleModel->getAllStyles();
        }

        return 
$response;
    }

    public function 
actionAutoComplete()
    {
        
$q $this->_input->filterSingle('q'XenForo_Input::STRING);

        if (
$q)
        {
            
$templates $this->_getTemplateModel()->getEffectiveTemplateListForStyle(0,
                array(
'title' => array($q'r')),
                array(
'limit' => 10)
            );
        }
        else
        {
            
$templates = array();
        }

        
$view $this->responseView();
        
$view->jsonParams = array(
            
'results' => XenForo_Application::arrayColumn($templates'title''title')
        );
        return 
$view;
    }

    public function 
actionContents()
    {
        
$templateName $this->_input->filterSingle('template'XenForo_Input::STRING);

        
$template $this->_getTemplateModel()->getEffectiveTemplateByTitle($templateName0);

        
$view $this->responseView();
        
$view->jsonParams = array(
            
'template' => $template $this->_adjustTemplateContentForDisplay($template['template']) : false
        
);
        return 
$view;
    }

    protected function 
_getTestContent(XenForo_DataWriter_TemplateModificationAbstract $dw)
    {
        
$template $this->_getTemplateModel()->getTemplateInStyleByTitle($dw->get('template'));
        return (
$template $template['template'] : false);
    }

    protected function 
_adjustTemplateContentForDisplay($content)
    {
        
$propertyModel $this->_getStylePropertyModel();
        
$properties $propertyModel->keyPropertiesByName(
            
$propertyModel->getEffectiveStylePropertiesInStyle(0)
        );

        return 
$propertyModel->replacePropertiesInTemplateForEditor(
            
$content0$propertiestrue
        
);
    }

    protected function 
_adjustModificationForEdit(array $modification)
    {
        if (!empty(
$modification['modification_id']))
        {
            
$propertyModel $this->_getStylePropertyModel();
            
$properties $propertyModel->keyPropertiesByName(
                
$propertyModel->getEffectiveStylePropertiesInStyle(0)
            );

            if (
$modification['action'] == 'str_replace')
            {
                
// can't mess with the regular expression safely
                
$modification['find'] = $propertyModel->replacePropertiesInTemplateForEditor(
                    
$modification['find'], 0$propertiestrue
                
);
            }

            
$modification['replace'] = $propertyModel->replacePropertiesInTemplateForEditor(
                
$modification['replace'], 0$propertiestrue
            
);
        }

        return 
$modification;
    }

    protected function 
_modifyModificationDwData(array &$dwData$modificationId)
    {
        
$propertyModel $this->_getStylePropertyModel();
        
$properties $propertyModel->keyPropertiesByName($propertyModel->getEffectiveStylePropertiesInStyle(0));

        
$propertyModel->translateEditorPropertiesToArray(
            
$dwData['find'], $dwData['find'], $properties
        
);
        
$propertyModel->translateEditorPropertiesToArray(
            
$dwData['replace'], $dwData['replace'], $properties
        
);
    }

    protected function 
_getTemplatesByIds(array $ids)
    {
        return 
$this->_getTemplateModel()->getTemplatesByIds($ids);
    }

    
/**
     * @return XenForo_Model_Template
     */
    
protected function _getTemplateModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_Template');
    }

    
/**
     * @return XenForo_Model_StyleProperty
     */
    
protected function _getStylePropertyModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_StyleProperty');
    }

    
/**
     * @return XenForo_Model_TemplateModification
     */
    
protected function _getModificationModel()
    {
        return 
$this->getModelFromCache('XenForo_Model_TemplateModification');
    }
}
Онлайн: 3
Реклама