Enable title in pad2
This commit is contained in:
parent
887a26b1a6
commit
fab3d67b75
94
www/common/sframe-common-title.js
Normal file
94
www/common/sframe-common-title.js
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
define(['jquery'], function ($) {
|
||||||
|
var module = {};
|
||||||
|
|
||||||
|
module.create = function (cfg, onLocal, Common, metadataMgr) {
|
||||||
|
var exp = {};
|
||||||
|
|
||||||
|
exp.defaultTitle = Common.getDefaultTitle();
|
||||||
|
|
||||||
|
exp.title = document.title; // TOOD slides
|
||||||
|
|
||||||
|
cfg = cfg || {};
|
||||||
|
|
||||||
|
var getHeadingText = cfg.getHeadingText || function () { return; };
|
||||||
|
|
||||||
|
var updateLocalTitle = function (newTitle) {
|
||||||
|
console.log(newTitle);
|
||||||
|
exp.title = newTitle;
|
||||||
|
onLocal();
|
||||||
|
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);
|
||||||
|
onLocal();
|
||||||
|
};
|
||||||
|
|
||||||
|
// update title: href is optional; if not specified, we use window.location.href
|
||||||
|
exp.updateTitle = function (newTitle, cb) {
|
||||||
|
cb = cb || $.noop;
|
||||||
|
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;
|
||||||
|
Common.setPadTitleInDrive(newTitle, function (err, data) {
|
||||||
|
if (err) {
|
||||||
|
console.log("Couldn't set pad title");
|
||||||
|
console.error(err);
|
||||||
|
updateLocalTitle(oldTitle);
|
||||||
|
return void cb(err);
|
||||||
|
}
|
||||||
|
updateLocalTitle(data);
|
||||||
|
cb(null, data);
|
||||||
|
if (!$title) { return; }
|
||||||
|
$title.find('span.title').text(data);
|
||||||
|
$title.find('input').val(data);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO not needed?
|
||||||
|
/*exp.updateDefaultTitle = function (newDefaultTitle) {
|
||||||
|
exp.defaultTitle = newDefaultTitle;
|
||||||
|
if (!$title) { return; }
|
||||||
|
$title.find('input').attr("placeholder", exp.defaultTitle);
|
||||||
|
};*/
|
||||||
|
|
||||||
|
metadataMgr.onChange(function () {
|
||||||
|
var md = metadataMgr.getMetadata();
|
||||||
|
exp.updateTitle(md.title || md.defaultTitle);
|
||||||
|
});
|
||||||
|
|
||||||
|
exp.getTitleConfig = function () {
|
||||||
|
return {
|
||||||
|
onRename: renameCb,
|
||||||
|
suggestName: suggestTitle,
|
||||||
|
defaultName: exp.defaultTitle
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
return exp;
|
||||||
|
};
|
||||||
|
|
||||||
|
return module;
|
||||||
|
});
|
||||||
|
|
||||||
@ -1,8 +1,10 @@
|
|||||||
define([
|
define([
|
||||||
'/bower_components/nthen/index.js',
|
'/bower_components/nthen/index.js',
|
||||||
'/common/sframe-chainpad-netflux-inner.js',
|
'/common/sframe-chainpad-netflux-inner.js',
|
||||||
'/common/sframe-channel.js'
|
'/common/sframe-channel.js',
|
||||||
], function (nThen, CpNfInner, SFrameChannel) {
|
'/common/sframe-common-title.js'
|
||||||
|
|
||||||
|
], function (nThen, CpNfInner, SFrameChannel, Title) {
|
||||||
|
|
||||||
// Chainpad Netflux Inner
|
// Chainpad Netflux Inner
|
||||||
var funcs = {};
|
var funcs = {};
|
||||||
@ -22,10 +24,19 @@ define([
|
|||||||
|
|
||||||
funcs.setPadTitleInDrive = function (title, cb) {
|
funcs.setPadTitleInDrive = function (title, cb) {
|
||||||
ctx.sframeChan.query('Q_SET_PAD_TITLE_IN_DRIVE', title, function (err) {
|
ctx.sframeChan.query('Q_SET_PAD_TITLE_IN_DRIVE', title, function (err) {
|
||||||
if (cb) { cb(err); }
|
if (cb) { cb(err, title); }
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Title module
|
||||||
|
funcs.createTitle = Title.create;
|
||||||
|
|
||||||
|
funcs.getDefaultTitle = function () {
|
||||||
|
if (!ctx.cpNfInner) { throw new Error("cpNfInner is not ready!"); }
|
||||||
|
return ctx.cpNfInner.metadataMgr.getMetadata().defaultTitle;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
Object.freeze(funcs);
|
Object.freeze(funcs);
|
||||||
return { create: function (cb) {
|
return { create: function (cb) {
|
||||||
nThen(function (waitFor) {
|
nThen(function (waitFor) {
|
||||||
|
|||||||
@ -5,6 +5,7 @@ define([
|
|||||||
], function ($, Config, ApiConfig) {
|
], function ($, Config, ApiConfig) {
|
||||||
var Messages = {};
|
var Messages = {};
|
||||||
var Cryptpad;
|
var Cryptpad;
|
||||||
|
var Common;
|
||||||
|
|
||||||
var Bar = {
|
var Bar = {
|
||||||
constants: {},
|
constants: {},
|
||||||
@ -567,7 +568,9 @@ define([
|
|||||||
if (name === "") {
|
if (name === "") {
|
||||||
name = $input.attr('placeholder');
|
name = $input.attr('placeholder');
|
||||||
}
|
}
|
||||||
Cryptpad.renamePad(name, null, function (err, newtitle) {
|
console.log('here');
|
||||||
|
Common.setPadTitleInDrive(name, function (err, newtitle) {
|
||||||
|
console.log('here');
|
||||||
if (err) { return console.error(err); }
|
if (err) { return console.error(err); }
|
||||||
$text.text(newtitle);
|
$text.text(newtitle);
|
||||||
callback(null, newtitle);
|
callback(null, newtitle);
|
||||||
@ -957,6 +960,7 @@ define([
|
|||||||
Bar.create = function (cfg) {
|
Bar.create = function (cfg) {
|
||||||
var config = cfg || {};
|
var config = cfg || {};
|
||||||
Cryptpad = config.common;
|
Cryptpad = config.common;
|
||||||
|
Common = config.sfCommon;
|
||||||
Messages = Cryptpad.Messages;
|
Messages = Cryptpad.Messages;
|
||||||
config.readOnly = (typeof config.readOnly !== "undefined") ? (config.readOnly ? 1 : 0) : -1;
|
config.readOnly = (typeof config.readOnly !== "undefined") ? (config.readOnly ? 1 : 0) : -1;
|
||||||
config.displayed = config.displayed || [];
|
config.displayed = config.displayed || [];
|
||||||
|
|||||||
150
www/pad2/main.js
150
www/pad2/main.js
@ -2,7 +2,6 @@ console.log('one');
|
|||||||
define([
|
define([
|
||||||
'jquery',
|
'jquery',
|
||||||
'/bower_components/chainpad-crypto/crypto.js',
|
'/bower_components/chainpad-crypto/crypto.js',
|
||||||
'/common/sframe-chainpad-netflux-inner.js',
|
|
||||||
'/bower_components/hyperjson/hyperjson.js',
|
'/bower_components/hyperjson/hyperjson.js',
|
||||||
'/common/toolbar3.js',
|
'/common/toolbar3.js',
|
||||||
'/common/cursor.js',
|
'/common/cursor.js',
|
||||||
@ -22,7 +21,7 @@ define([
|
|||||||
'css!/bower_components/components-font-awesome/css/font-awesome.min.css',
|
'css!/bower_components/components-font-awesome/css/font-awesome.min.css',
|
||||||
'less!/customize/src/less/cryptpad.less',
|
'less!/customize/src/less/cryptpad.less',
|
||||||
'less!/customize/src/less/toolbar.less'
|
'less!/customize/src/less/toolbar.less'
|
||||||
], function ($, Crypto, CpNfInner, Hyperjson,
|
], function ($, Crypto, Hyperjson,
|
||||||
Toolbar, Cursor, JsonOT, TypingTest, JSONSortify, TextPatcher, Cryptpad, Cryptget, Links, nThen, SFCommon) {
|
Toolbar, Cursor, JsonOT, TypingTest, JSONSortify, TextPatcher, Cryptpad, Cryptget, Links, nThen, SFCommon) {
|
||||||
var saveAs = window.saveAs;
|
var saveAs = window.saveAs;
|
||||||
var Messages = Cryptpad.Messages;
|
var Messages = Cryptpad.Messages;
|
||||||
@ -305,7 +304,7 @@ define([
|
|||||||
|
|
||||||
var initializing = true;
|
var initializing = true;
|
||||||
|
|
||||||
//var Title;
|
var Title;
|
||||||
//var UserList;
|
//var UserList;
|
||||||
//var Metadata;
|
//var Metadata;
|
||||||
|
|
||||||
@ -350,7 +349,7 @@ define([
|
|||||||
}
|
}
|
||||||
};*/
|
};*/
|
||||||
if (!initializing) {
|
if (!initializing) {
|
||||||
//TODO hjson[3].metadata.title = Title.title;
|
hjson[3].metadata.title = Title.title;
|
||||||
} else if (Cryptpad.initialName && !hjson[3].metadata.title) {
|
} else if (Cryptpad.initialName && !hjson[3].metadata.title) {
|
||||||
hjson[3].metadata.title = Cryptpad.initialName;
|
hjson[3].metadata.title = Cryptpad.initialName;
|
||||||
}
|
}
|
||||||
@ -470,72 +469,22 @@ define([
|
|||||||
realtimeOptions.onInit = function (info) {
|
realtimeOptions.onInit = function (info) {
|
||||||
console.log('onInit');
|
console.log('onInit');
|
||||||
var titleCfg = { getHeadingText: getHeadingText };
|
var titleCfg = { getHeadingText: getHeadingText };
|
||||||
Title = Cryptpad.createTitle(titleCfg, realtimeOptions.onLocal, Cryptpad);
|
Title = common.createTitle(titleCfg, realtimeOptions.onLocal, common, cpNfInner.metadataMgr);
|
||||||
var configTb = {
|
var configTb = {
|
||||||
displayed: ['userlist', 'useradmin'],
|
displayed: ['userlist', 'title'],
|
||||||
//title: Title.getTitleConfig(),
|
title: Title.getTitleConfig(),
|
||||||
userList: cpNfInner.metadataMgr,
|
userList: cpNfInner.metadataMgr,
|
||||||
readOnly: readOnly,
|
readOnly: readOnly,
|
||||||
ifrw: window,
|
ifrw: window,
|
||||||
realtime: info.realtime,
|
realtime: info.realtime,
|
||||||
common: Cryptpad,
|
common: Cryptpad,
|
||||||
|
sfCommon: common,
|
||||||
$container: $bar,
|
$container: $bar,
|
||||||
$contentContainer: $('#cke_1_contents'),
|
$contentContainer: $('#cke_1_contents'),
|
||||||
};
|
};
|
||||||
toolbar = info.realtime.toolbar = Toolbar.create(configTb);
|
toolbar = info.realtime.toolbar = Toolbar.create(configTb);
|
||||||
// TODO
|
|
||||||
return;
|
|
||||||
|
|
||||||
// TODO UserList not needed anymore?
|
|
||||||
// --> selectTemplate
|
|
||||||
// --> select username on first visit
|
|
||||||
//UserList = Cryptpad.createUserList(info, realtimeOptions.onLocal, Cryptget, Cryptpad);
|
|
||||||
|
|
||||||
var titleCfg = { getHeadingText: getHeadingText };
|
|
||||||
Title = Cryptpad.createTitle(titleCfg, realtimeOptions.onLocal, Cryptpad);
|
|
||||||
|
|
||||||
Metadata = Cryptpad.createMetadata(UserList, Title, null, Cryptpad);
|
|
||||||
|
|
||||||
var configTb = {
|
|
||||||
displayed: [
|
|
||||||
'title', 'useradmin', 'spinner', 'lag', 'state', 'share', 'userlist', 'newpad', 'limit', 'upgrade'],
|
|
||||||
userList: UserList.getToolbarConfig(),
|
|
||||||
share: {
|
|
||||||
secret: secret,
|
|
||||||
channel: info.channel
|
|
||||||
},
|
|
||||||
title: Title.getTitleConfig(),
|
|
||||||
common: Cryptpad,
|
|
||||||
readOnly: readOnly,
|
|
||||||
ifrw: window,
|
|
||||||
realtime: info.realtime,
|
|
||||||
network: info.network,
|
|
||||||
$container: $bar,
|
|
||||||
$contentContainer: $('#cke_1_contents'),
|
|
||||||
};
|
|
||||||
toolbar = info.realtime.toolbar = Toolbar.create(configTb);
|
|
||||||
|
|
||||||
var src = 'less!/customize/src/less/toolbar.less';
|
|
||||||
require([
|
|
||||||
src
|
|
||||||
], function () {
|
|
||||||
var $html = $bar.closest('html');
|
|
||||||
$html
|
|
||||||
.find('head style[data-original-src="' + src.replace(/less!/, '') + '"]')
|
|
||||||
.appendTo($html.find('head'));
|
|
||||||
});
|
|
||||||
|
|
||||||
Title.setToolbar(toolbar);
|
Title.setToolbar(toolbar);
|
||||||
|
|
||||||
var $rightside = toolbar.$rightside;
|
|
||||||
var $drawer = toolbar.$drawer;
|
|
||||||
|
|
||||||
var editHash;
|
|
||||||
|
|
||||||
if (!readOnly) {
|
|
||||||
editHash = Cryptpad.getEditHashFromKeys(info.channel, secret.keys);
|
|
||||||
}
|
|
||||||
|
|
||||||
$bar.find('#cke_1_toolbar_collapser').hide();
|
$bar.find('#cke_1_toolbar_collapser').hide();
|
||||||
if (!readOnly) {
|
if (!readOnly) {
|
||||||
// Expand / collapse the toolbar
|
// Expand / collapse the toolbar
|
||||||
@ -563,6 +512,89 @@ define([
|
|||||||
$rightside.append($collapse);
|
$rightside.append($collapse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
// TODO UserList not needed anymore?
|
||||||
|
// --> selectTemplate
|
||||||
|
// --> select username on first visit
|
||||||
|
//UserList = Cryptpad.createUserList(info, realtimeOptions.onLocal, Cryptget, Cryptpad);
|
||||||
|
|
||||||
|
//var titleCfg = { getHeadingText: getHeadingText };
|
||||||
|
//Title = Cryptpad.createTitle(titleCfg, realtimeOptions.onLocal, Cryptpad);
|
||||||
|
|
||||||
|
// Metadata not needed anymore?
|
||||||
|
// Title and defaultTitle handled by metadataMgr.onChange in sframe-common-title
|
||||||
|
//Metadata = Cryptpad.createMetadata(UserList, Title, null, Cryptpad);
|
||||||
|
|
||||||
|
/*var configTb = {
|
||||||
|
displayed: [
|
||||||
|
'title', 'useradmin', 'spinner', 'lag', 'state', 'share', 'userlist', 'newpad', 'limit', 'upgrade'],
|
||||||
|
userList: UserList.getToolbarConfig(),
|
||||||
|
share: {
|
||||||
|
secret: secret,
|
||||||
|
channel: info.channel
|
||||||
|
},
|
||||||
|
title: Title.getTitleConfig(),
|
||||||
|
common: Cryptpad,
|
||||||
|
readOnly: readOnly,
|
||||||
|
ifrw: window,
|
||||||
|
realtime: info.realtime,
|
||||||
|
network: info.network,
|
||||||
|
$container: $bar,
|
||||||
|
$contentContainer: $('#cke_1_contents'),
|
||||||
|
};
|
||||||
|
toolbar = info.realtime.toolbar = Toolbar.create(configTb);
|
||||||
|
*/
|
||||||
|
var src = 'less!/customize/src/less/toolbar.less';
|
||||||
|
require([
|
||||||
|
src
|
||||||
|
], function () {
|
||||||
|
var $html = $bar.closest('html');
|
||||||
|
$html
|
||||||
|
.find('head style[data-original-src="' + src.replace(/less!/, '') + '"]')
|
||||||
|
.appendTo($html.find('head'));
|
||||||
|
});
|
||||||
|
|
||||||
|
//Title.setToolbar(toolbar);
|
||||||
|
|
||||||
|
var $rightside = toolbar.$rightside;
|
||||||
|
var $drawer = toolbar.$drawer;
|
||||||
|
|
||||||
|
var editHash;
|
||||||
|
|
||||||
|
if (!readOnly) {
|
||||||
|
editHash = Cryptpad.getEditHashFromKeys(info.channel, secret.keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
//$bar.find('#cke_1_toolbar_collapser').hide();
|
||||||
|
/*if (!readOnly) {
|
||||||
|
// Expand / collapse the toolbar
|
||||||
|
var $collapse = Cryptpad.createButton(null, true);
|
||||||
|
$collapse.removeClass('fa-question');
|
||||||
|
var updateIcon = function () {
|
||||||
|
$collapse.removeClass('fa-caret-down').removeClass('fa-caret-up');
|
||||||
|
var isCollapsed = !$bar.find('.cke_toolbox_main').is(':visible');
|
||||||
|
if (isCollapsed) {
|
||||||
|
if (!initializing) { Cryptpad.feedback('HIDETOOLBAR_PAD'); }
|
||||||
|
$collapse.addClass('fa-caret-down');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!initializing) { Cryptpad.feedback('SHOWTOOLBAR_PAD'); }
|
||||||
|
$collapse.addClass('fa-caret-up');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
updateIcon();
|
||||||
|
$collapse.click(function () {
|
||||||
|
$(window).trigger('resize');
|
||||||
|
$('.cke_toolbox_main').toggle();
|
||||||
|
$(window).trigger('cryptpad-ck-toolbar');
|
||||||
|
updateIcon();
|
||||||
|
});
|
||||||
|
$rightside.append($collapse);
|
||||||
|
}*/
|
||||||
|
|
||||||
/* add a history button */
|
/* add a history button */
|
||||||
var histConfig = {
|
var histConfig = {
|
||||||
onLocal: realtimeOptions.onLocal,
|
onLocal: realtimeOptions.onLocal,
|
||||||
@ -657,7 +689,7 @@ define([
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//Title.updateTitle(Cryptpad.initialName || Title.defaultTitle);
|
Title.updateTitle(Cryptpad.initialName || Title.defaultTitle);
|
||||||
documentBody.innerHTML = Messages.initialState;
|
documentBody.innerHTML = Messages.initialState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user