Example #1
0
 /**
  * Creates a form input for date.
  *
  *     echo Form::date('author_date', $created);
  *
  * @param   string  $name       input name
  * @param   string  $value      input value
  * @param   array   $attributes html attributes
  * @return  string
  * @uses    Form::input
  * @link    https://github.com/smalot/bootstrap-datetimepicker
  */
 public static function date($name, $value = NULL, array $attrs = NULL)
 {
     $out = '';
     // Assign the datepicker assets
     Assets::css('bs.dt', 'media/css/bootstrap-datetimepicker.css', array('bootstrap'));
     Assets::js('bs.dt', 'media/js/datepicker/datetimepicker.js', array('bootstrap'));
     if (!isset($attrs['id'])) {
         $attrs['id'] = Form::_get_id_by_name($name);
     }
     // Set the input name
     $attrs['name'] = $name;
     $attrs['type'] = 'text';
     $attrs[] = 'readonly';
     $control_attrs['class'] = 'input-group date';
     $control_attrs['data-provide'] = 'datetimepicker';
     $control_attrs['data-date-language'] = 'en';
     $control_attrs['data-date-autoclose'] = true;
     $control_attrs['data-show-meridian'] = true;
     $control_attrs['data-date-today-highlight'] = true;
     $control_attrs['data-picker-position'] = 'bottom-left';
     //$control_attrs['data-format-type']        = 'php';
     $control_attrs['data-date-format'] = 'dd M yyyy hh:ii:ss';
     // Add locale support to datepicker. @todo CH and latin support
     if (I18n::$lang != 'en') {
         $lang = I18n::$lang;
         $control_attrs['data-date-language'] = $lang;
         Assets::js('bs.dt.locale', "media/js/datepicker/locales/bootstrap-datetimepicker.{$lang}.js", array('bs.dt'));
     }
     // @todo inconsistencies between php/js date formats
     if (isset($attrs['data-date-format'])) {
         $control_attrs['data-date-format'] = $attrs['data-date-format'];
         unset($attrs['data-date-format']);
     }
     if (isset($attrs['data-date-today-btn'])) {
         $control_attrs['data-date-today-btn'] = $attrs['data-date-today-btn'];
         unset($attrs['data-date-today-btn']);
     }
     if (isset($attrs['data-start-view'])) {
         $control_attrs['data-start-view'] = $attrs['data-start-view'];
         unset($attrs['data-start-view']);
     }
     if (isset($attrs['data-min-view'])) {
         $control_attrs['data-min-view'] = $attrs['data-min-view'];
         unset($attrs['data-min-view']);
     }
     if (isset($attrs['data-max-view'])) {
         $control_attrs['data-max-view'] = $attrs['data-max-view'];
         unset($attrs['data-max-view']);
     }
     if (isset($attrs['data-view-select'])) {
         $control_attrs['data-view-select'] = $attrs['data-view-select'];
         unset($attrs['data-view-select']);
     }
     // Set the input value
     if ($value == false) {
         $attrs['value'] = Date::formatted_time(time(), 'd M Y h:i:s');
         $control_attrs['data-date'] = Date::formatted_time(time(), 'd M Y h:i:s');
     } elseif ($value != false && is_numeric($value)) {
         $attrs['value'] = Date::formatted_time($value, 'd M Y h:i:s');
         $control_attrs['data-date'] = Date::formatted_time($value, 'd M Y h:i:s');
     }
     $out .= '<div' . HTML::attributes($control_attrs) . '>';
     $out .= '<input' . HTML::attributes($attrs) . '>';
     $out .= '<span class="input-group-addon"><i class="fa fa-calendar"></i></span>';
     $out .= '</div>';
     return $out;
 }