Merge pull request #13546 from civicrm/5.10
[civicrm-core.git] / CRM / Core / Form / Renderer.php
index 435506661f611ef789a04b0479ab2a38d1505d9a..230cfa142fd4167d376762db1dbe9946304e70fa 100644 (file)
@@ -3,7 +3,7 @@
  +--------------------------------------------------------------------+
  | CiviCRM version 5                                                  |
  +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC (c) 2004-2018                                |
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
  +--------------------------------------------------------------------+
  | This file is a part of CiviCRM.                                    |
  |                                                                    |
@@ -28,7 +28,7 @@
 /**
  *
  * @package CRM
- * @copyright CiviCRM LLC (c) 2004-2018
+ * @copyright CiviCRM LLC (c) 2004-2019
  * $Id$
  *
  */
@@ -123,6 +123,9 @@ class CRM_Core_Form_Renderer extends HTML_QuickForm_Renderer_ArraySmarty {
       elseif ($element->getAttribute('type') == 'text' && $element->getAttribute('data-select-params')) {
         $this->renderFrozenSelect2($el, $element);
       }
+      elseif ($element->getAttribute('type') == 'text' && $element->getAttribute('data-crm-datepicker')) {
+        $this->renderFrozenDatepicker($el, $element);
+      }
       elseif ($element->getAttribute('type') == 'text' && $element->getAttribute('formatType')) {
         list($date, $time) = CRM_Utils_Date::setDateDefaults($element->getValue(), $element->getAttribute('formatType'), $element->getAttribute('format'), $element->getAttribute('timeformat'));
         $date .= ($element->getAttribute('timeformat')) ? " $time" : '';
@@ -259,6 +262,29 @@ class CRM_Core_Form_Renderer extends HTML_QuickForm_Renderer_ArraySmarty {
     $field->setValue(implode(',', $val));
   }
 
+  /**
+   * Render datepicker as text.
+   *
+   * @param array $el
+   * @param HTML_QuickForm_element $field
+   */
+  public function renderFrozenDatepicker(&$el, $field) {
+    $settings = json_decode($field->getAttribute('data-crm-datepicker'), TRUE);
+    $settings += ['date' => TRUE, 'time' => TRUE];
+    $val = $field->getValue();
+    if ($val) {
+      $dateFormat = NULL;
+      if (!$settings['time']) {
+        $val = substr($val, 0, 10);
+      }
+      elseif (!$settings['date']) {
+        $dateFormat = Civi::settings()->get('dateformatTime');
+      }
+      $val = CRM_Utils_Date::customFormat($val, $dateFormat);
+    }
+    $el['html'] = $val . '<input type="hidden" value="' . $field->getValue() . '" name="' . $field->getAttribute('name') . '">';
+  }
+
   /**
    * Render select2 as text.
    *