diff --git a/www/code/main.js b/www/code/main.js index 71f3bfd14..ae8d783e0 100644 --- a/www/code/main.js +++ b/www/code/main.js @@ -158,9 +158,11 @@ define([ // append the userlist to the hyperjson structure obj.metadata = { - users: userList, - title: document.title + users: userList }; + if (!isDefaultTitle()) { + obj.metadata.title = document.title; + } // set mode too... obj.highlightMode = module.highlightMode; @@ -239,11 +241,15 @@ define([ return text.trim(); }; + var isDefaultTitle = function () { + var parsed = Cryptpad.parsePadUrl(window.location.href); + return Cryptpad.isDefaultName(parsed, document.title); + }; var suggestName = function () { var parsed = Cryptpad.parsePadUrl(window.location.href); var name = Cryptpad.getDefaultName(parsed, []); - if (document.title.slice(0, name.length) === name) { + if (Cryptpad.isDefaultName(parsed, document.title)) { return getHeadingText() || document.title; } else { return document.title || getHeadingText() || name; @@ -328,42 +334,42 @@ define([ onLocal(); })); $rightside.append($import); - } - /* add a rename button */ - var $setTitle = Cryptpad.createButton('rename', true) - .click(function () { - var suggestion = suggestName(); - - Cryptpad.prompt(Messages.renamePrompt, - suggestion, function (title, ev) { - if (title === null) { return; } - - Cryptpad.causesNamingConflict(title, function (err, conflicts) { - if (err) { - console.log("Unable to determine if name caused a conflict"); - console.error(err); - return; - } + /* add a rename button */ + var $setTitle = Cryptpad.createButton('rename', true) + .click(function () { + var suggestion = suggestName(); - if (conflicts) { - Cryptpad.alert(Messages.renameConflict); - return; - } + Cryptpad.prompt(Messages.renamePrompt, + suggestion, function (title, ev) { + if (title === null) { return; } - Cryptpad.setPadTitle(title, function (err, data) { + Cryptpad.causesNamingConflict(title, function (err, conflicts) { if (err) { - console.log("unable to set pad title"); - console.log(err); + console.log("Unable to determine if name caused a conflict"); + console.error(err); return; } - document.title = title; - onLocal(); + + if (conflicts) { + Cryptpad.alert(Messages.renameConflict); + return; + } + + Cryptpad.setPadTitle(title, function (err, data) { + if (err) { + console.log("unable to set pad title"); + console.log(err); + return; + } + document.title = title; + onLocal(); + }); }); }); - }); - }); - $rightside.append($setTitle); + }); + $rightside.append($setTitle); + } /* add a forget button */ var $forgetPad = Cryptpad.createButton('forget', true) @@ -657,11 +663,13 @@ define([ var hjson2 = { content: localDoc, metadata: { - users: userList, - title: document.title + users: userList }, highlightMode: highlightMode, }; + if (!isDefaultTitle()) { + hjson2.metadata.title = document.title; + } var shjson2 = stringify(hjson2); if (shjson2 !== shjson) { console.error("shjson2 !== shjson"); diff --git a/www/common/cryptpad-common.js b/www/common/cryptpad-common.js index 68fa9be7a..7387808fa 100644 --- a/www/common/cryptpad-common.js +++ b/www/common/cryptpad-common.js @@ -295,6 +295,10 @@ define([ while (!isNameAvailable(name + ' - ' + untitledIndex, parsed, recentPads)) { untitledIndex++; } return name + ' - ' + untitledIndex; }; + var isDefaultName = common.isDefaultName = function (parsed, title) { + var name = getDefaultName(parsed, []); + return title.slice(0, name.length) === name; + }; var makePad = function (href, title) { var now = ''+new Date(); diff --git a/www/pad/main.js b/www/pad/main.js index 18274079f..9fb92992e 100644 --- a/www/pad/main.js +++ b/www/pad/main.js @@ -294,6 +294,21 @@ define([ }); }; + var isDefaultTitle = function () { + var parsed = Cryptpad.parsePadUrl(window.location.href); + return Cryptpad.isDefaultName(parsed, document.title); + }; + var suggestName = function () { + var parsed = Cryptpad.parsePadUrl(window.location.href); + var name = Cryptpad.getDefaultName(parsed, []); + + if (Cryptpad.isDefaultName(parsed, document.title)) { + return getHeadingText() || document.title; + } else { + return document.title || getHeadingText() || name; + } + }; + var DD = new DiffDom(diffOptions); // apply patches, and try not to lose the cursor in the process! @@ -312,9 +327,11 @@ define([ hjson[3] = { metadata: { users: userList, - title: document.title } }; + if (!isDefaultTitle()) { + hjson[3].metadata.title = document.title; + } return stringify(hjson); }; @@ -472,17 +489,6 @@ define([ })) { return text; } }; - var suggestName = module.suggestName = function () { - var parsed = Cryptpad.parsePadUrl(window.location.href); - var name = Cryptpad.getDefaultName(parsed, []); - - if (document.title.slice(0, name.length) === name) { - return getHeadingText() || document.title; - } else { - return document.title || getHeadingText() || name; - } - }; - var exportFile = function () { var html = getHTML(); var suggestion = suggestName(); @@ -536,34 +542,34 @@ define([ realtimeOptions.onLocal(); })); $rightside.append($import); - } - /* add a rename button */ - var $rename = Cryptpad.createButton('rename', true) - .click(function () { - var suggestion = suggestName(); - - Cryptpad.prompt(Messages.renamePrompt, suggestion, function (title) { - if (title === null) { return; } - Cryptpad.causesNamingConflict(title, function (err, conflicts) { - if (conflicts) { - Cryptpad.alert(Messages.renameConflict); - return; - } - - Cryptpad.setPadTitle(title, function (err, data) { - if (err) { - console.log("Couldn't set pad title"); - console.error(err); + /* add a rename button */ + var $rename = Cryptpad.createButton('rename', true) + .click(function () { + var suggestion = suggestName(); + + Cryptpad.prompt(Messages.renamePrompt, suggestion, function (title) { + if (title === null) { return; } + Cryptpad.causesNamingConflict(title, function (err, conflicts) { + if (conflicts) { + Cryptpad.alert(Messages.renameConflict); return; } - document.title = title; - editor.fire('change'); + + Cryptpad.setPadTitle(title, function (err, data) { + if (err) { + console.log("Couldn't set pad title"); + console.error(err); + return; + } + document.title = title; + editor.fire('change'); + }); }); }); }); - }); - $rightside.append($rename); + $rightside.append($rename); + } /* add a forget button */ var $forgetPad = Cryptpad.createButton('forget', true) diff --git a/www/slide/main.js b/www/slide/main.js index c9ff8d6aa..78ca23fb3 100644 --- a/www/slide/main.js +++ b/www/slide/main.js @@ -193,10 +193,11 @@ define([ // append the userlist to the hyperjson structure obj.metadata = { - users: userList, - title: APP.title + users: userList }; - + if (!isDefaultTitle()) { + obj.metadata.title = APP.title; + } // stringify the json and send it into chainpad var shjson = stringify(obj); @@ -254,11 +255,15 @@ define([ return text.trim(); }; + var isDefaultTitle = function () { + var parsed = Cryptpad.parsePadUrl(window.location.href); + return Cryptpad.isDefaultName(parsed, APP.title); + }; var suggestName = function () { var parsed = Cryptpad.parsePadUrl(window.location.href); var name = Cryptpad.getDefaultName(parsed, []); - if (APP.title.slice(0, name.length) === name) { + if (Cryptpad.isDefaultName(parsed, APP.title)) { return getHeadingText() || APP.title; } else { return APP.title || getHeadingText() || name; @@ -343,43 +348,43 @@ define([ onLocal(); })); $rightside.append($import); - } - /* add a rename button */ - var $setTitle = Cryptpad.createButton('rename', true) - .click(function () { - var suggestion = suggestName(); - - Cryptpad.prompt(Messages.renamePrompt, - suggestion, function (title, ev) { - if (title === null) { return; } - - Cryptpad.causesNamingConflict(title, function (err, conflicts) { - if (err) { - console.log("Unable to determine if name caused a conflict"); - console.error(err); - return; - } + /* add a rename button */ + var $setTitle = Cryptpad.createButton('rename', true) + .click(function () { + var suggestion = suggestName(); - if (conflicts) { - Cryptpad.alert(Messages.renameConflict); - return; - } + Cryptpad.prompt(Messages.renamePrompt, + suggestion, function (title, ev) { + if (title === null) { return; } - Cryptpad.setPadTitle(title, function (err, data) { + Cryptpad.causesNamingConflict(title, function (err, conflicts) { if (err) { - console.log("unable to set pad title"); - console.log(err); + console.log("Unable to determine if name caused a conflict"); + console.error(err); return; } - APP.title = title; - setTabTitle(); - onLocal(); + + if (conflicts) { + Cryptpad.alert(Messages.renameConflict); + return; + } + + Cryptpad.setPadTitle(title, function (err, data) { + if (err) { + console.log("unable to set pad title"); + console.log(err); + return; + } + APP.title = title; + setTabTitle(); + onLocal(); + }); }); }); - }); - }); - $rightside.append($setTitle); + }); + $rightside.append($setTitle); + } /* add a forget button */ var $forgetPad = Cryptpad.createButton('forget', true) @@ -684,11 +689,13 @@ define([ var hjson2 = { content: localDoc, metadata: { - users: userList, - title: APP.title + users: userList }, highlightMode: highlightMode, }; + if (!isDefaultTitle()) { + hjson2.metadata.title = APP.title; + } var shjson2 = stringify(hjson2); if (shjson2 !== shjson) { console.error("shjson2 !== shjson");