Merge branch 'staging' of github.com:xwiki-labs/cryptpad into staging
This commit is contained in:
commit
c3c866fa2b
@ -197,6 +197,16 @@ define([
|
|||||||
return hexArray.join("");
|
return hexArray.join("");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var deduplicate = common.deduplicateString = function (array) {
|
||||||
|
var a = array.slice();
|
||||||
|
for(var i=0; i<a.length; i++) {
|
||||||
|
for(var j=i+1; j<a.length; j++) {
|
||||||
|
if(a[i] === a[j]) { a.splice(j--, 1); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return a;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
var parseHash = common.parseHash = function (hash) {
|
var parseHash = common.parseHash = function (hash) {
|
||||||
var parsed = {};
|
var parsed = {};
|
||||||
@ -430,6 +440,7 @@ define([
|
|||||||
|
|
||||||
var getRelativeHref = common.getRelativeHref = function (href) {
|
var getRelativeHref = common.getRelativeHref = function (href) {
|
||||||
if (!href) { return; }
|
if (!href) { return; }
|
||||||
|
if (href.indexOf('#') === -1) { return; }
|
||||||
var parsed = common.parsePadUrl(href);
|
var parsed = common.parsePadUrl(href);
|
||||||
return '/' + parsed.type + '/#' + parsed.hash;
|
return '/' + parsed.type + '/#' + parsed.hash;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -322,6 +322,66 @@ define([
|
|||||||
return rootpaths.concat(unsortedpaths, templatepaths, trashpaths);
|
return rootpaths.concat(unsortedpaths, templatepaths, trashpaths);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var search = exp.search = function (value) {
|
||||||
|
if (typeof(value) !== "string") { return []; }
|
||||||
|
var res = [];
|
||||||
|
// Search in ROOT
|
||||||
|
var findIn = function (root) {
|
||||||
|
Object.keys(root).forEach(function (k) {
|
||||||
|
if (isFile(root[k])) {
|
||||||
|
if (k.toLowerCase().indexOf(value.toLowerCase()) !== -1) {
|
||||||
|
res.push(root[k]);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
findIn(root[k]);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
findIn(files[ROOT]);
|
||||||
|
// Search in TRASH
|
||||||
|
var trash = files[TRASH];
|
||||||
|
Object.keys(trash).forEach(function (k) {
|
||||||
|
if (k.toLowerCase().indexOf(value.toLowerCase()) !== -1) {
|
||||||
|
trash[k].forEach(function (el) {
|
||||||
|
if (isFile(el.element)) {
|
||||||
|
res.push(el.element);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
trash[k].forEach(function (el) {
|
||||||
|
if (isFolder(el.element)) {
|
||||||
|
findIn(el.element);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Search title
|
||||||
|
var allFilesList = files[FILES_DATA].slice();
|
||||||
|
allFilesList.forEach(function (t) {
|
||||||
|
if (t.title && t.title.toLowerCase().indexOf(value.toLowerCase()) !== -1) {
|
||||||
|
res.push(t.href);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Search Href
|
||||||
|
var href = Cryptpad.getRelativeHref(value);
|
||||||
|
if (href) {
|
||||||
|
res.push(href);
|
||||||
|
}
|
||||||
|
|
||||||
|
res = Cryptpad.deduplicateString(res);
|
||||||
|
|
||||||
|
var ret = [];
|
||||||
|
res.forEach(function (l) {
|
||||||
|
var paths = findFile(l);
|
||||||
|
ret.push({
|
||||||
|
paths: findFile(l),
|
||||||
|
data: getFileData(l)
|
||||||
|
});
|
||||||
|
});
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
|
||||||
// Remove the selected 'href' from the tree located at 'path', and push its locations to the 'paths' array
|
// Remove the selected 'href' from the tree located at 'path', and push its locations to the 'paths' array
|
||||||
var removeFileFromRoot = function (path, href) {
|
var removeFileFromRoot = function (path, href) {
|
||||||
var paths = [];
|
var paths = [];
|
||||||
|
|||||||
@ -7,16 +7,6 @@ define([
|
|||||||
|
|
||||||
var Nacl = window.nacl;
|
var Nacl = window.nacl;
|
||||||
|
|
||||||
var deduplicate = function (array) {
|
|
||||||
var a = array.slice();
|
|
||||||
for(var i=0; i<a.length; i++) {
|
|
||||||
for(var j=i+1; j<a.length; j++) {
|
|
||||||
if(a[i] === a[j]) { a.splice(j--, 1); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return a;
|
|
||||||
};
|
|
||||||
|
|
||||||
var create = function (network, ed) {
|
var create = function (network, ed) {
|
||||||
var exp = {};
|
var exp = {};
|
||||||
var rpc = Rpc.create(network, ed);
|
var rpc = Rpc.create(network, ed);
|
||||||
@ -31,7 +21,7 @@ define([
|
|||||||
if (!parsedHash || !parsedHash.channel) { return; }
|
if (!parsedHash || !parsedHash.channel) { return; }
|
||||||
channelIdList.push(Cryptpad.base64ToHex(parsedHash.channel));
|
channelIdList.push(Cryptpad.base64ToHex(parsedHash.channel));
|
||||||
});
|
});
|
||||||
var uniqueList = deduplicate(channelIdList).sort();
|
var uniqueList = Cryptpad.deduplicateString(channelIdList).sort();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
1. every time you want to pin or unpid a pad you send a message to the server
|
1. every time you want to pin or unpid a pad you send a message to the server
|
||||||
|
|||||||
@ -38,6 +38,7 @@ define([
|
|||||||
return JSONSortify(obj);
|
return JSONSortify(obj);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var SEARCH = "search";
|
||||||
var ROOT = "root";
|
var ROOT = "root";
|
||||||
var ROOT_NAME = Messages.fm_rootName;
|
var ROOT_NAME = Messages.fm_rootName;
|
||||||
var UNSORTED = "unsorted";
|
var UNSORTED = "unsorted";
|
||||||
@ -1417,6 +1418,13 @@ define([
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var displaySearch = function ($list, value) {
|
||||||
|
var filesList = filesOp.search(value);
|
||||||
|
filesList.forEach(function (r) {
|
||||||
|
$('<li>').text(JSON.stringify(r)).appendTo($list);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Display the selected directory into the content part (rightside)
|
// Display the selected directory into the content part (rightside)
|
||||||
// NOTE: Elements in the trash are not using the same storage structure as the others
|
// NOTE: Elements in the trash are not using the same storage structure as the others
|
||||||
// _WORKGROUP_ : do not change the lastOpenedFolder value in localStorage
|
// _WORKGROUP_ : do not change the lastOpenedFolder value in localStorage
|
||||||
@ -1433,6 +1441,7 @@ define([
|
|||||||
}
|
}
|
||||||
appStatus.ready(false);
|
appStatus.ready(false);
|
||||||
currentPath = path;
|
currentPath = path;
|
||||||
|
var s = $content.scrollTop() || 0;
|
||||||
$content.html("");
|
$content.html("");
|
||||||
if (!path || path.length === 0) {
|
if (!path || path.length === 0) {
|
||||||
path = [ROOT];
|
path = [ROOT];
|
||||||
@ -1442,9 +1451,10 @@ define([
|
|||||||
var isUnsorted = filesOp.comparePath(path, [UNSORTED]);
|
var isUnsorted = filesOp.comparePath(path, [UNSORTED]);
|
||||||
var isTemplate = filesOp.comparePath(path, [TEMPLATE]);
|
var isTemplate = filesOp.comparePath(path, [TEMPLATE]);
|
||||||
var isAllFiles = filesOp.comparePath(path, [FILES_DATA]);
|
var isAllFiles = filesOp.comparePath(path, [FILES_DATA]);
|
||||||
|
var isSearch = path[0] === SEARCH;
|
||||||
|
|
||||||
var root = filesOp.findElement(files, path);
|
var root = isSearch ? undefined : filesOp.findElement(files, path);
|
||||||
if (typeof(root) === "undefined") {
|
if (!isSearch && typeof(root) === "undefined") {
|
||||||
log(Messages.fm_unknownFolderError);
|
log(Messages.fm_unknownFolderError);
|
||||||
debug("Unable to locate the selected directory: ", path);
|
debug("Unable to locate the selected directory: ", path);
|
||||||
var parentPath = path.slice();
|
var parentPath = path.slice();
|
||||||
@ -1517,6 +1527,8 @@ define([
|
|||||||
displayAllFiles($list);
|
displayAllFiles($list);
|
||||||
} else if (isTrashRoot) {
|
} else if (isTrashRoot) {
|
||||||
displayTrashRoot($list, $folderHeader, $fileHeader);
|
displayTrashRoot($list, $folderHeader, $fileHeader);
|
||||||
|
} else if (isSearch) {
|
||||||
|
displaySearch($list, path[1]);
|
||||||
} else {
|
} else {
|
||||||
$dirContent.contextmenu(openContentContextMenu);
|
$dirContent.contextmenu(openContentContextMenu);
|
||||||
if (filesOp.hasSubfolder(root)) { $list.append($folderHeader); }
|
if (filesOp.hasSubfolder(root)) { $list.append($folderHeader); }
|
||||||
@ -1539,6 +1551,7 @@ define([
|
|||||||
}
|
}
|
||||||
//$content.append($toolbar).append($title).append($info).append($dirContent);
|
//$content.append($toolbar).append($title).append($info).append($dirContent);
|
||||||
$content.append($info).append($dirContent);
|
$content.append($info).append($dirContent);
|
||||||
|
$content.scrollTop(s);
|
||||||
appStatus.ready(true);
|
appStatus.ready(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1624,7 +1637,8 @@ define([
|
|||||||
|
|
||||||
// Display root content
|
// Display root content
|
||||||
var $list = $('<ul>').appendTo($container);
|
var $list = $('<ul>').appendTo($container);
|
||||||
Object.keys(root).forEach(function (key) {
|
var keys = Object.keys(root).sort();
|
||||||
|
keys.forEach(function (key) {
|
||||||
// Do not display files in the menu
|
// Do not display files in the menu
|
||||||
if (filesOp.isFile(root[key])) { return; }
|
if (filesOp.isFile(root[key])) { return; }
|
||||||
var newPath = path.slice();
|
var newPath = path.slice();
|
||||||
@ -1679,8 +1693,22 @@ define([
|
|||||||
$container.append($trashList);
|
$container.append($trashList);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var createSearch = function ($container) {
|
||||||
|
var $input = $('<input>', {
|
||||||
|
type: 'text',
|
||||||
|
placeholder: 'Search...'
|
||||||
|
}).keyup(function (e) {
|
||||||
|
if (e.which === 13) {
|
||||||
|
var val = $(this).val();
|
||||||
|
displayDirectory([SEARCH, val]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$container.append($input);
|
||||||
|
};
|
||||||
|
|
||||||
var resetTree = module.resetTree = function () {
|
var resetTree = module.resetTree = function () {
|
||||||
$tree.html('');
|
$tree.html('');
|
||||||
|
if (displayedCategories.indexOf(SEARCH) !== -1) { createSearch($tree); }
|
||||||
if (displayedCategories.indexOf(ROOT) !== -1) { createTree($tree, [ROOT]); }
|
if (displayedCategories.indexOf(ROOT) !== -1) { createTree($tree, [ROOT]); }
|
||||||
if (displayedCategories.indexOf(UNSORTED) !== -1) { createUnsorted($tree, [UNSORTED]); }
|
if (displayedCategories.indexOf(UNSORTED) !== -1) { createUnsorted($tree, [UNSORTED]); }
|
||||||
if (displayedCategories.indexOf(TEMPLATE) !== -1) { createTemplate($tree, [TEMPLATE]); }
|
if (displayedCategories.indexOf(TEMPLATE) !== -1) { createTemplate($tree, [TEMPLATE]); }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user