Browse Source

Added drop-animation to sortable-list

Signed-off-by: fnuesse <felix.nuesse@t-online.de>

Added icon-change on drag

Signed-off-by: fnuesse <felix.nuesse@t-online.de>

Fixed Navbar-closing in app when favorites-list is toggled on mobile

Signed-off-by: fnuesse <felix.nuesse@t-online.de>

Refactored Code

Signed-off-by: fnuesse <felix.nuesse@t-online.de>

Changed to alphabetical sorting

Signed-off-by: fnuesse <felix.nuesse@t-online.de>

Fixed deletion of folder with identical names

Signed-off-by: fnuesse <felix.nuesse@t-online.de>

Removed ability to add files to the quickaccess

Signed-off-by: fnuesse <felix.nuesse@t-online.de>

Fixed wrong path-generation when added from favorites-star

Signed-off-by: fnuesse <felix.nuesse@t-online.de>

Removed Element from navbar when favorite-star in detailview is toggled off

Signed-off-by: fnuesse <felix.nuesse@t-online.de>

Changed Quota-Text to prevent boundarybreaks

Reverted last commit
tags/v14.0.0beta1
fnuesse 6 years ago
parent
commit
c9995de2db
No account linked to committer's email address

+ 5
- 0
apps/files/appinfo/routes.php View File

@@ -131,6 +131,11 @@ $application->registerRoutes(
'url' => '/api/v1/quickaccess/get/CustomSortingOrder',
'verb' => 'GET',
],
[
'name' => 'API#getNodeType',
'url' => '/api/v1/quickaccess/get/NodeType',
'verb' => 'GET',
],
]
]
);

+ 47
- 22
apps/files/js/navigation.js View File

@@ -49,7 +49,7 @@
* alphabet
*
*/
$sortingStrategy: 'customorder',
$sortingStrategy: 'alphabet',

/**
* Key for the quick-acces-list
@@ -66,8 +66,12 @@
this._activeItem = null;
this.$currentContent = null;
this._setupEvents();
this.setInitialQuickaccessSettings();

var scope=this;
$.get(OC.generateUrl("/apps/files/api/v1/quickaccess/get/SortingStrategy"), function (data, status) {
scope.$sortingStrategy=data;
scope.setInitialQuickaccessSettings();
});

},

@@ -162,7 +166,7 @@
* Event handler for when dragging an item
*/
_setOnDrag: function () {
var scope=this;
var scope = this;
var element = $("#sublist-favorites");
$(function () {
if (document.getElementById(scope.$quickAccessListKey.toString()).hasAttribute("draggable")) {
@@ -172,30 +176,54 @@
scroll: false,
zIndex: 0,
opacity: 0.5,
delay: 150,
tolerance: "pointer",
start:function(event, ui){
//revert: 0.05,
//delay: 150,
start: function (event, ui) {
//Fix for offset
ui.helper[0].style.left ='0px';
ui.helper[0].style.left = '0px';

//Change Icon while dragging
var list = document.getElementById(scope.$quickAccessListKey).getElementsByTagName('li');
for (var j = 0; j < list.length; j++) {
if (!(typeof list[j].getElementsByTagName('a')[0] === 'undefined')) {
list[j].getElementsByTagName('a')[0].classList.remove("nav-icon-files");
list[j].getElementsByTagName('a')[0].classList.add('icon-menu');
}
}
},
stop: function( event, ui ) {
stop: function (event, ui) {
//Clean up offset
ui.item.removeAttr("style");

//Change Icon back after dragging
var list = document.getElementById(scope.$quickAccessListKey.toString()).getElementsByTagName('li');
for (var j = 0; j < list.length; j++) {
if (!(typeof list[j].getElementsByTagName('a')[0] === 'undefined')) {
list[j].getElementsByTagName('a')[0].classList.add("nav-icon-files");
list[j].getElementsByTagName('a')[0].classList.remove('icon-menu');
}
}
},
update: function (event, ui) {
var list = document.getElementById(scope.$quickAccessListKey.toString()).getElementsByTagName('li');
var string=[];
var string = [];
for (var j = 0; j < list.length; j++) {
var Object = {id:j, name:scope.getCompareValue(list,j,'alphabet') };
var Object = {
id: j,
name: scope.getCompareValue(list, j, 'alphabet')
};
string.push(Object);
}
var resultorder=JSON.stringify(string);
$.get(OC.generateUrl("/apps/files/api/v1/quickaccess/set/CustomSortingOrder"),{
order: resultorder}, function (data, status) {});
var resultorder = JSON.stringify(string);
$.get(OC.generateUrl("/apps/files/api/v1/quickaccess/set/CustomSortingOrder"), {
order: resultorder
}, function (data, status) {
});
}
});
}else{
if(scope.$sortingStrategy === 'customorder'){
} else {
if (scope.$sortingStrategy === 'customorder') {
scope.$sortingStrategy = 'datemodified';
}
}
@@ -220,13 +248,12 @@
// and the parent, which should be toggled at the first arrayindex.
dotmenuToggles.push(["#dotmenu-button-favorites", "dotmenu-content-favorites"]);


collapsibleToggles.forEach(function foundToggle (item) {
if (item[0] === ("#" + itemId)) {
$(item[1]).toggleClass('open');
var show=1;
if(!$(item[1]).hasClass('open')){
show=0;
var show = 1;
if (!$(item[1]).hasClass('open')) {
show = 0;
}
$.get(OC.generateUrl("/apps/files/api/v1/quickaccess/set/showList"), {show: show}, function (data, status) {
});
@@ -269,7 +296,6 @@
scope.reverse(list);
});


} else if (this.$sortingStrategy === 'alphabet') {
sort = true;
} else if (this.$sortingStrategy === 'date') {
@@ -277,7 +303,7 @@
} else if (this.$sortingStrategy === 'customorder') {
var scope = this;
$.get(OC.generateUrl("/apps/files/api/v1/quickaccess/get/CustomSortingOrder"), function (data, status) {
var ordering=JSON.parse(data);
var ordering = JSON.parse(data);
for (var i = 0; i < ordering.length; i++) {
for (var j = 0; j < list.length; j++) {
if (scope.getCompareValue(list, j, 'alphabet').toLowerCase() === ordering[i].name.toLowerCase()) {
@@ -287,7 +313,6 @@
}
scope.QuickSort(list, 0, list.length - 1);
});

sort = false;
}

@@ -357,7 +382,7 @@
return nodes[int].getAttribute('folderPosition').toLowerCase();
} else if (strategy === 'datemodified') {
return nodes[int].getAttribute('mtime');
}else if (strategy === 'customorder') {
} else if (strategy === 'customorder') {
return nodes[int].getAttribute('folderPosition');
}
return nodes[int].getElementsByTagName('a')[0].innerHTML.toLowerCase();

+ 30
- 14
apps/files/js/tagsplugin.js View File

@@ -73,10 +73,14 @@
var collapsibleButtonId = 'button-collapse-favorites';
var listULElements = document.getElementById(quickAccessList);
var listLIElements = listULElements.getElementsByTagName('li');
var appName = appfolder.substring(appfolder.lastIndexOf("/") + 1, appfolder.length);

var apppath=appfolder;
if(appfolder.startsWith("//")){
apppath=appfolder.substring(1, appfolder.length);
}

for (var i = 0; i <= listLIElements.length - 1; i++) {
if (appName === listLIElements[i].getElementsByTagName('a')[0].innerHTML) {
if (listLIElements[i].getElementsByTagName('a')[0].href.endsWith("dir=" + apppath)) {
listLIElements[i].remove();
}
}
@@ -100,29 +104,40 @@
var listLIElements = listULElements.getElementsByTagName('li');

var appName = appfolder.substring(appfolder.lastIndexOf("/") + 1, appfolder.length);
var apppath=appfolder;

if(appfolder.startsWith("//")){
apppath=appfolder.substring(1, appfolder.length);
}
var url=OC.generateUrl('/apps/files/?dir=')+apppath;


var innerTagA = document.createElement('A');
innerTagA.setAttribute("href", OC.generateUrl('/apps/files/?dir=') + appfolder);
innerTagA.setAttribute("href", url);
innerTagA.setAttribute("class", "nav-icon-files svg");
innerTagA.innerHTML = appName;

var length = listLIElements.length + 1;
var innerTagLI = document.createElement('li');
innerTagLI.setAttribute("data-id", OC.generateUrl('/apps/files/?dir=') + appfolder);
innerTagLI.setAttribute("data-id", url);
innerTagLI.setAttribute("class", "nav-" + appName);
innerTagLI.setAttribute("folderpos", length.toString());
innerTagLI.appendChild(innerTagA);

$.get(OC.generateUrl("/apps/files/api/v1/quickaccess/get/NodeType"),{folderpath: apppath}, function (data, status) {
if (data === "dir") {
if (listULElements.childElementCount <= 0) {
listULElements.appendChild(innerTagLI);
var collapsibleButton = document.getElementById(collapsibleButtonId);
collapsibleButton.style.display = '';

if (listULElements.childElementCount <= 0) {
listULElements.appendChild(innerTagLI);
var collapsibleButton = document.getElementById(collapsibleButtonId);
collapsibleButton.style.display = '';

$("#button-collapse-parent-favorites").addClass('collapsible');
} else {
listLIElements[listLIElements.length - 1].after(innerTagLI);
}
$("#button-collapse-parent-favorites").addClass('collapsible');
} else {
listLIElements[listLIElements.length - 1].after(innerTagLI);
}
}
}
);
}

OCA.Files = OCA.Files || {};
@@ -327,6 +342,7 @@
});
}
};
})(OCA);
})
(OCA);

OC.Plugins.register('OCA.Files.FileList', OCA.Files.TagsPlugin);

+ 16
- 2
apps/files/lib/Controller/ApiController.php View File

@@ -215,6 +215,7 @@ class ApiController extends Controller {

$favorites[$i]['id'] = $node->getId();
$favorites[$i]['name'] = $node->getName();
$favorites[$i]['path'] = $node->getInternalPath();
$favorites[$i]['mtime'] = $node->getMTime();
$i++;
}
@@ -336,7 +337,7 @@ class ApiController extends Controller {
* @return String
*/
public function getSortingStrategy() {
return $this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_sorting_strategy', 'date');
return $this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_sorting_strategy', 'alphabet');
}

/**
@@ -411,11 +412,24 @@ class ApiController extends Controller {
*
* @NoAdminRequired
*
* @param String
* @return String
*/
public function getSortingOrder() {
return $this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_custom_sorting_order', "");
}

/**
* Get sorting-order for custom sorting
*
* @NoAdminRequired
*
* @param String
* @return String
*/
public function getNodeType($folderpath) {
$node = $this->userFolder->get($folderpath);
return $node->getType();
}


}

+ 8
- 1
apps/files/lib/Controller/ViewController.php View File

@@ -207,6 +207,13 @@ class ViewController extends Controller {
$defaultExpandedState = 'false';
}

$quickAccessDraggable = 'false';
//See Javascript navigation.js for possible sorting strategies
if($this->config->getUserValue($this->userSession->getUser()->getUID(), 'files', 'quickaccess_sorting_strategy', 'alphabet')=='customorder'){
$quickAccessDraggable = 'true';
}


\OCA\Files\App::getNavigationManager()->add(
[
'id' => 'favorites',
@@ -216,7 +223,7 @@ class ViewController extends Controller {
'order' => 5,
'name' => $this->l10n->t('Favorites'),
'sublist' => $favoritesSublistArray,
'draggableSublist' => 'true',
'draggableSublist' => $quickAccessDraggable,
'defaultExpandedState' => $defaultExpandedState,
'enableMenuButton' => 0,
]

+ 2
- 2
apps/files/templates/appnavigation.php View File

@@ -80,7 +80,7 @@ function NavigationListElements($item, $l, $pinned) {
if (isset($item['sublist'])) {
?>
<button id="button-collapse-<?php p($item['id']); ?>"
class="collapse" <?php if (sizeof($item['sublist']) == 0) { ?> style="display: none" <?php } ?>></button>
class="collapse app-navigation-noclose" <?php if (sizeof($item['sublist']) == 0) { ?> style="display: none" <?php } ?>></button>
<ul id="sublist-<?php p($item['id']); ?>" <?php if ($item['draggableSublist'] === 'true') { ?> draggable="true" style="resize: none;"<?php } ?>>
<?php
foreach ($item['sublist'] as $item) {
@@ -121,4 +121,4 @@ function NavigationElementMenu($item) {
</ul>
</div>
<?php }
}
}

Loading…
Cancel
Save