Merge branch 'newtoolbar' of github.com:xwiki-labs/cryptpad into newtoolbar
This commit is contained in:
@@ -149,7 +149,8 @@ define([
|
||||
console.log('* ' + msg);
|
||||
});
|
||||
|
||||
return false;
|
||||
// No, this is crappy, it's going to cause tests to fail basically all of the time.
|
||||
//return false;
|
||||
}
|
||||
return true;
|
||||
}, "expected all translation keys in default language to be present in all translations. See console for details.");
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="cp code">
|
||||
<head>
|
||||
<title>CryptPad</title>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
||||
<script>
|
||||
|
||||
@@ -178,7 +178,9 @@ define([
|
||||
defaultTitle: defaultName
|
||||
}
|
||||
};
|
||||
obj.metadata.title = document.title;
|
||||
if (!initializing) {
|
||||
obj.metadata.title = document.title;
|
||||
}
|
||||
// set mode too...
|
||||
obj.highlightMode = module.highlightMode;
|
||||
|
||||
@@ -352,6 +354,7 @@ define([
|
||||
var updateMetadata = function(shjson) {
|
||||
// Extract the user list (metadata) from the hyperjson
|
||||
var json = (shjson === "") ? "" : JSON.parse(shjson);
|
||||
var titleUpdated = false;
|
||||
if (json && json.metadata) {
|
||||
if (json.metadata.users) {
|
||||
var userData = json.metadata.users;
|
||||
@@ -362,9 +365,13 @@ define([
|
||||
updateDefaultTitle(json.metadata.defaultTitle);
|
||||
}
|
||||
if (typeof json.metadata.title !== "undefined") {
|
||||
updateTitle(json.metadata.title);
|
||||
updateTitle(json.metadata.title || defaultName);
|
||||
titleUpdated = true;
|
||||
}
|
||||
}
|
||||
if (!titleUpdated) {
|
||||
updateTitle(defaultName);
|
||||
}
|
||||
};
|
||||
|
||||
var onInit = config.onInit = function (info) {
|
||||
@@ -519,15 +526,6 @@ define([
|
||||
|
||||
// set the hash
|
||||
if (!readOnly) { Cryptpad.replaceHash(editHash); }
|
||||
|
||||
Cryptpad.getPadTitle(function (err, title) {
|
||||
if (err) {
|
||||
console.log("Unable to get pad title");
|
||||
console.error(err);
|
||||
return;
|
||||
}
|
||||
updateTitle(title || defaultName);
|
||||
});
|
||||
};
|
||||
|
||||
var unnotify = module.unnotify = function () {
|
||||
|
||||
@@ -80,7 +80,7 @@ define([
|
||||
|
||||
var logout = common.logout = function (cb) {
|
||||
[
|
||||
fileHashKey,
|
||||
// fileHashKey,
|
||||
userHashKey,
|
||||
].forEach(function (k) {
|
||||
sessionStorage.removeItem(k);
|
||||
@@ -88,6 +88,11 @@ define([
|
||||
delete localStorage[k];
|
||||
delete sessionStorage[k];
|
||||
});
|
||||
// Make sure we have an FS_hash in localStorage before reloading all the tabs
|
||||
// so that we don't end up with tabs using different anon hashes
|
||||
if (!localStorage[fileHashKey]) {
|
||||
localStorage[fileHashKey] = common.createRandomHash();
|
||||
}
|
||||
if (cb) { cb(); }
|
||||
};
|
||||
|
||||
|
||||
@@ -410,13 +410,18 @@ define([
|
||||
options.push({
|
||||
tag: 'a',
|
||||
attributes: {'class': 'logout'},
|
||||
content: Messages.user_logout
|
||||
content: Messages.logoutButton
|
||||
});
|
||||
} else {
|
||||
options.push({
|
||||
tag: 'a',
|
||||
attributes: {'class': 'login'},
|
||||
content: Messages.user_login
|
||||
content: Messages.login_login
|
||||
});
|
||||
options.push({
|
||||
tag: 'a',
|
||||
attributes: {'class': 'register'},
|
||||
content: Messages.login_register
|
||||
});
|
||||
}
|
||||
var $icon = $('<span>', {'class': 'fa fa-user'});
|
||||
@@ -439,6 +444,9 @@ define([
|
||||
$userAdmin.find('a.login').click(function (e) {
|
||||
window.open('/user');
|
||||
});
|
||||
$userAdmin.find('a.register').click(function (e) {
|
||||
window.open('/user#register');
|
||||
});
|
||||
|
||||
if (config.userName && config.userName.setName && config.userName.lastName) {
|
||||
$userAdmin.find('a.' + USERBUTTON_CLS).click(function (e) {
|
||||
|
||||
@@ -13,7 +13,7 @@ define([
|
||||
'/bower_components/fabric.js/dist/fabric.min.js',
|
||||
'/bower_components/jquery/dist/jquery.min.js',
|
||||
'/bower_components/file-saver/FileSaver.min.js',
|
||||
'/customize/pad.js'
|
||||
//'/customize/pad.js'
|
||||
], function (Config, Realtime, Crypto, TextPatcher, JSONSortify, JsonOT, Cryptpad) {
|
||||
var saveAs = window.saveAs;
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="cp pad">
|
||||
<head>
|
||||
<title>CryptPad</title>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="icon" type="image/png"
|
||||
href="/customize/main-favicon.png"
|
||||
data-main-favicon="/customize/main-favicon.png"
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
<script src="/bower_components/jquery/dist/jquery.min.js"></script>
|
||||
<script src="/bower_components/ckeditor/ckeditor.js"></script>
|
||||
<style>
|
||||
html, body {
|
||||
margin: 0px;
|
||||
}
|
||||
#cke_1_top {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
@@ -374,7 +374,9 @@ define([
|
||||
defaultTitle: defaultName
|
||||
}
|
||||
};
|
||||
hjson[3].metadata.title = document.title;
|
||||
if (!initializing) {
|
||||
hjson[3].metadata.title = document.title;
|
||||
}
|
||||
return stringify(hjson);
|
||||
};
|
||||
|
||||
@@ -445,6 +447,7 @@ define([
|
||||
// Extract the user list (metadata) from the hyperjson
|
||||
var hjson = JSON.parse(shjson);
|
||||
var peerMetadata = hjson[3];
|
||||
var titleUpdated = false;
|
||||
if (peerMetadata && peerMetadata.metadata) {
|
||||
if (peerMetadata.metadata.users) {
|
||||
var userData = peerMetadata.metadata.users;
|
||||
@@ -455,9 +458,13 @@ define([
|
||||
updateDefaultTitle(peerMetadata.metadata.defaultTitle);
|
||||
}
|
||||
if (typeof peerMetadata.metadata.title !== "undefined") {
|
||||
updateTitle(peerMetadata.metadata.title);
|
||||
updateTitle(peerMetadata.metadata.title || defaultName);
|
||||
titleUpdated = true;
|
||||
}
|
||||
}
|
||||
if (!titleUpdated) {
|
||||
updateTitle(defaultName);
|
||||
}
|
||||
};
|
||||
|
||||
var unnotify = function () {
|
||||
@@ -651,15 +658,6 @@ define([
|
||||
|
||||
// set the hash
|
||||
if (!readOnly) { Cryptpad.replaceHash(editHash); }
|
||||
|
||||
Cryptpad.getPadTitle(function (err, title) {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
console.log("Couldn't get pad title");
|
||||
return;
|
||||
}
|
||||
updateTitle(title || defaultName);
|
||||
});
|
||||
};
|
||||
|
||||
// this should only ever get called once, when the chain syncs
|
||||
@@ -667,6 +665,12 @@ define([
|
||||
if (!module.isMaximized) {
|
||||
editor.execCommand('maximize');
|
||||
module.isMaximized = true;
|
||||
// We have to call it 3 times in Safari
|
||||
// in order to have the editor fully maximized -_-
|
||||
if ((''+window.navigator.vendor).indexOf('Apple') !== -1) {
|
||||
editor.execCommand('maximize');
|
||||
editor.execCommand('maximize');
|
||||
}
|
||||
}
|
||||
|
||||
module.patchText = TextPatcher.create({
|
||||
@@ -788,9 +792,17 @@ define([
|
||||
|
||||
var first = function () {
|
||||
Ckeditor = ifrw.CKEDITOR;
|
||||
|
||||
if (Ckeditor) {
|
||||
//andThen(Ckeditor);
|
||||
// mobile configuration
|
||||
Ckeditor.config.toolbarCanCollapse = true;
|
||||
Ckeditor.config.height = '72vh';
|
||||
if (screen.height < 800) {
|
||||
Ckeditor.config.toolbarStartupExpanded = false;
|
||||
$('meta[name=viewport]').attr('content', 'width=device-width, initial-scale=1.0, user-scalable=no');
|
||||
} else {
|
||||
$('meta[name=viewport]').attr('content', 'width=device-width, initial-scale=1.0, user-scalable=yes');
|
||||
}
|
||||
second(Ckeditor);
|
||||
} else {
|
||||
console.log("Ckeditor was not defined. Trying again in %sms",interval);
|
||||
|
||||
@@ -491,14 +491,16 @@ define([
|
||||
var renameCb = function (err, title) {
|
||||
if (err) { return; }
|
||||
document.title = title;
|
||||
APP.proxy.info.title = title;
|
||||
APP.proxy.info.title = title === defaultName ? "" : title;
|
||||
};
|
||||
|
||||
var suggestName = function (fallback) {
|
||||
return (document.title === defaultName) ? "" : document.title;
|
||||
if (document.title === defaultName) {
|
||||
return fallback || "";
|
||||
}
|
||||
return document.title || defaultName || "";
|
||||
};
|
||||
|
||||
|
||||
var copyObject = function (obj) {
|
||||
return JSON.parse(JSON.stringify(obj));
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="cp slide">
|
||||
<head>
|
||||
<title>CryptPad</title>
|
||||
<meta content="text/html; charset=utf-8" http-equiv="content-type"/>
|
||||
<script data-main="main" src="/bower_components/requirejs/require.js"></script>
|
||||
<script>
|
||||
|
||||
@@ -216,7 +216,9 @@ define([
|
||||
defaultTitle: defaultName
|
||||
}
|
||||
};
|
||||
obj.metadata.title = APP.title;
|
||||
if (!initializing) {
|
||||
obj.metadata.title = APP.title;
|
||||
}
|
||||
if (textColor) {
|
||||
obj.metadata.color = textColor;
|
||||
}
|
||||
@@ -384,6 +386,7 @@ define([
|
||||
var updateMetadata = function(shjson) {
|
||||
// Extract the user list (metadata) from the hyperjson
|
||||
var json = (shjson === "") ? "" : JSON.parse(shjson);
|
||||
var titleUpdated = false;
|
||||
if (json && json.metadata) {
|
||||
if (json.metadata.users) {
|
||||
var userData = json.metadata.users;
|
||||
@@ -394,10 +397,14 @@ define([
|
||||
updateDefaultTitle(json.metadata.defaultTitle);
|
||||
}
|
||||
if (typeof json.metadata.title !== "undefined") {
|
||||
updateTitle(json.metadata.title);
|
||||
updateTitle(json.metadata.title || defaultName);
|
||||
titleUpdated = true;
|
||||
}
|
||||
updateColors(json.metadata.color, json.metadata.backColor);
|
||||
}
|
||||
if (!titleUpdated) {
|
||||
updateTitle(defaultName);
|
||||
}
|
||||
};
|
||||
|
||||
var renameCb = function (err, title) {
|
||||
@@ -591,15 +598,6 @@ define([
|
||||
if (!window.location.hash || window.location.hash === '#') {
|
||||
Cryptpad.replaceHash(editHash);
|
||||
}
|
||||
|
||||
Cryptpad.getPadTitle(function (err, title) {
|
||||
if (err) {
|
||||
console.log("Unable to get pad title");
|
||||
console.error(err);
|
||||
return;
|
||||
}
|
||||
updateTitle(title || defaultName);
|
||||
});
|
||||
};
|
||||
|
||||
var unnotify = module.unnotify = function () {
|
||||
|
||||
@@ -25,6 +25,11 @@
|
||||
display: none;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.register {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) {
|
||||
div.panel { width: 90%; }
|
||||
}
|
||||
@@ -49,6 +54,7 @@
|
||||
<div id="warning" data-localization="login_warning"></div>
|
||||
<input type="text" name="username" id="username" data-localization-placeholder="login_username" autofocus><br />
|
||||
<input type="password" name="password" id="password" data-localization-placeholder="login_password"><br />
|
||||
<input type="password" class="register" name="confirm" id="confirm_register" data-localization-placeholder="login_confirm"><br />
|
||||
|
||||
<button id="login" data-localization="login_login"></button>
|
||||
<input type="checkbox" name="remember" id="remember" checked="true"><label for="remember" data-localization="login_remember"></label>
|
||||
@@ -83,6 +89,6 @@
|
||||
<p><span data-localization="username_label"></span>
|
||||
<strong id="user-name" class="display"></strong></p>
|
||||
|
||||
<p>View your <a href="/file" target="_blank">file manager</a>.</p>
|
||||
<p>View your <a href="/drive" target="_blank">CryptDrive</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -23,8 +23,10 @@ define([
|
||||
// login elements
|
||||
var $loginBox = $('#login-panel');
|
||||
var $login = $('#login');
|
||||
var $login_register = $('#login_register');
|
||||
var $username = $('#username');
|
||||
var $password = $('#password');
|
||||
var $password_register = $('#confirm_register');
|
||||
var $remember = $('#remember');
|
||||
|
||||
// hashing elements
|
||||
@@ -61,7 +63,13 @@ define([
|
||||
var revealConfirm = APP.revealConfirm = revealer($confirmBox);
|
||||
|
||||
var revealLogout = APP.revealLogout= revealer($logoutBox);
|
||||
var revealUser = APP.revealUser = revealer($userBox);
|
||||
var revealUser_false = APP.revealUser_false = revealer($userBox);
|
||||
var revealUser = APP.revealUser = function (state) {
|
||||
if (!state) {
|
||||
revealUser_false(state);
|
||||
}
|
||||
document.location.href = '/drive';
|
||||
};
|
||||
|
||||
var getDisplayName = APP.getDisplayName = function (proxy) {
|
||||
return proxy['cryptpad.username'];
|
||||
@@ -186,9 +194,9 @@ define([
|
||||
};
|
||||
};
|
||||
|
||||
var handleNewUser = function (proxy, opt) {
|
||||
var handleNewUser = function (proxy, opt, force) {
|
||||
// could not find a profile for that username/password
|
||||
confirmPassword(proxy, opt.password, function () {
|
||||
var todo = function () {
|
||||
APP.confirming = false;
|
||||
APP.setAccountName((proxy.login_name = opt.name));
|
||||
APP.setDisplayName(APP.getDisplayName(proxy));
|
||||
@@ -219,17 +227,35 @@ define([
|
||||
proxy[k] = map[k];
|
||||
});
|
||||
|
||||
delete localStorage.FS_hash;
|
||||
var whenSynced = function () {
|
||||
delete localStorage.FS_hash;
|
||||
|
||||
if (!proxy[USERNAME_KEY]) {
|
||||
proxy[USERNAME_KEY] = opt.name;
|
||||
}
|
||||
if (!proxy[USERNAME_KEY]) {
|
||||
proxy[USERNAME_KEY] = opt.name;
|
||||
}
|
||||
next();
|
||||
};
|
||||
|
||||
next();
|
||||
// Make sure the migration is synced in chainpad before continuing otherwise
|
||||
// we may leave that page too early or trigger a reload in another tab before
|
||||
// the migration is complete
|
||||
var check = function () {
|
||||
if (APP.realtime.getUserDoc() === APP.realtime.getAuthDoc()) {
|
||||
whenSynced();
|
||||
return;
|
||||
}
|
||||
window.setTimeout(check, 300);
|
||||
};
|
||||
check();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
if (force) {
|
||||
todo();
|
||||
return;
|
||||
}
|
||||
confirmPassword(proxy, opt.password, todo);
|
||||
};
|
||||
|
||||
var handleUser = function (proxy, opt) {
|
||||
@@ -237,6 +263,9 @@ define([
|
||||
var now = opt.now = +(new Date());
|
||||
|
||||
if (!proxyKeys.length) {
|
||||
if (opt.register) {
|
||||
return handleNewUser(proxy, opt, true);
|
||||
}
|
||||
return handleNewUser(proxy, opt);
|
||||
}
|
||||
handleRegisteredUser(proxy, opt);
|
||||
@@ -287,7 +316,6 @@ define([
|
||||
};
|
||||
|
||||
var rt = APP.rt = Listmap.create(config);
|
||||
|
||||
rt.proxy.on('create', function (info) {
|
||||
APP.realtime = info.realtime;
|
||||
})
|
||||
@@ -310,6 +338,11 @@ define([
|
||||
|
||||
revealUser(true);
|
||||
} else {
|
||||
if (sessionStorage.register || document.location.hash.slice(1) === 'register') {
|
||||
document.location.hash = 'register';
|
||||
$login.text(Cryptpad.Messages.login_register);
|
||||
$('#login-panel .register').show();
|
||||
}
|
||||
revealLogin(true);
|
||||
}
|
||||
|
||||
@@ -318,9 +351,15 @@ define([
|
||||
$login.click(function () {
|
||||
var uname = $username.val().trim();
|
||||
var passwd = $password.val();
|
||||
var passwd_confirm = $password_register.val();
|
||||
var confirm = $confirm.val();
|
||||
var remember = $remember[0].checked;
|
||||
|
||||
var register = document.location.hash.slice(1) === 'register';
|
||||
|
||||
if (passwd !== passwd_confirm && register) {
|
||||
return void Cryptpad.alert("Passwords are not the same");
|
||||
}
|
||||
if (!Cred.isValidUsername(uname)) {
|
||||
return void Cryptpad.alert('invalid username');
|
||||
}
|
||||
@@ -341,7 +380,7 @@ define([
|
||||
window.setTimeout(function () {
|
||||
useBytes(bytes, {
|
||||
remember: remember,
|
||||
//register: register,
|
||||
register: register,
|
||||
name: uname,
|
||||
password: passwd,
|
||||
});
|
||||
@@ -350,5 +389,21 @@ define([
|
||||
}, 75);
|
||||
});
|
||||
});
|
||||
|
||||
if (sessionStorage.login) {
|
||||
$username.val(sessionStorage.login_user);
|
||||
$password.val(sessionStorage.login_pass);
|
||||
$remember.attr('checked', sessionStorage.login_rmb === "true");
|
||||
$login.click();
|
||||
}
|
||||
if (sessionStorage.register) {
|
||||
$username.val(sessionStorage.login_user);
|
||||
$password.val(sessionStorage.login_pass);
|
||||
$remember.attr('checked', sessionStorage.login_rmb === "true");
|
||||
}
|
||||
['login', 'register', 'login_user', 'login_pass', 'login_rmb'].forEach(function (k) {
|
||||
delete sessionStorage[k];
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user