Вход Регистрация
Файл: concrete5.7.5.6/concrete/blocks/page_attribute_display/controller.php
Строк: 182
<?php
namespace ConcreteBlockPageAttributeDisplay;

use 
ConcreteCoreBlockBlockController;
use 
ConcreteCoreAttributeKeyCollectionKey as CollectionAttributeKey;
use 
Core;

defined('C5_EXECUTE') or die('Access Denied.');

/**
 * @author Ryan Tyler
 */
class Controller extends BlockController
{
    protected 
$btTable 'btPageAttributeDisplay';
    protected 
$btInterfaceWidth "500";
    protected 
$btInterfaceHeight "365";
    public 
$dateFormat "m/d/y h:i:a";
    protected 
$btCacheBlockOutput true;
    protected 
$btCacheBlockOutputOnPost true;
    protected 
$btCacheBlockOutputForRegisteredUsers false;

    
/**
     * @var int thumbnail height
     */
    
public $thumbnailHeight 250;

    
/**
     * @var int thumbnail width
     */
    
public $thumbnailWidth 250;

    public function 
getBlockTypeDescription()
    {
        return 
t("Displays the value of a page attribute for the current page.");
    }

    public function 
getBlockTypeName()
    {
        return 
t("Page Attribute Display");
    }

    
/**
     * @return mixed AttributeValue
     */
    
public function getContent()
    {
        
$c Page::getCurrentPage();
        
$content "";
        switch (
$this->attributeHandle) {
            case 
"rpv_pageName":
                
$content h($c->getCollectionName());
                break;
            case 
"rpv_pageDescription":
                
$content h($c->getCollectionDescription());
                break;
            case 
"rpv_pageDateCreated":
                
$content $c->getCollectionDateAdded();
                break;
            case 
"rpv_pageDateLastModified":
                
$content $c->getCollectionDateLastModified();
                break;
            case 
"rpv_pageDatePublic":
                
$content $c->getCollectionDatePublic();
                break;
            default:
                
$content $c->getAttribute($this->attributeHandle);
                if (
is_object($content) && $content instanceof ConcreteCoreFileFile) {
                    
$im Core::make('helper/image');
                    
$thumb $im->getThumbnail(
                        
$content,
                        
$this->thumbnailWidth,
                        
$this->thumbnailHeight
                    
); //<-- set these 2 numbers to max width and height of thumbnails
                    
$content "<img src="{$thumb->src}" width="{$thumb->width}" height="{$thumb->height}" alt="" />";
                } else {
                    if (!
is_scalar($content) && (!is_object($content) || !method_exists($content'__toString'))) {
                        
$content $c->getAttribute($this->attributeHandle'displaySanitized');
                    }
                }
                break;
        }

        
$is_stack $c->getController() instanceof ConcreteControllerSinglePageDashboardBlocksStacks;
        if (!
strlen(trim(strip_tags($content))) && ($c->isMasterCollection() || $is_stack)) {
            
$content $this->getPlaceHolderText($this->attributeHandle);
        }

        return 
$content;
    }

    
/**
     * Returns a place holder for pages that are new or when editing default page types.
     *
     * @param string $handle
     *
     * @return string
     */
    
public function getPlaceHolderText($handle)
    {
        
$pageValues $this->getAvailablePageValues();
        if (
in_array($handlearray_keys($pageValues))) {
            
$placeHolder $pageValues[$handle];
        } else {
            
$attributeKey CollectionAttributeKey::getByHandle($handle);
            if (
is_object($attributeKey)) {
                
$placeHolder $attributeKey->getAttributeKeyName();
            }
        }

        return 
"[" $placeHolder "]";
    }

    
/**
     * Returns the title text to display in front of the value.
     *
     * @return string
     */
    
public function getTitle()
    {
        return (
strlen($this->attributeTitleText) ? $this->attributeTitleText " " "");
    }

    public function 
getAvailablePageValues()
    {
        return array(
            
'rpv_pageName' => t('Page Name'),
            
'rpv_pageDescription' => t('Page Description'),
            
'rpv_pageDateCreated' => t('Page Date Created'),
            
'rpv_pageDatePublic' => t('Page Date Published'),
            
'rpv_pageDateLastModified' => t('Page Date Modified'),
        );
    }

    public function 
getAvailableAttributes()
    {
        return 
ConcreteCoreAttributeKeyCollectionKey::getList();
    }

    protected function 
getTemplateHandle()
    {
        if (
in_array($this->attributeHandlearray_keys($this->getAvailablePageValues()))) {
            switch (
$this->attributeHandle) {
                case 
"rpv_pageDateCreated":
                case 
'rpv_pageDateLastModified':
                case 
"rpv_pageDatePublic":
                    
$templateHandle 'date_time';
                    break;
            }
        } else {
            
$attributeKey CollectionAttributeKey::getByHandle($this->attributeHandle);
            if (
is_object($attributeKey)) {
                
$attributeType $attributeKey->getAttributeType();
                
$templateHandle $attributeType->getAttributeTypeHandle();
            }
        }

        return 
$templateHandle;
    }

    
/**
     * Returns opening html tag.
     *
     * @return string
     */
    
public function getOpenTag()
    {
        
$tag "";
        if (
strlen($this->displayTag)) {
            
$tag "<" $this->displayTag " class="ccm-block-page-attribute-display-wrapper">";
        }

        return 
$tag;
    }

    
/**
     * Returns closing html tag.
     *
     * @return string
     */
    
public function getCloseTag()
    {
        
$tag "";
        if (
strlen($this->displayTag)) {
            
$tag "</" $this->displayTag ">";
        }

        return 
$tag;
    }

    public function 
view()
    {
        
$templateHandle $this->getTemplateHandle();
        if (
in_array($templateHandle, array('date_time''boolean'))) {
            
$this->render('templates/' $templateHandle);
        }
    }
}
Онлайн: 2
Реклама