Browse Source

Add drop zone for favorites quick access in navigation

Signed-off-by: fnuesse <felix.nuesse@t-online.de>
tags/v16.0.0alpha1
fnuesse 5 years ago
parent
commit
f13b3ab4ae
3 changed files with 48 additions and 0 deletions
  1. 3
    0
      apps/files/css/files.scss
  2. 4
    0
      apps/files/js/filelist.js
  3. 41
    0
      apps/files/js/navigation.js

+ 3
- 0
apps/files/css/files.scss View File

@@ -120,6 +120,9 @@
.nav-icon-deletedshares {
@include icon-color('unshare', 'files', $color-black);
}
.nav-icon-favorites-starred {
@include icon-color('star-dark', 'actions', $color-yellow, 2, true);
}

#app-navigation .nav-files a.nav-icon-files {
width: auto;

+ 4
- 0
apps/files/js/filelist.js View File

@@ -360,6 +360,10 @@

this.$fileList.on('click','td.filename>a.name, td.filesize, td.date', _.bind(this._onClickFile, this));

this.$fileList.on("droppedOnFavorites", function (event, file) {
self.fileActions.triggerAction('Favorite', self.getModelForFile(file), self);
});

this.$fileList.on('droppedOnTrash', function (event, filename, directory) {
self.do_delete(filename, directory);
});

+ 41
- 0
apps/files/js/navigation.js View File

@@ -224,6 +224,47 @@
var list = quickAccessMenu.getElementsByTagName('li');
this.QuickSort(list, 0, list.length - 1);
}

var favoritesListElement = $(quickAccessMenu).parent();
favoritesListElement.droppable({
over: function (event, ui) {
favoritesListElement.addClass('dropzone-background');
},
out: function (event, ui) {
favoritesListElement.removeClass('dropzone-background');
},
activate: function (event, ui) {
var element = favoritesListElement.find('a').first();
element.addClass('nav-icon-favorites-starred').removeClass('nav-icon-favorites');
},
deactivate: function (event, ui) {
var element = favoritesListElement.find('a').first();
element.addClass('nav-icon-favorites').removeClass('nav-icon-favorites-starred');
},
drop: function (event, ui) {
favoritesListElement.removeClass('dropzone-background');

var $selectedFiles = $(ui.draggable);

if (ui.helper.find('tr').size() === 1) {
var $tr = $selectedFiles.closest('tr');
if ($tr.attr("data-favorite")) {
return;
}
$selectedFiles.trigger('droppedOnFavorites', $tr.attr('data-file'));
} else {
// FIXME: besides the issue described for dropping on
// the trash bin, for favoriting it is not possible to
// use the data from the helper; due to some bugs the
// tags are not always added to the selected files, and
// thus that data can not be accessed through the helper
// to prevent triggering the favorite action on an
// already favorited file (which would remove it from
// favorites).
OC.Notification.showTemporary(t('files', 'You can only favorite a single file or folder at a time'));
}
}
});
},

/**

Loading…
Cancel
Save