From e9f229db7860a3efc4f71a21072ae99c8b1c1256 Mon Sep 17 00:00:00 2001 From: eileen Date: Fri, 24 Feb 2017 00:35:14 +1300 Subject: [PATCH] CRM-19490: Profile date fields don't respect localisation on the Contribution Page confirmation screen --- CRM/Core/Smarty/plugins/modifier.crmDate.php | 4 +++ CRM/Utils/Date.php | 26 +++++++++++--------- templates/CRM/UF/Form/Fields.tpl | 11 ++++++--- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/CRM/Core/Smarty/plugins/modifier.crmDate.php b/CRM/Core/Smarty/plugins/modifier.crmDate.php index 11b001abd7..d38e8e6877 100644 --- a/CRM/Core/Smarty/plugins/modifier.crmDate.php +++ b/CRM/Core/Smarty/plugins/modifier.crmDate.php @@ -56,6 +56,10 @@ function smarty_modifier_crmDate($dateString, $dateFormat = NULL, $onlyTime = FA $config = CRM_Core_Config::singleton(); $dateFormat = $config->dateformatTime; } + // Handle possibility we only have a date function style date format. + if ($dateFormat && !stristr('%', $dateFormat)) { + return date($dateFormat, strtotime($dateString)); + } return CRM_Utils_Date::customFormat($dateString, $dateFormat); } diff --git a/CRM/Utils/Date.php b/CRM/Utils/Date.php index 80dd413f30..3d8ed11f93 100644 --- a/CRM/Utils/Date.php +++ b/CRM/Utils/Date.php @@ -1775,20 +1775,22 @@ class CRM_Utils_Date { public static function addDateMetadataToField($fieldMetaData, $field) { if (isset($fieldMetaData['html'])) { $field['html_type'] = $fieldMetaData['html']['type']; - if ($field['html_type'] === 'Select Date' && !isset($field['date_format'])) { - $dateAttributes = CRM_Core_SelectValues::date($fieldMetaData['html']['formatType'], NULL, NULL, NULL, 'Input'); - $field['start_date_years'] = $dateAttributes['minYear']; - $field['end_date_years'] = $dateAttributes['maxYear']; - $field['date_format'] = $dateAttributes['format']; - $field['is_datetime_field'] = TRUE; - $field['time_format'] = $dateAttributes['time']; - $field['php_datetime_format'] = CRM_Utils_Date::getPhpDateFormatFromInputStyleDateFormat($field['date_format']); - if ($field['time_format']) { - $field['php_datetime_format'] .= ' H-i-s'; + if ($field['html_type'] === 'Select Date') { + if (!isset($field['date_format'])) { + $dateAttributes = CRM_Core_SelectValues::date($fieldMetaData['html']['formatType'], NULL, NULL, NULL, 'Input'); + $field['start_date_years'] = $dateAttributes['minYear']; + $field['end_date_years'] = $dateAttributes['maxYear']; + $field['date_format'] = $dateAttributes['format']; + $field['is_datetime_field'] = TRUE; + $field['time_format'] = $dateAttributes['time']; + $field['php_datetime_format'] = CRM_Utils_Date::getPhpDateFormatFromInputStyleDateFormat($field['date_format']); + if ($field['time_format']) { + $field['php_datetime_format'] .= ' H-i-s'; + } } + $field['datepicker']['extra'] = self::getDatePickerExtra($field); + $field['datepicker']['attributes'] = self::getDatePickerAttributes($field); } - $field['datepicker']['extra'] = self::getDatePickerExtra($field); - $field['datepicker']['attributes'] = self::getDatePickerAttributes($field); } return $field; } diff --git a/templates/CRM/UF/Form/Fields.tpl b/templates/CRM/UF/Form/Fields.tpl index 1f12371df1..5d27eae823 100644 --- a/templates/CRM/UF/Form/Fields.tpl +++ b/templates/CRM/UF/Form/Fields.tpl @@ -93,12 +93,15 @@ ( $form.formName neq 'Confirm' ) AND ( $form.formName neq 'ThankYou' ) } {include file="CRM/common/jcalendar.tpl" elementName=$profileFieldName} - {elseif ( $profileFieldName|substr:-5:5 eq '_date' ) } + {elseif $field.is_datetime_field && $action == 4} {assign var="date_value" value=$form.$profileFieldName.value} - {$date_value|date_format:"%Y-%m-%d"|crmDate:$config->dateformatshortdate} - - + {$date_value|date_format:"%Y-%m-%d"|crmDate:$field.php_datetime_format} + + {elseif $profileFieldName|substr:0:5 eq 'phone'} {assign var="phone_ext_field" value=$profileFieldName|replace:'phone':'phone_ext'} {if $prefix}{$form.$prefix.$profileFieldName.html}{else}{$form.$profileFieldName.html}{/if} -- 2.25.1