您在這裡

如何在編輯節點時, 將filefield上載後的檔案位址自動轉入另一個emfield的欄位?

如何在編輯節點時
將filefield上載後的檔案位址自動轉入另一個emfield的欄位
而且是在還沒儲存節點前?
可以這樣做嗎??? 如何做到???

前題如下
需要一個可以同時播放YouTube或上載在Drupal內Video檔的節點
內含filefield與emfield模組所設定的兩個欄位
新增節點時使用filefield來上載檔案
並將filefield上載後的檔案位址 自動轉入 節點內的emfield .......... 這個部分想不出簡單的方法!?!?
儲存後即可利用emfield來播放Drupal內的Video檔
情況許可時
再利用PrePopulate模組
新增包含Video Upload欄位的節點以將Video檔上載到YouTube
在上載完成後再利用PrePopulate模組寫回原節點的emfield
儲存後即可利用emfield來播放YouTube的Video檔

將filefield上載後的檔案位址 自動轉入 節點內的emfield
原本是可以利用emfield欄位default value內的一段php程式來寫入
但發現emfield欄位需要Return一個比較複雜的Array
這個方式比較繁複
而不像手動編輯一樣只要貼上檔案位址即可自動轉換

故想請問能不能在編輯節點時
如何將filefield上載後的檔案位址自動轉入另一個emfield的欄位

先謝在前

既然可以放到 YouTube 上,那為何要讓 Drupal 來管理 Video ?
所以我的建議是分兩段,先讓使用者把檔案傳到 YouTube 上,然後再填寫 node,這樣會比較簡單。

情況是這樣的
因為有些人不願意作品上載後被放到 YouTube 上
且上載到YouTube前也得先經過編輯審核以主動過濾不適內容
因YouTube 採上傳後審查
任何不適內容均會自動停播並警告
超過兩次會自動停止該YouTube帳號
一但被自動停止帳號
網站運行就等同強制中止囉

所以才會需要使用這種並行式的內容節點

謝謝

透過 IRC #drupal頻道的協助,已經找到解決方法. 第一次知道Drupal.behaviors+JavaScript+jQuery 這麼神奇好用.

寫個 form_alter 模組並結合 Drupal.behaviors 就可以啦. 當檔案上載後一旦AHAH更新網頁,自訂的myBehavior 內的jQuery程式就會自動將上載檔案網址轉入emfield的欄位.


function myModule_form_alter(&$form, $form_state, $form_id) {
if ($form['form_id']['#id'] == 'edit-myNode-form') {
drupal_add_js(
'Drupal.behaviors.myBehavior = function () {
// my fancy java and jQuery code goes here;
if ($("#emfield_id").val() == "" && $("#filefield_wrapper a").attr("href") != "") {
$("#emfield_id").val($("#filefield_wrapper a").attr("href"));
}
};',
'inline'
);
}