web/drupal/modules/imce/js/imce_set_app.js
branchdrupal
changeset 74 0ff3ba646492
--- /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();
+};