Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Page/Type/Composer/Control/CollectionAttributeControl.php
Строк: 146
<?php
namespace ConcreteCorePageTypeComposerControl;

use 
Controller;
use 
CollectionAttributeKey;
use 
Page;
use 
Environment;

class 
CollectionAttributeControl extends Control
{
    protected 
$akID;
    protected 
$ak = false;
    protected 
$ptComposerControlTypeHandle = 'collection_attribute';

    public function 
setAttributeKeyID($akID)
    {
        
$this->akID = $akID;
        
$this->setPageTypeComposerControlIdentifier($akID);
    }

    public function 
getPageTypeComposerControlName()
    {
        return 
$this->getAttributeKeyObject()->getAttributeKeyDisplayName('text');
    }

    public function 
pageTypeComposerFormControlSupportsValidation()
    {
        return 
true;
    }

    public function 
export($node)
    {
        
$ak = $this->getAttributeKeyObject();
        
$node->addAttribute('handle', $ak->getAttributeKeyHandle());
    }

    public function 
removePageTypeComposerControlFromPage()
    {
        
$ak = $this->getAttributeKeyObject();
        if (
is_object($ak)) {
            
$this->page->clearAttribute($ak);
        }
    }

    
/**
     * @return CollectionAttributeKey
     */
    
public function getAttributeKeyObject()
    {
        if (!
$this->ak) {
            
$this->ak = CollectionAttributeKey::getByID($this->akID);
        }

        return 
$this->ak;
    }

    public function 
getAttributeKeyID()
    {
        return 
$this->akID;
    }

    public function 
getPageTypeComposerControlCustomTemplates()
    {
        return array();
    }

    public function 
canPageTypeComposerControlSetPageName()
    {
        
$ak = $this->getAttributeKeyObject();
        if (
is_object($ak) && $ak->getAttributeKeyHandle() == 'meta_title') {
            return 
true;
        }

        return 
false;
    }

    public function 
getPageTypeComposerControlPageNameValue(Page $c)
    {
        
$ak = $this->getAttributeKeyObject();
        if (
is_object($ak)) {
            return 
$c->getAttribute($ak->getAttributeKeyHandle());
        }
    }

    public function 
getPageTypeComposerControlDraftValue()
    {
        if (
is_object($this->page)) {
            
$ak = $this->getAttributeKeyObject();
            
$c = $this->page;
            if (
is_object($ak)) {
                return 
$c->getAttributeValueObject($ak);
            }
        }
    }

    public function 
shouldPageTypeComposerControlStripEmptyValuesFromPage()
    {
        return 
true;
    }

    public function 
isPageTypeComposerControlValueEmpty()
    {
        
$ak = $this->getAttributeKeyObject();
        
$c = $this->page;
        if (!
is_object($ak)) {
            return 
true;
        }

        return (
$c->getAttribute($ak) == '');
    }

    public function 
render($label, $customTemplate, $description)
    {
        
$ak = $this->getAttributeKeyObject();
        if (
is_object($ak)) {
            
$env = Environment::get();
            
$set = $this->getPageTypeComposerFormLayoutSetControlObject()->getPageTypeComposerFormLayoutSetObject();
            
$control = $this;
            
$template = $env->getPath(
                
DIRNAME_ELEMENTS . '/' . DIRNAME_PAGE_TYPES . '/' . DIRNAME_COMPOSER . '/' . DIRNAME_COMPOSER_ELEMENTS_CONTROLS . '/' . $this->ptComposerControlTypeHandle . '.php'
            
);
            include 
$template;
        }
    }

    public function 
publishToPage(Page $c, $data, $controls)
    {
        
// the data for this actually doesn't come from $data. Attributes have their own way of gettin data.
        
$ak = $this->getAttributeKeyObject();
        if (
is_object($ak)) {
            
$ak->saveAttributeForm($c);
        }
    }

    protected function 
isFormSubmission()
    {
        
$ak = $this->getAttributeKeyObject();
        
$controller = $ak->getController();
        if (
is_object($controller)) {
            return 
$controller->requestFieldExists();
        }
    }

    public function 
validate()
    {
        
$ak = $this->getAttributeKeyObject();
        if (
is_object($ak)) {

            
$e = Core::make('error');
            if (
$this->isFormSubmission()) {
                
$response = $ak->validateAttributeForm();
                if (
$response === false) {

                    
$control = $this->getPageTypeComposerFormLayoutSetControlObject();
                    
$e->add(t('The field %s is required', $control->getPageTypeComposerControlLabel()));

                } else if (
$response instanceof ConcreteCoreErrorError) {
                    
$e->add($response);
                }
            } else {
                
$value = $this->getPageTypeComposerControlDraftValue();
                if (!
is_object($value)) {
                    
$control = $this->getPageTypeComposerFormLayoutSetControlObject();
                    
$e->add(t('The field %s is required', $control->getPageTypeComposerControlLabel()));
                } else {
                    
$response = $value->validateAttributeValue();
                    if (
$response === false) {
                        
$control = $this->getPageTypeComposerFormLayoutSetControlObject();
                        
$e->add(t('The field %s is required', $control->getPageTypeComposerControlLabel()));
                    } else if (
$response instanceof ConcreteCoreErrorError) {
                        
$e->add($response);
                    }
                }
            }

            return 
$e;
        }
    }

    public function 
addAssetsToRequest(Controller $cnt)
    {
        
$ak = $this->getAttributeKeyObject();
        
$akc = $ak->getController();
        
$akc->setupAndRun('composer');
    }

    public function 
objectExists()
    {
        return 
$this->getAttributeKeyObject() !== null;
    }

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