Вход Регистрация
Файл: 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($iconLessFile, false, true);
        
$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);
    }
}
Онлайн: 3
Реклама