cryptpad/www/common/sframe-common-title.js

69 lines
2.1 KiB
JavaScript
Raw Normal View History

2017-08-17 16:28:05 +00:00
define(['jquery'], function ($) {
var module = {};
2017-09-07 16:56:58 +00:00
module.create = function (Common, cfg) {
2017-08-17 16:28:05 +00:00
var exp = {};
var metadataMgr = Common.getMetadataMgr();
var sframeChan = Common.getSframeChannel();
var titleUpdated;
2017-08-17 16:28:05 +00:00
exp.defaultTitle = metadataMgr.getMetadata().defaultTitle;
2017-08-21 12:41:56 +00:00
exp.title = document.title;
2017-08-17 16:28:05 +00:00
cfg = cfg || {};
var getHeadingText = cfg.getHeadingText || function () { return; };
var $title;
exp.setToolbar = function (toolbar) {
$title = toolbar && toolbar.title;
};
exp.getTitle = function () { return exp.title; };
2017-08-17 16:28:05 +00:00
var isDefaultTitle = exp.isDefaultTitle = function (){return exp.title === exp.defaultTitle;};
var suggestTitle = exp.suggestTitle = function (fallback) {
if (isDefaultTitle()) {
return getHeadingText() || fallback || "";
} else {
2017-08-18 16:43:04 +00:00
var title = metadataMgr.getMetadata().title;
return title || getHeadingText() || exp.defaultTitle;
2017-08-17 16:28:05 +00:00
}
};
exp.updateTitle = function (newTitle, cb) {
cb = cb || $.noop;
if (newTitle === exp.title) { return void cb(); }
metadataMgr.updateTitle(newTitle);
titleUpdated = cb;
2017-08-17 16:28:05 +00:00
};
metadataMgr.onChange(function () {
var md = metadataMgr.getMetadata();
2017-09-04 13:09:54 +00:00
$title.find('span.cp-toolbar-title-value').text(md.title || md.defaultTitle);
2017-08-17 17:01:03 +00:00
$title.find('input').val(md.title || md.defaultTitle);
exp.title = md.title;
});
metadataMgr.onTitleChange(function (title) {
sframeChan.query('Q_SET_PAD_TITLE_IN_DRIVE', title, function (err) {
if (err) { return; }
if (titleUpdated) { titleUpdated(undefined, title); }
});
2017-08-17 16:28:05 +00:00
});
exp.getTitleConfig = function () {
return {
2017-08-17 17:01:03 +00:00
updateTitle: exp.updateTitle,
2017-08-17 16:28:05 +00:00
suggestName: suggestTitle,
defaultName: exp.defaultTitle
};
};
return exp;
};
return module;
});