This commit is contained in:
gauthiier 2021-12-02 20:44:00 +01:00
parent 20d313c8c7
commit 76b5b575fc
32 changed files with 2315 additions and 0 deletions

3
.gitignore vendored
View File

@ -1,3 +1,6 @@
# -- etherpad
etherpad-lite/
# ---> macOS # ---> macOS
*.DS_Store *.DS_Store
.AppleDouble .AppleDouble

18
Makefile Normal file
View File

@ -0,0 +1,18 @@
#makefile
all: skin docker-build
docker-settings:
cp pppad.settings.json.docker etherpad-lite/settings.json.docker
skin:
cp -r pppad-skin etherpad-lite/src/static/skins/pppad
docker-build: docker-settings
docker build --tag gauthiier/pppad etherpad-lite/
clean:
rm -Rf etherpad-lite/src/static/skins/pppad
docker image rm gauthiier/pppad

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

88
pppad-skin/index.css Normal file
View File

@ -0,0 +1,88 @@
#button,
body,
form {
border: none
}
body {
background: url(images/le-fond.png) center center no-repeat fixed #fff;
font-family: Quicksand, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
font-size: 16px;
line-height: 1.42857143;
color: #333;
display: flex;
align-items: center;
justify-content: center;
background-size: cover;
}
#wrapper {
border-top: none;
margin-top: 0;
padding: 0;
background: 0 0;
box-shadow: none
}
input {
color: #4a5d5c;
}
#inner {
background: transparent;
padding-top: 0;
width: 350px;
max-width: 350px;
text-align: center;
color:#FFF;
}
#label {
text-shadow: none;
color: #FFF;
font-weight: normal;
text-align: center;
}
#button {
margin: 0 auto;
text-align: center;
width: 100%;
text-shadow: none;
font-size: 23px;
line-height: 1.8;
color: #6c02fd;
background: #585d6a;
border-radius: 3px;
box-shadow: none;
height: 53px;
border: none;
display: block;
}
button[type=submit] {
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
left: 305px;
color: #6c02fd;
background: #585d6a;
border: none;
top: 0;
opacity: 1;
transition: .2s background;
}
#button:hover,
button[type=submit]:hover {
cursor: pointer;
background: #585d6a;
color: #6c02fd;
}
#padname {
height: 38px;
max-width: 350px;
padding: 0 12px;
position: relative;
}

7
pppad-skin/index.js Normal file
View File

@ -0,0 +1,7 @@
'use strict';
window.customStart = () => {
// define your javascript here
// jquery is available - except index.js
// you can load extra scripts with $.getScript http://api.jquery.com/jQuery.getScript/
};

70
pppad-skin/pad.css Normal file
View File

@ -0,0 +1,70 @@
@import url("src/general.css");
@import url("src/layout.css");
@import url("src/pad-editor.css");
@import url("src/components/scrollbars.css");
@import url("src/components/buttons.css");
@import url("src/components/popup.css");
@import url("src/components/chat.css");
@import url("src/components/sidediv.css");
@import url("src/components/gritter.css");
@import url("src/components/table-of-content.css");
@import url("src/components/toolbar.css");
@import url("src/components/users.css");
@import url("src/components/form.css");
@import url("src/components/import-export.css");
@import url("src/plugins/brightcolorpicker.css");
@import url("src/plugins/font_color.css");
@import url("src/plugins/tables2.css");
@import url("src/plugins/set_title_on_pad.css");
@import url("src/plugins/author_hover.css");
@import url("src/plugins/comments.css");
@import url("src/pad-variants.css");
/* -----------------------------------------------------------------
* COLORS
* If you want to change main colors, please replace following CSS variables
* -----------------------------------------------------------------
*/
:root {
--super-dark-color: #485365; /*#374256;*/
--dark-color: #576273; /*#4d5d77*/
--primary-color: #64d29b;
--middle-color: #d2d2d2; /* kind of grey, use for border for examples */
--light-color: #f2f3f4; /*#f9f9f9;*/
--super-light-color: white;
--text-color: var(--super-dark-color);
--text-soft-color: var(--dark-color);
--border-color: var(--middle-color);
--bg-soft-color: var(--light-color);
--bg-color: var(--super-light-color);
--toolbar-border: none;
--main-font-family: Quicksand, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
/* Those padding like an external padding. Basic padding of 15px is always applied */
--editor-horizontal-padding: 40px;
--editor-vertical-padding: 25px;
}
@media (max-width:1000px) {
:root {
--editor-horizontal-padding: 0px;
--editor-vertical-padding: 0px;
}
}
/* Default scrollbar values */
body {
--scrollbar-bg: var(--light-color);
--scrollbar-track: var(--super-light-color);
--scrollbar-thumb: var(--dark-color);
}

7
pppad-skin/pad.js Normal file
View File

@ -0,0 +1,7 @@
'use strict';
window.customStart = () => {
$('#pad_title').show();
$('.buttonicon').mousedown(function () { $(this).parent().addClass('pressed'); });
$('.buttonicon').mouseup(function () { $(this).parent().removeClass('pressed'); });
};

View File

@ -0,0 +1,25 @@
button, .btn
{
padding: 5px 20px;
border-radius: 4px;
line-height: 1.5;
width: auto;
border: none;
font-weight: bold;
text-transform: uppercase;
position: relative;
background: none;
cursor: pointer;
}
.btn-primary
{
background-color: #64d29b;
background-color: var(--primary-color);
color: #ffffff;
color: var(--bg-color);
}
.btn-default {
color: #485365;
color: var(--text-color);
}

View File

@ -0,0 +1,91 @@
#chatbox {
background-color: transparent !important;
color: var(--text-color);
}
.chat-content {
background: none;
padding: 0;
width: 400px;
height: 300px;
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
}
.chat-content, #chaticon {
box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), 0 8px 16px rgba(27, 39, 51, 0.08);
border: none;
}
#chaticon {
padding: 10px 20px;
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
color: #485365;
color: var(--text-color);
right: 30px;
}
#chatbox.stickyChat .chat-content {
border: none;
box-shadow: none;
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
}
#titlebar {
bottom: 0;
line-height: 44px;
height: 44px;
padding: 0 7px;
z-index: 20000;
}
#titlelabel, #chatlabel {
text-transform: uppercase;
font-weight: bold;
}
#titlebar #titlelabel { font-size: 16px; }
#chatlabel { margin-right: 15px; }
#chattext {
padding: 0;
border-top: 1px solid #ffffff;
border-top: 1px solid var(--bg-color);
border-bottom: 1px solid #ffffff;
border-bottom: 1px solid var(--bg-color);
background-color: inherit;
color: inherit;
}
#chattext p {
padding: 4px 10px;
}
#chattext:not(.authorColors) p:first-child {
padding-top: 10px;
}
#chattext:not(.authorColors) p:last-child {
padding-bottom: 10px;
}
#chatinputbox {
padding: 8px;
}
#chatinputbox #chatinput {
background-color: #ffffff;
background-color: var(--bg-color);
}
@media (prefers-reduced-motion) {
.chat-content {
transform: scale(1);
transition: none;
}
}
@media (max-width: 800px) {
#chaticon {
right: 0;
}
.stick-to-screen-btn { display: none; }
}

View File

@ -0,0 +1,117 @@
input[type="text"], select, textarea, .nice-select {
border-radius: 3px;
box-shadow: none;
border: none;
outline: 0;
}
input[type="text"], textarea {
padding: 8px 10px;
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
border: none;
color: #485365;
color: var(--text-color);
}
input[type="text"]::placeholder, textarea::placeholder {
color: #576273;
color: var(--text-soft-color);
}
select, .nice-select {
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
border: 1px solid var(--bg-soft-color);
padding: 4px 10px;
padding-right: 25px;
font-weight: bold;
line-height: inherit;
}
select:hover, .nice-select:hover {
border-color: var(--bg-soft-color)
}
.nice-select .list {
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
}
.nice-select .option:hover,.nice-select .option.focus,.nice-select .option.selected.focus {
background-color: #ffffff;
background-color: var(--bg-color);
}
.nice-select .option {
padding: 0 15px;
}
.popup .nice-select .list {
right: 0;
left: auto;
}
/* Checkboxes
========================================================================== */
/* Remove default checkbox */
[type="checkbox"]:not(:checked),
[type="checkbox"]:checked {
position: absolute;
opacity: 0;
pointer-events: none;
}
[type="checkbox"] + label {
position: relative;
padding-left: 2.5rem;
cursor: pointer;
display: inline-block;
height: 1.4rem;
line-height: 1.4rem;
font-size: 1rem;
}
[type="checkbox"] + label:before,
[type="checkbox"] + label:after {
content: '';
position: absolute;
margin-top: 4px;
transition: all .2s ease-in-out;
}
/* BEFORE, the container*/
[type="checkbox"] + label:before {
width: 24px;
height: 14px;
top: 0;
left: 0;
border-radius: 6px;
border: 2px solid #576273;
border: 2px solid var(--text-soft-color);
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
opacity: .7;
}
[type="checkbox"]:checked + label:before {
background-color: transparent;
border-color: #64d29b;
border-color: var(--primary-color);
}
/* AFTER, the circle moving */
[type="checkbox"] + label:after {
width: 16px;
height: 16px;
border-radius: 50%;
background-color: #576273;
background-color: var(--text-soft-color);
top: -1px;
left: -3px;
}
[type="checkbox"]:checked + label:after {
background-color: #64d29b;
background-color: var(--primary-color);
transform: translateX(14px);
}
[type="checkbox"]:checked:disabled + label,
[type="checkbox"]:checked:disabled + label:before,
[type="checkbox"]:checked:disabled + label:after {
cursor: not-allowed;
opacity: .4;
}

View File

@ -0,0 +1,82 @@
.gritter-item:not(.error) .popup-content{
background-color: #64d29b;
background-color: var(--primary-color);
color: #ffffff;
color: var(--super-light-color);
}
.gritter-item .popup-content {
padding: 15px;
box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), 0 8px 16px rgba(27, 39, 51, 0.08);
}
#gritter-container.bottom .gritter-item .popup-content {
margin-top: 10px;
}
#gritter-container.top .gritter-item .popup-content {
margin-bottom: 10px;
}
.gritter-item p {
margin: 0 !important;
}
.gritter-item .gritter-title {
margin-bottom: 10px;
}
.gritter-item .gritter-close {
margin-left: 15px;
margin-right: 0px;
}
.gritter-item:not(.error) .gritter-close .buttonicon {
color: #ffffff;
color: var(--super-light-color);
}
/* CHAT GRIITER ITEM */
.gritter-item.chat-gritter-msg:not(.error) .popup-content {
background-color: white;
background-color: var(--bg-color);
color: #485365;
color: var(--text-color);
}
.gritter-item.chat-gritter-msg .gritter-content {
text-align: left;
}
.gritter-item.chat-gritter-msg .author-name {
font-weight: bold;
margin-right: 5px;
}
.gritter-item.chat-gritter-msg:not(.error) .gritter-close .buttonicon {
color: #485365;
color: var(--text-color);
}
.gritter-item.saved-revision {
max-width: 600px;
}
#gritter-container.top .gritter-item.popup > .popup-content {
transform: scale(0.8) translateY(-100px);
}
#gritter-container.bottom .gritter-item.popup > .popup-content {
transform: scale(0.8) translateY(0px);
}
.gritter-item.popup.popup-show > .popup-content {
transform: scale(1) translateY(0) !important;
transition: all 0.4s cubic-bezier(0.74, -0.05, 0.27, 1.75) !important;
}
@media (prefers-reduced-motion) {
#gritter-container.top .gritter-item.popup > .popup-content {
transform: scale(1) translateY(0px) !important;
}
#gritter-container.bottom .gritter-item.popup > .popup-content {
transform: scale(1) translateY(0px) !important;
}
.gritter-item.popup.popup-show > .popup-content {
transform: scale(1) translateY(0px) !important;
transition: none;
}
}
/* for ep_deleted_after_delay */
.gritter-item #close_expiration_notif {
display: none;
}

View File

@ -0,0 +1,17 @@
#importmessageabiword {
font-style: italic;
color: #64d29b;
color: var(--primary-color);
}
#importmessageabiword > a {
font-weight: bold;
text-decoration: underline;
color: #64d29b;
color: var(--primary-color);
}
#importmessagefail {
margin-top: 10px;
}
#importsubmitinput[disabled] { opacity: .6; }

View File

@ -0,0 +1,83 @@
.popup-content {
border-radius: 5px;
padding: 25px;
background: none;
background-color: #ffffff;
background-color: var(--bg-color);
color: #576273;
color: var(--text-soft-color);
border: none;
box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), 0 8px 16px rgba(27, 39, 51, 0.08);
}
#mycolorpicker, #users {
min-width: 0;
}
.popup h1 {
margin-bottom: 20px;
font-size: 1.6rem;
}
.popup h2 {
margin-bottom: 15px;
margin-top: 20px;
color: #485365;
color: var(--text-color);
}
.popup:not(.comment-modal) p {
margin: 10px 0;
}
.popup .dropdowns-container .dropdown-line {
margin-top: 15px;
}
.popup .dropdowns-container label {
width: 120px;
display: inline-block;
}
.popup .dropdowns-container .nice-select {
min-width: 180px;
}
@media (prefers-reduced-motion) {
.popup>.popup-content {
transform: scale(1);
transition: none;
}
.nice-select .list {
transform: scale(1) translateY(0px);
-webkit-transform: scale(1) translateY(0px);
-ms-transform: scale(1) translateY(0px);
transition: none;
}
}
@media (max-width: 800px) {
.popup-content {
padding: 1rem;
box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), -1px 1px 16px 3px rgba(27, 39, 51, 0.12);
}
.popup .dropdowns-container select {
min-width: 0;
}
}
/* SKIN Variants Popup */
#skin-variants {
bottom: 0;
left: 0;
right: auto;
top: auto;
}
#skin-variants .popup-content > p {
margin-top: 25px;
}
#skin-variants-result{
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
}
.skin-variant-container {
text-transform: capitalize;
}

View File

@ -0,0 +1,41 @@
@media (min-width: 721px) {
::-webkit-scrollbar-track {
background-color: white;
background-color: var(--scrollbar-track);
border-radius: 10px;
border: 7px solid #f2f3f4;
border: 7px solid var(--scrollbar-bg);
}
::-webkit-scrollbar {
width: 22px;
}
::-webkit-scrollbar-thumb {
min-height: 40px;
border-radius: 10px;
background-color: #576273;
background-color: var(--scrollbar-thumb);
border: 7px solid #f2f3f4;
border: 7px solid var(--scrollbar-bg);
}
}
.thin-scrollbar::-webkit-scrollbar-track {
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
border-radius: 0px;
border: none;
}
.thin-scrollbar::-webkit-scrollbar {
width: 6px;
}
.thin-scrollbar::-webkit-scrollbar-thumb {
border-radius: 0px;
min-height: 40px;
background-color: #d2d2d2;
background-color: var(--middle-color);
border: none;
}

View File

@ -0,0 +1,31 @@
#sidediv {
background-color: transparent;
border: none;
opacity: .8;
}
#sidedivinner>div:before {
font-family: var(--main-font-family); /* the parent div have font-family monospace (line number) */
color: #485365;
color: var(--text-color);
font-weight: bold;
}
#sidedivinner>div .line-number {
line-height: inherit;
font-family: RobotoMono;
display: inline-block;
color: #576273;
color: var(--text-soft-color);
height:100%;
}
#sidedivinner>div .line-number:hover {
background-color: var(--bg-soft-color);
border-radius: 5px 0 0 5px;
font-weight: bold;
color: var(--text-color);
}
.plugin-ep_author_neat #sidedivinner>div .line-number:hover {
background-color: transparent;
}

View File

@ -0,0 +1,21 @@
#toc {
padding: 20px 20px 10px 10px !important;
min-width: 146px !important;
background-color: transparent !important;
border: none !important;
order: -2;
}
#tocItems {
line-height: 40px !important;
}
.plugin-ep_resizable_bars #toc {
min-width: 186px !important;
}
@media (max-width: 1200px) {
#toc {
padding-top: 10px !important
}
}

View File

@ -0,0 +1,154 @@
.toolbar {
border-bottom: none;
padding: 0;
background-color: #ffffff;
background-color: var(--bg-color);
color: #576273;
color: var(--text-soft-color);
border-bottom: none;
}
#editbar.editor-scrolled {
border-bottom: 1px solid #d2d2d2;
border-bottom: var(--toolbar-border);
}
.toolbar ul {
align-items: center;
}
.toolbar ul.menu_left {
padding-left: 5px;
}
.toolbar ul li {
margin: 7px 1px;
}
.toolbar ul li a, .toolbar .buttonicon {
color: inherit;
}
.toolbar .buttonicon {
background-color: transparent;
font-size: 15px;
}
.buttonicon-insertorderedlist:before,
.buttonicon-insertunorderedlist:before,
.buttonicon-indent:before,
.buttonicon-outdent:before {
font-size: 16px !important;
}
.toolbar ul li.separator {
visibility: hidden;
width: 1px;
margin: 0 10px;
position: relative;
}
.toolbar.condensed ul li {
margin-left: 0;
}
.toolbar.condensed ul li.separator {
margin: 0 5px;
}
.toolbar ul li a {
background-color: transparent;
background: none;
border: none;
border-radius: 3px !important;
transition: background-color .1s;
}
.toolbar ul li a:hover, .toolbar ul li select:hover {
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
color: #485365;
color: var(--text-color);
}
.toolbar ul li a.selected {
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
}
.toolbar ul li a.pressed,
.toolbar ul li select:active {
color: #64d29b;
color: var(--primary-color);
}
.toolbar ul li select:active option {
background-color: #ffffff;
background-color: var(--bg-color);
color: #576273;
color: var(--text-soft-color);
padding: 5px;
}
.toolbar .menu_right li a.selected {
background-color: #576273;
background-color: var(--text-soft-color);
color: #ffffff;
color: var(--bg-color);
}
.toolbar ul li[data-key=showusers] {
margin: 0;
margin-left: 15px;
width: 45px;
height: 100%;
}
.toolbar ul li[data-key=showusers] > a {
width: 100%;
height: 100%;
border-radius: 0 !important;
}
.toolbar .menu_right .separator {
display: none;
}
.toolbar .menu_right li {
margin-left: 10px;
}
.toolbar.cropped .menu_left {
height: 39px;
padding-top: 1px;
}
.toolbar .show-more-icon-btn {
font-size: 1.8rem;
color: #64d29b;
color: var(--primary-color);
}
@media (max-width: 1000px) {
.toolbar ul li.separator {
margin: 0 5px;
background: none;
display: block;
}
}
.mobile-layout .toolbar ul li {
margin: 5px 2px;
}
.mobile-layout .toolbar ul li.separator {
margin: 0 5px;
}
@media (max-width: 800px) {
.mobile-layout .toolbar ul li.separator {
display: none;
}
}
.mobile-layout .toolbar .menu_right {
border-top: 1px solid #d2d2d2;
border-top: var(--toolbar-border);
background-color: #ffffff;
background-color: var(--bg-color);
padding: 0;
}
.mobile-layout .toolbar ul li a:hover {
/* background-color: transparent; */
}

View File

@ -0,0 +1,52 @@
table#otheruserstable {
margin-top: 20px;
}
.popup#users.chatAndUsers > .popup-content {
padding: 20px 10px;
height: 250px;
border-left: none;
transition: none;
border-bottom-color: #d2d2d2;
border-bottom-color: var(--border-color);
}
.popup#users.chatAndUsers #mycolorpicker.popup {
right: calc(100% + 30px);
top: 15px;
}
#otheruserstable .swatch {
border: none !important;
border-radius: 50%;
width: 18px;
height: 18px;
margin: 0;
margin-left: 1px;
margin-right: 15px;
}
#myusernameform {
margin-left: 35px;
}
input#myusernameedit {
min-width: 110px;
border: none !important;
background-color: transparent !important;
border-bottom: 1px solid #d2d2d2 !important;
border-bottom: 1px solid var(--border-color) !important;
border-radius: 0;
padding-bottom: 5px;
}
#myswatch {
border-radius: 50%;
}
#colorpicker {
margin-bottom: 25px;
}
#mycolorpickerpreview {
border-radius: 50%;
}

View File

@ -0,0 +1,11 @@
body {
color: #485365;
color: var(--text-color);
font-family: Quicksand, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
font-family: var(--main-font-family);
}
h1 {
color: #64d29b;
color: var(--primary-color);
}

48
pppad-skin/src/layout.css Normal file
View File

@ -0,0 +1,48 @@
#outerdocbody {
margin: 0 auto;
padding-top: 20px;
width: 100%;
}
#editorcontainerbox {
background-color: #f2f3f4;
background-color: var(--bg-color);
color: var(--text-color);
}
#editorcontainerbox .sticky-container {
width: 250px;
}
#outerdocbody iframe, #outerdocbody > #innerdocbody {
max-width: 900px;
padding: 40px 55px;
padding-left: var(--editor-horizontal-padding);
padding-right: var(--editor-horizontal-padding);
padding-top: var(--editor-vertical-padding);
padding-bottom: var(--editor-vertical-padding);
box-shadow: none;
border: 0;
border-radius: 8px 8px 0 0;
background-color: #ffffff;
background-color: var(--bg-color);
color: #485365;
color: var(--text-color);
}
#sidediv {
/* Padding must be the same than editor, otherwise it creates problem */
padding-top: 40px; /* = #innerdocbody iframe vertical padding */
padding-bottom: 40px;
padding-top: calc(var(--editor-vertical-padding) + 15px);
padding-bottom: calc(var(--editor-vertical-padding) + 15px);
}
@media (max-width:1000px) {
#outerdocbody {
padding-top: 0;
}
#outerdocbody iframe, #outerdocbody > #innerdocbody {
max-width: none;
border-radius: 0;
}
}

View File

@ -0,0 +1,5 @@
#innerdocbody {
background: transparent;
color: #485365;
color: var(--text-color);
}

View File

@ -0,0 +1,228 @@
/* =========================== */
/* === Super Light Toolbar === */
/* =========================== */
.super-light-toolbar .toolbar, .super-light-toolbar .popup-content, .super-light-toolbar #pad_title {
--text-color: var(--super-dark-color);
--text-soft-color: var(--dark-color);
--border-color: #e4e6e9;
--bg-soft-color: var(--light-color);
--bg-color: var(--super-light-color);
}
/* ===================== */
/* === Light Toolbar === */
/* ===================== */
.light-toolbar .toolbar, .light-toolbar .popup-content, .light-toolbar #pad_title {
--text-color: var(--super-dark-color);
--text-soft-color: var(--dark-color);
--border-color: var(--middle-color);
--bg-soft-color: var(--super-light-color);
--bg-color: var(--light-color);
}
/* ========================== */
/* === Super Dark Toolbar === */
/* ========================== */
.super-dark-toolbar .toolbar, .super-dark-toolbar .popup-content, .super-dark-toolbar #pad_title {
--text-color: var(--super-light-color);
--text-soft-color: var(--light-color);
--border-color: var(--dark-color);
--bg-soft-color: var(--dark-color);
--bg-color: var(--super-dark-color);
}
.super-dark-toolbar.super-dark-editor .popup-content {
border: 1px solid var(--dark-color);
box-shadow: none;
}
/* ==================== */
/* === Dark Toolbar === */
/* ==================== */
.dark-toolbar .toolbar, .dark-toolbar .popup-content, .dark-toolbar #pad_title {
--text-color: var(--super-light-color);
--text-soft-color: var(--light-color);
--border-color: var(--super-dark-color);
--bg-soft-color: var(--super-dark-color);
--bg-color: var(--dark-color);
}
/* ============================ */
/* == Super Light Background == */
/* ============================ */
.super-light-background #editorcontainerbox, .super-light-background #sidediv,
.super-light-background #chatbox, .super-light-background #outerdocbody, .super-light-background {
--text-color: var(--super-dark-color);
--text-soft-color: var(--dark-color);
--border-color: #e4e6e9;
--bg-soft-color: var(--light-color);
--bg-color: var(--super-light-color);
}
.super-light-background body, .full-width-editor.super-light-editor body:not(.comments-active) {
--scrollbar-bg: var(--super-light-color);
--scrollbar-track: var(--light-color);
--scrollbar-thumb: var(--dark-color);
}
.super-light-background .compact-display-content {
background-color: var(--super-light-color);
}
/* ====================== */
/* == Light Background == */
/* ====================== */
.light-background #editorcontainerbox, .light-background #sidediv,
.light-background #chatbox, .light-background #outerdocbody, .light-background {
--text-color: var(--super-dark-color);
--text-soft-color: var(--dark-color);
--border-color: var(--middle-color);
--bg-soft-color: var(--super-light-color);
--bg-color: var(--light-color);
}
.light-background body, .full-width-editor.light-editor body:not(.comments-active) {
--scrollbar-bg: var(--light-color);
--scrollbar-track: var(--super-light-color);
--scrollbar-thumb: var(--dark-color);
}
.light-background .compact-display-content {
background-color: var(--light-color);
}
/* =========================== */
/* == Super Dark Background == */
/* =========================== */
.super-dark-background #editorcontainerbox, .super-dark-background #sidediv,
.super-dark-background #chatbox, .super-dark-background #outerdocbody, .super-dark-background {
--text-color: var(--super-light-color);
--text-soft-color: var(--light-color);
--border-color: var(--dark-color);
--bg-soft-color: var(--dark-color);
--bg-color: var(--super-dark-color);
}
.super-dark-background body, .full-width-editor.super-dark-editor body:not(.comments-active) {
--scrollbar-bg: var(--super-dark-color);
--scrollbar-track: var(--dark-color);
--scrollbar-thumb: var(--light-color);
}
.super-dark-background .compact-display-content {
background-color: var(--super-dark-color);
}
/* Special combinaison with toolbar */
.super-dark-background.super-dark-toolbar .popup-content {
border: 1px solid var(--dark-color);
box-shadow: none;
}
/* ===================== */
/* == Dark Background == */
/* ===================== */
.dark-background #editorcontainerbox, .dark-background #sidediv,
.dark-background #chatbox, .dark-background #outerdocbody, .dark-background {
--text-color: var(--super-light-color);
--text-soft-color: var(--light-color);
--border-color: var(--super-dark-color);
--bg-soft-color: var(--super-dark-color);
--bg-color: var(--dark-color);
}
.dark-background body, .full-width-editor.dark-editor body:not(.comments-active) {
--scrollbar-bg: var(--dark-color);
--scrollbar-track: var(--super-dark-color);
--scrollbar-thumb: var(--light-color);
}
.dark-background .compact-display-content {
background-color: var(--dark-color);
}
/* Special combinaison with toolbar */
.dark-background.dark-toolbar .popup-content, .dark-editor.dark-toolbar .popup-content {
box-shadow: 0 0 14px 0px var(--super-dark-color);
}
/* ======================== */
/* == Super Light Editor == */
/* ======================== */
.super-light-editor #outerdocbody iframe, .super-light-editor #outerdocbody > #innerdocbody {
--bg-color: var(--super-light-color);
}
.super-light-editor #innerdocbody {
--text-color: var(--super-dark-color);
}
/* ================== */
/* == Light Editor == */
/* ================== */
.light-editor #outerdocbody iframe, .light-editor #outerdocbody > #innerdocbody {
--bg-color: var(--light-color);
}
.light-editor #innerdocbody {
--text-color: var(--super-dark-color);
}
/* ======================= */
/* == Super Dark Editor == */
/* ======================= */
.super-dark-editor #outerdocbody iframe, .super-dark-editor #outerdocbody > #innerdocbody {
--bg-color: var(--super-dark-color);
}
.super-dark-editor #innerdocbody {
--text-color: var(--super-light-color);
}
/* ================= */
/* == Dark Editor == */
/* ================= */
.dark-editor #outerdocbody iframe, .dark-editor #outerdocbody > #innerdocbody {
--bg-color: var(--dark-color);
}
.dark-editor #innerdocbody {
--text-color: var(--super-light-color);
}
/* ======================================== */
/* == Combinaison with background/editor == */
/* ======================================== */
.super-light-editor.super-light-background #outerdocbody,
.light-editor.light-background #outerdocbody,
.super-dark-editor.super-dark-background #outerdocbody,
.dark-editor.dark-background #outerdocbody {
padding-top: 0;
}
@media (min-width: 1001px) {
.super-light-editor.super-light-background,
.light-editor.light-background,
.super-dark-editor.super-dark-background,
.dark-editor.dark-background {
--editor-horizontal-padding: 20px;
--editor-vertical-padding: 5px;
}
}
/* ===================================== */
/* == Combinaison with toolbar/editor == */
/* ===================================== */
.super-light-editor.super-light-toolbar .toolbar,
.light-editor.light-toolbar .toolbar,
.super-dark-editor.super-dark-toolbar .toolbar,
.dark-editor.dark-toolbar .toolbar {
--toolbar-border: 1px solid var(--border-color);
}
/* ======================= */
/* == Full Width Editor == */
/* ======================= */
.full-width-editor #outerdocbody iframe, .full-width-editor #outerdocbody > #innerdocbody {
max-width: none !important;
border-radius: 0;
}
.full-width-editor #outerdocbody {
padding: 0;
margin: 0;
}
@media (min-width: 1001px) {
.full-width-editor {
--editor-horizontal-padding: 20px !important;
--editor-vertical-padding: 5px !important;
}
}
.full-width-editor ::-webkit-scrollbar-track,
.full-width-editor ::-webkit-scrollbar-thumb {
border-radius: 0px;
}

View File

@ -0,0 +1,10 @@
.authortooltip {
opacity: 1!important;
border-radius: 2px;
padding: 4px 10px 3px!important;
text-transform: uppercase;
font-size: 13px!important;
font-weight: 700;
color: #000;
background-color: rgba(255, 255, 255, 0.85) !important;
}

View File

@ -0,0 +1,14 @@
#colorpicker a.brightColorPicker-cancelButton {
background: none;
padding: 0;
padding-top: 10px;
font-weight: bold;
border: none;
}
.brightColorPicker-colorPanel {
background-color: white !important;
box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), 0 8px 16px rgba(27, 39, 51, 0.08) !important;
border-radius: 3px !important;
padding: 15px !important;
}

View File

@ -0,0 +1,112 @@
.sidebar-comment .btn {
margin-top: 10px;
padding: 3px 8px;
font-size: .9rem;
margin: 10px 0 5px 0;
}
.sidebar-comment .btn.btn-primary:not(#comment-create-btn) {
background-color: #576273;
background-color: var(--text-soft-color);
}
.sidebar-comment .suggestion-create {
margin-top: 10px;
}
.suggestion-display .from-value, .suggestion-display .to-value {
color: #64d29b;
color: var(--primary-color);
font-weight: bold;
opacity: 1;
}
.suggestion-display .from-value {
margin-right: 5px;
}
.comment-actions-wrapper .buttonicon {
opacity: .8;
}
.comment-actions-wrapper .buttonicon:hover {
opacity: 1;
}
.comment-actions-wrapper .comment-edit {
margin-right: 5px;
}
[type="checkbox"] + label.label-suggestion-checkbox {
margin-left: 5px;
padding-left: 2.4rem;
}
.sidebar-comment .full-display-content {
margin-left: -10px;
box-shadow: none;
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
border: 1px solid #ffffff;
border: 1px solid var(--bg-color);
}
.comment-reply {
border-top: 1px solid #ffffff;
border-top: 1px solid var(--bg-color);
background-color: inherit;
}
.comment-reply textarea, .comment-reply input[type="text"] {
background-color: #ffffff;
background-color: var(--bg-color);
}
.btn.revert-suggestion-btn {
padding-left: 0;
}
.comment-edit-form {
margin-top: 15px;
}
/* MODAL */
.comment-modal .full-display-content {
box-shadow: none;
margin: 0 !important;
border: none;
background-color: #ffffff;
background-color: var(--bg-color);
}
.comment-modal .comment-modal-comment {
padding: 0;
}
.comment-modal .comment-reply textarea, .comment-modal .comment-reply input[type="text"] {
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
}
.comment-modal .comment-reply {
border-top: 1px solid #f2f3f4;
border-top: 1px solid var(--bg-soft-color);
}
.comment-modal .full-display-content .comment-title-wrapper,
.comment-modal .full-display-content .comment-reply {
padding: 15px;
}
/* NEW COMMENT POPUP */
.new-comment-popup textarea {
background-color: #f2f3f4;
background-color: var(--bg-soft-color);
}
.new-comment-popup .suggestion {
margin-bottom: 10px;
}
/* EDITOR COMMENTEED LINE */
#innerdocbody .ace-line .comment {
background-color: #fffacc;
color: var(--super-dark-color);
}
@media (min-width: 1200px) {
#comments {
width: 300px;
}
.sidebar-comment .full-display-content {
margin-left: 10px;
}
.compact-display-content {
padding-left: 20px;
}
}

View File

@ -0,0 +1,41 @@
.font-color-icon {
display: none !important;
}
#font-color {
display: list-item !important;
}
.readonly #font-color {
display: none !important;
}
.color\:black,
[data-color=black] {
color: #485365;
color: var(--text-color);
}
.color\:red,
[data-color=red] {
color: #F44336;
}
.color\:green,
[data-color=green] {
color: #66d29c;
}
.color\:blue,
[data-color=blue] {
color: #2196f3;
}
.color\:yellow,
[data-color=yellow] {
color: #ffeb3b;
}
.color\:orange,
[data-color=orange] {
color: #FF9800;
}

View File

@ -0,0 +1,7 @@
#pad_title {
border-bottom: 1px solid var(--border-color) !important;
background-color: var(--bg-color) !important;
}
#edit_title {
color: var(--text-soft-color);
}

View File

@ -0,0 +1,239 @@
/* MENU ICON*/
#editbar #tbl_menu_list {
width: auto !important;
}
#tbl-menu {
background: none !important;
width: 18px !important;
padding-left: 2px !important;
}
#tbl-menu:before {
content: "\F0CE";
}
#tbl_menu_list > a {
font-size: 16px;
margin-top: 8px;
padding-left: 0;
padding-right: 2px;
padding-bottom: 4px;
}
/* DROP DOWN MENU */
#tbl_context_menu {
margin-left: -24px;
border: none;
margin-top: 9px;
box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), 0 8px 16px rgba(27, 39, 51, 0.08);
border-radius: 3px;
background-color: white;
font-size: 100%;
line-height: 1.7;
}
#tbl_context_menu > .bd {
border: none;
background-color: transparent;
}
#tbl_context_menu > .bd > ul {
padding: 6px 0;
}
/* TABLE SIZE PICKER */
#tbl_insert {
background-color: white;
box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), 0 8px 16px rgba(27, 39, 51, 0.08);
border-radius: 3px;
}
#tbl_insert .bd {
border: none;
text-align: center;
background-color: transparent;
padding-top: 4px;
}
#tbl_insert .yuimenuitemlabel { text-align: center; }
#tbl_insert .ft {
margin: 0;
border: none;
background-color: transparent;
padding: 6px;
padding-top: 0;
}
#matrix_table tr td {
border: 1px solid #d7d7d7;
height: 1px;
padding: 7px;
width: 11px;
background-color: #fbfbfb;
border-radius: 1px;
}
#matrix_table tr td.selected {
border: 1px solid #789dce;
background-color: #b3d4ff;
}
/* TABLE SETTINGS POPUP */
.yui-skin-sam .yui-panel-container {
padding: 0;
margin: 0;
background-color: #fff;
box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), 0 8px 16px rgba(27, 39, 51, 0.08);
border-radius: 5px;
padding-bottom: 15px;
}
.yui-skin-sam .yui-panel-container .yui-panel {
border: none !important;
background: none;
box-shadow: none !important;
}
.yui-skin-sam .yui-panel-container .yui-panel .hd {
cursor: move;
padding: 0;
border: 0;
background: 0;
margin: 0;
font-size: 14px;
line-height: 40px;
text-transform: uppercase;
padding: 0 15px;
padding-top: 5px;
font-weight: bold;
border-bottom: 1px solid #d2d2d2;
}
.yui-skin-sam .yui-panel-container .yui-panel .container-close {
top: 15px;
border: none;
background: none;
color: white;
text-indent: 0;
}
.yui-skin-sam .yui-panel-container .yui-panel .container-close::before {
content: "x";
color: #6f757a;
font-size: 16px;
font-weight: bold;
}
.yui-skin-sam .yui-panel-container .yui-panel .bd {
background: none;
border: none;
box-shadow: none;
padding: 15px;
background-color: transparent !important;
}
.yui-panel .underlay, .yui-skin-sam .yui-panel-container.shadow .underlay {
display: none !important;
}
#div_tbl_btn_close {
float: right;
position: relative;
width: 100%;
margin-top: 10px;
right: 0;
bottom: 0;
}
#tbl_btn_close {
border: none;
color: #ffffff;
height: 30px;
width: 100%;
border-radius: 3px;
text-transform: uppercase;
}
#tbl_btn_close:hover { cursor: pointer; }
.yui-skin-sam .yui-button {
background: none;
background-color: white;
border: none;
height: 24px;
margin-bottom: -4px;
margin-top: 5px;
}
.yui-skin-sam .yui-button .first-child { margin: 0; border: none; }
.yui-skin-sam .yui-split-button button {
padding: 0;
background: none !important;
}
.yui-skin-sam .yui-split-button button em:not(.color-picker-button) {
font-style: normal !important;
border-bottom: 1px solid #b5b7b7;
padding: 0 5px;
margin: 0 5px;
padding-bottom: 3px;
}
button#yui-gen13-button {
margin-left: -5px;
}
button .color-picker-button {
border: 1px solid #c1c2c2;
border-radius: 50%;
width: 16px;
height: 16px;
margin-top: 2px;
}
#even-row-bg-color, #single-row-bg-color {
margin-right: 5px;
}
#single-col-bg-color, #odd-row-bg-color {
margin-left: 7px;
}
#yui-tbl-prop-panel .text-input[type=text] {
border: 1px solid #d2d2d2;
float: right;
height: 10px;
border-radius: 3px;
padding: 8px 10px;
}
#text_input_message {
background-color: #64d29b;
padding: 0 5px;
color: white;
font-size: 12px;
border-radius: 5px;
font-weight: bold;
display: none;
}
/* TABLES INSIDE THE PAD */
td[name=tData] {
/*border: 1px solid grey !important;*/
}
#yui-picker-panel_c
{
padding-bottom: 40px;
}
div#yui-picker-panel_h {
line-height: 1.8em;
font-size: 13px;
padding: 9px 15px 5px;
}
#yui-picker-panel .ft {
position: relative;
border: none;
width: 100%;
padding: 0;
margin-top: 20px;
}

98
pppad-skin/timeslider.css Normal file
View File

@ -0,0 +1,98 @@
#timeslider-slider #ui-slider-handle {
border-radius: 3px;
width: 12px;
height: 28px;
background-color: #64d29b;
background-color: var(--primary-color);
}
#timeslider-slider #ui-slider-bar {
border-radius: 3px;
background-color: #d2d2d2;
background-color: var(--border-color);
}
#slider-btn-container {
margin: -18px 15px 0 20px;
}
#slider-btn-container #playpause_button_icon {
color: #ffffff;
color: var(--bg-color);
background-color: #64d29b;
background-color: var(--primary-color);
border: none;
margin-right: 5px;
padding-top: 3px;
width: 45px;
height: 45px;
}
#slider-btn-container #playpause_button_icon:not(.pause) {
padding-left: 4px;
}
#slider-btn-container .stepper {
border: 2px solid !important;
height: 30px;
width: 30px;
line-height: 28px;
margin-left: 5px;
font-size: 13px;
color: #64d29b;
color: var(--primary-color);
border-color: #64d29b;
border-color: var(--primary-color);
}
#slider-btn-container .stepper.disabled {
opacity: .5;
}
.timeslider #editbar .buttontext {
background-color: #576273;
background-color: var(--text-soft-color);
color: #ffffff;
color: var(--bg-color);
margin: 0;
}
#editbar {
display: block;
padding-bottom: 5px;
}
#editbar li > a {
border-radius: 3px;
}
#timeslider-slider #timer {
opacity: .7;
top: -12px;
font-size: .8em;
}
.timeslider #authorsList .author {
padding: 2px 5px;
border-radius: 3px;
margin-right: 4px;
margin-bottom: 4px;
}
.timeslider-title {
font-size: 1.8rem !important;
}
.timeslider-subtitle {
margin-top: 6px;
font-size: .9em;
}
@media (max-width: 800px) {
#slider-btn-container {
margin-top: 0;
margin-right: 5px;
}
#slider-btn-container #playpause_button_icon {
width: 30px;
height: 30px;
}
#slider-btn-container #playpause_button_icon:before {
font-size: 18px;
}
}

4
pppad-skin/timeslider.js Normal file
View File

@ -0,0 +1,4 @@
'use strict';
window.customStart = () => {
};

591
pppad.settings.json.docker Normal file
View File

@ -0,0 +1,591 @@
/**
* THIS IS THE SETTINGS FILE THAT IS COPIED INSIDE THE DOCKER CONTAINER.
*
* By default, some runtime customizations are supported (see the
* documentation).
*
* If you need more control, edit this file and rebuild the container.
*/
/*
* This file must be valid JSON. But comments are allowed
*
* Please edit settings.json, not settings.json.template
*
* Please note that starting from Etherpad 1.6.0 you can store DB credentials in
* a separate file (credentials.json).
*
*
* ENVIRONMENT VARIABLE SUBSTITUTION
* =================================
*
* All the configuration values can be read from environment variables using the
* syntax "${ENV_VAR}" or "${ENV_VAR:default_value}".
*
* This is useful, for example, when running in a Docker container.
*
* DETAILED RULES:
* - If the environment variable is set to the string "true" or "false", the
* value becomes Boolean true or false.
* - If the environment variable is set to the string "null", the value
* becomes null.
* - If the environment variable is set to the string "undefined", the setting
* is removed entirely, except when used as the member of an array in which
* case it becomes null.
* - If the environment variable is set to a string representation of a finite
* number, the string is converted to that number.
* - If the environment variable is set to any other string, including the
* empty string, the value is that string.
* - If the environment variable is unset and a default value is provided, the
* value is as if the environment variable was set to the provided default:
* - "${UNSET_VAR:}" becomes the empty string.
* - "${UNSET_VAR:foo}" becomes the string "foo".
* - "${UNSET_VAR:true}" and "${UNSET_VAR:false}" become true and false.
* - "${UNSET_VAR:null}" becomes null.
* - "${UNSET_VAR:undefined}" causes the setting to be removed (or be set
* to null, if used as a member of an array).
* - If the environment variable is unset and no default value is provided,
* the value becomes null. THIS BEHAVIOR MAY CHANGE IN A FUTURE VERSION OF
* ETHERPAD; if you want the default value to be null, you should explicitly
* specify "null" as the default value.
*
* EXAMPLE:
* "port": "${PORT:9001}"
* "minify": "${MINIFY}"
* "skinName": "${SKIN_NAME:colibris}"
*
* Would read the configuration values for those items from the environment
* variables PORT, MINIFY and SKIN_NAME.
*
* If PORT and SKIN_NAME variables were not defined, the default values 9001 and
* "colibris" would be used.
* The configuration value "minify", on the other hand, does not have a
* designated default value. Thus, if the environment variable MINIFY were
* undefined, "minify" would be null.
*
* REMARKS:
* 1) please note that variable substitution always needs to be quoted.
*
* "port": 9001, <-- Literal values. When not using
* "minify": false substitution, only strings must be
* "skinName": "colibris" quoted. Booleans and numbers must not.
*
* "port": "${PORT:9001}" <-- CORRECT: if you want to use a variable
* "minify": "${MINIFY:true}" substitution, put quotes around its name,
* "skinName": "${SKIN_NAME}" even if the required value is a number or
* a boolean.
* Etherpad will take care of rewriting it
* to the proper type if necessary.
*
* "port": ${PORT:9001} <-- ERROR: this is not valid json. Quotes
* "minify": ${MINIFY} around variable names are missing.
* "skinName": ${SKIN_NAME}
*
* 2) Beware of undefined variables and default values: nulls and empty strings
* are different!
*
* This is particularly important for user's passwords (see the relevant
* section):
*
* "password": "${PASSW}" // if PASSW is not defined would result in password === null
* "password": "${PASSW:}" // if PASSW is not defined would result in password === ''
*
* If you want to use an empty value (null) as default value for a variable,
* simply do not set it, without putting any colons: "${ABIWORD}".
*
* 3) if you want to use newlines in the default value of a string parameter,
* use "\n" as usual.
*
* "defaultPadText" : "${DEFAULT_PAD_TEXT}Line 1\nLine 2"
*/
{
/*
* Name your instance!
*/
"title": "${TITLE:PPPaaad}",
/*
* Pathname of the favicon you want to use. If null, the skin's favicon is
* used if one is provided by the skin, otherwise the default Etherpad favicon
* is used. If this is a relative path it is interpreted as relative to the
* Etherpad root directory.
*/
"favicon": "${FAVICON:null}",
/*
* Skin name.
*
* Its value has to be an existing directory under src/static/skins.
* You can write your own, or use one of the included ones:
*
* - "no-skin": an empty skin (default). This yields the unmodified,
* traditional Etherpad theme.
* - "colibris": the new experimental skin (since Etherpad 1.8), candidate to
* become the default in Etherpad 2.0
*/
"skinName": "${SKIN_NAME:pppad}",
/*
* Skin Variants
*
* Use the UI skin variants builder at /p/test#skinvariantsbuilder
*
* For the colibris skin only, you can choose how to render the three main
* containers:
* - toolbar (top menu with icons)
* - editor (containing the text of the pad)
* - background (area outside of editor, mostly visible when using page style)
*
* For each of the 3 containers you can choose 4 color combinations:
* super-light, light, dark, super-dark.
*
* For example, to make the toolbar dark, you will include "dark-toolbar" into
* skinVariants.
*
* You can provide multiple skin variants separated by spaces. Default
* skinVariant is "super-light-toolbar super-light-editor light-background".
*
* For the editor container, you can also make it full width by adding
* "full-width-editor" variant (by default editor is rendered as a page, with
* a max-width of 900px).
*/
"skinVariants": "${SKIN_VARIANTS:super-light-toolbar super-light-editor light-background}",
/*
* IP and port which Etherpad should bind at.
*
* Binding to a Unix socket is also supported: just use an empty string for
* the ip, and put the full path to the socket in the port parameter.
*
* EXAMPLE USING UNIX SOCKET:
* "ip": "", // <-- has to be an empty string
* "port" : "/somepath/etherpad.socket", // <-- path to a Unix socket
*/
"ip": "${IP:0.0.0.0}",
"port": "${PORT:9001}",
/*
* Option to hide/show the settings.json in admin page.
*
* Default option is set to true
*/
"showSettingsInAdminPage": "${SHOW_SETTINGS_IN_ADMIN_PAGE:true}",
/*
* Node native SSL support
*
* This is disabled by default.
* Make sure to have the minimum and correct file access permissions set so
* that the Etherpad server can access them
*/
/*
"ssl" : {
"key" : "/path-to-your/epl-server.key",
"cert" : "/path-to-your/epl-server.crt",
"ca": ["/path-to-your/epl-intermediate-cert1.crt", "/path-to-your/epl-intermediate-cert2.crt"]
},
*/
/*
* The type of the database.
*
* You can choose between many DB drivers, for example: dirty, postgres,
* sqlite, mysql.
*
* You shouldn't use "dirty" for for anything else than testing or
* development.
*
*
* Database specific settings are dependent on dbType, and go in dbSettings.
* Remember that since Etherpad 1.6.0 you can also store this information in
* credentials.json.
*
* For a complete list of the supported drivers, please refer to:
* https://www.npmjs.com/package/ueberdb2
*/
"dbType": "${DB_TYPE:mysql}",
"dbSettings": {
"host": "${DB_HOST:192.168.111.22}",
"port": "${DB_PORT:3306}",
"database": "${DB_NAME:pppad}",
"user": "${DB_USER:root}",
"password": "${DB_PASS:kritik}",
"charset": "${DB_CHARSET:utf8}",
"filename": "${DB_FILENAME:var/dirty.db}",
"collection": "${DB_COLLECTION:undefined}",
"url": "${DB_URL:undefined}"
},
/*
* The default text of a pad
*/
"defaultPadText" : "${DEFAULT_PAD_TEXT:PPPaaad!!}",
/*
* Default Pad behavior.
*
* Change them if you want to override.
*/
"padOptions": {
"noColors": "${PAD_OPTIONS_NO_COLORS:false}",
"showControls": "${PAD_OPTIONS_SHOW_CONTROLS:true}",
"showChat": "${PAD_OPTIONS_SHOW_CHAT:true}",
"showLineNumbers": "${PAD_OPTIONS_SHOW_LINE_NUMBERS:true}",
"useMonospaceFont": "${PAD_OPTIONS_USE_MONOSPACE_FONT:false}",
"userName": "${PAD_OPTIONS_USER_NAME:false}",
"userColor": "${PAD_OPTIONS_USER_COLOR:false}",
"rtl": "${PAD_OPTIONS_RTL:false}",
"alwaysShowChat": "${PAD_OPTIONS_ALWAYS_SHOW_CHAT:false}",
"chatAndUsers": "${PAD_OPTIONS_CHAT_AND_USERS:false}",
"lang": "${PAD_OPTIONS_LANG:en-gb}"
},
/*
* Pad Shortcut Keys
*/
"padShortcutEnabled" : {
"altF9": "${PAD_SHORTCUTS_ENABLED_ALT_F9:true}", /* focus on the File Menu and/or editbar */
"altC": "${PAD_SHORTCUTS_ENABLED_ALT_C:true}", /* focus on the Chat window */
"cmdShift2": "${PAD_SHORTCUTS_ENABLED_CMD_SHIFT_2:true}", /* shows a gritter popup showing a line author */
"delete": "${PAD_SHORTCUTS_ENABLED_DELETE:true}",
"return": "${PAD_SHORTCUTS_ENABLED_RETURN:true}",
"esc": "${PAD_SHORTCUTS_ENABLED_ESC:true}", /* in mozilla versions 14-19 avoid reconnecting pad */
"cmdS": "${PAD_SHORTCUTS_ENABLED_CMD_S:true}", /* save a revision */
"tab": "${PAD_SHORTCUTS_ENABLED_TAB:true}", /* indent */
"cmdZ": "${PAD_SHORTCUTS_ENABLED_CMD_Z:true}", /* undo/redo */
"cmdY": "${PAD_SHORTCUTS_ENABLED_CMD_Y:true}", /* redo */
"cmdI": "${PAD_SHORTCUTS_ENABLED_CMD_I:true}", /* italic */
"cmdB": "${PAD_SHORTCUTS_ENABLED_CMD_B:true}", /* bold */
"cmdU": "${PAD_SHORTCUTS_ENABLED_CMD_U:true}", /* underline */
"cmd5": "${PAD_SHORTCUTS_ENABLED_CMD_5:true}", /* strike through */
"cmdShiftL": "${PAD_SHORTCUTS_ENABLED_CMD_SHIFT_L:true}", /* unordered list */
"cmdShiftN": "${PAD_SHORTCUTS_ENABLED_CMD_SHIFT_N:true}", /* ordered list */
"cmdShift1": "${PAD_SHORTCUTS_ENABLED_CMD_SHIFT_1:true}", /* ordered list */
"cmdShiftC": "${PAD_SHORTCUTS_ENABLED_CMD_SHIFT_C:true}", /* clear authorship */
"cmdH": "${PAD_SHORTCUTS_ENABLED_CMD_H:true}", /* backspace */
"ctrlHome": "${PAD_SHORTCUTS_ENABLED_CTRL_HOME:true}", /* scroll to top of pad */
"pageUp": "${PAD_SHORTCUTS_ENABLED_PAGE_UP:true}",
"pageDown": "${PAD_SHORTCUTS_ENABLED_PAGE_DOWN:true}"
},
/*
* Should we suppress errors from being visible in the default Pad Text?
*/
"suppressErrorsInPadText": "${SUPPRESS_ERRORS_IN_PAD_TEXT:false}",
/*
* If this option is enabled, a user must have a session to access pads.
* This effectively allows only group pads to be accessed.
*/
"requireSession": "${REQUIRE_SESSION:false}",
/*
* Users may edit pads but not create new ones.
*
* Pad creation is only via the API.
* This applies both to group pads and regular pads.
*/
"editOnly": "${EDIT_ONLY:false}",
/*
* If true, all css & js will be minified before sending to the client.
*
* This will improve the loading performance massively, but makes it difficult
* to debug the javascript/css
*/
"minify": "${MINIFY:true}",
/*
* How long may clients use served javascript code (in seconds)?
*
* Not setting this may cause problems during deployment.
* Set to 0 to disable caching.
*/
"maxAge": "${MAX_AGE:21600}", // 60 * 60 * 6 = 6 hours
/*
* Absolute path to the Abiword executable.
*
* Abiword is needed to get advanced import/export features of pads. Setting
* it to null disables Abiword and will only allow plain text and HTML
* import/exports.
*/
"abiword": "${ABIWORD:null}",
/*
* This is the absolute path to the soffice executable.
*
* LibreOffice can be used in lieu of Abiword to export pads.
* Setting it to null disables LibreOffice exporting.
*/
"soffice": "${SOFFICE:null}",
/*
* Path to the Tidy executable.
*
* Tidy is used to improve the quality of exported pads.
* Setting it to null disables Tidy.
*/
"tidyHtml": "${TIDY_HTML:null}",
/*
* Allow import of file types other than the supported ones:
* txt, doc, docx, rtf, odt, html & htm
*/
"allowUnknownFileEnds": "${ALLOW_UNKNOWN_FILE_ENDS:true}",
/*
* This setting is used if you require authentication of all users.
*
* Note: "/admin" always requires authentication.
*/
"requireAuthentication": "${REQUIRE_AUTHENTICATION:false}",
/*
* Require authorization by a module, or a user with is_admin set, see below.
*/
"requireAuthorization": "${REQUIRE_AUTHORIZATION:false}",
/*
* When you use NGINX or another proxy/load-balancer set this to true.
*
* This is especially necessary when the reverse proxy performs SSL
* termination, otherwise the cookies will not have the "secure" flag.
*
* The other effect will be that the logs will contain the real client's IP,
* instead of the reverse proxy's IP.
*/
"trustProxy": "${TRUST_PROXY:false}",
/*
* Settings controlling the session cookie issued by Etherpad.
*/
"cookie": {
/*
* Value of the SameSite cookie property. "Lax" is recommended unless
* Etherpad will be embedded in an iframe from another site, in which case
* this must be set to "None". Note: "None" will not work (the browser will
* not send the cookie to Etherpad) unless https is used to access Etherpad
* (either directly or via a reverse proxy with "trustProxy" set to true).
*
* "Strict" is not recommended because it has few security benefits but
* significant usability drawbacks vs. "Lax". See
* https://stackoverflow.com/q/41841880 for discussion.
*/
"sameSite": "${COOKIE_SAME_SITE:Lax}"
},
/*
* Privacy: disable IP logging
*/
"disableIPlogging": "${DISABLE_IP_LOGGING:false}",
/*
* Time (in seconds) to automatically reconnect pad when a "Force reconnect"
* message is shown to user.
*
* Set to 0 to disable automatic reconnection.
*/
"automaticReconnectionTimeout": "${AUTOMATIC_RECONNECTION_TIMEOUT:1}",
/*
* By default, when caret is moved out of viewport, it scrolls the minimum
* height needed to make this line visible.
*/
"scrollWhenFocusLineIsOutOfViewport": {
/*
* Percentage of viewport height to be additionally scrolled.
*
* E.g.: use "percentage.editionAboveViewport": 0.5, to place caret line in
* the middle of viewport, when user edits a line above of the
* viewport
*
* Set to 0 to disable extra scrolling
*/
"percentage": {
"editionAboveViewport": "${FOCUS_LINE_PERCENTAGE_ABOVE:0}",
"editionBelowViewport": "${FOCUS_LINE_PERCENTAGE_BELOW:0}"
},
/*
* Time (in milliseconds) used to animate the scroll transition.
* Set to 0 to disable animation
*/
"duration": "${FOCUS_LINE_DURATION:0}",
/*
* Flag to control if it should scroll when user places the caret in the
* last line of the viewport
*/
"scrollWhenCaretIsInTheLastLineOfViewport": "${FOCUS_LINE_CARET_SCROLL:false}",
/*
* Percentage of viewport height to be additionally scrolled when user
* presses arrow up in the line of the top of the viewport.
*
* Set to 0 to let the scroll to be handled as default by Etherpad
*/
"percentageToScrollWhenUserPressesArrowUp": "${FOCUS_LINE_PERCENTAGE_ARROW_UP:0}"
},
/*
* User accounts. These accounts are used by:
* - default HTTP basic authentication if no plugin handles authentication
* - some but not all authentication plugins
* - some but not all authorization plugins
*
* User properties:
* - password: The user's password. Some authentication plugins will ignore
* this.
* - is_admin: true gives access to /admin. Defaults to false. If you do not
* uncomment this, /admin will not be available!
* - readOnly: If true, this user will not be able to create new pads or
* modify existing pads. Defaults to false.
* - canCreate: If this is true and readOnly is false, this user can create
* new pads. Defaults to true.
*
* Authentication and authorization plugins may define additional properties.
*
* WARNING: passwords should not be stored in plaintext in this file.
* If you want to mitigate this, please install ep_hash_auth and
* follow the section "secure your installation" in README.md
*/
"users": {
"dvd": {
// 1) "password" can be replaced with "hash" if you install ep_hash_auth
// 2) please note that if password is null, the user will not be created
"password": "${ADMIN_PASSWORD:1qazse4}",
"is_admin": true
},
"user": {
// 1) "password" can be replaced with "hash" if you install ep_hash_auth
// 2) please note that if password is null, the user will not be created
"password": "${USER_PASSWORD:null}",
"is_admin": false
}
},
/*
* Restrict socket.io transport methods
*/
"socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
"socketIo": {
/*
* Maximum permitted client message size (in bytes). All messages from
* clients that are larger than this will be rejected. Large values make it
* possible to paste large amounts of text, and plugins may require a larger
* value to work properly, but increasing the value increases susceptibility
* to denial of service attacks (malicious clients can exhaust memory).
*/
"maxHttpBufferSize": "${SOCKETIO_MAX_HTTP_BUFFER_SIZE:10000}"
},
/*
* Allow Load Testing tools to hit the Etherpad Instance.
*
* WARNING: this will disable security on the instance.
*/
"loadTest": "${LOAD_TEST:false}",
/**
* Disable dump of objects preventing a clean exit
*/
"dumpOnUncleanExit": "${DUMP_ON_UNCLEAN_EXIT:false}",
/*
* Disable indentation on new line when previous line ends with some special
* chars (':', '[', '(', '{')
*/
/*
"indentationOnNewLine": false,
*/
/*
* From Etherpad 1.8.3 onwards, import and export of pads is always rate
* limited.
*
* The default is to allow at most 10 requests per IP in a 90 seconds window.
* After that the import/export request is rejected.
*
* See https://github.com/nfriedly/express-rate-limit for more options
*/
"importExportRateLimiting": {
// duration of the rate limit window (milliseconds)
"windowMs": "${IMPORT_EXPORT_RATE_LIMIT_WINDOW:90000}",
// maximum number of requests per IP to allow during the rate limit window
"max": "${IMPORT_EXPORT_MAX_REQ_PER_IP:10}"
},
/*
* From Etherpad 1.8.3 onwards, the maximum allowed size for a single imported
* file is always bounded.
*
* File size is specified in bytes. Default is 50 MB.
*/
"importMaxFileSize": "${IMPORT_MAX_FILE_SIZE:52428800}", // 50 * 1024 * 1024
/*
* From Etherpad 1.8.5 onwards, when Etherpad is in production mode commits from individual users are rate limited
*
* The default is to allow at most 10 changes per IP in a 1 second window.
* After that the change is rejected.
*
* See https://github.com/animir/node-rate-limiter-flexible/wiki/Overall-example#websocket-single-connection-prevent-flooding for more options
*/
"commitRateLimiting": {
// duration of the rate limit window (seconds)
"duration": "${COMMIT_RATE_LIMIT_DURATION:1}",
// maximum number of changes per IP to allow during the rate limit window
"points": "${COMMIT_RATE_LIMIT_POINTS:10}"
},
/*
* Toolbar buttons configuration.
*
* Uncomment to customize.
*/
/*
"toolbar": {
"left": [
["bold", "italic", "underline", "strikethrough"],
["orderedlist", "unorderedlist", "indent", "outdent"],
["undo", "redo"],
["clearauthorship"]
],
"right": [
["importexport", "timeslider", "savedrevision"],
["settings", "embed"],
["showusers"]
],
"timeslider": [
["timeslider_export", "timeslider_returnToPad"]
]
},
*/
/*
* Expose Etherpad version in the web interface and in the Server http header.
*
* Do not enable on production machines.
*/
"exposeVersion": "${EXPOSE_VERSION:false}",
/*
* The log level we are using.
*
* Valid values: DEBUG, INFO, WARN, ERROR
*/
"loglevel": "${LOGLEVEL:INFO}",
/* Override any strings found in locale directories */
"customLocaleStrings": {}
}