|
|
@ -2779,30 +2779,34 @@ define([
|
|
|
|
$sortBlock.on('click', 'a', onSortByClick);
|
|
|
|
$sortBlock.on('click', 'a', onSortByClick);
|
|
|
|
return $fhSort;
|
|
|
|
return $fhSort;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
var getFolderListHeader = function () {
|
|
|
|
var getFolderListHeader = function (clickable, small) {
|
|
|
|
var $fohElement = $('<li>', {
|
|
|
|
var $fohElement = $('<li>', {
|
|
|
|
'class': 'cp-app-drive-element-header cp-app-drive-element-list'
|
|
|
|
'class': 'cp-app-drive-element-header cp-app-drive-element-list'
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
var clickCls = clickable ? 'cp-app-drive-sort-clickable ' : '';
|
|
|
|
|
|
|
|
var onClick = clickable ? onSortByClick : function () {};
|
|
|
|
//var $fohElement = $('<span>', {'class': 'element'}).appendTo($folderHeader);
|
|
|
|
//var $fohElement = $('<span>', {'class': 'element'}).appendTo($folderHeader);
|
|
|
|
var $fhIcon = $('<span>', {'class': 'cp-app-drive-content-icon'});
|
|
|
|
var $fhIcon = $('<span>', {'class': 'cp-app-drive-content-icon'});
|
|
|
|
var $name = $('<span>', {
|
|
|
|
var $name = $('<span>', {
|
|
|
|
'class': 'cp-app-drive-element-name cp-app-drive-sort-foldername ' +
|
|
|
|
'class': 'cp-app-drive-element-name cp-app-drive-sort-foldername ' + clickCls
|
|
|
|
'cp-app-drive-sort-clickable'
|
|
|
|
}).text(Messages.fm_folderName).click(onClick);
|
|
|
|
}).text(Messages.fm_folderName).click(onSortByClick);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var $state = $('<span>', {'class': 'cp-app-drive-element-state'});
|
|
|
|
var $state = $('<span>', {'class': 'cp-app-drive-element-state'});
|
|
|
|
var $subfolders = $('<span>', {
|
|
|
|
var $subfolders, $files;
|
|
|
|
|
|
|
|
if (!small) {
|
|
|
|
|
|
|
|
$subfolders = $('<span>', {
|
|
|
|
'class': 'cp-app-drive-element-folders cp-app-drive-element-list'
|
|
|
|
'class': 'cp-app-drive-element-folders cp-app-drive-element-list'
|
|
|
|
}).text(Messages.fm_numberOfFolders);
|
|
|
|
}).text(Messages.fm_numberOfFolders);
|
|
|
|
var $files = $('<span>', {
|
|
|
|
$files = $('<span>', {
|
|
|
|
'class': 'cp-app-drive-element-files cp-app-drive-element-list'
|
|
|
|
'class': 'cp-app-drive-element-files cp-app-drive-element-list'
|
|
|
|
}).text(Messages.fm_numberOfFiles);
|
|
|
|
}).text(Messages.fm_numberOfFiles);
|
|
|
|
|
|
|
|
}
|
|
|
|
var $filler = $('<span>', {
|
|
|
|
var $filler = $('<span>', {
|
|
|
|
'class': 'cp-app-drive-element-filler cp-app-drive-element-list'
|
|
|
|
'class': 'cp-app-drive-element-filler cp-app-drive-element-list'
|
|
|
|
});
|
|
|
|
});
|
|
|
|
$fohElement.append($fhIcon).append($name).append($state)
|
|
|
|
$fohElement.append($fhIcon).append($name).append($state)
|
|
|
|
.append($subfolders).append($files).append($filler);
|
|
|
|
.append($subfolders).append($files).append($filler);
|
|
|
|
addFolderSortIcon($fohElement);
|
|
|
|
if (clickable) { addFolderSortIcon($fohElement); }
|
|
|
|
return $fohElement;
|
|
|
|
return $fohElement;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
var addFileSortIcon = function ($list) {
|
|
|
|
var addFileSortIcon = function ($list) {
|
|
|
@ -2859,15 +2863,16 @@ define([
|
|
|
|
});
|
|
|
|
});
|
|
|
|
if (keys.length < 2) { return keys; }
|
|
|
|
if (keys.length < 2) { return keys; }
|
|
|
|
var mult = asc ? 1 : -1;
|
|
|
|
var mult = asc ? 1 : -1;
|
|
|
|
var getProp = function (el) {
|
|
|
|
var getProp = function (_el) {
|
|
|
|
if (folder && root[el] && manager.isSharedFolder(root[el])) {
|
|
|
|
var el = useId ? _el : root[_el];
|
|
|
|
var title = manager.getSharedFolderData(root[el]).title || el;
|
|
|
|
var sfId = (el && el.root && el.key) ? el.root[el.key] : el;
|
|
|
|
|
|
|
|
if (folder && el && manager.isSharedFolder(sfId)) {
|
|
|
|
|
|
|
|
var title = manager.getSharedFolderData(sfId).title || el;
|
|
|
|
return String(title).toLowerCase();
|
|
|
|
return String(title).toLowerCase();
|
|
|
|
} else if (folder) {
|
|
|
|
} else if (folder) {
|
|
|
|
return el.toLowerCase();
|
|
|
|
return String((el && el.key) || el).toLowerCase();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var id = useId ? el : root[el];
|
|
|
|
var data = manager.getFileData(el);
|
|
|
|
var data = manager.getFileData(id);
|
|
|
|
|
|
|
|
if (!data) { return ''; }
|
|
|
|
if (!data) { return ''; }
|
|
|
|
if (prop === 'type') {
|
|
|
|
if (prop === 'type') {
|
|
|
|
var hrefData = Hash.parsePadUrl(data.href || data.roHref);
|
|
|
|
var hrefData = Hash.parsePadUrl(data.href || data.roHref);
|
|
|
@ -2876,15 +2881,19 @@ define([
|
|
|
|
if (prop === 'atime' || prop === 'ctime') {
|
|
|
|
if (prop === 'atime' || prop === 'ctime') {
|
|
|
|
return typeof(data[prop]) === "number" ? data[prop] : new Date(data[prop]);
|
|
|
|
return typeof(data[prop]) === "number" ? data[prop] : new Date(data[prop]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return (manager.getTitle(id) || "").toLowerCase();
|
|
|
|
return (manager.getTitle(el) || "").toLowerCase();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
var props = {};
|
|
|
|
var props = {};
|
|
|
|
keys.forEach(function (k) {
|
|
|
|
keys.forEach(function (k) {
|
|
|
|
props[k] = getProp(k);
|
|
|
|
var uid = k;
|
|
|
|
|
|
|
|
if (typeof(k) === "object") {
|
|
|
|
|
|
|
|
uid = k.uid = Util.uid();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
props[uid] = getProp(k);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
keys.sort(function(a, b) {
|
|
|
|
keys.sort(function(a, b) {
|
|
|
|
var _a = props[a];
|
|
|
|
var _a = props[(a && a.uid) || a];
|
|
|
|
var _b = props[b];
|
|
|
|
var _b = props[(b && b.uid) || b];
|
|
|
|
if (_a < _b) { return mult * -1; }
|
|
|
|
if (_a < _b) { return mult * -1; }
|
|
|
|
if (_b < _a) { return mult; }
|
|
|
|
if (_b < _a) { return mult; }
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
@ -3233,9 +3242,10 @@ define([
|
|
|
|
$input.focus();
|
|
|
|
$input.focus();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
getFileListHeader(false).appendTo($list);
|
|
|
|
|
|
|
|
$list.closest('#cp-app-drive-content-folder').addClass('cp-app-drive-content-list');
|
|
|
|
$list.closest('#cp-app-drive-content-folder').addClass('cp-app-drive-content-list');
|
|
|
|
var filesList = manager.search(value);
|
|
|
|
var filesList = manager.search(value);
|
|
|
|
|
|
|
|
var sortable = {};
|
|
|
|
|
|
|
|
var sortableFolders = [];
|
|
|
|
filesList.forEach(function (r) {
|
|
|
|
filesList.forEach(function (r) {
|
|
|
|
// if r.id === null, then it's a folder, not a file
|
|
|
|
// if r.id === null, then it's a folder, not a file
|
|
|
|
r.paths.forEach(function (path) {
|
|
|
|
r.paths.forEach(function (path) {
|
|
|
@ -3244,32 +3254,55 @@ define([
|
|
|
|
var _path = path.slice();
|
|
|
|
var _path = path.slice();
|
|
|
|
var key = path.pop();
|
|
|
|
var key = path.pop();
|
|
|
|
var root = manager.find(path);
|
|
|
|
var root = manager.find(path);
|
|
|
|
var isFolder = manager.isFolder(root[key]);
|
|
|
|
var obj = {
|
|
|
|
var $element = createElement(path, key, root, isFolder);
|
|
|
|
path: path,
|
|
|
|
|
|
|
|
_path: _path,
|
|
|
|
|
|
|
|
key: key,
|
|
|
|
|
|
|
|
root: root,
|
|
|
|
|
|
|
|
data: r.data
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
if (manager.isFolder(root[key])) {
|
|
|
|
|
|
|
|
sortableFolders.push(obj);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
sortable[root[key]] = obj;
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
var _folders = sortElements(true, [ROOT], sortableFolders, null, !getSortFolderDesc(), true);
|
|
|
|
|
|
|
|
var sortableKeys = Object.keys(sortable).map(Number);
|
|
|
|
|
|
|
|
var _files = sortElements(false, [ROOT], sortableKeys, APP.store[SORT_FILE_BY], !getSortFileDesc(), true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var addEl = function (obj, folder) {
|
|
|
|
|
|
|
|
var $element = createElement(obj.path, obj.key, obj.root, folder);
|
|
|
|
$element.addClass('cp-app-drive-element-notrash cp-app-drive-search-result');
|
|
|
|
$element.addClass('cp-app-drive-element-notrash cp-app-drive-search-result');
|
|
|
|
$element.off('contextmenu');
|
|
|
|
$element.off('contextmenu');
|
|
|
|
$element.contextmenu(openContextMenu('default'));
|
|
|
|
$element.contextmenu(openContextMenu('default'));
|
|
|
|
$element.data('context', 'default');
|
|
|
|
$element.data('context', 'default');
|
|
|
|
if (isFolder) {
|
|
|
|
if (folder) {
|
|
|
|
$element.find('.cp-app-drive-element-list').css({
|
|
|
|
$element.find('.cp-app-drive-element-list').css({
|
|
|
|
visibility: 'hidden'
|
|
|
|
visibility: 'hidden'
|
|
|
|
}).text('');
|
|
|
|
}).text('');
|
|
|
|
$element.find('.cp-app-drive-element-folders').css({
|
|
|
|
|
|
|
|
visibility: ''
|
|
|
|
|
|
|
|
}).text(Messages.fm_folder);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (manager.isPathIn(obj._path, ['hrefArray'])) {
|
|
|
|
if (manager.isPathIn(_path, ['hrefArray'])) {
|
|
|
|
obj._path.pop();
|
|
|
|
_path.pop();
|
|
|
|
obj._path.push(obj.data.title);
|
|
|
|
_path.push(r.data.title);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var $path = $('<span>', {
|
|
|
|
var $path = $('<span>', {
|
|
|
|
'class': 'cp-app-drive-search-path'
|
|
|
|
'class': 'cp-app-drive-search-path'
|
|
|
|
}).appendTo($element.find('.cp-app-drive-element-name'));
|
|
|
|
}).appendTo($element.find('.cp-app-drive-element-name'));
|
|
|
|
createTitle($path, _path);
|
|
|
|
createTitle($path, obj._path);
|
|
|
|
|
|
|
|
|
|
|
|
$list.append($element);
|
|
|
|
$list.append($element);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
if (_folders.length) { getFolderListHeader(true, true).appendTo($list); }
|
|
|
|
|
|
|
|
_folders.forEach(function (el) {
|
|
|
|
|
|
|
|
var obj = el;
|
|
|
|
|
|
|
|
addEl(obj, true);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
if (_files.length) { getFileListHeader(true).appendTo($list); }
|
|
|
|
|
|
|
|
_files.forEach(function (el) {
|
|
|
|
|
|
|
|
var obj = sortable[el];
|
|
|
|
|
|
|
|
addEl(obj, false);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
setTimeout(collapseDrivePath);
|
|
|
|
setTimeout(collapseDrivePath);
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -3415,7 +3448,7 @@ define([
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var fId = APP.newSharedFolder;
|
|
|
|
var fId = APP.newSharedFolder;
|
|
|
|
var data = folders[fId];
|
|
|
|
var data = folders[fId];
|
|
|
|
var $folderHeader = getFolderListHeader();
|
|
|
|
var $folderHeader = getFolderListHeader(true);
|
|
|
|
var $fileHeader = getFileListHeader(true);
|
|
|
|
var $fileHeader = getFileListHeader(true);
|
|
|
|
var path = currentPath.slice(1);
|
|
|
|
var path = currentPath.slice(1);
|
|
|
|
var root = Util.find(data, path);
|
|
|
|
var root = Util.find(data, path);
|
|
|
@ -3593,7 +3626,7 @@ define([
|
|
|
|
}
|
|
|
|
}
|
|
|
|
updateContextButton();
|
|
|
|
updateContextButton();
|
|
|
|
|
|
|
|
|
|
|
|
var $folderHeader = getFolderListHeader();
|
|
|
|
var $folderHeader = getFolderListHeader(true);
|
|
|
|
var $fileHeader = getFileListHeader(true);
|
|
|
|
var $fileHeader = getFileListHeader(true);
|
|
|
|
|
|
|
|
|
|
|
|
if (isTemplate) {
|
|
|
|
if (isTemplate) {
|
|
|
|