it-swarm.dev

Selettore data / ora nel componente

Nel mio componente personalizzato, devo inserire data e ora.

L'elemento calendario standard di Joomla supporta un selettore di date, ma nessun selettore di tempo.

Qualcuno può aiutarmi e indicarmi un selettore di data e ora alternativo?

6
Piero Marsilio

L'unico aspetto negativo della soluzione di @ johanpw è l'uso di # datetimepicker2, il che significa che questo tipo di campo può essere utilizzato solo una volta. Buona soluzione altrimenti!

Prova invece quanto segue nel tuo /modules/mod_yourmodule/fields/datetime.php

$id = str_replace('jform[','',str_replace(']','',$this->name));

return '<div id="datetimepicker'.$id.'" class="input-append date">'.
                 '<input name="'.$this->name.'" data-format="MM/dd/yyyy HH:mm:ss PP" value="'.$this->value.'" type="text" />'.
                 '<span class="add-on">'.
                   '<i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>'.
                 '</span>'.
                '</div>'.
                '<script type="text/javascript">'.
                  'jQuery(function() {'.
                    'jQuery("#datetimepicker'.$id.'").datetimepicker({'.
                      'language: "en",'.
                      'pick12HourFormat: true,'.
                      'format: "yyyy-MM-dd hh:mm:ss"'.
                    '});'.
                  '});'.
                '</script>';

Ho anche aggiunto in 'format: "yyyy-MM-dd hh:mm:ss"' in modo da poterlo utilizzare correttamente all'interno di un componente con un campo DateTime SQL se lo desideri.

Ho anche avuto problemi in cui la casella di input scompariva dopo aver selezionato una data, questo potrebbe essere solo io ma se qualcun altro lo sperimenta prova questo al tuo amministratore css:

.input-append.date {
    display: inline-block!important;
}
4
VaciDesign

Puoi creare i tuoi tipi di campi personalizzati in Joomla. Questo esempio è per un modulo, ma lo stesso processo funziona con i componenti:

Crea questo file: /modules/mod_yourmodule/fields/datetime.php

<?php
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');

// Add CSS and JS
JHtml::stylesheet('http://netdna.bootstrapcdn.com/Twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css');
JHtml::stylesheet('http://tarruda.github.com/bootstrap-datetimepicker/assets/css/bootstrap-datetimepicker.min.css');
JHtml::script('http://tarruda.github.com/bootstrap-datetimepicker/assets/js/bootstrap-datetimepicker.min.js');

jimport('joomla.form.formfield');

class JFormFieldDateTime extends JFormField {

    protected $type = 'DateTime';

    public function getInput() {
            return '<div class="well">'.
                    '<div id="datetimepicker2" class="input-append">'.
                        '<input data-format="MM/dd/yyyy HH:mm:ss PP" type="text"></input>'.
                        '<span class="add-on">'.
                          '<i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>'.
                        '</span>'.
                      '</div>'.
                    '</div>'.
                    '<script type="text/javascript">'.
                      'jQuery(function() {'.
                        'jQuery("#datetimepicker2").datetimepicker({'.
                          'language: "en",'.
                          'pick12HourFormat: true'.
                        '});'.
                      '});'.
                    '</script>';
    }
}

Ora hai un tipo di campo personalizzato. Per usarlo, posizionalo nel tuo .xml file:

<fields name="params">
   <fieldset name="basic" addfieldpath="/modules/mod_yourmodule/models/fields">
       <field name="title" type="DateTime" label="Select Date and Time" description=""   />
   </fieldset>
</fields>

Joomla Custom Field type

(Basato su http://tarruda.github.io/bootstrap-datetimepicker/ )

3
johanpw

A partire da Joomla 3.7, un selettore del tempo è incluso nel core. I documenti per questo sono qui , ma il Gist è il seguente.

Se vuoi farlo attraverso una definizione di modulo XML, usa

<?xml version="1.0" encoding="utf-8"?>
<form>
    <fieldset>
        <field
            name="mydatetimefield"
            type="calendar"
            label="COM_MYCOMPONENTNAME_FIELD_DATETIME"
            showtime="true"
            format="%Y-%m-%d %H:%M:%S"
        />
    />
/>

O se vuoi direttamente JHTML, allora è

JHtml::_(
'calendar',
'',
'mydatetimefield',
'mydatetimefieldid',
'%Y-%m-%d %H:%M',
[ 'showTime'=>'showTime' ]);

I punti chiave di questi due metodi sono lo "showtime" e il formato. Il formato deve includere alcuni elementi temporali %H, %M, %S, altrimenti otterrai un selettore del tempo, ma il tempo selezionato non tornerà sul tuo server.

1
Dom

JHTML :: _ ('behavior.modal');

echo JHTML :: calendar ('2015-04-03', 'name', 'id', '% d.% m.% Y% H:% I');

0
Bender