acf
This commit is contained in:
97
plugins/system/nrframework/fields/time.php
Normal file
97
plugins/system/nrframework/fields/time.php
Normal file
@ -0,0 +1,97 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user