www/filemanager/directories/directories.js

Code
Comments
Other
Rev Date Author Line
7604 25 Feb 19 nicklas 1 /* $Id $
7604 25 Feb 19 nicklas 2   ------------------------------------------------------------------
7604 25 Feb 19 nicklas 3   Copyright (C) 2013 Nicklas Nordborg
7604 25 Feb 19 nicklas 4
7604 25 Feb 19 nicklas 5   This file is part of BASE - BioArray Software Environment.
7604 25 Feb 19 nicklas 6   Available at http://base.thep.lu.se/
7604 25 Feb 19 nicklas 7
7604 25 Feb 19 nicklas 8   BASE is free software; you can redistribute it and/or
7604 25 Feb 19 nicklas 9   modify it under the terms of the GNU General Public License
7604 25 Feb 19 nicklas 10   as published by the Free Software Foundation; either version 3
7604 25 Feb 19 nicklas 11   of the License, or (at your option) any later version.
7604 25 Feb 19 nicklas 12
7604 25 Feb 19 nicklas 13   BASE is distributed in the hope that it will be useful,
7604 25 Feb 19 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
7604 25 Feb 19 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7604 25 Feb 19 nicklas 16   GNU General Public License for more details.
7604 25 Feb 19 nicklas 17
7604 25 Feb 19 nicklas 18   You should have received a copy of the GNU General Public License
7604 25 Feb 19 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
7604 25 Feb 19 nicklas 20   ------------------------------------------------------------------
7604 25 Feb 19 nicklas 21
7604 25 Feb 19 nicklas 22   @author Nicklas
7604 25 Feb 19 nicklas 23 */
7604 25 Feb 19 nicklas 24 'use strict';
7604 25 Feb 19 nicklas 25
7604 25 Feb 19 nicklas 26 var Directories = function()
7604 25 Feb 19 nicklas 27 {
7604 25 Feb 19 nicklas 28   var directories = {};
7604 25 Feb 19 nicklas 29   
7604 25 Feb 19 nicklas 30   /**
7604 25 Feb 19 nicklas 31     Initialize the page.
7604 25 Feb 19 nicklas 32   */
7604 25 Feb 19 nicklas 33   directories.initPage = function()
7604 25 Feb 19 nicklas 34   {
7604 25 Feb 19 nicklas 35     var pageId = Doc.getPageId();    
7604 25 Feb 19 nicklas 36     if (pageId == 'edit-page')
7604 25 Feb 19 nicklas 37     {
7604 25 Feb 19 nicklas 38       // Save + Close buttons
7604 25 Feb 19 nicklas 39       Buttons.addClickHandler('btnSave', directories.save);
7604 25 Feb 19 nicklas 40       Buttons.addClickHandler('close', App.closeWindow);
7604 25 Feb 19 nicklas 41       
7604 25 Feb 19 nicklas 42       // Tab validation
7604 25 Feb 19 nicklas 43       TabControl.addTabValidator('settings.info', directories.validateDirectory);
7604 25 Feb 19 nicklas 44     }
7604 25 Feb 19 nicklas 45     else if (pageId == 'list-page')
7604 25 Feb 19 nicklas 46     {
7604 25 Feb 19 nicklas 47       IconStore.addDefaultIcons();
7604 25 Feb 19 nicklas 48       IconStore.addIconSet('Search', 'search.png', 'search-selected.png');
7604 25 Feb 19 nicklas 49       IconStore.addIconSet('FolderCompressed', 'folder-compressed.png', 'folder-compressed-selected.png');
7604 25 Feb 19 nicklas 50       IconStore.addIconSet('FolderDeleted', 'folder-deleted.png');
7604 25 Feb 19 nicklas 51
7604 25 Feb 19 nicklas 52       Events.addEventHandler('joust', 'joust-select', directories.onSelect);
7604 25 Feb 19 nicklas 53       Events.addEventHandler('joust', 'joust-lazy-init', directories.lazyInit);
7604 25 Feb 19 nicklas 54       
7604 25 Feb 19 nicklas 55       Joust2.draw('joust');
7604 25 Feb 19 nicklas 56       
7604 25 Feb 19 nicklas 57       Buttons.addClickHandler('btnSearch', directories.searchOnClick);
7604 25 Feb 19 nicklas 58       Buttons.addClickHandler('btnRefresh', directories.refresh);
7604 25 Feb 19 nicklas 59       Buttons.addClickHandler('btnNewDirectory', directories.newDirectory);
7604 25 Feb 19 nicklas 60       Buttons.addClickHandler('close', App.closeWindow);
7604 25 Feb 19 nicklas 61       Buttons.addClickHandler('btnOk', directories.returnSelected);
7604 25 Feb 19 nicklas 62       
7604 25 Feb 19 nicklas 63       Joust2.select(Data.get('page-data', 'initial-directory'), !Data.int('page-data', 'sync-with-directory'));
7983 22 Jun 21 nicklas 64       
7983 22 Jun 21 nicklas 65       directories.initDragDrop(document);
7604 25 Feb 19 nicklas 66     }
7604 25 Feb 19 nicklas 67   }
7983 22 Jun 21 nicklas 68
7983 22 Jun 21 nicklas 69
7983 22 Jun 21 nicklas 70   var highlightedSubdir = null;
7983 22 Jun 21 nicklas 71   var highlightedElement = null;
7983 22 Jun 21 nicklas 72   var hideTooltipTimer = null;
7983 22 Jun 21 nicklas 73   directories.dragFiles = function(event)
7983 22 Jun 21 nicklas 74   {
7983 22 Jun 21 nicklas 75     if (event.dataTransfer.types.indexOf('Files') == -1) return; // There are no files so we don't care
7983 22 Jun 21 nicklas 76
7983 22 Jun 21 nicklas 77     // Stop all default things from happening
7983 22 Jun 21 nicklas 78     event.preventDefault();
7983 22 Jun 21 nicklas 79     event.stopPropagation();
7983 22 Jun 21 nicklas 80     
7983 22 Jun 21 nicklas 81     // Find out which directory we are uploading to
7983 22 Jun 21 nicklas 82     var subdir = event.currentTarget.item.path;
7983 22 Jun 21 nicklas 83     if (!subdir)
7983 22 Jun 21 nicklas 84     {
7983 22 Jun 21 nicklas 85       event.dataTransfer.dropEffect = "none"; // No drop here!
7983 22 Jun 21 nicklas 86       return;
7983 22 Jun 21 nicklas 87     }
7983 22 Jun 21 nicklas 88     var allowUpload = event.currentTarget.item.allowUpload;
7983 22 Jun 21 nicklas 89     event.dataTransfer.dropEffect = allowUpload ? "copy" : "none";
7983 22 Jun 21 nicklas 90
7983 22 Jun 21 nicklas 91     // Highlight the current directory if it is a sub-directory
7983 22 Jun 21 nicklas 92     if (subdir != highlightedSubdir)
7983 22 Jun 21 nicklas 93     {
7983 22 Jun 21 nicklas 94       if (highlightedElement) 
7983 22 Jun 21 nicklas 95       {
7983 22 Jun 21 nicklas 96         Doc.removeClass(highlightedElement, 'drop-upload');
7983 22 Jun 21 nicklas 97         Doc.removeClass(highlightedElement, 'bg-filled-50');
7983 22 Jun 21 nicklas 98       }
7983 22 Jun 21 nicklas 99       if (subdir)
7983 22 Jun 21 nicklas 100       {
7983 22 Jun 21 nicklas 101         highlightedElement = event.currentTarget;
7983 22 Jun 21 nicklas 102         highlightedSubdir = subdir;
7983 22 Jun 21 nicklas 103         Doc.addClass(highlightedElement, 'drop-upload');
7983 22 Jun 21 nicklas 104         Doc.addClass(highlightedElement, 'bg-filled-50');
7983 22 Jun 21 nicklas 105       }
7983 22 Jun 21 nicklas 106       else
7983 22 Jun 21 nicklas 107       {
7983 22 Jun 21 nicklas 108         highlightedElement = null;
7983 22 Jun 21 nicklas 109         highlightedSubdir = null;
7983 22 Jun 21 nicklas 110       }
7983 22 Jun 21 nicklas 111     }
7983 22 Jun 21 nicklas 112     
7983 22 Jun 21 nicklas 113     // Display tooltip
7983 22 Jun 21 nicklas 114     var tt = Doc.element('uploadTooltip');
7983 22 Jun 21 nicklas 115     if (allowUpload)
7983 22 Jun 21 nicklas 116     {
7983 22 Jun 21 nicklas 117       Doc.removeClass(tt, 'error');
7983 22 Jun 21 nicklas 118       tt.innerHTML = 'Upload to '+subdir.replace(/\//g, '/<wbr>');
7983 22 Jun 21 nicklas 119     }
7983 22 Jun 21 nicklas 120     else
7983 22 Jun 21 nicklas 121     {
7983 22 Jun 21 nicklas 122       Doc.addClass(tt, 'error');
7983 22 Jun 21 nicklas 123       tt.innerHTML = 'Not allowed to upload to '+subdir.replace(/\//g, '/<wbr>');
7983 22 Jun 21 nicklas 124     }
7983 22 Jun 21 nicklas 125     tt.style.left = Math.max(0, Math.min(event.clientX-tt.clientWidth/2, window.innerWidth-tt.offsetWidth))+'px';
7983 22 Jun 21 nicklas 126     tt.style.top = event.clientY < window.innerHeight-30-tt.offsetHeight ? (event.clientY+30)+'px' : (event.clientY-100-tt.offsetHeight)+'px';
7983 22 Jun 21 nicklas 127     Doc.show(tt);
7983 22 Jun 21 nicklas 128     
7983 22 Jun 21 nicklas 129     // Set a timer for hiding the tooltip since we never get any event when dragging ends
7983 22 Jun 21 nicklas 130     if (hideTooltipTimer) clearTimeout(hideTooltipTimer);
7983 22 Jun 21 nicklas 131     hideTooltipTimer = setTimeout(directories.hideFileUploadTooltip, 500);
7983 22 Jun 21 nicklas 132   }
7604 25 Feb 19 nicklas 133   
7983 22 Jun 21 nicklas 134   directories.hideFileUploadTooltip = function()
7983 22 Jun 21 nicklas 135   {
7983 22 Jun 21 nicklas 136     if (highlightedElement) 
7983 22 Jun 21 nicklas 137     {
7983 22 Jun 21 nicklas 138       Doc.removeClass(highlightedElement, 'drop-upload');
7983 22 Jun 21 nicklas 139       Doc.removeClass(highlightedElement, 'bg-filled-50');
7983 22 Jun 21 nicklas 140       highlightedElement = null;
7983 22 Jun 21 nicklas 141       highlightedSubdir = null;
7983 22 Jun 21 nicklas 142     }
7983 22 Jun 21 nicklas 143     Doc.hide('uploadTooltip');
7983 22 Jun 21 nicklas 144   }
7983 22 Jun 21 nicklas 145
7983 22 Jun 21 nicklas 146   var filesToUpload;
7983 22 Jun 21 nicklas 147   directories.dropFiles = function(event)
7983 22 Jun 21 nicklas 148   {
7983 22 Jun 21 nicklas 149     if (event.dataTransfer.types.indexOf('Files') == -1) return; // There are no files so we don't care
7983 22 Jun 21 nicklas 150     
7983 22 Jun 21 nicklas 151     // Stop all default things from happening
7983 22 Jun 21 nicklas 152     event.preventDefault();
7983 22 Jun 21 nicklas 153     event.stopPropagation();
7983 22 Jun 21 nicklas 154
7983 22 Jun 21 nicklas 155     var items = event.dataTransfer.items;
7983 22 Jun 21 nicklas 156     // Check if the dropped items are files or directories
7983 22 Jun 21 nicklas 157     filesToUpload = [];
7988 30 Jun 21 nicklas 158     for (var i = 0; i < items.length; i++)
7983 22 Jun 21 nicklas 159     {
7983 22 Jun 21 nicklas 160       var fe = items[i].webkitGetAsEntry();
7988 30 Jun 21 nicklas 161       if (fe.isFile || fe.isDirectory)
7983 22 Jun 21 nicklas 162       {
7988 30 Jun 21 nicklas 163         filesToUpload[filesToUpload.length] = fe;
7983 22 Jun 21 nicklas 164       }
7983 22 Jun 21 nicklas 165     }
7983 22 Jun 21 nicklas 166     if (filesToUpload.length == 0) return; // Only directories
7983 22 Jun 21 nicklas 167
7983 22 Jun 21 nicklas 168     // Open upload dialog
7983 22 Jun 21 nicklas 169     var url = '../upload/drag_drop_upload.jsp?ID='+App.getSessionId();
7983 22 Jun 21 nicklas 170     url += '&toDir='+event.currentTarget.id;
7988 30 Jun 21 nicklas 171     url += '&numFiles='+filesToUpload.length;
7989 01 Jul 21 nicklas 172     Dialogs.openPopup(url, 'DragDropUpload', 700, 450);
7983 22 Jun 21 nicklas 173   }
7983 22 Jun 21 nicklas 174   
7989 01 Jul 21 nicklas 175   directories.getFilesToUpload = function()
7989 01 Jul 21 nicklas 176   {
7989 01 Jul 21 nicklas 177     return filesToUpload;
7989 01 Jul 21 nicklas 178   }
7989 01 Jul 21 nicklas 179   
7604 25 Feb 19 nicklas 180   directories.validateDirectory = function()
7604 25 Feb 19 nicklas 181   {
7604 25 Feb 19 nicklas 182     var frm = document.forms['directory'];
7604 25 Feb 19 nicklas 183     if (Strings.trim(frm.name.value) == '')
7604 25 Feb 19 nicklas 184     {
7604 25 Feb 19 nicklas 185       Forms.showNotification(frm.name, 'You must enter a name');
7604 25 Feb 19 nicklas 186       return false;
7604 25 Feb 19 nicklas 187     }
7604 25 Feb 19 nicklas 188     return true;
7604 25 Feb 19 nicklas 189   }
7604 25 Feb 19 nicklas 190   
7604 25 Feb 19 nicklas 191   // Submit the form
7604 25 Feb 19 nicklas 192   directories.save = function()
7604 25 Feb 19 nicklas 193   {
7604 25 Feb 19 nicklas 194     var frm = document.forms['directory'];
7604 25 Feb 19 nicklas 195     if (TabControl.validateActiveTab('settings'))
7604 25 Feb 19 nicklas 196     {
7604 25 Feb 19 nicklas 197       frm.submit();
7604 25 Feb 19 nicklas 198     }
7604 25 Feb 19 nicklas 199   }
7604 25 Feb 19 nicklas 200   
7604 25 Feb 19 nicklas 201   /**
7604 25 Feb 19 nicklas 202     Handles click event in the directory tree.
7604 25 Feb 19 nicklas 203   */
7604 25 Feb 19 nicklas 204   directories.onSelect = function(event)
7604 25 Feb 19 nicklas 205   {
7604 25 Feb 19 nicklas 206     var menuElement = event.target;
7604 25 Feb 19 nicklas 207     var menuItem = menuElement.item;
7604 25 Feb 19 nicklas 208
7604 25 Feb 19 nicklas 209     var mode = Data.get('page-data', 'mode');
7604 25 Feb 19 nicklas 210     if (mode == 'selectonedirectory')
7604 25 Feb 19 nicklas 211     {
7604 25 Feb 19 nicklas 212       var frm = document.forms['directory'];
7604 25 Feb 19 nicklas 213       frm.directory_id.value = menuItem.id;
7604 25 Feb 19 nicklas 214       frm.path.value = menuItem.path;
7604 25 Feb 19 nicklas 215       //lastDirectoryId = directoryId;
7604 25 Feb 19 nicklas 216     }
7604 25 Feb 19 nicklas 217     else
7604 25 Feb 19 nicklas 218     {
7604 25 Feb 19 nicklas 219       if (menuElement.id == 'search')
7604 25 Feb 19 nicklas 220       {
7604 25 Feb 19 nicklas 221         var url = '../files/index.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 222         url += '&cmd=Search&subcontext=search';
7604 25 Feb 19 nicklas 223         url += '&mode='+Data.get('page-data', 'mode');
7604 25 Feb 19 nicklas 224         parent.frames['files'].location.href = url;
7604 25 Feb 19 nicklas 225       }
7604 25 Feb 19 nicklas 226       else
7604 25 Feb 19 nicklas 227       {
7604 25 Feb 19 nicklas 228         var url = '../files/index.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 229         url += '&cmd=List&directory_id='+menuElement.id;
7604 25 Feb 19 nicklas 230         url += '&mode='+Data.get('page-data', 'mode');
7604 25 Feb 19 nicklas 231         parent.frames['files'].location.href = url;
7604 25 Feb 19 nicklas 232       }
7604 25 Feb 19 nicklas 233     }
7604 25 Feb 19 nicklas 234   }
7604 25 Feb 19 nicklas 235   
7604 25 Feb 19 nicklas 236   
7604 25 Feb 19 nicklas 237   /**
7604 25 Feb 19 nicklas 238     Lazy loading of subdirectories
7604 25 Feb 19 nicklas 239   */
7604 25 Feb 19 nicklas 240   directories.lazyInit = function(event)
7604 25 Feb 19 nicklas 241   {
7604 25 Feb 19 nicklas 242     var menuElement = event.target;
7604 25 Feb 19 nicklas 243     Doc.addClass(menuElement, 'working');
7604 25 Feb 19 nicklas 244     try
7604 25 Feb 19 nicklas 245     {
7604 25 Feb 19 nicklas 246       var request = Ajax.getXmlHttpRequest();
7604 25 Feb 19 nicklas 247       var url = 'ajax.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 248       url += '&cmd=GetSubdirectories&item_id=' + menuElement.id;
7604 25 Feb 19 nicklas 249       request.open("GET", url, false);
7604 25 Feb 19 nicklas 250       request.send(null);
7604 25 Feb 19 nicklas 251       
7604 25 Feb 19 nicklas 252       var response = JSON.parse(request.responseText);
7604 25 Feb 19 nicklas 253       if (response.status != 'ok')
7604 25 Feb 19 nicklas 254       {
7604 25 Feb 19 nicklas 255         Forms.showNotification(menuElement.id+'-outline', response.message);
7604 25 Feb 19 nicklas 256       }
7604 25 Feb 19 nicklas 257       
7983 22 Jun 21 nicklas 258       var childElements = Joust2.addChildren(menuElement, response.subdirs || []);
7604 25 Feb 19 nicklas 259       Joust2.toggle(menuElement);
7983 22 Jun 21 nicklas 260       directories.initDragDrop(childElements);
7604 25 Feb 19 nicklas 261     }
7604 25 Feb 19 nicklas 262     finally
7604 25 Feb 19 nicklas 263     {
7604 25 Feb 19 nicklas 264       Doc.removeClass(menuElement, 'working');
7604 25 Feb 19 nicklas 265     }
7604 25 Feb 19 nicklas 266   }
7604 25 Feb 19 nicklas 267   
7983 22 Jun 21 nicklas 268   // Add drag-drop event handlers to all joust items for file upload
7983 22 Jun 21 nicklas 269   directories.initDragDrop = function(element)
7983 22 Jun 21 nicklas 270   {
7983 22 Jun 21 nicklas 271     var dirs = Doc.element(element).getElementsByClassName('joustitem');
7983 22 Jun 21 nicklas 272     for (var i = 0; i < dirs.length; i++)
7983 22 Jun 21 nicklas 273     {
7983 22 Jun 21 nicklas 274       Events.addEventHandler(dirs[i], 'dragover', directories.dragFiles);
7983 22 Jun 21 nicklas 275       Events.addEventHandler(dirs[i], 'drop', directories.dropFiles);
7983 22 Jun 21 nicklas 276     }
7983 22 Jun 21 nicklas 277   }
7983 22 Jun 21 nicklas 278
7983 22 Jun 21 nicklas 279   
7604 25 Feb 19 nicklas 280   directories.searchOnClick = function()
7604 25 Feb 19 nicklas 281   {
7604 25 Feb 19 nicklas 282     Doc.show('search');
7604 25 Feb 19 nicklas 283     Joust2.select('search');
7604 25 Feb 19 nicklas 284   }
7604 25 Feb 19 nicklas 285
7604 25 Feb 19 nicklas 286   
7604 25 Feb 19 nicklas 287   directories.updateSearchResults = function(files, directories)
7604 25 Feb 19 nicklas 288   {
7604 25 Feb 19 nicklas 289     var searchResults = Doc.element('search-text');
7604 25 Feb 19 nicklas 290     if (searchResults)
7604 25 Feb 19 nicklas 291     {
7604 25 Feb 19 nicklas 292       searchResults.innerHTML = 'Search results (' + (files + directories) + ')';
7604 25 Feb 19 nicklas 293     }
7604 25 Feb 19 nicklas 294
7604 25 Feb 19 nicklas 295   }
7604 25 Feb 19 nicklas 296   directories.refresh = function()
7604 25 Feb 19 nicklas 297   {
7604 25 Feb 19 nicklas 298     location.reload();
7604 25 Feb 19 nicklas 299   }
7604 25 Feb 19 nicklas 300
7604 25 Feb 19 nicklas 301   directories.synchronizeTo = function(directoryId, parentId)
7604 25 Feb 19 nicklas 302   {
7604 25 Feb 19 nicklas 303     var menuElement = Doc.element(directoryId);
7604 25 Feb 19 nicklas 304     if (!menuElement && parentId)
7604 25 Feb 19 nicklas 305     {
7604 25 Feb 19 nicklas 306       var parentElement = Doc.element(parentId);
7604 25 Feb 19 nicklas 307       if (parentElement && parentElement.item.isLazy)
7604 25 Feb 19 nicklas 308       {
7604 25 Feb 19 nicklas 309         Joust2.toggle(parentElement);
7604 25 Feb 19 nicklas 310         menuElement = Doc.element(directoryId);
7604 25 Feb 19 nicklas 311       }
7604 25 Feb 19 nicklas 312     }
7604 25 Feb 19 nicklas 313     
7604 25 Feb 19 nicklas 314     if (!menuElement)
7604 25 Feb 19 nicklas 315     {
7604 25 Feb 19 nicklas 316       var url = '../directories/index.jsp?ID='+App.getSessionId();
7604 25 Feb 19 nicklas 317       url += '&cmd=ViewItem&item_id='+directoryId;
7604 25 Feb 19 nicklas 318       url += '&mode='+Data.get('page-data', 'mode');
7604 25 Feb 19 nicklas 319       parent.parent.location.href = url;
7604 25 Feb 19 nicklas 320       
7604 25 Feb 19 nicklas 321     }
7604 25 Feb 19 nicklas 322     else
7604 25 Feb 19 nicklas 323     {
7604 25 Feb 19 nicklas 324       Joust2.select(menuElement);
7604 25 Feb 19 nicklas 325     }
7604 25 Feb 19 nicklas 326   }
7604 25 Feb 19 nicklas 327
7604 25 Feb 19 nicklas 328   directories.newDirectory = function()
7604 25 Feb 19 nicklas 329   {
7604 25 Feb 19 nicklas 330     var frm = document.forms['directory'];
7604 25 Feb 19 nicklas 331     Items.newItem('DIRECTORY', '&parent_id='+frm.directory_id.value);
7604 25 Feb 19 nicklas 332   }
7604 25 Feb 19 nicklas 333
7604 25 Feb 19 nicklas 334   
7604 25 Feb 19 nicklas 335   directories.returnSelected = function()
7604 25 Feb 19 nicklas 336   {
7604 25 Feb 19 nicklas 337     var frm = document.forms['directory'];
7604 25 Feb 19 nicklas 338     var callback = frm.callback.value;
7604 25 Feb 19 nicklas 339     var notifyTarget = window.opener.document.getElementById(callback);
7604 25 Feb 19 nicklas 340     var callbackMethod = window.opener[callback];
7604 25 Feb 19 nicklas 341
7604 25 Feb 19 nicklas 342     if (notifyTarget)
7604 25 Feb 19 nicklas 343     {
7604 25 Feb 19 nicklas 344       // Send event to the target in the opener window
7604 25 Feb 19 nicklas 345       Events.sendCustomEvent(notifyTarget, 'base-selected', {'id': frm.directory_id.value, 'name': frm.path.value, 'itemType': 'DIRECTORY'});
7604 25 Feb 19 nicklas 346     }
7604 25 Feb 19 nicklas 347     else if (callbackMethod)
7604 25 Feb 19 nicklas 348     {
7604 25 Feb 19 nicklas 349       // Call the callback method in the opener window
7604 25 Feb 19 nicklas 350       callbackMethod.call(null, frm.directory_id.value, frm.path.value);
7604 25 Feb 19 nicklas 351     }
7604 25 Feb 19 nicklas 352     App.closeWindow();
7604 25 Feb 19 nicklas 353   }
7604 25 Feb 19 nicklas 354
7604 25 Feb 19 nicklas 355   
7604 25 Feb 19 nicklas 356   return directories;
7604 25 Feb 19 nicklas 357 }();
7604 25 Feb 19 nicklas 358
7604 25 Feb 19 nicklas 359 Doc.onLoad(Directories.initPage);
7989 01 Jul 21 nicklas 360
7989 01 Jul 21 nicklas 361 // For compatibility with the drag-and-drop file upload
7989 01 Jul 21 nicklas 362 var FileManager = function()
7989 01 Jul 21 nicklas 363 {
7989 01 Jul 21 nicklas 364   var fileManager = {};
7989 01 Jul 21 nicklas 365   
7989 01 Jul 21 nicklas 366   fileManager.getFilesToUpload = function()
7989 01 Jul 21 nicklas 367   {
7989 01 Jul 21 nicklas 368     return Directories.getFilesToUpload();
7989 01 Jul 21 nicklas 369   }
7989 01 Jul 21 nicklas 370   
7989 01 Jul 21 nicklas 371   return fileManager;
7989 01 Jul 21 nicklas 372 }();