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

namespace ConcreteBlockFeature;

use 
ConcreteCoreEditorLinkAbstractor;
use 
Page;
use 
ConcreteCoreBlockBlockController;
use 
Less_Parser;
use 
Less_Tree_Rule;
use 
Core;

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

class 
Controller extends BlockController
{
    public 
$helpers = array('form');

    protected 
$btInterfaceWidth 400;
    protected 
$btCacheBlockOutput true;
    protected 
$btCacheBlockOutputOnPost true;
    protected 
$btCacheBlockOutputForRegisteredUsers true;
    protected 
$btExportPageColumns = array('internalLinkCID');
    protected 
$btInterfaceHeight 520;
    protected 
$btTable 'btFeature';

    public function 
getBlockTypeDescription()
    {
        return 
t("Displays an icon, a title, and a short paragraph description.");
    }

    public function 
getBlockTypeName()
    {
        return 
t("Feature");
    }

    public function 
getLinkURL()
    {
        if (!empty(
$this->externalLink)) {
            return 
$this->externalLink;
        } else {
            if (!empty(
$this->internalLinkCID)) {
                
$linkToC Page::getByID($this->internalLinkCID);

                return (empty(
$linkToC) || $linkToC->error) ? '' Core::make('helper/navigation')->getLinkToCollection(
                    
$linkToC
                
);
            } else {
                return 
'';
            }
        }
    }

    public function 
getParagraph()
    {
        return 
LinkAbstractor::translateFrom($this->paragraph);
    }

    public function 
registerViewAssets($outputContent '')
    {
        
$this->requireAsset('css''font-awesome');
        if (
is_object($this->block) && $this->block->getBlockFilename() == 'hover_description') {
            
// this isn't great but it's the only way to do this and still make block
            // output caching available to this block.
            
$this->requireAsset('javascript''bootstrap/tooltip');
            
$this->requireAsset('css''bootstrap/tooltip');
        }
    }

    public function 
add()
    {
        
$this->edit();
    }

    public function 
view()
    {
        
$this->set('paragraph'LinkAbstractor::translateFrom($this->paragraph));
        
$this->set('linkURL'$this->getLinkURL());
    }

    protected function 
getIconClasses()
    {
        
$iconLessFile DIR_BASE_CORE '/css/build/vendor/font-awesome/variables.less';
        
$icons = array();

        
$l = new Less_Parser();
        
$parser $l->parseFile($iconLessFilefalsetrue);
        
$rules $parser->rules;

        foreach (
$rules as $rule) {
            if (
$rule instanceof Less_Tree_Rule) {
                if (
strpos($rule->name'@fa-var') === 0) {
                    
$name str_replace('@fa-var-'''$rule->name);
                    
$icons[] = $name;
                }
            }
        }
        
asort($icons);

        return 
$icons;
    }

    public function 
edit()
    {
        
$this->requireAsset('css''font-awesome');
        
$classes $this->getIconClasses();

        
// let's clean them up
        
$icons = array('' => t('Choose Icon'));
        
$txt Core::make('helper/text');
        foreach (
$classes as $class) {
            
$icons[$class] = $txt->unhandle($class);
        }
        
$this->set('icons'$icons);
    }

    public function 
getSearchableContent()
    {
        return 
$this->title ' ' $this->paragraph;
    }

    public function 
save($args)
    {
        switch (isset(
$args['linkType']) ? intval($args['linkType']) : 0) {
            case 
1:
                
$args['externalLink'] = '';
                break;
            case 
2:
                
$args['internalLinkCID'] = 0;
                break;
            default:
                
$args['externalLink'] = '';
                
$args['internalLinkCID'] = 0;
                break;
        }
        
$args['paragraph'] = LinkAbstractor::translateTo($args['paragraph']);
        unset(
$args['linkType']);
        
parent::save($args);
    }
}
Онлайн: 1
Реклама