Shared folders UI
This commit is contained in:
@@ -222,17 +222,21 @@ define([
|
||||
}));
|
||||
}
|
||||
|
||||
$('<label>', {'for': 'cp-app-prop-ctime'}).text(Messages.fm_creation)
|
||||
.appendTo($d);
|
||||
$d.append(UI.dialog.selectable(new Date(data.ctime).toLocaleString(), {
|
||||
id: 'cp-app-prop-ctime',
|
||||
}));
|
||||
if (data.ctime) {
|
||||
$('<label>', {'for': 'cp-app-prop-ctime'}).text(Messages.fm_creation)
|
||||
.appendTo($d);
|
||||
$d.append(UI.dialog.selectable(new Date(data.ctime).toLocaleString(), {
|
||||
id: 'cp-app-prop-ctime',
|
||||
}));
|
||||
}
|
||||
|
||||
$('<label>', {'for': 'cp-app-prop-atime'}).text(Messages.fm_lastAccess)
|
||||
.appendTo($d);
|
||||
$d.append(UI.dialog.selectable(new Date(data.atime).toLocaleString(), {
|
||||
id: 'cp-app-prop-atime',
|
||||
}));
|
||||
if (data.atime) {
|
||||
$('<label>', {'for': 'cp-app-prop-atime'}).text(Messages.fm_lastAccess)
|
||||
.appendTo($d);
|
||||
$d.append(UI.dialog.selectable(new Date(data.atime).toLocaleString(), {
|
||||
id: 'cp-app-prop-atime',
|
||||
}));
|
||||
}
|
||||
|
||||
if (common.isLoggedIn() && AppConfig.enablePinning) {
|
||||
// check the size of this file...
|
||||
|
||||
@@ -111,6 +111,17 @@ define([
|
||||
cb(obj);
|
||||
});
|
||||
};
|
||||
common.addSharedFolder = function (secret, cb) {
|
||||
postMessage("ADD_SHARED_FOLDER", {
|
||||
path: ['root'],
|
||||
folderData: {
|
||||
href: '/drive/#' + Hash.getEditHashFromKeys(secret),
|
||||
roHref: '/drive/#' + Hash.getViewHashFromKeys(secret),
|
||||
channel: secret.channel,
|
||||
ctime: +new Date()
|
||||
}
|
||||
}, cb);
|
||||
};
|
||||
common.drive = {};
|
||||
common.drive.onLog = Util.mkEvent();
|
||||
common.drive.onChange = Util.mkEvent();
|
||||
|
||||
@@ -1147,7 +1147,7 @@ define([
|
||||
// SHARED FOLDERS
|
||||
var loadSharedFolder = function (id, data, cb) {
|
||||
var parsed = Hash.parsePadUrl(data.href);
|
||||
var secret = Hash.getSecrets('folder', parsed.hash, data.password);
|
||||
var secret = Hash.getSecrets('drive', parsed.hash, data.password);
|
||||
var listmapConfig = {
|
||||
data: {},
|
||||
websocketURL: NetConfig.getWebsocketURL(),
|
||||
@@ -1191,7 +1191,12 @@ define([
|
||||
onSync(waitFor());
|
||||
|
||||
// 2b. load the proxy
|
||||
loadSharedFolder(id, data, waitFor());
|
||||
rt = loadSharedFolder(id, data.folderData, waitFor(function () {
|
||||
if (data.metadata) { // Creating a new shared folder
|
||||
rt.proxy.metadata = data.metadata;
|
||||
onSync(waitFor());
|
||||
}
|
||||
}));
|
||||
}).nThen(function () {
|
||||
sendDriveEvent('DRIVE_CHANGE', {
|
||||
path: ['drive'].concat(path)
|
||||
@@ -1201,16 +1206,19 @@ define([
|
||||
};
|
||||
store.createSharedFolder = function () {
|
||||
// XXX
|
||||
var hash = Hash.createRandomHash('folder');
|
||||
var href = '/folder/#' + hash;
|
||||
var secret = Hash.getSecrets('folder', hash);
|
||||
var hash = Hash.createRandomHash('drive');
|
||||
var href = '/drive/#' + hash;
|
||||
var secret = Hash.getSecrets('drive', hash);
|
||||
Store.addSharedFolder(null, {
|
||||
path: ['root'],
|
||||
folderData: {
|
||||
href: href,
|
||||
roHref: '/folder/#' + Hash.getViewHashFromKeys(secret),
|
||||
roHref: '/drive/#' + Hash.getViewHashFromKeys(secret),
|
||||
channel: secret.channel,
|
||||
title: "Test",
|
||||
ctime: +new Date()
|
||||
},
|
||||
metadata: {
|
||||
title: "Test"
|
||||
}
|
||||
}, function () {
|
||||
console.log('done');
|
||||
|
||||
@@ -53,6 +53,7 @@ define([
|
||||
GET_STRONGER_HASH: Store.getStrongerHash,
|
||||
INCREMENT_TEMPLATE_USE: Store.incrementTemplateUse,
|
||||
GET_SHARED_FOLDER: Store.getSharedFolder,
|
||||
ADD_SHARED_FOLDER: Store.addSharedFolder,
|
||||
// Messaging
|
||||
INVITE_FROM_USERLIST: Store.inviteFromUserlist,
|
||||
ADD_DIRECT_MESSAGE_HANDLERS: Store.addDirectMessageHandlers,
|
||||
|
||||
@@ -71,6 +71,14 @@ define([
|
||||
|
||||
exp.pushSharedFolder = function (data, cb) {
|
||||
if (typeof cb !== "function") { cb = function () {}; }
|
||||
// Check we already have this shared folder in our drive
|
||||
if (Object.keys(files[SHARED_FOLDERS]).some(function (k) {
|
||||
return files[SHARED_FOLDERS][k].channel === data.channel;
|
||||
})) {
|
||||
return void cb ('EEXISTS');
|
||||
}
|
||||
|
||||
// Add the folder
|
||||
var todo = function () {
|
||||
var id = Util.createRandomInteger();
|
||||
files[SHARED_FOLDERS][id] = data;
|
||||
@@ -695,11 +703,11 @@ define([
|
||||
});
|
||||
};
|
||||
|
||||
fixSharedFolders();
|
||||
fixRoot();
|
||||
fixTrashRoot();
|
||||
fixTemplate();
|
||||
fixFilesData();
|
||||
fixSharedFolders();
|
||||
fixDrive();
|
||||
|
||||
if (JSON.stringify(files) !== before) {
|
||||
|
||||
@@ -259,7 +259,17 @@ define([
|
||||
data = data || {};
|
||||
var resolved = _resolvePath(Env, data.path);
|
||||
if (!resolved || !resolved.userObject) { return void cb({error: 'E_NOTFOUND'}); }
|
||||
resolved.userObject.addFolder(resolved.path, data.name, cb);
|
||||
resolved.userObject.addFolder(resolved.path, data.name, function (obj) {
|
||||
// The result is the relative path of the new folder. We have to make it absolute.
|
||||
if (obj.newPath && resolved.id) {
|
||||
var fPath = _getUserObjectPath(Env, resolved.userObject);
|
||||
if (fPath) {
|
||||
// This is a shared folder, we have to fix the paths in the search results
|
||||
Array.prototype.unshift.apply(obj.newPath, fPath);
|
||||
}
|
||||
}
|
||||
cb(obj);
|
||||
});
|
||||
};
|
||||
// Delete permanently some pads or folders
|
||||
var _delete = function (Env, data, cb) {
|
||||
@@ -290,6 +300,13 @@ define([
|
||||
data = data || {};
|
||||
var resolved = _resolvePath(Env, data.path);
|
||||
if (!resolved || !resolved.userObject) { return void cb({error: 'E_NOTFOUND'}); }
|
||||
if (!resolved.id) {
|
||||
var el = Env.user.userObject.find(resolved.path);
|
||||
if (Env.user.userObject.isSharedFolder(el) && Env.folders[el]) {
|
||||
Env.folders[el].proxy.metadata.title = data.newName;
|
||||
return void cb();
|
||||
}
|
||||
}
|
||||
resolved.userObject.rename(resolved.path, data.newName, cb);
|
||||
};
|
||||
var onCommand = function (Env, cmdData, cb) {
|
||||
@@ -298,7 +315,6 @@ define([
|
||||
switch (cmd) {
|
||||
case 'move':
|
||||
_move(Env, data, cb); break;
|
||||
//store.userObject.move(data.paths, data.newPath, cb2); break;
|
||||
case 'restore':
|
||||
_restore(Env, data, cb); break;
|
||||
case 'addFolder':
|
||||
@@ -580,7 +596,7 @@ define([
|
||||
};
|
||||
|
||||
var _getUserObjectPath = function (Env, uo) {
|
||||
var fId = uo.id;
|
||||
var fId = Number(uo.id);
|
||||
if (!fId) { return; }
|
||||
var fPath = Env.user.userObject.findFile(fId)[0];
|
||||
return fPath;
|
||||
@@ -686,6 +702,11 @@ define([
|
||||
return obj;
|
||||
};
|
||||
|
||||
var isInSharedFolder = function (Env, path) {
|
||||
var resolved = _resolvePath(Env, path);
|
||||
return typeof resolved.id === "number";
|
||||
};
|
||||
|
||||
/* Generic: doesn't need access to a proxy */
|
||||
var isFile = function (Env, el, allowStr) {
|
||||
return Env.user.userObject.isFile(el, allowStr);
|
||||
@@ -772,6 +793,7 @@ define([
|
||||
findFile: callWithEnv(findFile),
|
||||
findChannels: callWithEnv(findChannels),
|
||||
getSharedFolderData: callWithEnv(getSharedFolderData),
|
||||
isInSharedFolder: callWithEnv(isInSharedFolder),
|
||||
// Generic
|
||||
isFile: callWithEnv(isFile),
|
||||
isFolder: callWithEnv(isFolder),
|
||||
|
||||
Reference in New Issue
Block a user