Вход Регистрация
Файл: 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;
    }

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