Np. tworzymy moduł Custom/TimestampField, a w nim kod instalacyjny (należy podmienić <recordset> na adekwatny do którego chcemy dodać pole):
//dodaj pole
Utils_RecordBrowserCommon::new_record_field('<recordset>',array('name' => _M('Date and Time'),'type'=>'timestamp', 'required'=>true, 'extra'=>false, 'visible'=>true, 'QFfield_callback'=>array('Custom_TimestampFieldCommon','QFfield_date')));
//ustaw funkcję ustawiającą datę
Utils_RecordBrowserCommon::register_processing_callback('<recordset>', array('Custom_TimestampFieldCommon', 'submit'));
Kod w klasie Common:
public static function submit($values, $mode) { // ustaw datę przy tworzeniu rekordu
if($mode=='adding') $values['date_and_time'] = time();
return $values;
}
public static function QFfield_date(&$form, $field, $label, $mode, $default, $desc, $rb_obj) { //nie pozwól na edycję pola
$form->addElement('static', $field, $label)->freeze();
$form->setDefaults(array($field=>Base_RegionalSettingsCommon::time2reg($default)));
}