Move the code related to the title in another file
This commit is contained in:
parent
b818fd8a37
commit
63710e1ccc
@ -48,8 +48,6 @@ define([
|
|||||||
var $textarea = $pad.contents().find('#editor1');
|
var $textarea = $pad.contents().find('#editor1');
|
||||||
|
|
||||||
var $bar = $('#pad-iframe')[0].contentWindow.$('#cme_toolbox');
|
var $bar = $('#pad-iframe')[0].contentWindow.$('#cme_toolbox');
|
||||||
var parsedHash = Cryptpad.parsePadUrl(window.location.href);
|
|
||||||
var defaultName = Cryptpad.getDefaultName(parsedHash);
|
|
||||||
|
|
||||||
var isHistoryMode = false;
|
var isHistoryMode = false;
|
||||||
|
|
||||||
@ -120,6 +118,7 @@ define([
|
|||||||
editor.setOption('readOnly', !bool);
|
editor.setOption('readOnly', !bool);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var Title;
|
||||||
var UserList;
|
var UserList;
|
||||||
|
|
||||||
var config = {
|
var config = {
|
||||||
@ -144,11 +143,6 @@ define([
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* var isDefaultTitle = function () {
|
|
||||||
var parsed = Cryptpad.parsePadUrl(window.location.href);
|
|
||||||
return Cryptpad.isDefaultName(parsed, document.title);
|
|
||||||
};*/
|
|
||||||
|
|
||||||
var initializing = true;
|
var initializing = true;
|
||||||
|
|
||||||
var stringifyInner = function (textValue) {
|
var stringifyInner = function (textValue) {
|
||||||
@ -156,11 +150,11 @@ define([
|
|||||||
content: textValue,
|
content: textValue,
|
||||||
metadata: {
|
metadata: {
|
||||||
users: UserList.userData,
|
users: UserList.userData,
|
||||||
defaultTitle: defaultName
|
defaultTitle: Title.defaultTitle
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (!initializing) {
|
if (!initializing) {
|
||||||
obj.metadata.title = document.title;
|
obj.metadata.title = Title.title;
|
||||||
}
|
}
|
||||||
// set mode too...
|
// set mode too...
|
||||||
obj.highlightMode = module.highlightMode;
|
obj.highlightMode = module.highlightMode;
|
||||||
@ -226,20 +220,12 @@ define([
|
|||||||
return text.trim();
|
return text.trim();
|
||||||
};
|
};
|
||||||
|
|
||||||
var suggestName = function (fallback) {
|
|
||||||
if (document.title === defaultName) {
|
|
||||||
return getHeadingText() || fallback || "";
|
|
||||||
} else {
|
|
||||||
return document.title || getHeadingText() || defaultName;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var exportText = module.exportText = function () {
|
var exportText = module.exportText = function () {
|
||||||
var text = editor.getValue();
|
var text = editor.getValue();
|
||||||
|
|
||||||
var ext = Modes.extensionOf(module.highlightMode);
|
var ext = Modes.extensionOf(module.highlightMode);
|
||||||
|
|
||||||
var title = Cryptpad.fixFileName(suggestName('cryptpad')) + (ext || '.txt');
|
var title = Cryptpad.fixFileName(Title.suggestTitle('cryptpad')) + (ext || '.txt');
|
||||||
|
|
||||||
Cryptpad.prompt(Messages.exportPrompt, title, function (filename) {
|
Cryptpad.prompt(Messages.exportPrompt, title, function (filename) {
|
||||||
if (filename === null) { return; }
|
if (filename === null) { return; }
|
||||||
@ -276,35 +262,6 @@ define([
|
|||||||
onLocal();
|
onLocal();
|
||||||
};
|
};
|
||||||
|
|
||||||
var renameCb = function (err, title) {
|
|
||||||
if (err) { return; }
|
|
||||||
document.title = title;
|
|
||||||
onLocal();
|
|
||||||
};
|
|
||||||
|
|
||||||
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.title').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) {
|
var updateMetadata = function(shjson) {
|
||||||
// Extract the user list (metadata) from the hyperjson
|
// Extract the user list (metadata) from the hyperjson
|
||||||
var json = (shjson === "") ? "" : JSON.parse(shjson);
|
var json = (shjson === "") ? "" : JSON.parse(shjson);
|
||||||
@ -316,21 +273,27 @@ define([
|
|||||||
UserList.addToUserData(userData);
|
UserList.addToUserData(userData);
|
||||||
}
|
}
|
||||||
if (json.metadata.defaultTitle) {
|
if (json.metadata.defaultTitle) {
|
||||||
updateDefaultTitle(json.metadata.defaultTitle);
|
Title.updateDefaultTitle(json.metadata.defaultTitle);
|
||||||
}
|
}
|
||||||
if (typeof json.metadata.title !== "undefined") {
|
if (typeof json.metadata.title !== "undefined") {
|
||||||
updateTitle(json.metadata.title || defaultName);
|
Title.updateTitle(json.metadata.title || Title.defaultTitle);
|
||||||
titleUpdated = true;
|
titleUpdated = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!titleUpdated) {
|
if (!titleUpdated) {
|
||||||
updateTitle(defaultName);
|
Title.updateTitle(Title.defaultTitle);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
config.onInit = function (info) {
|
config.onInit = function (info) {
|
||||||
UserList = Cryptpad.createUserList(info, config.onLocal, Cryptget, Cryptpad);
|
UserList = Cryptpad.createUserList(info, config.onLocal, Cryptget, Cryptpad);
|
||||||
|
|
||||||
|
var titleCfg = {
|
||||||
|
$bar: $bar,
|
||||||
|
getHeadingText: getHeadingText
|
||||||
|
};
|
||||||
|
Title = Cryptpad.createTitle(titleCfg, config.onLocal, Cryptpad);
|
||||||
|
|
||||||
var configTb = {
|
var configTb = {
|
||||||
displayed: ['title', 'useradmin', 'spinner', 'lag', 'state', 'share', 'userlist', 'newpad', 'limit'],
|
displayed: ['title', 'useradmin', 'spinner', 'lag', 'state', 'share', 'userlist', 'newpad', 'limit'],
|
||||||
userList: UserList.getToolbarConfig(),
|
userList: UserList.getToolbarConfig(),
|
||||||
@ -338,11 +301,7 @@ define([
|
|||||||
secret: secret,
|
secret: secret,
|
||||||
channel: info.channel
|
channel: info.channel
|
||||||
},
|
},
|
||||||
title: {
|
title: Title.getTitleConfig(),
|
||||||
onRename: renameCb,
|
|
||||||
defaultName: defaultName,
|
|
||||||
suggestName: suggestName
|
|
||||||
},
|
|
||||||
common: Cryptpad,
|
common: Cryptpad,
|
||||||
readOnly: readOnly,
|
readOnly: readOnly,
|
||||||
ifrw: ifrw,
|
ifrw: ifrw,
|
||||||
@ -352,6 +311,8 @@ define([
|
|||||||
};
|
};
|
||||||
toolbar = module.toolbar = Toolbar.create(configTb);
|
toolbar = module.toolbar = Toolbar.create(configTb);
|
||||||
|
|
||||||
|
Title.setToolbar(toolbar);
|
||||||
|
|
||||||
var $rightside = toolbar.$rightside;
|
var $rightside = toolbar.$rightside;
|
||||||
|
|
||||||
var editHash;
|
var editHash;
|
||||||
@ -396,7 +357,7 @@ define([
|
|||||||
var templateObj = {
|
var templateObj = {
|
||||||
rt: info.realtime,
|
rt: info.realtime,
|
||||||
Crypt: Cryptget,
|
Crypt: Cryptget,
|
||||||
getTitle: function () { return document.title; }
|
getTitle: Title.getTitle
|
||||||
};
|
};
|
||||||
var $templateButton = Cryptpad.createButton('template', true, templateObj);
|
var $templateButton = Cryptpad.createButton('template', true, templateObj);
|
||||||
$rightside.append($templateButton);
|
$rightside.append($templateButton);
|
||||||
@ -410,10 +371,6 @@ define([
|
|||||||
/* add an import button */
|
/* add an import button */
|
||||||
var $import = Cryptpad.createButton('import', true, {}, importText);
|
var $import = Cryptpad.createButton('import', true, {}, importText);
|
||||||
$rightside.append($import);
|
$rightside.append($import);
|
||||||
|
|
||||||
/* add a rename button */
|
|
||||||
//var $setTitle = Cryptpad.createButton('rename', true, {suggestName: suggestName}, renameCb);
|
|
||||||
//$rightside.append($setTitle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add a forget button */
|
/* add a forget button */
|
||||||
@ -559,9 +516,8 @@ define([
|
|||||||
editor.setValue(newDoc);
|
editor.setValue(newDoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Cryptpad.initialName && document.title === defaultName) {
|
if (Cryptpad.initialName && Title.isDefaultTitle()) {
|
||||||
updateTitle(Cryptpad.initialName);
|
Title.updateTitle(Cryptpad.initialName);
|
||||||
onLocal();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Visible.isSupported()) {
|
if (Visible.isSupported()) {
|
||||||
|
|||||||
82
www/common/common-title.js
Normal file
82
www/common/common-title.js
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
define(function () {
|
||||||
|
var module = {};
|
||||||
|
|
||||||
|
module.create = function (cfg, onLocal, Cryptpad) {
|
||||||
|
var exp = {};
|
||||||
|
|
||||||
|
var parsed = exp.parsedHref = Cryptpad.parsePadUrl(window.location.href);
|
||||||
|
exp.defaultTitle = Cryptpad.getDefaultName(parsed);
|
||||||
|
|
||||||
|
exp.title = document.title; // TOOD slides
|
||||||
|
|
||||||
|
var getHeadingText = cfg.getHeadingText || function () { return; };
|
||||||
|
var updateLocalTitle = function (newTitle) {
|
||||||
|
exp.title = newTitle;
|
||||||
|
if (typeof cfg.updateLocalTitle === "function") {
|
||||||
|
cfg.updateLocalTitle(newTitle);
|
||||||
|
} else {
|
||||||
|
document.title = newTitle;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var $title;
|
||||||
|
exp.setToolbar = function (toolbar) {
|
||||||
|
$title = toolbar && toolbar.title;
|
||||||
|
}
|
||||||
|
|
||||||
|
exp.getTitle = function () { return exp.title; };
|
||||||
|
var isDefaultTitle = exp.isDefaultTitle = function (){return exp.title === exp.defaultTitle;};
|
||||||
|
|
||||||
|
var suggestTitle = exp.suggestTitle = function (fallback) {
|
||||||
|
if (isDefaultTitle()) {
|
||||||
|
return getHeadingText() || fallback || "";
|
||||||
|
} else {
|
||||||
|
return exp.title || getHeadingText() || exp.defaultTitle;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var renameCb = function (err, newTitle) {
|
||||||
|
if (err) { return; }
|
||||||
|
updateLocalTitle(newTitle);
|
||||||
|
console.log('here');
|
||||||
|
onLocal();
|
||||||
|
};
|
||||||
|
|
||||||
|
exp.updateTitle = function (newTitle) {
|
||||||
|
if (newTitle === exp.title) { return; }
|
||||||
|
// Change the title now, and set it back to the old value if there is an error
|
||||||
|
var oldTitle = exp.title;
|
||||||
|
Cryptpad.renamePad(newTitle, function (err, data) {
|
||||||
|
if (err) {
|
||||||
|
console.log("Couldn't set pad title");
|
||||||
|
console.error(err);
|
||||||
|
updateLocalTitle(oldTitle);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
updateLocalTitle(data);
|
||||||
|
if (!$title) { return; }
|
||||||
|
$title.find('span.title').text(data);
|
||||||
|
$title.find('input').val(data);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exp.updateDefaultTitle = function (newDefaultTitle) {
|
||||||
|
exp.defaultTitle = newDefaultTitle;
|
||||||
|
if (!$title) { return; }
|
||||||
|
$title.find('input').attr("placeholder", exp.defaultTitle);
|
||||||
|
};
|
||||||
|
|
||||||
|
exp.getTitleConfig = function () {
|
||||||
|
return {
|
||||||
|
onRename: renameCb,
|
||||||
|
suggestName: suggestTitle,
|
||||||
|
defaultName: exp.defaultTitle
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return exp;
|
||||||
|
};
|
||||||
|
|
||||||
|
return module;
|
||||||
|
});
|
||||||
|
|
||||||
@ -8,11 +8,12 @@ define([
|
|||||||
'/common/common-interface.js',
|
'/common/common-interface.js',
|
||||||
'/common/common-history.js',
|
'/common/common-history.js',
|
||||||
'/common/common-userlist.js',
|
'/common/common-userlist.js',
|
||||||
|
'/common/common-title.js',
|
||||||
|
|
||||||
'/common/clipboard.js',
|
'/common/clipboard.js',
|
||||||
'/common/pinpad.js',
|
'/common/pinpad.js',
|
||||||
'/customize/application_config.js'
|
'/customize/application_config.js'
|
||||||
], function ($, Config, Messages, Store, Util, Hash, UI, History, UserList, Clipboard, Pinpad, AppConfig) {
|
], function ($, Config, Messages, Store, Util, Hash, UI, History, UserList, Title, Clipboard, Pinpad, AppConfig) {
|
||||||
|
|
||||||
/* This file exposes functionality which is specific to Cryptpad, but not to
|
/* This file exposes functionality which is specific to Cryptpad, but not to
|
||||||
any particular pad type. This includes functions for committing metadata
|
any particular pad type. This includes functions for committing metadata
|
||||||
@ -88,6 +89,9 @@ define([
|
|||||||
// Userlist
|
// Userlist
|
||||||
common.createUserList = UserList.create;
|
common.createUserList = UserList.create;
|
||||||
|
|
||||||
|
// Title
|
||||||
|
common.createTitle = Title.create;
|
||||||
|
|
||||||
// History
|
// History
|
||||||
common.getHistory = function (config) { return History.create(common, config); };
|
common.getHistory = function (config) { return History.create(common, config); };
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user