From 94e90f01fa2c711e609a7adf3cf19bc2fa505215 Mon Sep 17 00:00:00 2001 From: "Dmitry (dio) Levashov" Date: Sat, 7 Jul 2012 16:33:43 +0400 Subject: [PATCH] fixes #319. this is not brilliant solution but one I found --- css/navbar.css | 1 + css/theme.css | 1 + elfinder.src.html | 8 ++++---- js/elFinder.js | 2 +- js/ui/cwd.js | 3 +-- js/ui/tree.js | 36 +++++++++++++++++++++++++++--------- 6 files changed, 35 insertions(+), 16 deletions(-) diff --git a/css/navbar.css b/css/navbar.css index 70e0d8995..c17c5e447 100644 --- a/css/navbar.css +++ b/css/navbar.css @@ -144,6 +144,7 @@ border:1px solid #8cafed; } + .elfinder-place-drag .elfinder-navbar-dir { font-size:.9em;} diff --git a/css/theme.css b/css/theme.css index 369270ad5..add4bee5d 100644 --- a/css/theme.css +++ b/css/theme.css @@ -12,6 +12,7 @@ .elfinder .elfinder-navbar { background:#dde4eb; } .elfinder-navbar .ui-state-hover { background:transparent; border-color:transparent; } .elfinder-navbar .ui-state-active { background: #3875d7; border-color:#3875d7; color:#fff; } +.elfinder-navbar .elfinder-droppable-active {background:#A7C6E5 !important;} /* disabled elfinder */ .elfinder-disabled .elfinder-navbar .ui-state-active { background: #dadada; border-color:#aaa; color:#fff; } diff --git a/elfinder.src.html b/elfinder.src.html index b119471b9..4a0c2c91d 100644 --- a/elfinder.src.html +++ b/elfinder.src.html @@ -147,15 +147,15 @@ // url : 'php/connector.php', url : 'php/connector.php', // transport : new elFinderSupportVer1(), - getFileCallback : function(files, fm) { - console.log(files); - }, + // getFileCallback : function(files, fm) { + // console.log(files); + // }, handlers : { select : function(event, elfinderInstance) { var selected = event.data.selected; if (selected.length) { - console.log(elfinderInstance.file(selected[0])) + // console.log(elfinderInstance.file(selected[0])) } } diff --git a/js/elFinder.js b/js/elFinder.js index 404f8435f..f17272c8a 100644 --- a/js/elFinder.js +++ b/js/elFinder.js @@ -541,7 +541,7 @@ window.elFinder = function(node, opts) { * @type Object **/ this.droppable = { - greedy : true, + // greedy : true, tolerance : 'pointer', accept : '.elfinder-cwd-file-wrapper,.elfinder-navbar-dir,.elfinder-cwd-file', hoverClass : this.res('class', 'adroppable'), diff --git a/js/ui/cwd.js b/js/ui/cwd.js index f0dcbeb2e..096b6c243 100644 --- a/js/ui/cwd.js +++ b/js/ui/cwd.js @@ -417,7 +417,6 @@ $.fn.elfindercwd = function(fm) { droppable = $.extend({}, fm.droppable, { over : function(e, ui) { var hash = fm.cwd().hash; - $.each(ui.helper.data('files'), function(i, h) { if (fm.file(h).phash == hash) { cwd.removeClass(clDropActive); @@ -614,7 +613,7 @@ $.fn.elfindercwd = function(fm) { // console.log(files) try { // to avoid problem with draggable - cwd.children('table,'+fileSelector).remove().end(); + cwd.children('table,'+fileSelector).remove(); } catch (e) { cwd.html(''); } diff --git a/js/ui/tree.js b/js/ui/tree.js index d26167013..1a3df7d5d 100644 --- a/js/ui/tree.js +++ b/js/ui/tree.js @@ -109,23 +109,39 @@ $.fn.elfindertree = function(fm, opts) { */ droppable = fm.res(c, 'droppable'), + insideNavbar = function(x) { + var left = navbar.offset().left; + + return left <= x && x <= left + navbar.width(); + }, + + drop = fm.droppable.drop, + /** * Droppable options * * @type Object */ - droppableopts = $.extend({}, fm.droppable, { - hoverClass : hover+' '+dropover, + droppableopts = $.extend(true, {}, fm.droppable, { // show subfolders on dropover - over : function() { - var link = $(this); + over : function(e) { + var link = $(this), + cl = hover+' '+dropover; + + if (insideNavbar(e.clientX)) { + link.addClass(cl) if (link.is('.'+collapsed+':not(.'+expanded+')')) { setTimeout(function() { link.is('.'+dropover) && link.children('.'+arrow).click(); }, 500); - } + } + } else { + link.removeClass(cl); } - }), + }, + out : function() { $(this).removeClass(hover+' '+dropover); }, + drop : function(e, ui) { insideNavbar(e.clientX) && drop.call(this, e, ui); } + }), spinner = $(fm.res('tpl', 'navspinner')), @@ -333,6 +349,8 @@ $.fn.elfindertree = function(fm, opts) { }) }, + + /** * Navigation tree * @@ -407,11 +425,11 @@ $.fn.elfindertree = function(fm, opts) { 'x' : e.clientX, 'y' : e.clientY }); - }) + }), + // move tree into navbar + navbar = fm.getUI('navbar').append(tree).show() ; - // move tree into navbar - tree.parent().find('.elfinder-navbar').append(tree).show(); fm.open(function(e) { var data = e.data,