From 51544db9a2a2ad15a06d904e846bf423f4726ab7 Mon Sep 17 00:00:00 2001
From: Caleb James DeLisle
Date: Mon, 2 Feb 2015 16:01:33 +0100
Subject: [PATCH] Completed adding of customization system and bottom infobar
---
customize.dist/BottomBar.html | 78 ++++++++++++++++++++++++++++++
customize.dist/DecorateToolbar.js | 18 +++++--
customize.dist/fr.png | Bin
customize.dist/france.png | Bin 545 -> 0 bytes
customize.dist/index.html | 21 +++++---
customize.dist/logo-xwiki2.png | Bin 0 -> 4897 bytes
customize.dist/pad.js | 4 +-
customize.dist/sheet.js | 6 +++
server.js | 2 +-
www/common/toolbar.js | 25 +++++++++-
www/pad/index.html | 17 ++++++-
www/pad/inner.html | 12 +++++
www/pad/main.js | 19 +++++---
www/pad/realtime-wysiwyg.js | 7 +--
www/sheet/index.html | 8 +--
www/sheet/main.js | 3 +-
16 files changed, 189 insertions(+), 31 deletions(-)
create mode 100644 customize.dist/BottomBar.html
mode change 100755 => 100644 customize.dist/fr.png
delete mode 100644 customize.dist/france.png
create mode 100644 customize.dist/logo-xwiki2.png
create mode 100644 customize.dist/sheet.js
create mode 100644 www/pad/inner.html
diff --git a/customize.dist/BottomBar.html b/customize.dist/BottomBar.html
new file mode 100644
index 000000000..09028904c
--- /dev/null
+++ b/customize.dist/BottomBar.html
@@ -0,0 +1,78 @@
+
+
diff --git a/customize.dist/DecorateToolbar.js b/customize.dist/DecorateToolbar.js
index 6481966d7..547cc7eff 100644
--- a/customize.dist/DecorateToolbar.js
+++ b/customize.dist/DecorateToolbar.js
@@ -1,7 +1,17 @@
define([
'/bower_components/jquery/dist/jquery.min.js'
-], function ($) {
- var main = function ($toolbar) {
- $toolbar.append('Made With in Paris
')
- Dt.main($('.rtwysiwyg-toolbar-rightside'));
+], function () {
+ var $ = window.jQuery;
+ var main = function () {
+ $.ajax({
+ url: '/customize/BottomBar.html',
+ success: function (ret) {
+ $('iframe').height('96%');
+ $('body').append(ret);
+ }
+ });
+ };
+ return {
+ main: main
+ };
});
diff --git a/customize.dist/fr.png b/customize.dist/fr.png
old mode 100755
new mode 100644
diff --git a/customize.dist/france.png b/customize.dist/france.png
deleted file mode 100644
index 8332c4ec23c853944c29b02d7b32a88033f48a71..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 545
zcmV++0^a?JP)lgG%);U`26kn-@hOg
zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8#
zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj%
z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F
z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB
z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF
zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&Z
+
@@ -56,10 +57,18 @@
the NSA mad enough for them to use an active attack against you, Great Success Highfive, now take
the battery out of your computer before it spawns Agent Smith.
- Try it out!
-
diff --git a/customize.dist/logo-xwiki2.png b/customize.dist/logo-xwiki2.png
new file mode 100644
index 0000000000000000000000000000000000000000..047c89ea7ab146b9a07e32813859f5d31c3f2c55
GIT binary patch
literal 4897
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
TmX#pJ00000NkvXXu0mjfZvZ`K
literal 0
HcmV?d00001
diff --git a/customize.dist/pad.js b/customize.dist/pad.js
index 48d6044d5..a86e6e28f 100644
--- a/customize.dist/pad.js
+++ b/customize.dist/pad.js
@@ -1,6 +1,6 @@
require([
'/customize/DecorateToolbar.js',
'/bower_components/jquery/dist/jquery.min.js'
-], function (Dt, $) {
- Dt.main($('.rtwysiwyg-toolbar-rightside'));
+], function (Dt) {
+ Dt.main(window.$('#bottom-bar'));
});
diff --git a/customize.dist/sheet.js b/customize.dist/sheet.js
new file mode 100644
index 000000000..a86e6e28f
--- /dev/null
+++ b/customize.dist/sheet.js
@@ -0,0 +1,6 @@
+require([
+ '/customize/DecorateToolbar.js',
+ '/bower_components/jquery/dist/jquery.min.js'
+], function (Dt) {
+ Dt.main(window.$('#bottom-bar'));
+});
diff --git a/server.js b/server.js
index f3fe5cab8..ac586d936 100644
--- a/server.js
+++ b/server.js
@@ -24,7 +24,7 @@ if (!Fs.existsSync(__dirname + "/customize")) {
console.log("Cryptpad is customizable, see customize.dist/readme.md for details");
}
app.use("/customize/", Express.static(__dirname + customize));
-app.get("/", function(req, res) { res.sendfile(__dirname + customize + '/index.html'); });
+app.get("/", function(req, res) { res.sendFile(__dirname + customize + '/index.html'); });
var httpsOpts;
if (config.privKeyAndCertFiles) {
diff --git a/www/common/toolbar.js b/www/common/toolbar.js
index a471591ec..039649940 100644
--- a/www/common/toolbar.js
+++ b/www/common/toolbar.js
@@ -48,6 +48,9 @@ define([
' display: inline-block;',
' width: 100%;',
'}',
+ '.' + TOOLBAR_CLS + ' a {',
+ ' float: right;',
+ '}',
'.' + TOOLBAR_CLS + ' div {',
' padding: 0 10px;',
' height: 1.5em;',
@@ -55,6 +58,15 @@ define([
' line-height: 25px;',
' height: 22px;',
'}',
+ '.' + TOOLBAR_CLS + ' div.rtwysiwyg-back {',
+ ' padding: 0;',
+ ' font-weight: bold;',
+ ' cursor: pointer;',
+ ' color: #000;',
+ '}',
+ '.rtwysiwyg-toolbar-leftside div {',
+ ' float: left;',
+ '}',
'.rtwysiwyg-toolbar-leftside {',
' float: left;',
'}',
@@ -79,6 +91,16 @@ define([
return toolbar;
};
+ var createEscape = function ($container) {
+ var id = uid();
+ $container.append('⇐ Back
');
+ var $ret = $container.find('#'+id);
+ $ret.on('click', function () {
+ window.location.href = '/';
+ });
+ return $ret[0];
+ };
+
var createSpinner = function ($container) {
var id = uid();
$container.append('');
@@ -97,7 +119,7 @@ define([
var createUserList = function ($container) {
var id = uid();
- $container.prepend('');
+ $container.append('');
return $container.find('#'+id)[0];
};
@@ -137,6 +159,7 @@ define([
var create = function ($container, myUserName, realtime) {
var toolbar = createRealtimeToolbar($container);
+ createEscape(toolbar.find('.rtwysiwyg-toolbar-leftside'));
var userListElement = createUserList(toolbar.find('.rtwysiwyg-toolbar-leftside'));
var spinner = createSpinner(toolbar.find('.rtwysiwyg-toolbar-rightside'));
var lagElement = createLagElement(toolbar.find('.rtwysiwyg-toolbar-rightside'));
diff --git a/www/pad/index.html b/www/pad/index.html
index b5f3f1d87..685f73398 100644
--- a/www/pad/index.html
+++ b/www/pad/index.html
@@ -3,9 +3,24 @@
+
-
+
diff --git a/www/pad/inner.html b/www/pad/inner.html
new file mode 100644
index 000000000..bf79dcd0d
--- /dev/null
+++ b/www/pad/inner.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/www/pad/main.js b/www/pad/main.js
index 7ab1f8b30..4a9a17673 100644
--- a/www/pad/main.js
+++ b/www/pad/main.js
@@ -4,10 +4,11 @@ define([
'/common/messages.js',
'/common/crypto.js',
'/bower_components/jquery/dist/jquery.min.js',
- '/bower_components/ckeditor/ckeditor.js',
+ '/customize/pad.js'
], function (Config, RTWysiwyg, Messages, Crypto) {
- var Ckeditor = window.CKEDITOR;
var $ = window.jQuery;
+ var ifrw = $('#pad-iframe')[0].contentWindow;
+ var Ckeditor = ifrw.CKEDITOR;
$(function () {
$(window).on('hashchange', function() {
@@ -20,17 +21,19 @@ define([
var key = Crypto.parseKey(window.location.hash.substring(1));
var editor = Ckeditor.replace('editor1', {
removeButtons: 'Source,Maximize',
- // This plugin inserts html crap into the document which is not part of the document
- // itself and causes problems when it's sent across the wire and reflected back.
- removePlugins: 'magicline'
+ // magicline plugin inserts html crap into the document which is not part of the
+ // document itself and causes problems when it's sent across the wire and reflected back
+ removePlugins: 'magicline,resize'
});
editor.on('instanceReady', function () {
editor.execCommand('maximize');
- var ifr = window.ifr = $('iframe')[0];
- ifr.contentDocument.body.innerHTML = Messages.initialState;
+
+ // (contenteditable) iframe in an iframe
+ ifrw.$('iframe')[0].contentDocument.body.innerHTML = Messages.initialState;
var rtw =
- RTWysiwyg.start(Config.websocketURL,
+ RTWysiwyg.start(ifrw,
+ Config.websocketURL,
Crypto.rand64(8),
key.channel,
key.cryptKey);
diff --git a/www/pad/realtime-wysiwyg.js b/www/pad/realtime-wysiwyg.js
index 4553055c1..72e11cc88 100644
--- a/www/pad/realtime-wysiwyg.js
+++ b/www/pad/realtime-wysiwyg.js
@@ -247,10 +247,11 @@ window.ErrorBox = ErrorBox;
return out;
};
- var start = module.exports.start = function (websocketUrl, userName, channel, cryptKey)
+ var start = module.exports.start =
+ function (window, websocketUrl, userName, channel, cryptKey)
{
var passwd = 'y';
- var wysiwygDiv = document.getElementById('cke_1_contents');
+ var wysiwygDiv = window.document.getElementById('cke_1_contents');
var ifr = wysiwygDiv.getElementsByTagName('iframe')[0];
var doc = ifr.contentWindow.document;
var socket = makeWebsocket(websocketUrl);
@@ -303,7 +304,7 @@ console.log(new Error().stack);
{ transformFunction: Otaml.transform });
var toolbar = realtime.toolbar =
- Toolbar.create($('#cke_1_toolbox'), userName, realtime);
+ Toolbar.create(window.$('#cke_1_toolbox'), userName, realtime);
onEvent = function () {
if (isErrorState) { return; }
diff --git a/www/sheet/index.html b/www/sheet/index.html
index 9cad4f2bb..e32ca87cd 100644
--- a/www/sheet/index.html
+++ b/www/sheet/index.html
@@ -4,26 +4,26 @@
-
+