Merge pull request #10909 from nextcloud/feature/noid/trash-add-droppable-zone
Added Trash-Dropzone to easily dispose of files and folders
This commit is contained in:
commit
01082d04fd
|
@ -105,6 +105,9 @@
|
||||||
.nav-icon-trashbin {
|
.nav-icon-trashbin {
|
||||||
@include icon-color('delete', 'files', $color-black);
|
@include icon-color('delete', 'files', $color-black);
|
||||||
}
|
}
|
||||||
|
.nav-icon-trashbin-starred {
|
||||||
|
@include icon-color('delete', 'files', #ff0000);
|
||||||
|
}
|
||||||
.nav-icon-deletedshares {
|
.nav-icon-deletedshares {
|
||||||
@include icon-color('unshare', 'files', $color-black);
|
@include icon-color('unshare', 'files', $color-black);
|
||||||
}
|
}
|
||||||
|
|
|
@ -342,6 +342,14 @@
|
||||||
|
|
||||||
this.$fileList.on('click','td.filename>a.name, td.filesize, td.date', _.bind(this._onClickFile, this));
|
this.$fileList.on('click','td.filename>a.name, td.filesize, td.date', _.bind(this._onClickFile, this));
|
||||||
|
|
||||||
|
$.event.trigger({type: "droppedOnTrash"});
|
||||||
|
|
||||||
|
var self=this;
|
||||||
|
this.$fileList.on("droppedOnTrash", function (event, filename, directory) {
|
||||||
|
//self.fileActions.triggerAction('Favorite', self.getModelForFile(file), self);
|
||||||
|
self.do_delete(filename, directory)
|
||||||
|
});
|
||||||
|
|
||||||
this.$fileList.on('change', 'td.selection>.selectCheckBox', _.bind(this._onClickFileCheckbox, this));
|
this.$fileList.on('change', 'td.selection>.selectCheckBox', _.bind(this._onClickFileCheckbox, this));
|
||||||
this.$el.on('show', _.bind(this._onShow, this));
|
this.$el.on('show', _.bind(this._onShow, this));
|
||||||
this.$el.on('urlChanged', _.bind(this._onUrlChanged, this));
|
this.$el.on('urlChanged', _.bind(this._onUrlChanged, this));
|
||||||
|
|
|
@ -64,6 +64,41 @@
|
||||||
_setupEvents: function () {
|
_setupEvents: function () {
|
||||||
this.$el.on('click', 'li a', _.bind(this._onClickItem, this))
|
this.$el.on('click', 'li a', _.bind(this._onClickItem, this))
|
||||||
this.$el.on('click', 'li button', _.bind(this._onClickMenuButton, this));
|
this.$el.on('click', 'li button', _.bind(this._onClickMenuButton, this));
|
||||||
|
|
||||||
|
var trashElement=$(".nav-trashbin");
|
||||||
|
|
||||||
|
//this div is required to prefetch the icon, otherwise it takes a second to show up
|
||||||
|
trashElement.append("<div class='nav-icon-trashbin-starred'></div>")
|
||||||
|
trashElement.droppable({
|
||||||
|
over: function( event, ui ) {
|
||||||
|
trashElement.addClass('dropzone-background')
|
||||||
|
},
|
||||||
|
out: function( event, ui ) {
|
||||||
|
trashElement.removeClass('dropzone-background');
|
||||||
|
},
|
||||||
|
activate: function( event, ui ) {
|
||||||
|
var elem=trashElement.find("a").first();
|
||||||
|
elem.addClass('nav-icon-trashbin-starred').removeClass('nav-icon-trashbin');
|
||||||
|
},
|
||||||
|
deactivate: function( event, ui ) {
|
||||||
|
var elem=trashElement.find("a").first();
|
||||||
|
elem.addClass('nav-icon-trashbin').removeClass('nav-icon-trashbin-starred');
|
||||||
|
},
|
||||||
|
drop: function( event, ui ) {
|
||||||
|
|
||||||
|
var $selectedFiles = $(ui.draggable);
|
||||||
|
|
||||||
|
if (ui.helper.find("tr").size()===1) {
|
||||||
|
var $tr = $selectedFiles.closest('tr');
|
||||||
|
$selectedFiles.trigger("droppedOnTrash", $tr.attr("data-file"), $tr.attr('data-dir'));
|
||||||
|
}else{
|
||||||
|
var item = ui.helper.find("tr");
|
||||||
|
for(var i=0; i<item.length;i++){
|
||||||
|
$selectedFiles.trigger("droppedOnTrash", item[i].getAttribute("data-file"), item[i].getAttribute("data-dir"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue