TeaThemeOptions/TeaThemeOptions

View on GitHub
src/Core/Field/Link.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php

namespace crewstyle\OlympusZeus\Core\Field;

use crewstyle\OlympusZeus\OlympusZeus;
use crewstyle\OlympusZeus\Core\Field\Field;

/**
 * Builds Link field.
 *
 * @package Olympus Zeus
 * @subpackage Core\Field\Link
 * @author Achraf Chouk <achrafchouk@gmail.com>
 * @since 4.0.0
 *
 * @see https://olympus.readme.io/docs/link
 *
 */

class Link extends Field
{
    /**
     * @var string
     */
    public static $faicon = 'fa-link';

    /**
     * Constructor.
     *
     * @since 3.0.0
     */
    public function __construct(){}

    /**
     * Display HTML component.
     *
     * @param array $content Contains all field data
     * @param array $details Contains all field options
     *
     * @since 4.0.0
     */
    public function prepareField($content, $details = array())
    {
        //Build details
        $post = isset($details['post']) ? $details['post'] : 0;
        $prefix = isset($details['prefix']) ? $details['prefix'] : '';
        $tpl = empty($prefix) ? 'pages' : 'terms';

        //Build defaults data
        $template = array(
            'id' => $content['id'],
            'title' => isset($content['title']) ? $content['title'] : OlympusZeus::translate('Link'),
            'description' => isset($content['description']) ? $content['description'] : '',
            'default' => isset($content['default']) ? $content['default'] : array(),
            'expandable' => isset($content['expandable']) && is_bool($content['expandable']) 
                ? $content['expandable'] 
                : false,

            //details
            'post' => $post,
            'prefix' => $prefix,
            'template' => $tpl,

            //texts
            't_add_link' => OlympusZeus::translate('Add link'),
            't_delete_all' => OlympusZeus::translate('Delete all links'),
            't_relationship' => OlympusZeus::translate('Relationship'),
            't_relationship_description' => OlympusZeus::translate('You can set the <code>nofollow</code> value 
                to avoid bots following the linked document.'),
            't_target' => OlympusZeus::translate('Target'),
            't_target_blank' => OlympusZeus::translate('Opens the linked document in a new window or tab'),
            't_target_self' => OlympusZeus::translate('Opens the linked document in the same frame as it was clicked'),
            't_target_parent' => OlympusZeus::translate('Opens the linked document in the parent frame'),
            't_target_top' => OlympusZeus::translate('Opens the linked document in the full body of the window'),
            't_title' => OlympusZeus::translate('Title'),
            't_website_address' => OlympusZeus::translate('Web address'),
            't_website_placeholder' => OlympusZeus::translate('http://'),
            't_goto' => OlympusZeus::translate('Go to website'),
        );

        //Retrieve field value
        $template['val'] = $this->getFieldValue($details, $template['default'], $content['id'], true);
        $template['val'] = isset($template['val']['url']) ? array($template['val']) : $template['val'];

        //Get template
        return $this->renderField('fields/link.html.twig', $template);
    }
}