diff --git a/.jshintignore b/.jshintignore
index aab1b485b..7b013e0da 100644
--- a/.jshintignore
+++ b/.jshintignore
@@ -11,6 +11,7 @@ www/common/hyperscript.js
www/common/tippy.min.js
www/pad/wysiwygarea-plugin.js
-www/pad2/wysiwygarea-plugin.js
+www/pad/mediatag-plugin.js
+www/pad/mediatag-plugin-dialog.js
www/common/media-tag-nacl.min.js
diff --git a/bower.json b/bower.json
index 24461eae7..af5560bf6 100644
--- a/bower.json
+++ b/bower.json
@@ -21,7 +21,7 @@
"jquery": "~2.1.3",
"tweetnacl": "0.12.2",
"components-font-awesome": "^4.6.3",
- "ckeditor": "~4.7",
+ "ckeditor": "4.7.3",
"codemirror": "^5.19.0",
"requirejs": "2.3.5",
"marked": "0.3.5",
diff --git a/customize.dist/ckeditor-config.js b/customize.dist/ckeditor-config.js
index aa551953e..3dc280116 100644
--- a/customize.dist/ckeditor-config.js
+++ b/customize.dist/ckeditor-config.js
@@ -10,7 +10,7 @@ CKEDITOR.editorConfig = function( config ) {
// document itself and causes problems when it's sent across the wire and reflected back
config.removePlugins= 'resize,elementspath';
config.resize_enabled= false; //bottom-bar
- config.extraPlugins= 'autolink,colorbutton,colordialog,font,indentblock,justify';
+ config.extraPlugins= 'autolink,colorbutton,colordialog,font,indentblock,justify,mediatag';
config.toolbarGroups= [
// {"name":"clipboard","groups":["clipboard","undo"]},
//{"name":"editing","groups":["find","selection"]},
diff --git a/customize.dist/messages.js b/customize.dist/messages.js
index 2f31a516e..916afe135 100644
--- a/customize.dist/messages.js
+++ b/customize.dist/messages.js
@@ -15,6 +15,7 @@ var map = {
var getStoredLanguage = function () { return localStorage.getItem(LS_LANG); };
var getBrowserLanguage = function () { return navigator.language || navigator.userLanguage; };
var getLanguage = function () {
+ if (window.cryptpadLanguage) { return window.cryptpadLanguage; }
if (getStoredLanguage()) { return getStoredLanguage(); }
var l = getBrowserLanguage() || '';
if (Object.keys(map).indexOf(l) !== -1) {
diff --git a/customize.dist/pages.js b/customize.dist/pages.js
index 6cebaec88..070788dc4 100644
--- a/customize.dist/pages.js
+++ b/customize.dist/pages.js
@@ -570,69 +570,66 @@ define([
};
var appToolbar = function () {
- return h('div#toolbar.toolbar-container');
+ return h('div#cp-toolbar.cp-toolbar-container');
};
Pages['/whiteboard/'] = Pages['/whiteboard/index.html'] = function () {
return [
appToolbar(),
- h('div#canvas-area', h('canvas#canvas', {
+ h('div#cp-app-whiteboard-canvas-area', h('canvas#cp-app-whiteboard-canvas', {
width: 600,
height: 600
})),
- h('div#controls', {
+ h('div#cp-app-whiteboard-controls', {
style: {
display: 'block',
}
}, [
- h('button#clear.btn.btn-danger', Msg.canvas_clear), ' ',
- h('button#toggleDraw.btn.btn-secondary', Msg.canvas_disable),
- h('button#delete.btn.btn-secondary', {
+ h('button#cp-app-whiteboard-clear.btn.btn-danger', Msg.canvas_clear), ' ',
+ h('button#cp-app-whiteboard-toggledraw.btn.btn-secondary', Msg.canvas_disable),
+ h('button#cp-app-whiteboard-delete.btn.btn-secondary', {
style: {
display: 'none',
}
}, Msg.canvas_delete),
- h('div.range-group', [
+ h('div.cp-app-whiteboard-range-group', [
h('label', {
- 'for': 'width'
+ 'for': 'cp-app-whiteboard-width'
}, Msg.canvas_width),
- h('input#width', {
+ h('input#cp-app-whiteboard-width', {
type: 'range',
- value: "5",
min: "1",
max: "100"
}),
- h('span#width-val', '5px')
+ h('span#cp-app-whiteboard-width-val', '5px')
]),
- h('div.range-group', [
+ h('div.cp-app-whiteboard-range-group', [
h('label', {
- 'for': 'opacity',
+ 'for': 'cp-app-whiteboard-opacity',
}, Msg.canvas_opacity),
- h('input#opacity', {
+ h('input#cp-app-whiteboard-opacity', {
type: 'range',
- value: "1",
min: "0.1",
max: "1",
step: "0.1"
}),
- h('span#opacity-val', '100%')
+ h('span#cp-app-whiteboard-opacity-val', '100%')
]),
- h('span.selected', [
+ h('span.cp-app-whiteboard-selected.cp-app-whiteboard-unselectable', [
h('img', {
title: Msg.canvas_currentBrush
})
])
]),
- setHTML(h('div#colors'), ' '),
- loadingScreen(),
- h('div#cursors', {
+ setHTML(h('div#cp-app-whiteboard-colors'), ' '),
+ h('div#cp-app-whiteboard-cursors', {
style: {
display: 'none',
background: 'white',
'text-align': 'center',
}
}),
- h('div#pickers'),
+ h('div#cp-app-whiteboard-pickers'),
];
};
@@ -683,8 +680,7 @@ define([
])
])
])
- ]),
- loadingScreen()
+ ])
];
};
diff --git a/customize.dist/src/less2/include/fileupload.less b/customize.dist/src/less2/include/fileupload.less
index bd90ab5d3..a07d365bd 100644
--- a/customize.dist/src/less2/include/fileupload.less
+++ b/customize.dist/src/less2/include/fileupload.less
@@ -28,6 +28,11 @@
td {
padding: @upload_pad_h @upload_pad_v;
}
+ .cp-fileupload-table-link {
+ .fa {
+ margin-right: 5px;
+ }
+ }
.cp-fileupload-table-progress {
width: 200px;
position: relative;
diff --git a/customize.dist/src/less2/include/font.less b/customize.dist/src/less2/include/font.less
index b1fdd0b19..33eb3dd3d 100644
--- a/customize.dist/src/less2/include/font.less
+++ b/customize.dist/src/less2/include/font.less
@@ -1,7 +1,7 @@
.font_neuropolitical () {
@font-face {
font-family: Neuropolitical;
- src: url(./customize/fonts/neuropolitical.ttf)
+ src: url(/customize/fonts/neuropolitical.ttf)
}
}
.font_open-sans () {
diff --git a/customize.dist/src/less2/include/tokenfield.less b/customize.dist/src/less2/include/tokenfield.less
index 2479e3330..da048b2fe 100644
--- a/customize.dist/src/less2/include/tokenfield.less
+++ b/customize.dist/src/less2/include/tokenfield.less
@@ -13,11 +13,12 @@
height: auto;
min-height: 34px;
padding-bottom: 0px;
- &.focus {
- border-color: #66afe9;
- outline: 0;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, 0.6);
- }
+ background-color: unset;
+ border: none;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ padding: 0 10px;
.token {
box-sizing: border-box;
border-radius: 3px;
@@ -25,8 +26,9 @@
border: 1px solid #d9d9d9;
background-color: #ededed;
white-space: nowrap;
- margin: -1px 5px 5px 0;
- vertical-align: center;
+ margin: 10px 5px;
+ height: 24px;
+ vertical-align: middle;
cursor: default;
color: #222;
@@ -50,17 +52,17 @@
overflow: hidden;
text-overflow: ellipsis;
padding-left: 4px;
- vertical-align: center;
+ vertical-align: middle;
}
.close {
font-family: Arial;
display: inline-block;
- line-height: 100%;
+ line-height: 24px;
font-size: 1.1em;
margin-left: 5px;
float: none;
height: 100%;
- vertical-align: center;
+ vertical-align: middle;
padding-right: 4px;
}
&.active {
@@ -73,11 +75,10 @@
}
.token-input {
background: none;
- width: 0%; //60px;
- min-width: 60px;
+ flex: 1;
border: 0;
padding: 0;
- margin-bottom: 6px;
+ margin: 0 !important; // Override alertify
box-shadow: none;
max-width: 100%;
&:focus {
@@ -86,9 +87,5 @@
box-shadow: none;
}
}
- &.disabled {
- cursor: not-allowed;
- background-color: #eeeeee;
- }
}
}
diff --git a/customize.dist/src/less2/include/toolbar-history.less b/customize.dist/src/less2/include/toolbar-history.less
index 1a099bb76..0388f6401 100644
--- a/customize.dist/src/less2/include/toolbar-history.less
+++ b/customize.dist/src/less2/include/toolbar-history.less
@@ -1,7 +1,7 @@
@import (once) "./colortheme.less";
.history_main () {
- body .cp-toolbar-history {
+ .cp-toolbar-history {
display: none;
text-align: center;
* {
diff --git a/customize.dist/src/less2/include/toolbar.less b/customize.dist/src/less2/include/toolbar.less
index 366d24be4..d4b6fcebf 100644
--- a/customize.dist/src/less2/include/toolbar.less
+++ b/customize.dist/src/less2/include/toolbar.less
@@ -658,6 +658,14 @@
}
}
}
+ p.cp-toolbar-account {
+ &> span {
+ font-weight: bold;
+ span {
+ font-weight: normal;
+ }
+ }
+ }
.cp-toolbar-backup {
margin: 0;
border-radius: 0;
diff --git a/customize.dist/src/less2/main.less b/customize.dist/src/less2/main.less
index 1fcd30815..b2f32baec 100644
--- a/customize.dist/src/less2/main.less
+++ b/customize.dist/src/less2/main.less
@@ -27,4 +27,6 @@ body.cp-app-code { @import "../../../code/app-code.less"; }
body.cp-app-slide { @import "../../../slide/app-slide.less"; }
body.cp-app-file { @import "../../../file/app-file.less"; }
body.cp-app-filepicker { @import "../../../filepicker/app-filepicker.less"; }
+//body.cp-app-poll { @import "../../../poll/app-poll.less"; }
+body.cp-app-whiteboard { @import "../../../whiteboard/app-whiteboard.less"; }
diff --git a/customize.dist/translations/messages.fr.js b/customize.dist/translations/messages.fr.js
index db0ebbf9f..118eb6f7b 100644
--- a/customize.dist/translations/messages.fr.js
+++ b/customize.dist/translations/messages.fr.js
@@ -157,6 +157,10 @@ define(function () {
out.filePicker_filter = "Filtrez les fichiers par leur nom";
out.or = 'ou';
+ out.tags_title = "Mots-clés du pad";
+ out.tags_add = "Modifier les mots-clés du pad";
+ out.tags_duplicate = "Mot-clé déjà présent : {0}";
+
out.slideOptionsText = "Options";
out.slideOptionsTitle = "Personnaliser la présentation";
out.slideOptionsButton = "Enregistrer (Entrée)";
@@ -204,8 +208,11 @@ define(function () {
out.history_restoreDone = "Document restauré";
out.history_version = "Version :";
- // Ckeditor links
+ // Ckeditor
out.openLinkInNewTab = "Ouvrir le lien dans un nouvel onglet";
+ out.pad_mediatagTitle = "Options du Media-Tag";
+ out.pad_mediatagWidth = "Largeur (px)";
+ out.pad_mediatagHeight = "Hauteur (px)";
// Polls
@@ -363,6 +370,8 @@ define(function () {
out.fm_error_cantPin = "Erreur interne du serveur. Veuillez recharger la page et essayer de nouveau.";
out.fm_viewListButton = "Liste";
out.fm_viewGridButton = "Grille";
+ out.fm_renamedPad = "Vous avez renommé ce pad dans votre Drive. Son titre est:
{0}";
+ out.fm_prop_tagsList = "Mots-clés";
// File - Context menu
out.fc_newfolder = "Nouveau dossier";
out.fc_rename = "Renommer";
diff --git a/customize.dist/translations/messages.js b/customize.dist/translations/messages.js
index 6a6becf5b..fc7c204d9 100644
--- a/customize.dist/translations/messages.js
+++ b/customize.dist/translations/messages.js
@@ -159,6 +159,10 @@ define(function () {
out.filePicker_filter = "Filter files by name";
out.or = 'or';
+ out.tags_title = "Tags";
+ out.tags_add = "Update this pad's tags";
+ out.tags_duplicate = "Duplicate tag: {0}";
+
out.slideOptionsText = "Options";
out.slideOptionsTitle = "Customize your slides";
out.slideOptionsButton = "Save (enter)";
@@ -206,8 +210,11 @@ define(function () {
out.history_restoreDone = "Document restored";
out.history_version = "Version:";
- // Ckeditor links
+ // Ckeditor
out.openLinkInNewTab = "Open Link in New Tab";
+ out.pad_mediatagTitle = "Media-Tag settings";
+ out.pad_mediatagWidth = "Width (px)";
+ out.pad_mediatagHeight = "Height (px)";
// Polls
@@ -364,6 +371,8 @@ define(function () {
out.fm_error_cantPin = "Internal server error. Please reload the page and try again.";
out.fm_viewListButton = "List view";
out.fm_viewGridButton = "Grid view";
+ out.fm_renamedPad = "You've set a custom name for this pad. Its shared title is:
{0}";
+ out.fm_prop_tagsList = "Tags";
// File - Context menu
out.fc_newfolder = "New folder";
out.fc_rename = "Rename";
diff --git a/www/code/app-code.less b/www/code/app-code.less
index 8772a2653..d625da0da 100644
--- a/www/code/app-code.less
+++ b/www/code/app-code.less
@@ -3,10 +3,12 @@
@import (once) "../../customize/src/less2/include/markdown.less";
@import (once) '../../customize/src/less2/include/fileupload.less';
@import (once) '../../customize/src/less2/include/alertify.less';
+@import (once) '../../customize/src/less2/include/tokenfield.less';
.toolbar_main();
.fileupload_main();
.alertify_main();
+.tokenfield_main();
// body
&.cp-app-code {
diff --git a/www/code/inner.html b/www/code/inner.html
index 485e06455..2ac5b56f8 100644
--- a/www/code/inner.html
+++ b/www/code/inner.html
@@ -2,7 +2,7 @@