97 lines
2.6 KiB
PHP
97 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* @author Tassos Marinos <info@tassos.gr>
|
|
* @link https://www.tassos.gr
|
|
* @copyright Copyright © 2024 Tassos All Rights Reserved
|
|
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
|
*/
|
|
|
|
// No direct access to this file
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\HTML\HTMLHelper;
|
|
|
|
require_once dirname(__DIR__) . '/helpers/field.php';
|
|
|
|
class JFormFieldNR_Time extends NRFormField
|
|
{
|
|
|
|
/**
|
|
* Sets the time value
|
|
*
|
|
* @var string $time_value
|
|
*/
|
|
private $time_value = null;
|
|
|
|
/**
|
|
* Method to get the field input markup.
|
|
*
|
|
* @return string The field input markup.
|
|
*/
|
|
public function getInput()
|
|
{
|
|
// Setup properties
|
|
$this->hint = $this->get('hint', '00:00');
|
|
$this->class = $this->get('class');
|
|
$this->default = $this->get('default', 'now');
|
|
$this->required = $this->get('required') === 'true';
|
|
$placement = $this->get('placement', 'top');
|
|
$align = $this->get('align', 'left');
|
|
$autoclose = $this->get('autoclose', 'true');
|
|
$donetext = $this->get('donetext', 'Done');
|
|
|
|
/**
|
|
* When an object is created using this class, it cannot set $this->value
|
|
* So we set $time_value and then use it's value to display the time
|
|
*/
|
|
$this->value = $this->time_value ? $this->time_value : $this->value;
|
|
$this->value = is_null($this->value) ? '' : $this->value;
|
|
|
|
// Add styles and scripts to DOM
|
|
HTMLHelper::_('jquery.framework');
|
|
HTMLHelper::script('plg_system_nrframework/vendor/jquery-clockpicker.min.js', ['relative' => true, 'version' => true]);
|
|
HTMLHelper::stylesheet('plg_system_nrframework/vendor/jquery-clockpicker.min.css', ['relative' => true, 'version' => true]);
|
|
|
|
static $run;
|
|
// Run once to initialize it
|
|
if (!$run)
|
|
{
|
|
$this->doc->addScriptDeclaration('
|
|
jQuery(function($) {
|
|
$(".clockpicker").clockpicker();
|
|
});
|
|
');
|
|
|
|
// Fix a CSS conflict caused by the template.css on Joomla 3
|
|
if (!defined('nrJ4'))
|
|
{
|
|
// Fuck you template.css
|
|
$this->doc->addStyleDeclaration('
|
|
.clockpicker-align-left.popover > .arrow {
|
|
left: 25px;
|
|
}
|
|
');
|
|
}
|
|
|
|
$run = true;
|
|
}
|
|
|
|
return '
|
|
<div class="clockpicker" data-donetext="' . $donetext . '" data-default="' . $this->default . '" data-placement="' . $placement . '" data-align="' . $align . '" data-autoclose="' . $autoclose . '">
|
|
' . parent::getInput() . '
|
|
</div>';
|
|
}
|
|
|
|
/**
|
|
* Sets the $time_value of the time when created as an object
|
|
* due to not being able to set the $this->value byitself
|
|
*
|
|
* @param string $value
|
|
*
|
|
* @return void
|
|
*/
|
|
public function setValue($value)
|
|
{
|
|
$this->time_value = $value;
|
|
}
|
|
} |