Fix broken elements in the new toolbar

This commit is contained in:
yflory 2016-10-25 17:29:13 +02:00
parent 6351d1856f
commit 87d86384ac
9 changed files with 129 additions and 99 deletions

View File

@ -22,9 +22,11 @@ define(['/customize/languageSelector.js',
messages = $.extend(true, {}, Default, map[language]);
}
// messages_languages return the available translations and their name in an object :
// { "en": "English", "fr": "French", ... }
messages._languages = {
'en': Default._languageName
}
};
for (var l in map) {
messages._languages[l] = map[l]._languageName || l;
}

View File

@ -152,11 +152,14 @@
a.cryptpad-logo {
cursor: pointer;
height: 3em;
border: 1px solid #aaa;
border-radius: @border-radius;
padding: 0px 5px;
text-decoration: none;
color: inherit;
&:hover {
span {
text-decoration: underline;
}
}
img {
vertical-align: middle;
height: 3em;

View File

@ -154,12 +154,13 @@
.cryptpad-toolbar-top .cryptpad-link a.cryptpad-logo {
cursor: pointer;
height: 3em;
border: 1px solid #aaa;
border-radius: 1px;
padding: 0px 5px;
text-decoration: none;
color: inherit;
}
.cryptpad-toolbar-top .cryptpad-link a.cryptpad-logo:hover span {
text-decoration: underline;
}
.cryptpad-toolbar-top .cryptpad-link a.cryptpad-logo img {
vertical-align: middle;
height: 3em;

View File

@ -53,6 +53,7 @@ define(function () {
out.renameButtonTitle = 'Changer le titre utilisé par ce document dans la page d\'accueil de Cryptpad';
out.renamePrompt = 'Quel titre souhaitez-vous utiliser pour ce document ?';
out.renameConflict = 'Un autre document existe déjà avec le même titre';
out.clickToEdit = 'Cliquer pour modifier';
out.forgetButton = 'OUBLIER';
out.forgetButtonTitle = 'Enlever ce document de la liste en page d\'accueil';

View File

@ -53,6 +53,7 @@ define(function () {
out.renameButtonTitle = 'Change the title under which this document is listed on your home page';
out.renamePrompt = 'How would you like to title this pad?';
out.renameConflict = 'Another pad already has that title';
out.clickToEdit = "Click to edit";
out.forgetButton = 'FORGET';
out.forgetButtonTitle = 'Remove this document from your home page listings';
@ -81,8 +82,8 @@ define(function () {
out.readonlyUrl = 'Read only document';
out.copyReadOnly = "Copy URL to clipboard";
out.openReadOnly = "Open in a new tab";
out.editing = "editing";
out.viewing = "viewing";
out.editing = "editor(s)";
out.viewing = "viewer(s)";
out.editShare = "Share";
out.editShareTitle = "Copy the edit URL to clipboard";
out.viewShare = "Share view URL";

View File

@ -164,30 +164,30 @@ define([
var initializing = true;
var stringifyInner = function (textValue) {
var obj = {
content: textValue,
metadata: {
users: userList,
defaultTitle: defaultName
}
};
obj.metadata.title = document.title;
// set mode too...
obj.highlightMode = module.highlightMode;
// stringify the json and send it into chainpad
return stringify(obj);
};
var onLocal = config.onLocal = function () {
if (initializing) { return; }
if (readOnly) { return; }
editor.save();
var textValue = canonicalize($textarea.val());
var obj = {content: textValue};
// append the userlist to the hyperjson structure
obj.metadata = {
users: userList
};
if (!isDefaultTitle()) {
obj.metadata.title = document.title;
}
else {
obj.metadata.title = "";
}
// set mode too...
obj.highlightMode = module.highlightMode;
// stringify the json and send it into chainpad
var shjson = stringify(obj);
var shjson = stringifyInner(textValue);
module.patchText(shjson);
@ -262,8 +262,8 @@ define([
};
var suggestName = function () {
if (Cryptpad.isDefaultName(parsedHash, document.title)) {
return getHeadingText() || defaultName;
if (document.title === defaultName) {
return getHeadingText() || "";
} else {
return document.title || getHeadingText() || defaultName;
}
@ -317,7 +317,48 @@ define([
onLocal();
};
var onInit = config.onInit = function (info) {
var updateTitle = function (newTitle) {
if (newTitle === document.title) { return; }
// Change the title now, and set it back to the old value if there is an error
var oldTitle = document.title;
document.title = newTitle;
Cryptpad.renamePad(newTitle, function (err, data) {
if (err) {
console.log("Couldn't set pad title");
console.error(err);
document.title = oldTitle;
return;
}
document.title = data;
$bar.find('.' + Toolbar.constants.title).find('span').text(data);
$bar.find('.' + Toolbar.constants.title).find('input').val(data);
});
};
var updateDefaultTitle = function (defaultTitle) {
defaultName = defaultTitle;
$bar.find('.' + Toolbar.constants.title).find('input').attr("placeholder", defaultName);
};
var updateMetadata = function(shjson) {
// Extract the user list (metadata) from the hyperjson
var json = (shjson === "") ? "" : JSON.parse(shjson);
if (json && json.metadata) {
if (json.metadata.users) {
var userData = json.metadata.users;
// Update the local user data
addToUserList(userData);
}
if (json.metadata.defaultTitle) {
updateDefaultTitle(json.metadata.defaultTitle);
}
if (typeof json.metadata.title !== "undefined") {
updateTitle(json.metadata.title);
}
}
};
var onInit = config.onInit = function (info) {
toolbarList = info.userList;
var config = {
userData: userList,
@ -325,7 +366,8 @@ define([
ifrw: ifrw,
title: {
onRename: renameCb,
defaultName: defaultName
defaultName: defaultName,
suggestName: suggestName
},
common: Cryptpad
};
@ -466,39 +508,6 @@ define([
});
};
var updateTitle = function (newTitle) {
if (newTitle === document.title) { return; }
// Change the title now, and set it back to the old value if there is an error
var oldTitle = document.title;
document.title = newTitle;
Cryptpad.renamePad(newTitle, function (err, data) {
if (err) {
console.log("Couldn't set pad title");
console.error(err);
document.title = oldTitle;
return;
}
document.title = data;
$bar.find('.' + Toolbar.constants.title).find('span').text(data);
$bar.find('.' + Toolbar.constants.title).find('input').val(data);
});
};
var updateMetadata = function(shjson) {
// Extract the user list (metadata) from the hyperjson
var json = (shjson === "") ? "" : JSON.parse(shjson);
if (json && json.metadata) {
if (json.metadata.users) {
var userData = json.metadata.users;
// Update the local user data
addToUserList(userData);
}
if (typeof json.metadata.title !== "undefined") {
updateTitle(json.metadata.title);
}
}
};
var unnotify = module.unnotify = function () {
if (module.tabNotification &&
typeof(module.tabNotification.cancel) === 'function') {
@ -645,21 +654,8 @@ define([
editor.scrollTo(scroll.left, scroll.top);
if (!readOnly) {
var localDoc = canonicalize($textarea.val());
var hjson2 = {
content: localDoc,
metadata: {
users: userList
},
highlightMode: highlightMode,
};
if (!isDefaultTitle()) {
hjson2.metadata.title = document.title;
}
else {
hjson2.metadata.title = "";
}
var shjson2 = stringify(hjson2);
var textValue = canonicalize($textarea.val());
var shjson2 = stringifyInner(textValue);
if (shjson2 !== shjson) {
console.error("shjson2 !== shjson");
TextPatcher.log(shjson, TextPatcher.diff(shjson, shjson2));

View File

@ -313,14 +313,23 @@ define([
alt: "Cryptpad",
'class': "cryptofist"
});
// We need to override the "a" tag action here because it is inside the iframe!
var $aTagSmall = $('<a>', {
href: "/",
title: Messages.header_logoTitle,
'class': "cryptpad-logo"
}).append($imgTag);
$span = $('<span>').text('CryptPad');
var $span = $('<span>').text('CryptPad');
var $aTagBig = $aTagSmall.clone().addClass('big').append($span);
$aTagSmall.addClass('small');
var onClick = function (e) {
e.preventDefault();
window.location = "/";
};
$aTagBig.click(onClick);
$aTagSmall.click(onClick);
$linkContainer.append($aTagSmall).append($aTagBig);
};
@ -360,13 +369,14 @@ define([
config = config || {};
var callback = config.onRename;
var placeholder = config.defaultName;
var suggestName = config.suggestName;
var $titleContainer = $('<span>', {
id: 'toolbarTitle',
'class': TITLE_CLS
}).appendTo($container);
var $text = $('<span>', {
title: "CLick to edit" //TODO translate
title: Messages.clickToEdit
}).appendTo($titleContainer);
if (readOnly === 1 || typeof(Cryptpad) === "undefined") { return; }
var $input = $('<input>', {
@ -383,7 +393,10 @@ define([
$input.on('keyup', function (e) {
if (e.which === 13) {
var name = $input.val().trim();
Cryptpad.renamePad($input.val(), function (err, newtitle) {
if (name === "") {
name = $input.attr('placeholder');
}
Cryptpad.renamePad(name, function (err, newtitle) {
if (err) { return; }
$text.text(newtitle);
callback(null, newtitle);
@ -398,7 +411,8 @@ define([
});
$text.on('click', function () {
$text.hide();
$input.val($text.text());
var inputVal = suggestName() || "";
$input.val(inputVal);
$input.show();
$input.focus();
});
@ -444,6 +458,7 @@ define([
if (config.ifrw.$('iframe').length) {
var innerIfrw = config.ifrw.$('iframe').each(function (i, el) {
$(el.contentWindow).on('click', removeDropdowns);
$(el.contentWindow).on('click', cancelEditTitle);
});
}
}

View File

@ -321,8 +321,8 @@ define([
};
var suggestName = function () {
if (Cryptpad.isDefaultName(parsedHash, document.title)) {
return getHeadingText() || defaultName;
if (document.title === defaultName) {
return getHeadingText() || "";
} else {
return document.title || getHeadingText() || defaultName;
}
@ -346,13 +346,10 @@ define([
hjson[3] = {
metadata: {
users: userList,
defaultTitle: defaultName
}
};
if (!isDefaultTitle()) {
hjson[3].metadata.title = document.title;
} else {
hjson[3].metadata.title = "";
}
hjson[3].metadata.title = document.title;
return stringify(hjson);
};
@ -411,6 +408,11 @@ define([
});
};
var updateDefaultTitle = function (defaultTitle) {
defaultName = defaultTitle;
$bar.find('.' + Toolbar.constants.title).find('input').attr("placeholder", defaultName);
};
var updateMetadata = function(shjson) {
// Extract the user list (metadata) from the hyperjson
var hjson = JSON.parse(shjson);
@ -421,6 +423,9 @@ define([
// Update the local user data
addToUserList(userData);
}
if (peerMetadata.metadata.defaultTitle) {
updateDefaultTitle(peerMetadata.metadata.defaultTitle);
}
if (typeof peerMetadata.metadata.title !== "undefined") {
updateTitle(peerMetadata.metadata.title);
}
@ -532,7 +537,8 @@ define([
ifrw: ifrw,
title: {
onRename: renameCb,
defaultName: defaultName
defaultName: defaultName,
suggestName: suggestName
},
common: Cryptpad
};

View File

@ -208,15 +208,11 @@ define([
var obj = {
content: textValue,
metadata: {
users: userList
users: userList,
defaultTitle: defaultName
}
};
if (!isDefaultTitle()) {
obj.metadata.title = APP.title;
}
else {
obj.metadata.title = "";
}
obj.metadata.title = APP.title;
if (textColor) {
obj.metadata.color = textColor;
}
@ -292,8 +288,8 @@ define([
};
var suggestName = function () {
if (Cryptpad.isDefaultName(parsedHash, APP.title)) {
return getHeadingText() || defaultName;
if (APP.title === defaultName) {
return getHeadingText() || "";
} else {
return APP.title || getHeadingText() || defaultName;
}
@ -376,6 +372,11 @@ define([
}
};
var updateDefaultTitle = function (defaultTitle) {
defaultName = defaultTitle;
$bar.find('.' + Toolbar.constants.title).find('input').attr("placeholder", defaultName);
};
var updateMetadata = function(shjson) {
// Extract the user list (metadata) from the hyperjson
var json = (shjson === "") ? "" : JSON.parse(shjson);
@ -385,6 +386,9 @@ define([
// Update the local user data
addToUserList(userData);
}
if (json.metadata.defaultTitle) {
updateDefaultTitle(json.metadata.defaultTitle);
}
if (typeof json.metadata.title !== "undefined") {
updateTitle(json.metadata.title);
}
@ -407,7 +411,8 @@ define([
ifrw: ifrw,
title: {
onRename: renameCb,
defaultName: defaultName
defaultName: defaultName,
suggestName: suggestName
},
common: Cryptpad
};