修改 form 元素的表單 hook_element() #process

需求:
因為上載的圖片太多, 又會分開數次上載/更新圖片, 編輯們想要知道上載某圖片的日期, 以決定刪除/更新某圖片

使用 devel 參考 filefield 的參數, 發覺 filefield 是有將 timestamp 儲存的, 只要在合適的 form 處顯示就可以了

顯示 timestamp 的代碼參考了 imsgefield extended module 的代碼, 使用 hook_element 的方式將 timestamp 加到 form API 之中:

<?php
function ge_filefield_timestamp_elements() {
  return array(
   
'imagefield_widget' => array(
     
'#process' => 'ge_filefield_timestamp_widget_process',
    );
}
?>

以上的代碼在 form API 處理/顯示表單 imagefield widget 的時候會呼叫一次, 而將 timestamp 加到表單的代碼:

<?php
if(isset($element['#value']['timestamp']))
  {
   
$element['data']['timestamp']['body'] = array(
     
'#type' => 'markup',
     
'#title' => 'timestamp',
     
'#default_value' => '123',
     
'#value' => 'Timestamp: ' .date('Y-m-d H:i', $element['#value']['timestamp']),
     
'#prefix' => '<div>',
     
'#suffix' => '</div>',
    );
  }
  return
$element;
?>

就更簡單, 其中, $element['#value']['timestamp'] 可以取得 timestamp, 轉換為編輯們可讀的日期格式就可以了

完整模組的代碼可以見 https://github.com/joetsuihk/filefield_timestamp

AttachmentSize
Image icon hook_element_timestamp.PNG25.26 KB
Google