114 lines
4.5 KiB
PHP
114 lines
4.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package Advanced Custom Fields
|
|
* @version 2.8.8 Pro
|
|
*
|
|
* @author Tassos Marinos <info@tassos.gr>
|
|
* @link http://www.tassos.gr
|
|
* @copyright Copyright © 2020 Tassos Marinos All Rights Reserved
|
|
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
|
*/
|
|
|
|
defined('_JEXEC') or die('Restricted access');
|
|
|
|
use Joomla\CMS\Form\FormField;
|
|
use Joomla\CMS\HTML\HTMLHelper;
|
|
|
|
class JFormFieldTFImageDimensionsControl extends FormField
|
|
{
|
|
/**
|
|
* Renders the input field with the video previewer.
|
|
*
|
|
* @return string The field input markup.
|
|
*/
|
|
protected function getInput()
|
|
{
|
|
$this->assets();
|
|
|
|
$isNew = $this->form->getData()->get('id') == 0;
|
|
|
|
$by = isset($this->element['by']) ? (string) $this->element['by'] : '';
|
|
$width = isset($this->element['width']) ? (string) $this->element['width'] : '';
|
|
$height = isset($this->element['height']) ? (string) $this->element['height'] : '';
|
|
$hide_disabled_option = isset($this->element['hide_disabled_option']) ? (string) $this->element['hide_disabled_option'] === 'true' : false;
|
|
$disabled_label = isset($this->element['disabled_label']) ? (string) $this->element['disabled_label'] : 'JDISABLED';
|
|
$hide_dropdown = isset($this->element['hide_dropdown']) ? (string) $this->element['hide_dropdown'] === 'true' : false;
|
|
|
|
if (is_string($this->value))
|
|
{
|
|
$this->value = json_decode($this->value, true);
|
|
}
|
|
|
|
$elName = (string) $this->element['name'];
|
|
|
|
$by_field = '';
|
|
if (!$hide_dropdown)
|
|
{
|
|
$by_field = '
|
|
<field name="by" type="list"
|
|
hiddenLabel="true"
|
|
default="' . ($isNew && isset($this->value['by']) ? $this->value['by'] : (is_null($this->value) ? $by : '')) .'"
|
|
>
|
|
' . (!$hide_disabled_option ? '<option value="disabled">' . $disabled_label . '</option>' : '') . '
|
|
<option value="width">NR_RESIZE_BY_WIDTH</option>
|
|
<option value="height">NR_RESIZE_BY_HEIGHT</option>
|
|
<option value="custom">NR_CUSTOM_SIZE</option>
|
|
</field>';
|
|
}
|
|
else
|
|
{
|
|
$by_field = '<field name="by" type="hidden" default="' . ($isNew && isset($this->value['by']) ? $this->value['by'] : $by) . '" />';
|
|
}
|
|
|
|
$xml = new SimpleXMLElement('
|
|
' . ($this->group ? '<fields name="' . $this->group . '">' : '') . '
|
|
<fields name="' . $elName . '">
|
|
' . $by_field . '
|
|
<field name="width" type="nrnumber"
|
|
hiddenLabel="true"
|
|
min="0"
|
|
filter="raw"
|
|
addon="px"
|
|
hint="NR_WIDTH"
|
|
default="' . ($isNew && isset($this->value['width']) ? $this->value['width'] : (is_null($this->value) ? $width : '')) .'"
|
|
showon="by:width[OR]by:custom"
|
|
/>
|
|
<field name="x_label" type="note"
|
|
class="separator-label"
|
|
description="NR_TIMES_UNICODE"
|
|
showon="by:custom"
|
|
/>
|
|
<field name="height" type="nrnumber"
|
|
hiddenLabel="true"
|
|
min="0"
|
|
filter="raw"
|
|
addon="px"
|
|
hint="NR_HEIGHT"
|
|
default="' . ($isNew && isset($this->value['height']) ? $this->value['height'] : (is_null($this->value) ? $height : '')) .'"
|
|
showon="by:height[OR]by:custom"
|
|
/>
|
|
</fields>
|
|
' . ($this->group ? '</fields>' : '') . '
|
|
');
|
|
|
|
$this->form->setField($xml);
|
|
|
|
$html = [];
|
|
|
|
$fields = isset($xml->fields) ? $xml->fields->field : $xml->field;
|
|
foreach ($fields as $key => $field)
|
|
{
|
|
$name = $field->attributes()->name;
|
|
$html[] = $this->form->renderField($name, ($this->group ? $this->group . '.' : '') . $elName);
|
|
}
|
|
|
|
return '<div class="tf-imagedimensions-control">' . implode('', $html) . '</div>';
|
|
}
|
|
|
|
private function assets()
|
|
{
|
|
HTMLHelper::stylesheet('plg_system_nrframework/controls/imagedimensions.css', ['relative' => true, 'version' => 'auto']);
|
|
HTMLHelper::script('plg_system_nrframework/controls/imagedimensions.js', ['relative' => true, 'version' => 'auto']);
|
|
}
|
|
} |