Merge branch 'staging' of github.com:xwiki-labs/cryptpad into staging

pull/1/head
ansuz 8 years ago
commit 1f762ce55b

@ -19,6 +19,7 @@ define([
var storeObj; var storeObj;
var ready = false; var ready = false;
var filesOp; var filesOp;
var exp = {};
var safeSet = function (key, val) { var safeSet = function (key, val) {
storeObj[key] = val; storeObj[key] = val;
@ -85,6 +86,10 @@ define([
cb(); cb();
}; };
Store.getProxy = function () {
return exp;
};
var changeHandlers = Store.changeHandlers = []; var changeHandlers = Store.changeHandlers = [];
Store.change = function (f) { Store.change = function (f) {
@ -134,7 +139,9 @@ define([
}; };
var rt = window.rt = Listmap.create(listmapConfig); var rt = window.rt = Listmap.create(listmapConfig);
exp.proxy = rt.proxy;
rt.proxy.on('create', function (info) { rt.proxy.on('create', function (info) {
exp.info = info;
var realtime = info.realtime; var realtime = info.realtime;
if (!Cryptpad.getUserHash()) { if (!Cryptpad.getUserHash()) {
localStorage.FS_hash = Cryptpad.getEditHashFromKeys(info.channel, secret.keys); localStorage.FS_hash = Cryptpad.getEditHashFromKeys(info.channel, secret.keys);
@ -170,12 +177,12 @@ define([
}; };
Store.ready = function (f, Cryptpad) { Store.ready = function (f, Cryptpad) {
if (Cryptpad.parsePadUrl(window.location.href).type === "file") { /*if (Cryptpad.parsePadUrl(window.location.href).type === "file") {
if (typeof(f) === 'function') { if (typeof(f) === 'function') {
f(void 0, Cryptpad.getStore(true)); f(void 0, Cryptpad.getStore(true));
} }
return; return;
} }*/
if (ready) { if (ready) {
if (typeof(f) === 'function') { if (typeof(f) === 'function') {
f(void 0, Store); f(void 0, Store);

@ -80,7 +80,7 @@
</tbody> </tbody>
</table>--> </table>-->
<iframe src="/file/#iframe" id="fileManagerIframe" style="display: none;"></iframe> <iframe src="/file/#iframe" id="fileManagerIframe"></iframe>
<div id="buttons" class="buttons"> <div id="buttons" class="buttons">
<a id="create-pad" class="button create" href="/pad/" data-localization="button_newpad"></a> <a id="create-pad" class="button create" href="/pad/" data-localization="button_newpad"></a>

@ -40,7 +40,7 @@
</tbody> </tbody>
</table>--> </table>-->
<iframe src="/file/#iframe" id="fileManagerIframe" style="display: none;"></iframe> <iframe src="/file/#iframe" id="fileManagerIframe"></iframe>
<div id="buttons" class="buttons"> <div id="buttons" class="buttons">
<a id="create-pad" class="button create" href="/pad/" data-localization="button_newpad"></a> <a id="create-pad" class="button create" href="/pad/" data-localization="button_newpad"></a>

@ -10,15 +10,16 @@
} }
.toolbar-container { .toolbar-container {
.cryptpad-lag {
position: relative;
top: -2px;
}
font: 12px Arial,Helvetica,Tahoma,Verdana,sans-serif; font: 12px Arial,Helvetica,Tahoma,Verdana,sans-serif;
background: -webkit-linear-gradient(#EEEEEE, #DADADA); /* For Safari 5.1 to 6.0 */ background: -webkit-linear-gradient(#EEEEEE, #DADADA); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(#f5f5f5, #DDDDDD); /* For Opera 11.1 to 12.0 */ background: -o-linear-gradient(#f5f5f5, #DDDDDD); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(#f5f5f5, #DDDDDD); /* For Firefox 3.6 to 15 */ background: -moz-linear-gradient(#f5f5f5, #DDDDDD); /* For Firefox 3.6 to 15 */
background: linear-gradient(#f5f5f5, #DDDDDD); /* Standard syntax */ background: linear-gradient(#f5f5f5, #DDDDDD); /* Standard syntax */
.cryptpad-toolbar {
select {
box-sizing: border-box;
}
}
} }
.cryptpad-toolbar { .cryptpad-toolbar {
@ -37,6 +38,18 @@
float: right; float: right;
} }
.cryptpad-lag {
box-sizing: content-box;
vertical-align: top;
height: 16px;
width: 16px;
display: inline-block;
margin: 2px 0px;
padding: 5px;
div {
margin: auto;
}
}
div { div {
white-space: normal; white-space: normal;
&.cryptpad-back { &.cryptpad-back {
@ -45,11 +58,6 @@
cursor: pointer; cursor: pointer;
color: #000; color: #000;
} }
&.cryptpad-lag {
float: left;
line-height: 26px;
margin: 2px 0px;
}
} }
button, select, .rightside-element { button, select, .rightside-element {
@ -116,6 +124,11 @@
padding-left: 5px; padding-left: 5px;
border: 1px solid #A6A6A6; border: 1px solid #A6A6A6;
border-bottom-color: #979797; border-bottom-color: #979797;
vertical-align: top;
box-sizing: content-box;
option {
height: 24px;
}
} }
} }
@ -229,6 +242,9 @@
.cryptpad-user { .cryptpad-user {
position: absolute; position: absolute;
right: 0; right: 0;
span:not(.cryptpad-lag) {
vertical-align: top;
}
@media screen and (max-width: 400px) { @media screen and (max-width: 400px) {
top: 3em; top: 3em;
} }
@ -276,9 +292,11 @@
padding: 5px 0px; padding: 5px 0px;
margin: 5px 0px; margin: 5px 0px;
font-size: 16px; font-size: 16px;
white-space: normal;
} }
} }
button { button {
white-space: normal;
margin: 2px 0px; margin: 2px 0px;
} }
} }
@ -295,7 +313,7 @@
//float: right; //float: right;
} }
.cryptpad-spinner { .cryptpad-spinner {
float: left; //float: left;
display: inline-block; display: inline-block;
height: 26px; height: 26px;
margin: 2px; margin: 2px;
@ -310,10 +328,6 @@
.cryptpad-toolbar-username { .cryptpad-toolbar-username {
} }
.lag { .lag {
display: inline-block;
vertical-align: middle;
padding: 0 !important;
margin: 0 5px !important;
height: 15px !important; height: 15px !important;
width: 15px !important; width: 15px !important;
border-radius: 50%; border-radius: 50%;

@ -17,9 +17,8 @@
background: linear-gradient(#f5f5f5, #DDDDDD); background: linear-gradient(#f5f5f5, #DDDDDD);
/* Standard syntax */ /* Standard syntax */
} }
.toolbar-container .cryptpad-lag { .toolbar-container .cryptpad-toolbar select {
position: relative; box-sizing: border-box;
top: -2px;
} }
.cryptpad-toolbar { .cryptpad-toolbar {
box-sizing: border-box; box-sizing: border-box;
@ -39,6 +38,18 @@
.cryptpad-toolbar a { .cryptpad-toolbar a {
float: right; float: right;
} }
.cryptpad-toolbar .cryptpad-lag {
box-sizing: content-box;
vertical-align: top;
height: 16px;
width: 16px;
display: inline-block;
margin: 2px 0px;
padding: 5px;
}
.cryptpad-toolbar .cryptpad-lag div {
margin: auto;
}
.cryptpad-toolbar div { .cryptpad-toolbar div {
white-space: normal; white-space: normal;
} }
@ -48,11 +59,6 @@
cursor: pointer; cursor: pointer;
color: #000; color: #000;
} }
.cryptpad-toolbar div.cryptpad-lag {
float: left;
line-height: 26px;
margin: 2px 0px;
}
.cryptpad-toolbar button, .cryptpad-toolbar button,
.cryptpad-toolbar select, .cryptpad-toolbar select,
.cryptpad-toolbar .rightside-element { .cryptpad-toolbar .rightside-element {
@ -118,6 +124,11 @@
padding-left: 5px; padding-left: 5px;
border: 1px solid #A6A6A6; border: 1px solid #A6A6A6;
border-bottom-color: #979797; border-bottom-color: #979797;
vertical-align: top;
box-sizing: content-box;
}
.cryptpad-toolbar select option {
height: 24px;
} }
.cryptpad-toolbar-top { .cryptpad-toolbar-top {
display: block; display: block;
@ -234,6 +245,9 @@
position: absolute; position: absolute;
right: 0; right: 0;
} }
.cryptpad-toolbar-top .cryptpad-user span:not(.cryptpad-lag) {
vertical-align: top;
}
@media screen and (max-width: 400px) { @media screen and (max-width: 400px) {
.cryptpad-toolbar-top .cryptpad-user { .cryptpad-toolbar-top .cryptpad-user {
top: 3em; top: 3em;
@ -289,8 +303,10 @@
padding: 5px 0px; padding: 5px 0px;
margin: 5px 0px; margin: 5px 0px;
font-size: 16px; font-size: 16px;
white-space: normal;
} }
.cryptpad-toolbar-leftside .cryptpad-dropdown-container .cryptpad-dropdown button { .cryptpad-toolbar-leftside .cryptpad-dropdown-container .cryptpad-dropdown button {
white-space: normal;
margin: 2px 0px; margin: 2px 0px;
} }
.cryptpad-toolbar-leftside button { .cryptpad-toolbar-leftside button {
@ -303,7 +319,6 @@
text-align: right; text-align: right;
} }
.cryptpad-spinner { .cryptpad-spinner {
float: left;
display: inline-block; display: inline-block;
height: 26px; height: 26px;
margin: 2px; margin: 2px;
@ -316,10 +331,6 @@
text-transform: uppercase; text-transform: uppercase;
} }
.lag { .lag {
display: inline-block;
vertical-align: middle;
padding: 0 !important;
margin: 0 5px !important;
height: 15px !important; height: 15px !important;
width: 15px !important; width: 15px !important;
border-radius: 50%; border-radius: 50%;

@ -432,7 +432,9 @@ define([
cb(err, data); cb(err, data);
}); });
}; };
var setLSAttribute = common.setLSAttribute = function (attr, value) {
localStorage[attr] = value;
};
// STORAGE // STORAGE
var getPadAttribute = common.getPadAttribute = function (attr, cb, legacy) { var getPadAttribute = common.getPadAttribute = function (attr, cb, legacy) {
@ -445,6 +447,9 @@ define([
cb(err, data); cb(err, data);
}); });
}; };
var getLSAttribute = common.getLSAttribute = function (attr) {
return localStorage[attr];
};
// STORAGE // STORAGE

@ -84,7 +84,7 @@ define([
id: uid(), id: uid(),
'class': SPINNER_CLS, 'class': SPINNER_CLS,
}); });
$container.append($spinner); $container.prepend($spinner);
return $spinner[0]; return $spinner[0];
}; };

@ -688,9 +688,6 @@ define([
fixFilesData(files[FILES_DATA]); fixFilesData(files[FILES_DATA]);
if (JSON.stringify(files) !== before) { if (JSON.stringify(files) !== before) {
var backup = JSON.parse(localStorage.oldFileSystem);
backup.push(files);
localStorage.oldFileSystem = JSON.stringify(backup);
debug("Your file system was corrupted. It has been cleaned so that the pads you visit can be stored safely"); debug("Your file system was corrupted. It has been cleaned so that the pads you visit can be stored safely");
return; return;
} }

@ -747,13 +747,13 @@ define([
var $span = $(this); var $span = $(this);
var value; var value;
if ($span.hasClass('foldername')) { if ($span.hasClass('foldername')) {
value = files[SORT_FOLDER_DESC]; value = Cryptpad.getLSAttribute(SORT_FOLDER_DESC);
files[SORT_FOLDER_DESC] = value ? false : true; Cryptpad.setLSAttribute(SORT_FOLDER_DESC, value ? false : true);
refresh(); refresh();
return; return;
} }
value = files[SORT_FILE_BY]; value = Cryptpad.getLSAttribute(SORT_FILE_BY);
var descValue = files[SORT_FILE_DESC]; var descValue = Cryptpad.getLSAttribute(SORT_FILE_DESC);
if ($span.hasClass('filename')) { if ($span.hasClass('filename')) {
if (value === '') { if (value === '') {
descValue = descValue ? false : true; descValue = descValue ? false : true;
@ -775,17 +775,17 @@ define([
} }
}); });
} }
files[SORT_FILE_BY] = value; Cryptpad.setLSAttribute(SORT_FILE_BY, value);
files[SORT_FILE_DESC] = descValue; Cryptpad.setLSAttribute(SORT_FILE_DESC, descValue);
refresh(); refresh();
}; };
var addFolderSortIcon = function ($list) { var addFolderSortIcon = function ($list) {
var $icon = $sortAscIcon.clone(); var $icon = $sortAscIcon.clone();
if (files[SORT_FOLDER_DESC]) { if (Cryptpad.getLSAttribute(SORT_FOLDER_DESC)) {
$icon = $sortDescIcon.clone(); $icon = $sortDescIcon.clone();
} }
if (typeof(files[SORT_FOLDER_DESC]) !== "undefined") { if (typeof(Cryptpad.getLSAttribute(SORT_FOLDER_DESC)) !== "undefined") {
$list.find('.foldername').prepend($icon); $list.find('.foldername').prepend($icon);
} }
}; };
@ -801,12 +801,12 @@ define([
}; };
var addFileSortIcon = function ($list) { var addFileSortIcon = function ($list) {
var $icon = $sortAscIcon.clone(); var $icon = $sortAscIcon.clone();
if (files[SORT_FILE_DESC]) { if (Cryptpad.getLSAttribute(SORT_FILE_DESC)) {
$icon = $sortDescIcon.clone(); $icon = $sortDescIcon.clone();
} }
var classSorted; var classSorted;
if (files[SORT_FILE_BY] === '') { classSorted = 'filename'; } if (Cryptpad.getLSAttribute(SORT_FILE_BY) === '') { classSorted = 'filename'; }
else if (files[SORT_FILE_BY]) { classSorted = files[SORT_FILE_BY]; } else if (Cryptpad.getLSAttribute(SORT_FILE_BY)) { classSorted = Cryptpad.getLSAttribute(SORT_FILE_BY); }
if (classSorted) { if (classSorted) {
$list.find('.' + classSorted).prepend($icon); $list.find('.' + classSorted).prepend($icon);
} }
@ -895,7 +895,7 @@ define([
var $fileHeader = getFileListHeader(false); var $fileHeader = getFileListHeader(false);
$container.append($fileHeader); $container.append($fileHeader);
var keys = unsorted; var keys = unsorted;
var sortedFiles = sortElements(false, [UNSORTED], keys, files[SORT_FILE_BY], !files[SORT_FILE_DESC], true); var sortedFiles = sortElements(false, [UNSORTED], keys, Cryptpad.getLSAttribute(SORT_FILE_BY), !Cryptpad.getLSAttribute(SORT_FILE_DESC), true);
sortedFiles.forEach(function (href) { sortedFiles.forEach(function (href) {
var file = filesOp.getFileData(href); var file = filesOp.getFileData(href);
if (!file) { if (!file) {
@ -928,7 +928,7 @@ define([
var $fileHeader = getFileListHeader(false); var $fileHeader = getFileListHeader(false);
$container.append($fileHeader); $container.append($fileHeader);
var keys = allfiles; var keys = allfiles;
var sortedFiles = sortElements(false, [FILES_DATA], keys, files[SORT_FILE_BY], !files[SORT_FILE_DESC], false, true); var sortedFiles = sortElements(false, [FILES_DATA], keys, Cryptpad.getLSAttribute(SORT_FILE_BY), !Cryptpad.getLSAttribute(SORT_FILE_DESC), false, true);
sortedFiles.forEach(function (file) { sortedFiles.forEach(function (file) {
var $icon = $fileIcon.clone(); var $icon = $fileIcon.clone();
var $name = $('<span>', { 'class': 'file-element element' }); var $name = $('<span>', { 'class': 'file-element element' });
@ -969,8 +969,8 @@ define([
}); });
}); });
}); });
var sortedFolders = sortTrashElements(true, filesList, null, !files[SORT_FOLDER_DESC]); var sortedFolders = sortTrashElements(true, filesList, null, !Cryptpad.getLSAttribute(SORT_FOLDER_DESC));
var sortedFiles = sortTrashElements(false, filesList, files[SORT_FILE_BY], !files[SORT_FILE_DESC]); var sortedFiles = sortTrashElements(false, filesList, Cryptpad.getLSAttribute(SORT_FILE_BY), !Cryptpad.getLSAttribute(SORT_FILE_DESC));
if (filesOp.hasSubfolder(root, true)) { $list.append($folderHeader); } if (filesOp.hasSubfolder(root, true)) { $list.append($folderHeader); }
sortedFolders.forEach(function (f) { sortedFolders.forEach(function (f) {
var $element = createElement([TRASH], f.spath, root, true); var $element = createElement([TRASH], f.spath, root, true);
@ -1044,8 +1044,8 @@ define([
if (filesOp.hasSubfolder(root)) { $list.append($folderHeader); } if (filesOp.hasSubfolder(root)) { $list.append($folderHeader); }
// display sub directories // display sub directories
var keys = Object.keys(root); var keys = Object.keys(root);
var sortedFolders = sortElements(true, path, keys, null, !files[SORT_FOLDER_DESC]); var sortedFolders = sortElements(true, path, keys, null, !Cryptpad.getLSAttribute(SORT_FOLDER_DESC));
var sortedFiles = sortElements(false, path, keys, files[SORT_FILE_BY], !files[SORT_FILE_DESC]); var sortedFiles = sortElements(false, path, keys, Cryptpad.getLSAttribute(SORT_FILE_BY), !Cryptpad.getLSAttribute(SORT_FILE_DESC));
sortedFolders.forEach(function (key) { sortedFolders.forEach(function (key) {
if (filesOp.isFile(root[key])) { return; } if (filesOp.isFile(root[key])) { return; }
var $element = createElement(path, key, root, true); var $element = createElement(path, key, root, true);
@ -1436,6 +1436,8 @@ define([
// don't initialize until the store is ready. // don't initialize until the store is ready.
Cryptpad.ready(function () { Cryptpad.ready(function () {
var storeObj = Cryptpad.getStore().getProxy && Cryptpad.getStore().getProxy().proxy ? Cryptpad.getStore().getProxy() : undefined;
Cryptpad.styleAlerts(); Cryptpad.styleAlerts();
if (window.location.hash && window.location.hash === "#iframe") { if (window.location.hash && window.location.hash === "#iframe") {
@ -1458,8 +1460,13 @@ define([
logging: false logging: false
}; };
var proxy;
if (storeObj) { proxy = storeObj.proxy; }
else {
var rt = window.rt = module.rt = Listmap.create(listmapConfig); var rt = window.rt = module.rt = Listmap.create(listmapConfig);
rt.proxy.on('create', function (info) { proxy = rt.proxy;
}
var onCreate = function (info) {
var realtime = module.realtime = info.realtime; var realtime = module.realtime = info.realtime;
var editHash = APP.editHash = !readOnly ? Cryptpad.getEditHashFromKeys(info.channel, secret.keys) : undefined; var editHash = APP.editHash = !readOnly ? Cryptpad.getEditHashFromKeys(info.channel, secret.keys) : undefined;
@ -1505,25 +1512,40 @@ define([
$userBlock.append($backupButton); $userBlock.append($backupButton);
} }
}).on('ready', function () { };
module.files = rt.proxy; var onReady = function () {
if (JSON.stringify(rt.proxy) === '{}') { module.files = proxy;
if (JSON.stringify(proxy) === '{}') {
var store = Cryptpad.getStore(true); var store = Cryptpad.getStore(true);
store.get(Cryptpad.storageKey, function (err, s) { store.get(Cryptpad.storageKey, function (err, s) {
rt.proxy[FILES_DATA] = s; proxy[FILES_DATA] = s;
initLocalStorage(); initLocalStorage();
init(rt.proxy); init(proxy);
}); });
return; return;
} }
initLocalStorage(); initLocalStorage();
init(rt.proxy); init(proxy);
APP.userList.onChange(); APP.userList.onChange();
}) };
.on('disconnect', function (info) { var onDisconnect = function (info) {
setEditable(false); setEditable(false);
console.error('err'); console.error('err');
Cryptpad.alert(Messages.common_connectionLost); Cryptpad.alert(Messages.common_connectionLost);
};
if (storeObj) {
onCreate(storeObj.info);
onReady();
} else {
proxy.on('create', function (info) {
onCreate(info);
}).on('ready', function () {
onReady();
});
}
proxy.on('disconnect', function () {
onDisconnect();
}); });
}); });

@ -15,6 +15,7 @@
} }
#cke_1_top .cryptpad-toolbar { #cke_1_top .cryptpad-toolbar {
margin-bottom: 1px; margin-bottom: 1px;
padding: 0px;
} }
</style> </style>
</head> </head>

Loading…
Cancel
Save