diff --git a/classes/admin.php b/classes/admin.php index e0f38e9e..366490fb 100644 --- a/classes/admin.php +++ b/classes/admin.php @@ -1,6 +1,7 @@ validateDate($date, 'm/d/Y H:i')) { + $guess = 'm/d/Y H:i'; + } elseif ($this->validateDate($date, 'm/d/y H:i')) { + $guess = 'm/d/y H:i'; + } elseif ($this->validateDate($date, 'm/d/Y G:i')) { + $guess = 'm/d/Y G:i'; + } elseif ($this->validateDate($date, 'm/d/y G:i')) { + $guess = 'm/d/y G:i'; + } elseif ($this->validateDate($date, 'm/d/Y h:ia')) { + $guess = 'm/d/Y h:ia'; + } elseif ($this->validateDate($date, 'm/d/y h:ia')) { + $guess = 'm/d/y h:ia'; + } elseif ($this->validateDate($date, 'm/d/Y g:ia')) { + $guess = 'm/d/Y g:ia'; + } elseif ($this->validateDate($date, 'm/d/y g:ia')) { + $guess = 'm/d/y g:ia'; + } + } elseif (Utils::contains($date, '-')) { + if ($this->validateDate($date, 'd-m-Y H:i')) { + $guess = 'd-m-Y H:i'; + } elseif ($this->validateDate($date, 'd-m-y H:i')) { + $guess = 'd-m-y H:i'; + } elseif ($this->validateDate($date, 'd-m-Y G:i')) { + $guess = 'd-m-Y G:i'; + } elseif ($this->validateDate($date, 'd-m-y G:i')) { + $guess = 'd-m-y G:i'; + } elseif ($this->validateDate($date, 'd-m-Y h:ia')) { + $guess = 'd-m-Y h:ia'; + } elseif ($this->validateDate($date, 'd-m-y h:ia')) { + $guess = 'd-m-y h:ia'; + } elseif ($this->validateDate($date, 'd-m-Y g:ia')) { + $guess = 'd-m-Y g:ia'; + } elseif ($this->validateDate($date, 'd-m-y g:ia')) { + $guess = 'd-m-y g:ia'; + } + } else { + $guess = 'd-m-Y H:i'; + } + } + + return $guess; + } + + public function validateDate($date, $format) + { + $d = DateTime::createFromFormat($format, $date); + return $d && $d->format($format) == $date; + } + /** * @param string $php_format * @return string */ - function dateformatToMomentJS($php_format) + public function dateformatToMomentJS($php_format) { $SYMBOLS_MATCHING = array( // Day diff --git a/themes/grav/templates/forms/fields/datetime/datetime.html.twig b/themes/grav/templates/forms/fields/datetime/datetime.html.twig index e93d4409..657c35d2 100644 --- a/themes/grav/templates/forms/fields/datetime/datetime.html.twig +++ b/themes/grav/templates/forms/fields/datetime/datetime.html.twig @@ -1,17 +1,18 @@ {% extends "forms/field.html.twig" %} -{% set default_php_dateformat = "d-m-Y H:i" %} - -{% if not config.system.pages.dateformat.default and value %} - {% if value|split('/')|count %}{% set default_php_dateformat = 'm/d/Y H:i' %}{% endif %} -{% endif %} - -{% set php_dateformat = config.system.pages.dateformat.default ?: default_php_dateformat %} +{% set default_php_dateformat = admin.guessDateFormat(value) %} +{% set php_dateformat = admin.page.dateformat ?: config.system.pages.dateformat.default ?: default_php_dateformat %} {% set js_dateformat = admin.dateformatToMomentJS(php_dateformat) %} {% set value = (value is null ? field.default : value) %} {% set value = (value is null ? value : value|date(php_dateformat)) %} {% block input %} + {{ dump(default_php_dateformat) }} + {{ dump(admin.page.dateformat) }} + {{ dump(config.system.pages.dateformat.default) }} + {{ dump(php_dateformat) }} + {{ dump(js_dateformat) }} + {{ dump('======') }}