Date input (SOLVED)

Archived from the Xataface Users forum.

cantlep — Wed Jun 02, 2010 2:56 am

Hiya,

When entering a date in a field in “New Record”. The calendar function allows the date to be selected..Brilliant. However, when it’s actually copied into the field, it’s in US format (MM/DD/YY). Is there a way to make it UK format (DD/MM/YY). I have it in UK record format once the details have been “saved”..it’s just in the new record bit I’d like to change it. Is this something in Xataface or some other locale type setting on the system?

Thanks

Paul


shannah — Mon Jun 07, 2010 9:45 am

Yes. You can adjust the format that the calendar widget accepts for dates using the widget:ifFormat directive in the fields.ini file:

Code: Select all
[myfield] widget:ifFormat="%Y-%m-%d %I:%M %P"

The format should use the same variables as the strftime function:
http://php.net/manual/en/function.strftime.php


cantlep — Mon Jun 07, 2010 1:52 pm

Hi Steve,

Cheers. Works like a charm.

Thanks

Paul


marcelo.guedes — Wed Nov 14, 2012 2:25 pm

Hi.

This solution is not working any more in 2.0alpha1.

When I insert the ifFormat parameter I have date inconsistencies. For instance:

For widget:ifFormat=”%d/%m/%Y”, when I click on the calendar icon and select the date “1st February, 2012” it shows in the field: “01/02/2012”. Nice, perfect. But when I save it, the database stores “2011-01-02” or the date “2nd January, 2011”. More than that, when I try to find the date in the calendar again the select date is different from both, showing “4th July, 2007”.

I have no idea what’s going on here. I tried to created the function \_\_pull in this way:

Code: Select all
function datefield__pull(&$record){     if ($record->val('datefield') == NULL) {       return '';     }else{       return date('d/m/Y', strtotime($record->strval('datefield')));     }   }

However, it only created a new level of inconsistencies and it didn’t solved the issue.

Ideas?


shannah — Wed Nov 14, 2012 3:14 pm

I have added this issue to the issue tracker
http://bugs.weblite.ca/view.php?id=1179
http://bugs.weblite.ca/view.php?id=1180 (duplicate for 1.3.x branch)

And I have fixed the issue.

You can get the update by replacing your Dataface/FormTool/calendar.php file with the one at
http://weblite.ca/svn/dataface/core/tru … lendar.php

-Steve


marcelo.guedes — Wed Nov 14, 2012 4:26 pm

Hi!

It worked here, requiring all the modifications together:
delegate classes \_\_pullValue as reported in forum

  • widget:ifFormat = “%d/%m/%Y”
  • the new calendar.php file.

Suggestion:
This calendar.php solution can’t deal with empty field. It returns a old date instead (strange it seems, different old dates when using or not using ifFormat). To deal with NULL field, I would like to suggest a small modification in function pushValue:

Code: Select all
`33,37d32
<
< if (trim($element->getValue()) == NULL)   {
<   return NULL;
< }
<
38a34

`

It will deal with NULL and white spaces. My function is now:

Code: Select all
`/**
    * @brief Added support to transform date values in alternate formats
    * as provided by the widget:ifFormat directive.
    * http://xataface.com/forum/viewtopic.php?f=4&t=5345
    */
   function pushValue(&$record, &$field, &$form, &$element, &$metaValues){
      $table =& $record->_table;
      $formTool =& Dataface_FormTool::getInstance();
      $formFieldName = $field[‘name’];

      if (trim($element->getValue()) == NULL)   {
         return NULL;
      }

      if ( @$field[‘widget’][‘ifFormat’] ){
         $ts = strptime($element->getValue(), $field[‘widget’][‘ifFormat’]);
         $ts = mktime($ts[‘tm_hour’], $ts[‘tm_min’], $ts[‘tm_sec’],
                     $ts[‘tm_mon’]+1, $ts[‘tm_mday’], ($ts[‘tm_year’] + 1900));
            return date(‘Y-m-d H:i:s’, $ts);
      } else {
         return $element->getValue();
      }
      
   }`

Here it is working just as expected now. I didn’t test enough about the cases without ifFormat but maybe it is a good idea to be careful because they are treated in different ways.

Thank you very much.


shannah — Wed Nov 14, 2012 4:33 pm

Thanks for pointing this out. I have made some changes in the trunk to address this issue.
http://weblite.ca/svn/dataface/core/tru … lendar.php


marcelo.guedes — Wed Nov 14, 2012 4:42 pm

Updated here. Working like a charm.