WIP RPC code
This commit is contained in:
@@ -270,5 +270,10 @@ Version 2
|
||||
return '/blob/' + id.slice(0,2) + '/' + id;
|
||||
};
|
||||
|
||||
var serializeHash = Hash.serializeHash = function (hash) {
|
||||
if (hash && hash.slice(-1) !== "/") { hash += "/"; }
|
||||
return hash;
|
||||
};
|
||||
|
||||
return Hash;
|
||||
});
|
||||
|
||||
@@ -75,6 +75,8 @@ define([
|
||||
|
||||
var create = History.create = function (common, config) {
|
||||
if (!config.$toolbar) { return void console.error("config.$toolbar is undefined");}
|
||||
if (History.loading) { return void console.error("History is already being loaded..."); }
|
||||
History.loading = true;
|
||||
var $toolbar = config.$toolbar;
|
||||
var noFunc = function () {};
|
||||
var render = config.onRender || noFunc;
|
||||
@@ -112,9 +114,9 @@ define([
|
||||
var val = states[i].getContent().doc;
|
||||
c = i;
|
||||
if (typeof onUpdate === "function") { onUpdate(); }
|
||||
$hist.find('.next, .previous').show();
|
||||
if (c === states.length - 1) { $hist.find('.next').hide(); }
|
||||
if (c === 0) { $hist.find('.previous').hide(); }
|
||||
$hist.find('.next, .previous').css('visibility', '');
|
||||
if (c === states.length - 1) { $hist.find('.next').css('visibility', 'hidden'); }
|
||||
if (c === 0) { $hist.find('.previous').css('visibility', 'hidden'); }
|
||||
return val || '';
|
||||
};
|
||||
|
||||
@@ -132,15 +134,16 @@ define([
|
||||
$right.hide();
|
||||
$cke.hide();
|
||||
var $prev =$('<button>', {
|
||||
'class': 'previous fa fa-step-backward',
|
||||
'class': 'previous fa fa-step-backward btn btn-primary',
|
||||
title: Messages.history_prev
|
||||
}).appendTo($hist);
|
||||
var $nav = $('<div>', {'class': 'goto'}).appendTo($hist);
|
||||
var $next = $('<button>', {
|
||||
'class': 'next fa fa-step-forward',
|
||||
'class': 'next fa fa-step-forward btn btn-primary',
|
||||
title: Messages.history_next
|
||||
}).appendTo($hist);
|
||||
|
||||
var $nav = $('<div>', {'class': 'goto'}).appendTo($hist);
|
||||
var $label = $('<label>').text(Messages.history_version).appendTo($nav);
|
||||
var $cur = $('<input>', {
|
||||
'class' : 'gotoInput',
|
||||
'type' : 'number',
|
||||
@@ -151,19 +154,15 @@ define([
|
||||
e.stopPropagation();
|
||||
});
|
||||
var $label = $('<label>').text(' / '+ states.length).appendTo($nav);
|
||||
var $goTo = $('<button>', {
|
||||
'class': 'fa fa-check',
|
||||
'title': Messages.history_goTo
|
||||
}).appendTo($nav);
|
||||
$('<br>').appendTo($nav);
|
||||
var $rev = $('<button>', {
|
||||
'class':'revertHistory',
|
||||
title: Messages.history_restoreTitle
|
||||
}).text(Messages.history_restore).appendTo($nav);
|
||||
var $close = $('<button>', {
|
||||
'class':'closeHistory',
|
||||
title: Messages.history_closeTitle
|
||||
}).text(Messages.history_close).appendTo($nav);
|
||||
var $rev = $('<button>', {
|
||||
'class':'revertHistory btn btn-success',
|
||||
title: Messages.history_restoreTitle
|
||||
}).text(Messages.history_restore).appendTo($nav);
|
||||
|
||||
onUpdate = function () {
|
||||
$cur.attr('max', states.length);
|
||||
@@ -181,7 +180,6 @@ define([
|
||||
// Buttons actions
|
||||
$prev.click(function () { render(getPrevious()); });
|
||||
$next.click(function () { render(getNext()); });
|
||||
$goTo.click(function () { render( get($cur.val() - 1) ); });
|
||||
$cur.keydown(function (e) {
|
||||
var p = function () { e.preventDefault(); };
|
||||
if (e.which === 13) { p(); return render( get($cur.val() - 1) ); } // Enter
|
||||
@@ -192,7 +190,7 @@ define([
|
||||
if (e.which === 27) { p(); $close.click(); }
|
||||
}).focus();
|
||||
$cur.on('change', function () {
|
||||
$goTo.click();
|
||||
render( get($cur.val() - 1) );
|
||||
});
|
||||
$close.click(function () {
|
||||
states = [];
|
||||
@@ -214,6 +212,7 @@ define([
|
||||
|
||||
// Load all the history messages into a new chainpad object
|
||||
loadHistory(common, function (err, newRt) {
|
||||
History.loading = false;
|
||||
if (err) { throw new Error(err); }
|
||||
realtime = newRt;
|
||||
update();
|
||||
|
||||
@@ -82,6 +82,7 @@ define([
|
||||
common.createChannelId = Hash.createChannelId;
|
||||
common.findWeaker = Hash.findWeaker;
|
||||
common.findStronger = Hash.findStronger;
|
||||
common.serializeHash = Hash.serializeHash;
|
||||
|
||||
// History
|
||||
common.getHistory = function (config) { return History.create(common, config); };
|
||||
@@ -166,6 +167,7 @@ define([
|
||||
var login = common.login = function (hash, name, cb) {
|
||||
if (!hash) { throw new Error('expected a user hash'); }
|
||||
if (!name) { throw new Error('expected a user name'); }
|
||||
hash = common.serializeHash(hash);
|
||||
localStorage.setItem(userHashKey, hash);
|
||||
localStorage.setItem(userNameKey, name);
|
||||
if (cb) { cb(); }
|
||||
@@ -216,11 +218,12 @@ define([
|
||||
};
|
||||
|
||||
var getUserHash = common.getUserHash = function () {
|
||||
var hash;
|
||||
[sessionStorage, localStorage].some(function (s) {
|
||||
var h = s[userHashKey];
|
||||
if (h) { return (hash = h); }
|
||||
});
|
||||
var hash = localStorage[userHashKey];
|
||||
|
||||
if (hash) {
|
||||
var sHash = common.serializeHash(hash);
|
||||
if (sHash !== hash) { localStorage[userHashKey] = sHash; }
|
||||
}
|
||||
|
||||
return hash;
|
||||
};
|
||||
|
||||
@@ -731,7 +731,7 @@ define([
|
||||
parentEl[newName] = element;
|
||||
parentEl[oldName] = undefined;
|
||||
delete parentEl[oldName];
|
||||
cb();
|
||||
if (typeof cb === "function") { cb(); }
|
||||
};
|
||||
|
||||
// REPLACE
|
||||
|
||||
@@ -286,7 +286,7 @@ define([
|
||||
}
|
||||
};
|
||||
$content.on('mousedown', function (e) {
|
||||
console.log('down');
|
||||
if (e.which !== 1) { return; }
|
||||
sel.down = true;
|
||||
if (!e.ctrlKey) { removeSelected(); }
|
||||
var rect = e.currentTarget.getBoundingClientRect();
|
||||
@@ -298,7 +298,7 @@ define([
|
||||
width: '0px',
|
||||
height: '0px'
|
||||
});
|
||||
if (sel.move) { console.log('ret'); return; }
|
||||
if (sel.move) { return; }
|
||||
sel.move = function (ev) {
|
||||
var rectMove = ev.currentTarget.getBoundingClientRect(),
|
||||
offX = ev.clientX - rectMove.left,
|
||||
@@ -342,7 +342,6 @@ define([
|
||||
sel.to = undefined;
|
||||
}, (sel.refresh - diffT));
|
||||
}
|
||||
console.log('cancelled');
|
||||
return;
|
||||
}
|
||||
sel.update = +new Date();
|
||||
@@ -351,7 +350,7 @@ define([
|
||||
$content.mousemove(sel.move);
|
||||
});
|
||||
$content.on('mouseup', function (e) {
|
||||
console.log(sel.pos);
|
||||
if (e.which !== 1) { return; }
|
||||
sel.down = false;
|
||||
sel.$selectBox.hide();
|
||||
$content.off('mousemove', sel.move);
|
||||
@@ -640,6 +639,36 @@ define([
|
||||
updateContextButton();
|
||||
};
|
||||
|
||||
var displayMenu = function (e, $menu) {
|
||||
$menu.css({ display: "block" });
|
||||
var h = $menu.outerHeight();
|
||||
var w = $menu.outerWidth();
|
||||
var wH = window.innerHeight;
|
||||
var wW = window.innerWidth;
|
||||
if (e.pageY + h <= wH) {
|
||||
$menu.css({
|
||||
top: e.pageY+'px',
|
||||
bottom: ''
|
||||
});
|
||||
} else {
|
||||
$menu.css({
|
||||
bottom: '0px',
|
||||
top: ''
|
||||
});
|
||||
}
|
||||
if (e.pageX + w <= wW) {
|
||||
$menu.css({
|
||||
left: e.pageX+'px',
|
||||
right: ''
|
||||
});
|
||||
} else {
|
||||
$menu.css({
|
||||
left: '',
|
||||
right: '0px',
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Open the selected context menu on the closest "li" element
|
||||
var openContextMenu = function (e, $menu) {
|
||||
module.hideMenu();
|
||||
@@ -664,11 +693,7 @@ define([
|
||||
$a.parent('li').hide();
|
||||
});
|
||||
|
||||
$menu.css({
|
||||
display: "block",
|
||||
left: e.pageX,
|
||||
top: e.pageY
|
||||
});
|
||||
displayMenu(e, $menu);
|
||||
|
||||
if ($menu.find('li:visible').length === 0) {
|
||||
debug("No visible element in the context menu. Abort.");
|
||||
@@ -730,11 +755,7 @@ define([
|
||||
}
|
||||
});
|
||||
|
||||
$menu.css({
|
||||
display: "block",
|
||||
left: e.pageX,
|
||||
top: e.pageY
|
||||
});
|
||||
displayMenu(e, $menu);
|
||||
|
||||
if ($menu.find('li:visible').length === 0) {
|
||||
debug("No visible element in the context menu. Abort.");
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
<div class="col">
|
||||
<ul class="list-unstyled">
|
||||
<li class="title" data-localization="footer_contact"><li>
|
||||
<li><a href="http://webchat.freenode.net?channels=%23cryptpad&uio=MT1mYWxzZSY5PXRydWUmMTE9Mjg3JjE1PXRydWUe7" target="_blank" rel="noopener noreferrer">IRC</a></li>
|
||||
<li><a href="https://riot.im/app/#/room/!cryptpad:matrix.org" target="_blank" rel="noopener noreferrer">Chat</a></li>
|
||||
<li><a href="https://twitter.com/cryptpad" target="_blank" rel="noopener noreferrer">Twitter</a></li>
|
||||
<li><a href="https://github.com/xwiki-labs/cryptpad" target="_blank" rel="noopener noreferrer">GitHub</a></li>
|
||||
<li><a href="/contact.html">Email</a></li>
|
||||
|
||||
Reference in New Issue
Block a user