diff -r fcf75e232c5b -r 0ff3ba646492 web/drupal/modules/imce/js/imce_set_app.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/drupal/modules/imce/js/imce_set_app.js Fri Aug 21 16:26:26 2009 +0000 @@ -0,0 +1,64 @@ +// $Id: imce_set_app.js,v 1.3.2.6 2009/02/20 21:17:25 ufku Exp $ +//When imce url contains &app=appName|fileProperty1@correspondingFieldId1|fileProperty2@correspondingFieldId2|... +//the specified fields are filled with the specified properties of the selected file. + +var appFields = {}, appWindow = (top.appiFrm||window).opener; + +//execute when imce loads. +imce.hooks.load.push(function(win) { + var data = decodeURIComponent(location.href.substr(location.href.lastIndexOf('app=')+4)).split('|'); + var appName = data.shift(); + //extract fields + for (var i in data) { + var arr = data[i].split('@'); + appFields[arr[0]] = arr[1]; + } + //run custom onload function if available. + if (appFields['onload'] && $.isFunction(appWindow[appFields['onload']])) { + appWindow[appFields['onload']](win); + delete appFields['onload']; + } + //set custom sendto function. appFinish is the default. + var sendtoFunc = appFields['url'] ? appFinish : false; + //check sendto@funcName syntax in URL + if (appFields['sendto'] && $.isFunction(appWindow[appFields['sendto']])) { + sendtoFunc = appWindow[appFields['sendto']]; + delete appFields['sendto']; + } + //check windowname+ImceFinish. old method + else if (win.name && $.isFunction(appWindow[win.name +'ImceFinish'])) { + sendtoFunc = appWindow[win.name +'ImceFinish']; + } + //highlight file + if (appFields['url']) { + if (appFields['url'].indexOf(',') > -1) {//support multiple url fields url@field1,field2.. + var arr = appFields['url'].split(','); + for (var i in arr) { + if ($('#'+ arr[i], appWindow.document).size()) { + appFields['url'] = arr[i]; + break; + } + } + } + var filename = $('#'+ appFields['url'], appWindow.document).val(); + imce.highlight(filename.substr(filename.lastIndexOf('/')+1)); + } + //set send to + if (sendtoFunc) { + imce.setSendTo(Drupal.t('Send to @app', {'@app': appName}), sendtoFunc); + } +}); + +//sendTo function +var appFinish = function(file, win) { + var doc = $(appWindow.document); + for (var i in appFields) { + doc.find('#'+ appFields[i]).val(file[i]); + } + if (appFields['url']) { + try{doc.find('#'+ appFields['url']).blur().change().focus()}catch(e){}; + try{doc.find('#'+ appFields['url']).trigger('onblur').trigger('onchange').trigger('onfocus')}catch(e){};//inline events + } + appWindow.focus(); + win.close(); +};