Release version 1.8.4

This commit is contained in:
muxator 2020-05-15 02:10:40 +02:00
commit 89a155fdce
71 changed files with 425 additions and 295 deletions

View file

@ -1,3 +1,11 @@
# 1.8.4
* FIX: fix a performance regression on MySQL introduced in 1.8.3
* FIX: when running behind a reverse proxy and exposed in an inner directory, fonts and toolbar icons should now be visible. This is a regression introduced in 1.8.3
* FIX: cleanups in the UI after the CSS rehaul of 1.8.3
* MINOR: protect against bugged/stale UI elements after updates. An explicit cache busting via random query string is performed at each start. This needs to be replaced with hashed names in static assets.
* MINOR: improved some tests
* MINOR: fixed long-standing bugs in the maintenance tools in /bin (migrateDirtyDBtoRealDB, rebuildPad, convert, importSqlFile)
# 1.8.3 # 1.8.3
* FEATURE: colibris is now the default skin for new installs * FEATURE: colibris is now the default skin for new installs
* FEATURE: improved colibris visuals, and migrated to Flexbox layout * FEATURE: improved colibris visuals, and migrated to Flexbox layout

View file

@ -1,7 +1,7 @@
var startTime = Date.now(); var startTime = Date.now();
var fs = require("fs"); var fs = require("fs");
var ueberDB = require("../src/node_modules/ueberDB"); var ueberDB = require("../src/node_modules/ueberdb2");
var mysql = require("../src/node_modules/ueberDB/node_modules/mysql"); var mysql = require("../src/node_modules/ueberdb2/node_modules/mysql");
var async = require("../src/node_modules/async"); var async = require("../src/node_modules/async");
var Changeset = require("ep_etherpad-lite/static/js/Changeset"); var Changeset = require("ep_etherpad-lite/static/js/Changeset");
var randomString = require('ep_etherpad-lite/static/js/pad_utils').randomString; var randomString = require('ep_etherpad-lite/static/js/pad_utils').randomString;

View file

@ -4,7 +4,7 @@ require("ep_etherpad-lite/node_modules/npm").load({}, function(er,npm) {
var fs = require("fs"); var fs = require("fs");
var ueberDB = require("ep_etherpad-lite/node_modules/ueberDB"); var ueberDB = require("ep_etherpad-lite/node_modules/ueberdb2");
var settings = require("ep_etherpad-lite/node/utils/Settings"); var settings = require("ep_etherpad-lite/node/utils/Settings");
var log4js = require('ep_etherpad-lite/node_modules/log4js'); var log4js = require('ep_etherpad-lite/node_modules/log4js');

View file

@ -11,33 +11,39 @@ require("ep_etherpad-lite/node_modules/npm").load({}, function(er,npm) {
var settings = require("ep_etherpad-lite/node/utils/Settings"); var settings = require("ep_etherpad-lite/node/utils/Settings");
var dirty = require("../src/node_modules/dirty")('var/dirty.db'); var dirty = require("../src/node_modules/dirty");
var ueberDB = require("../src/node_modules/ueberdb2"); var ueberDB = require("../src/node_modules/ueberdb2");
var log4js = require("../src/node_modules/log4js"); var log4js = require("../src/node_modules/log4js");
var dbWrapperSettings = { var dbWrapperSettings = {
"cache": "0", // The cache slows things down when you're mostly writing. "cache": "0", // The cache slows things down when you're mostly writing.
"writeInterval": 0 // Write directly to the database, don't buffer "writeInterval": 0 // Write directly to the database, don't buffer
}; };
var db = new ueberDB.database(settings.dbType, settings.dbSettings, dbWrapperSettings, log4js.getLogger("ueberDB")); var db = new ueberDB.database(settings.dbType, settings.dbSettings, dbWrapperSettings, log4js.getLogger("ueberDB"));
var i = 0;
var length = 0;
db.init(function() { db.init(function() {
console.log("Waiting for dirtyDB to parse its file."); console.log("Waiting for dirtyDB to parse its file.");
dirty.on("load", function(length) { dirty = dirty('var/dirty.db').on("load", function() {
console.log("Loaded " + length + " records, processing now."); dirty.forEach(function(){
var remaining = length; length++;
dirty.forEach(function(key, value) { });
db.set(key, value, function(error) { console.log(`Found ${length} records, processing now.`);
if (typeof error != 'undefined') {
console.log("Unexpected result handling: ", key, value, " was: ", error); dirty.forEach(async function(key, value) {
} let error = await db.set(key, value);
remaining -= 1; console.log(`Wrote record ${i}`);
var oldremaining = remaining; i++;
if ((oldremaining % 100) == 0) {
console.log("Records not yet flushed to database: ", remaining); if (i === length) {
} console.log("finished, just clearing up for a bit...");
}); setTimeout(function() {
}); process.exit(0);
}, 5000);
}
});
console.log("Please wait for all records to flush to database, then kill this process."); console.log("Please wait for all records to flush to database, then kill this process.");
}); });
console.log("done?")
}); });
}); });

View file

@ -10,7 +10,7 @@ if(process.argv.length != 4 && process.argv.length != 5) {
var npm = require("../src/node_modules/npm"); var npm = require("../src/node_modules/npm");
var async = require("../src/node_modules/async"); var async = require("../src/node_modules/async");
var ueberDB = require("../src/node_modules/ueberDB"); var ueberDB = require("../src/node_modules/ueberdb2");
var padId = process.argv[2]; var padId = process.argv[2];
var newRevHead = process.argv[3]; var newRevHead = process.argv[3];

View file

@ -91,7 +91,7 @@ Available blocks in `pad.html` are:
* `timesliderEditbarRight` * `timesliderEditbarRight`
* `modals` * `modals`
`index.html` blocks: `index.html` blocks:
* `indexWrapper` - contains the form for creating new pads * `indexWrapper` - contains the form for creating new pads

View file

@ -44,4 +44,19 @@ a:hover {
display: block; display: block;
overflow: auto; overflow: auto;
padding: 5px; padding: 5px;
} }
table, th, td {
text-align: left;
border: 1px solid gray;
border-collapse: collapse;
}
th {
padding: 0.5em;
background: #EEE;
}
td {
padding: 0.5em;
}

View file

@ -38,7 +38,7 @@ docker build --tag <YOUR_USERNAME>/etherpad .
Include two plugins in the container: Include two plugins in the container:
```bash ```bash
docker build --build-arg ETHERPAD_PLUGINS="ep_codepad ep_author_neat" --tag <YOUR_USERNAME>/etherpad . docker build --build-arg ETHERPAD_PLUGINS="ep_comments_page ep_author_neat" --tag <YOUR_USERNAME>/etherpad .
``` ```
## Running your instance: ## Running your instance:

View file

@ -137,5 +137,7 @@
"pad.impexp.uploadFailed": "فشل التحميل، الرجاء المحاولة مرة أخرى", "pad.impexp.uploadFailed": "فشل التحميل، الرجاء المحاولة مرة أخرى",
"pad.impexp.importfailed": "فشل الاستيراد", "pad.impexp.importfailed": "فشل الاستيراد",
"pad.impexp.copypaste": "الرجاء نسخ/لصق", "pad.impexp.copypaste": "الرجاء نسخ/لصق",
"pad.impexp.exportdisabled": "تصدير التنسيق {{type}} معطل. يرجى الاتصال بمسؤول النظام الخاص بك للحصول على التفاصيل." "pad.impexp.exportdisabled": "تصدير التنسيق {{type}} معطل. يرجى الاتصال بمسؤول النظام الخاص بك للحصول على التفاصيل.",
"pad.impexp.maxFileSize": "الملف كبير جدا. اتصل بإداري الموقع الخاص بك لزيادة حجم الملف المسموح به للاستيراد",
"pad.impexp.permission": "الاستيراد معطل لأنك لم تساهم مسبقا لهذه الباد. من فضلك ساهم على الأقل مرة واحدة قبل الاستيراد"
} }

View file

@ -50,7 +50,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Sólo se pue importar dende los formatos de testu planu o HTML. Pa carauterístiques d'importación más avanzaes <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instala Abiword</a>.", "pad.importExport.abiword.innerHTML": "Sólo se pue importar dende los formatos de testu planu o HTML. Pa carauterístiques d'importación más avanzaes <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instala Abiword o LibreOffice</a>.",
"pad.modals.connected": "Coneutáu.", "pad.modals.connected": "Coneutáu.",
"pad.modals.reconnecting": "Reconeutando col to bloc...", "pad.modals.reconnecting": "Reconeutando col to bloc...",
"pad.modals.forcereconnect": "Forzar la reconexón", "pad.modals.forcereconnect": "Forzar la reconexón",
@ -127,5 +127,7 @@
"pad.impexp.uploadFailed": "Falló la carga del ficheru, intentalo otra vuelta", "pad.impexp.uploadFailed": "Falló la carga del ficheru, intentalo otra vuelta",
"pad.impexp.importfailed": "Falló la importación", "pad.impexp.importfailed": "Falló la importación",
"pad.impexp.copypaste": "Por favor, copia y apega", "pad.impexp.copypaste": "Por favor, copia y apega",
"pad.impexp.exportdisabled": "La esportación en formatu {{type}} ta desactivada. Por favor, comunica col alministrador del sistema pa más detalles." "pad.impexp.exportdisabled": "La esportación en formatu {{type}} ta desactivada. Por favor, comunica col alministrador del sistema pa más detalles.",
"pad.impexp.maxFileSize": "El ficheru ye demasiao grande. Comunícate col alministrador del sitiu p'aumentar el tamañu de ficheru permitíu na importación",
"pad.impexp.permission": "La importación ta desactivada porque nunca contribuisti nesti bloc. Contribuye polo menos una vez antes d'importar"
} }

View file

@ -8,7 +8,7 @@
] ]
}, },
"index.newPad": "Pad nevez", "index.newPad": "Pad nevez",
"index.createOpenPad": "pe krouiñ/digeriñ ur pad gant an anv :", "index.createOpenPad": "pe krouiñ/digeriñ ur Pad gant an anv :",
"pad.toolbar.bold.title": "Tev (Ctrl-B)", "pad.toolbar.bold.title": "Tev (Ctrl-B)",
"pad.toolbar.italic.title": "Italek (Ctrl-I)", "pad.toolbar.italic.title": "Italek (Ctrl-I)",
"pad.toolbar.underline.title": "Islinennañ (Ctrl-U)", "pad.toolbar.underline.title": "Islinennañ (Ctrl-U)",
@ -53,7 +53,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Ne c'hallit ket enporzhiañ furmadoù testennoù kriz pe HTML hepken. Evit arc'hwelioù enporzhiañ emdroetoc'h, staliit <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">staliañ Abiword</a> mar plij.", "pad.importExport.abiword.innerHTML": "Ne c'hallit enporzhiañ nemet furmadoù testennoù plaen pe HTML. Evit arc'hwelioù enporzhiañ emdroetoc'h, staliit <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">Abiword pe LibreOffice</a>.",
"pad.modals.connected": "Kevreet.", "pad.modals.connected": "Kevreet.",
"pad.modals.reconnecting": "Adkevreañ war-zu ho pad...", "pad.modals.reconnecting": "Adkevreañ war-zu ho pad...",
"pad.modals.forcereconnect": "Adkevreañ dre heg", "pad.modals.forcereconnect": "Adkevreañ dre heg",
@ -130,5 +130,7 @@
"pad.impexp.uploadFailed": "C'hwitet eo bet an enporzhiañ. Klaskit en-dro.", "pad.impexp.uploadFailed": "C'hwitet eo bet an enporzhiañ. Klaskit en-dro.",
"pad.impexp.importfailed": "C'hwitet eo an enporzhiadenn", "pad.impexp.importfailed": "C'hwitet eo an enporzhiadenn",
"pad.impexp.copypaste": "Eilit/pegit, mar plij", "pad.impexp.copypaste": "Eilit/pegit, mar plij",
"pad.impexp.exportdisabled": "Diweredekaet eo ezporzhiañ d'ar furmad {{type}}. Kit e darempred gant merour ar reizhiad evit gouzout hiroc'h." "pad.impexp.exportdisabled": "Diweredekaet eo ezporzhiañ d'ar furmad {{type}}. Kit e darempred gant merour ar reizhiad evit gouzout hiroc'h.",
"pad.impexp.maxFileSize": "Re vras eo ar restr. Kit e daremrepd gant merour ho lec'hienn evit kreskiñ ment aoteet ar restroù evit enporzhiañ",
"pad.impexp.permission": "Diweredekaet eo an enporzhiañ peogwir n'hoc'h eus ket kemeret perzh gwech ebet er bloc'had-se. Kemerit perzh ur wech da nebeutañ a-raok enporzhiañ."
} }

View file

@ -120,7 +120,7 @@
"pad.userlist.guest": "Gæst", "pad.userlist.guest": "Gæst",
"pad.userlist.deny": "Nægt", "pad.userlist.deny": "Nægt",
"pad.userlist.approve": "Godkend", "pad.userlist.approve": "Godkend",
"pad.editbar.clearcolors": "Fjern farver for ophavsmand i hele dokumentet?", "pad.editbar.clearcolors": "Fjern farver for ophavsmand i hele dokumentet? Dette kan ikke fortrydes",
"pad.impexp.importbutton": "Importer nu", "pad.impexp.importbutton": "Importer nu",
"pad.impexp.importing": "Importerer...", "pad.impexp.importing": "Importerer...",
"pad.impexp.confirmimport": "At importere en fil, vil overskrives den aktuelle pad tekst. Er du sikker på du vil fortsætte?", "pad.impexp.confirmimport": "At importere en fil, vil overskrives den aktuelle pad tekst. Er du sikker på du vil fortsætte?",

View file

@ -1,6 +1,7 @@
{ {
"@metadata": { "@metadata": {
"authors": [ "authors": [
"Bjarncraft",
"Metalhead64", "Metalhead64",
"Mklehr", "Mklehr",
"Nipsky", "Nipsky",
@ -56,7 +57,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Sie können nur aus reinen Text- oder HTML-Formaten importieren. Für umfangreichere Importfunktionen <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installieren Sie bitte AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Sie können nur aus reinen Text- oder HTML-Formaten importieren. Für umfangreichere Importfunktionen <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installieren Sie bitte AbiWord oder LibreOffice</a>.",
"pad.modals.connected": "Verbunden.", "pad.modals.connected": "Verbunden.",
"pad.modals.reconnecting": "Wiederherstellen der Verbindung …", "pad.modals.reconnecting": "Wiederherstellen der Verbindung …",
"pad.modals.forcereconnect": "Erneutes Verbinden erzwingen", "pad.modals.forcereconnect": "Erneutes Verbinden erzwingen",
@ -133,5 +134,7 @@
"pad.impexp.uploadFailed": "Das Hochladen ist fehlgeschlagen. Bitte versuchen Sie es erneut.", "pad.impexp.uploadFailed": "Das Hochladen ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
"pad.impexp.importfailed": "Import fehlgeschlagen", "pad.impexp.importfailed": "Import fehlgeschlagen",
"pad.impexp.copypaste": "Bitte kopieren und einfügen", "pad.impexp.copypaste": "Bitte kopieren und einfügen",
"pad.impexp.exportdisabled": "Der Export im {{type}}-Format ist deaktiviert. Für Einzelheiten kontaktieren Sie bitte Ihren Systemadministrator." "pad.impexp.exportdisabled": "Der Export im {{type}}-Format ist deaktiviert. Für Einzelheiten kontaktieren Sie bitte Ihren Systemadministrator.",
"pad.impexp.maxFileSize": "Datei zu groß.Kontaktiere deinen Administrator um das datei Limit für Imports zu erhöhen.",
"pad.impexp.permission": "Importieren ist deaktiviert weil du nichts zu diesem Pad beigeteagen hast.Bitte trage etwas bei bevor du importierst."
} }

View file

@ -56,7 +56,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": ıma şenê tenya metınanê zelalan ya zi formatanê HTML-i biyarê. Seba vêşi xısusiyetanê arezekerdışi ra gırey <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\">AbiWord-i bar kerên</a>.", "pad.importExport.abiword.innerHTML": ıma şenê tenya metınanê zelalan ya zi formatanê HTML-i biyarê. Seba vêşi xısusiyetanê arezekerdışi ra gırey <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\">AbiWordi ya zi LibreOfficeyi bar kerên</a>.",
"pad.modals.connected": "Gıre diya.", "pad.modals.connected": "Gıre diya.",
"pad.modals.reconnecting": "Bloknot da şıma rê fına irtibat kewê no", "pad.modals.reconnecting": "Bloknot da şıma rê fına irtibat kewê no",
"pad.modals.forcereconnect": "Mecbur anciya gırê de", "pad.modals.forcereconnect": "Mecbur anciya gırê de",
@ -133,5 +133,7 @@
"pad.impexp.uploadFailed": "Barkerdış nêbi, kerem ke anciya bıcerebne", "pad.impexp.uploadFailed": "Barkerdış nêbi, kerem ke anciya bıcerebne",
"pad.impexp.importfailed": "Zer kerdış mıwafaq nebı", "pad.impexp.importfailed": "Zer kerdış mıwafaq nebı",
"pad.impexp.copypaste": "Reca keme kopya pronayış bıkeri", "pad.impexp.copypaste": "Reca keme kopya pronayış bıkeri",
"pad.impexp.exportdisabled": "Formatta {{type}} ya ateber kerdış dewra vıciya yo. Qandé teferruati idarekarana irtibat kewê" "pad.impexp.exportdisabled": "Formatta {{type}} ya ateber kerdış dewra vıciya yo. Qandé teferruati idarekarana irtibat kewê",
"pad.impexp.maxFileSize": "Dosya zêde gırsa, azere kerdışi rê mısade deyaye ebatê dosyay zeydınayışi rê idarekarê siteya irtibat kewê",
"pad.impexp.permission": ıma ena ped rê qet iştirak nêkerdo coki ra azere kerdış dewre ra veto. Vêre azere kerdışi minimum yû iştirak bıkerê"
} }

View file

@ -54,7 +54,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Μορφή Open Document)", "pad.importExport.exportopen": "ODF (Μορφή Open Document)",
"pad.importExport.abiword.innerHTML": "Μπορείτε να εισάγετε απλό κείμενο ή HTML. Για προηγμένες δυνατότητες εισαγωγής παρακαλούμε <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">εγκαταστήστε το AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Μπορείτε να εισάγετε απλό κείμενο ή HTML. Για προηγμένες δυνατότητες εισαγωγής παρακαλούμε <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">εγκαταστήστε το AbiWord ή το LibreOffice</a>.",
"pad.modals.connected": "Συνδεμένοι.", "pad.modals.connected": "Συνδεμένοι.",
"pad.modals.reconnecting": "Επανασύνδεση στο pad σας...", "pad.modals.reconnecting": "Επανασύνδεση στο pad σας...",
"pad.modals.forcereconnect": "Επιβολή επανασύνδεσης", "pad.modals.forcereconnect": "Επιβολή επανασύνδεσης",
@ -122,7 +122,7 @@
"pad.userlist.guest": "Επισκέπτης", "pad.userlist.guest": "Επισκέπτης",
"pad.userlist.deny": "Άρνηση", "pad.userlist.deny": "Άρνηση",
"pad.userlist.approve": "Έγκριση", "pad.userlist.approve": "Έγκριση",
"pad.editbar.clearcolors": "Να γίνει εκκαθάριση χρωμάτων σύνταξης σε ολόκληρο το έγγραφο;", "pad.editbar.clearcolors": "Να γίνει εκκαθάριση χρωμάτων σύνταξης σε ολόκληρο το έγγραφο; Αυτό δεν μπορεί να αναιρεθεί",
"pad.impexp.importbutton": "Εισαγωγή Τώρα", "pad.impexp.importbutton": "Εισαγωγή Τώρα",
"pad.impexp.importing": "Εισάγεται...", "pad.impexp.importing": "Εισάγεται...",
"pad.impexp.confirmimport": "Η εισαγωγή ενός αρχείου θα αντικαταστήσει το κείμενο του pad. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;", "pad.impexp.confirmimport": "Η εισαγωγή ενός αρχείου θα αντικαταστήσει το κείμενο του pad. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;",

View file

@ -78,7 +78,7 @@
"pad.modals.corruptPad.explanation": "Sartzen saiatzen ari zaren Pad-a hondatuta dago.", "pad.modals.corruptPad.explanation": "Sartzen saiatzen ari zaren Pad-a hondatuta dago.",
"pad.modals.corruptPad.cause": "Baliteke zerbitzari okerreko konfigurazioa edo beste ustekabeko portaera batzuk izatea. Jarri harremanetan zerbitzu-administratzailearekin.", "pad.modals.corruptPad.cause": "Baliteke zerbitzari okerreko konfigurazioa edo beste ustekabeko portaera batzuk izatea. Jarri harremanetan zerbitzu-administratzailearekin.",
"pad.modals.deleted": "Ezabatua.", "pad.modals.deleted": "Ezabatua.",
"pad.modals.deleted.explanation": "Pad hau ezabatua izan da.", "pad.modals.deleted.explanation": "Pad hau ezabatu da.",
"pad.modals.disconnected": "Deskonektatua izan zara.", "pad.modals.disconnected": "Deskonektatua izan zara.",
"pad.modals.disconnected.explanation": "Zerbitzariaren konexioa galdu da", "pad.modals.disconnected.explanation": "Zerbitzariaren konexioa galdu da",
"pad.modals.disconnected.cause": "Baliteke zerbitzaria eskuragarri ez egotea. Mesedez, jakinarazi zerbitzuko administrariari honek gertatzen jarraitzen badu.", "pad.modals.disconnected.cause": "Baliteke zerbitzaria eskuragarri ez egotea. Mesedez, jakinarazi zerbitzuko administrariari honek gertatzen jarraitzen badu.",

View file

@ -74,7 +74,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Vous ne pouvez importer que des formats texte brut ou HTML. Pour des fonctionnalités dimportation plus évoluées, veuillez <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installer AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Vous ne pouvez importer que des formats texte brut ou HTML. Pour des fonctionnalités dimportation plus évoluées, veuillez <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installer AbiWord ou LibreOffice</a>.",
"pad.modals.connected": "Connecté.", "pad.modals.connected": "Connecté.",
"pad.modals.reconnecting": "Reconnexion à votre bloc-notes...", "pad.modals.reconnecting": "Reconnexion à votre bloc-notes...",
"pad.modals.forcereconnect": "Forcer la reconnexion", "pad.modals.forcereconnect": "Forcer la reconnexion",
@ -151,5 +151,7 @@
"pad.impexp.uploadFailed": "Le téléversement a échoué, veuillez réessayer", "pad.impexp.uploadFailed": "Le téléversement a échoué, veuillez réessayer",
"pad.impexp.importfailed": "Échec de limportation", "pad.impexp.importfailed": "Échec de limportation",
"pad.impexp.copypaste": "Veuillez copier-coller", "pad.impexp.copypaste": "Veuillez copier-coller",
"pad.impexp.exportdisabled": "Lexportation au format {{type}} est désactivée. Veuillez contacter votre administrateur système pour plus de détails." "pad.impexp.exportdisabled": "Lexportation au format {{type}} est désactivée. Veuillez contacter votre administrateur système pour plus de détails.",
"pad.impexp.maxFileSize": "Fichier trop gros. Contactez votre administrateur de site pour augmenter la taille maximale des fichiers importés",
"pad.impexp.permission": "Limportation est désactivée parce que vous navez jamais contribué à ce bloc. Veuillez contribuer au moins une fois avant dimporter"
} }

View file

@ -53,7 +53,7 @@
"pad.importExport.exportword": "מיקרוסופט וורד", "pad.importExport.exportword": "מיקרוסופט וורד",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "באפשרותך לייבא מטקסט פשוט או מ־HTML. לאפשרויות ייבוא מתקדמות יותר יש <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">להתקין AbiWord</a>.", "pad.importExport.abiword.innerHTML": "באפשרותך לייבא מטקסט פשוט או מ־HTML. לאפשרויות ייבוא מתקדמות יותר יש <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">להתקין AbiWord או LibreOffice</a>.",
"pad.modals.connected": "מחובר.", "pad.modals.connected": "מחובר.",
"pad.modals.reconnecting": "מתבצע חיבור מחדש...", "pad.modals.reconnecting": "מתבצע חיבור מחדש...",
"pad.modals.forcereconnect": "לכפות חיבור מחדש", "pad.modals.forcereconnect": "לכפות חיבור מחדש",
@ -121,7 +121,7 @@
"pad.userlist.guest": "אורח", "pad.userlist.guest": "אורח",
"pad.userlist.deny": "לדחות", "pad.userlist.deny": "לדחות",
"pad.userlist.approve": "לאשר", "pad.userlist.approve": "לאשר",
"pad.editbar.clearcolors": "לנקות צבעים לסימון כותבים בכל המסמך?", "pad.editbar.clearcolors": "לנקות צבעים לסימון כותבים בכל המסמך? זו פעולה בלתי הפיכה",
"pad.impexp.importbutton": "לייבא כעת", "pad.impexp.importbutton": "לייבא כעת",
"pad.impexp.importing": "ייבוא...", "pad.impexp.importing": "ייבוא...",
"pad.impexp.confirmimport": "ייבוא של קובץ יבטל את הטקסט הנוכחי בפנקס. האם ברצונך להמשיך?", "pad.impexp.confirmimport": "ייבוא של קובץ יבטל את הטקסט הנוכחי בפנקס. האם ברצונך להמשיך?",
@ -130,5 +130,7 @@
"pad.impexp.uploadFailed": "ההעלאה נכשלה, נא לנסות שוב", "pad.impexp.uploadFailed": "ההעלאה נכשלה, נא לנסות שוב",
"pad.impexp.importfailed": "הייבוא נכשל", "pad.impexp.importfailed": "הייבוא נכשל",
"pad.impexp.copypaste": "נא להעתיק ולהדביק", "pad.impexp.copypaste": "נא להעתיק ולהדביק",
"pad.impexp.exportdisabled": "ייצוא בתסדיר {{type}} אינו פעיל. מנהל המערכת שלך יוכל לספר לך על זה עוד פרטים." "pad.impexp.exportdisabled": "ייצוא בתסדיר {{type}} אינו פעיל. מנהל המערכת שלך יוכל לספר לך על זה עוד פרטים.",
"pad.impexp.maxFileSize": "הקובץ גדול מדי. נא ליצור קשר עם הנהלת האתר כדי להגדיל את הגודל המרבי שמותר לייבא.",
"pad.impexp.permission": "הייבוא מושבת כיוון שמעולם לא תרמת לפנקס הזה. נא לתרום לפחות פעם אחת בטרם ביצוע ניסיון ייבוא"
} }

View file

@ -50,7 +50,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Tu pote solmente importar files in formato de texto simple o HTML. Pro functionalitate de importation plus extense, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\">installa AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Tu pote solmente importar files in formato de texto simple o HTML. Pro functionalitate de importation plus extense, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installa AbiWord o LibreOffice</a>.",
"pad.modals.connected": "Connectite.", "pad.modals.connected": "Connectite.",
"pad.modals.reconnecting": "Reconnecte a tu pad…", "pad.modals.reconnecting": "Reconnecte a tu pad…",
"pad.modals.forcereconnect": "Fortiar reconnexion", "pad.modals.forcereconnect": "Fortiar reconnexion",

View file

@ -55,7 +55,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "È possibile importare solo i formati di testo semplice o HTML. Per metodi più avanzati di importazione <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installare AbiWord</a>.", "pad.importExport.abiword.innerHTML": "È possibile importare solo i formati di testo semplice o HTML. Per metodi più avanzati di importazione <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installare AbiWord o LibreOffice</a>.",
"pad.modals.connected": "Connesso.", "pad.modals.connected": "Connesso.",
"pad.modals.reconnecting": "Riconnessione al pad in corso...", "pad.modals.reconnecting": "Riconnessione al pad in corso...",
"pad.modals.forcereconnect": "Forza la riconnessione", "pad.modals.forcereconnect": "Forza la riconnessione",

View file

@ -54,7 +54,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "プレーンテキストまたは HTML ファイルからのみインポートできます。より高度なインポート機能を使用するには、<a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord をインストール</a>してください。", "pad.importExport.abiword.innerHTML": "プレーンテキストまたは HTML ファイルからのみインポートできます。より高度なインポート機能を使用するには、<a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord またはLibreOfficeをインストール</a>してください。",
"pad.modals.connected": "接続されました。", "pad.modals.connected": "接続されました。",
"pad.modals.reconnecting": "パッドに再接続中...", "pad.modals.reconnecting": "パッドに再接続中...",
"pad.modals.forcereconnect": "強制的に再接続", "pad.modals.forcereconnect": "強制的に再接続",
@ -122,7 +122,7 @@
"pad.userlist.guest": "ゲスト", "pad.userlist.guest": "ゲスト",
"pad.userlist.deny": "拒否", "pad.userlist.deny": "拒否",
"pad.userlist.approve": "承認", "pad.userlist.approve": "承認",
"pad.editbar.clearcolors": "文書全体の作者の色分けを消去しますか?", "pad.editbar.clearcolors": "文書全体の作者の色分けを消去しますか? 取り消しはできません。",
"pad.impexp.importbutton": "インポートする", "pad.impexp.importbutton": "インポートする",
"pad.impexp.importing": "インポート中...", "pad.impexp.importing": "インポート中...",
"pad.impexp.confirmimport": "ファイルをインポートすると、パッドの現在のテキストが上書きされます。本当に続行しますか?", "pad.impexp.confirmimport": "ファイルをインポートすると、パッドの現在のテキストが上書きされます。本当に続行しますか?",
@ -131,5 +131,7 @@
"pad.impexp.uploadFailed": "アップロードに失敗しました。もう一度お試しください", "pad.impexp.uploadFailed": "アップロードに失敗しました。もう一度お試しください",
"pad.impexp.importfailed": "インポートに失敗しました", "pad.impexp.importfailed": "インポートに失敗しました",
"pad.impexp.copypaste": "コピー & ペーストしてください", "pad.impexp.copypaste": "コピー & ペーストしてください",
"pad.impexp.exportdisabled": "{{type}}形式でのエクスポートは無効になっています。詳細はシステム管理者にお問い合わせください。" "pad.impexp.exportdisabled": "{{type}}形式でのエクスポートは無効になっています。詳細はシステム管理者にお問い合わせください。",
"pad.impexp.maxFileSize": "ファイルが重すぎます。サイト管理者に連絡してインポート可能なファイルサイズの上限を引き上げてもらう必要があります",
"pad.impexp.permission": "このパッドに寄稿した実績がないため、インポートを無効にしました。まず寄稿をしてから再度、インポートしてください"
} }

View file

@ -52,7 +52,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Можете да увезувате само од прост текст и HTML-формат. Понапредни можности за увоз ќе добиете ако <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">воспоставите AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Можете да увезувате само од прост текст и HTML-формат. Понапредни можности за увоз ќе добиете ако <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">воспоставите AbiWord или LibreOffice</a>.",
"pad.modals.connected": "Поврзано.", "pad.modals.connected": "Поврзано.",
"pad.modals.reconnecting": "Ве преповрзувам со тетратката...", "pad.modals.reconnecting": "Ве преповрзувам со тетратката...",
"pad.modals.forcereconnect": "Наметни преповрзување", "pad.modals.forcereconnect": "Наметни преповрзување",
@ -129,5 +129,7 @@
"pad.impexp.uploadFailed": "Подигањето не успеа. Обидете се повторно.", "pad.impexp.uploadFailed": "Подигањето не успеа. Обидете се повторно.",
"pad.impexp.importfailed": "Увозот не успеа", "pad.impexp.importfailed": "Увозот не успеа",
"pad.impexp.copypaste": "Прекопирајте", "pad.impexp.copypaste": "Прекопирајте",
"pad.impexp.exportdisabled": "Извозот во форматот {{type}} е оневозможен. Ако сакате да дознаете повеќе за ова, обратете се кај системскиот администратор." "pad.impexp.exportdisabled": "Извозот во форматот {{type}} е оневозможен. Ако сакате да дознаете повеќе за ова, обратете се кај системскиот администратор.",
"pad.impexp.maxFileSize": "Податотеката е преголема. Обратете се кај администраторот за да ви ја зголеми допуштената големина за увоз на податотеки",
"pad.impexp.permission": "Увозот е оневозможен бидејќи досега немате придонеси во тетраткава. Направете барем еден придонес пред да увезувате"
} }

View file

@ -54,7 +54,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Du kan bare importere fra ren tekst eller HTML-formater. For mer avanserte importfunksjoner, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installer AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Du kan bare importere fra ren tekst eller HTML-formater. For mer avanserte importfunksjoner, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installer AbiWord eller LibreOffice</a>.",
"pad.modals.connected": "Tilkoblet.", "pad.modals.connected": "Tilkoblet.",
"pad.modals.reconnecting": "Kobler til din blokk på nytt...", "pad.modals.reconnecting": "Kobler til din blokk på nytt...",
"pad.modals.forcereconnect": "Tving gjenoppkobling", "pad.modals.forcereconnect": "Tving gjenoppkobling",
@ -122,7 +122,7 @@
"pad.userlist.guest": "Gjest", "pad.userlist.guest": "Gjest",
"pad.userlist.deny": "Nekt", "pad.userlist.deny": "Nekt",
"pad.userlist.approve": "Godkjenn", "pad.userlist.approve": "Godkjenn",
"pad.editbar.clearcolors": "Fjern forfatterfarger på hele dokumentet?", "pad.editbar.clearcolors": "Fjern forfatterfarger på hele dokumentet? Dette kan ikke angres",
"pad.impexp.importbutton": "Importer nå", "pad.impexp.importbutton": "Importer nå",
"pad.impexp.importing": "Importerer...", "pad.impexp.importing": "Importerer...",
"pad.impexp.confirmimport": "Importering av en fil vil overskrive den nåværende teksten på blokken. Er du sikker på at du vil fortsette?", "pad.impexp.confirmimport": "Importering av en fil vil overskrive den nåværende teksten på blokken. Er du sikker på at du vil fortsette?",
@ -131,5 +131,7 @@
"pad.impexp.uploadFailed": "Opplastning feilet. Prøv igjen", "pad.impexp.uploadFailed": "Opplastning feilet. Prøv igjen",
"pad.impexp.importfailed": "Import feilet", "pad.impexp.importfailed": "Import feilet",
"pad.impexp.copypaste": "Vennligst kopier og lim inn", "pad.impexp.copypaste": "Vennligst kopier og lim inn",
"pad.impexp.exportdisabled": "Eksporterer som {{type}} er deaktivert. Vennligst kontakt din systemadministrator for detaljer." "pad.impexp.exportdisabled": "Eksporterer som {{type}} er deaktivert. Vennligst kontakt din systemadministrator for detaljer.",
"pad.impexp.maxFileSize": "Filen er for stor. Kontakt systemansvarlig for å øke filstørrelse for import",
"pad.impexp.permission": "Import er deaktivert fordi du aldri har bidratt til denne padden. Vennligst bidra minst en gang før du importerer"
} }

View file

@ -65,7 +65,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Só é possível importar texto sem formatação ou HTML. Para obter funcionalidades de importação mais avançadas, por favor <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instale o AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Só é possível importar texto sem formatação ou HTML. Para obter funcionalidades de importação mais avançadas, por favor <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instale o AbiWordor ou LibreOffice</a>.",
"pad.modals.connected": "Conectado.", "pad.modals.connected": "Conectado.",
"pad.modals.reconnecting": "Reconectando à sua nota...", "pad.modals.reconnecting": "Reconectando à sua nota...",
"pad.modals.forcereconnect": "Forçar reconexão", "pad.modals.forcereconnect": "Forçar reconexão",
@ -133,7 +133,7 @@
"pad.userlist.guest": "Convidado", "pad.userlist.guest": "Convidado",
"pad.userlist.deny": "Negar", "pad.userlist.deny": "Negar",
"pad.userlist.approve": "Aprovar", "pad.userlist.approve": "Aprovar",
"pad.editbar.clearcolors": "Deseja limpar cores de autoria em todo o documento?", "pad.editbar.clearcolors": "Limpar as cores de autoria em todo o documento? isto não pode ser anulado",
"pad.impexp.importbutton": "Importar agora", "pad.impexp.importbutton": "Importar agora",
"pad.impexp.importing": "Importando...", "pad.impexp.importing": "Importando...",
"pad.impexp.confirmimport": "Importar um arquivo sobrescreverá o texto atual da nota. Tem certeza de que deseja prosseguir?", "pad.impexp.confirmimport": "Importar um arquivo sobrescreverá o texto atual da nota. Tem certeza de que deseja prosseguir?",
@ -142,5 +142,7 @@
"pad.impexp.uploadFailed": "O envio falhou. Tente outra vez", "pad.impexp.uploadFailed": "O envio falhou. Tente outra vez",
"pad.impexp.importfailed": "A importação falhou", "pad.impexp.importfailed": "A importação falhou",
"pad.impexp.copypaste": "Copie e cole", "pad.impexp.copypaste": "Copie e cole",
"pad.impexp.exportdisabled": "A exportação em formato {{type}} está desativada. Comunique-se com o administrador do sistema para detalhes." "pad.impexp.exportdisabled": "A exportação em formato {{type}} está desativada. Comunique-se com o administrador do sistema para detalhes.",
"pad.impexp.maxFileSize": "Arquivo muito grande. Entre em contato com o administrador do site para aumentar o tamanho do arquivo permitido para importação",
"pad.impexp.permission": "A importação está desativada porque você nunca contribuiu para este bloco. Contribua pelo menos uma vez antes de importar"
} }

View file

@ -7,6 +7,7 @@
"Imperadeiro98", "Imperadeiro98",
"Luckas", "Luckas",
"Macofe", "Macofe",
"Mansil alfalb",
"Ti4goc", "Ti4goc",
"Tuliouel", "Tuliouel",
"Waldir", "Waldir",
@ -59,7 +60,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Só é possível importar texto sem formatação ou HTML. Para obter funcionalidades de importação mais avançadas, por favor <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instale o AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Só pode importar texto sem formatação ou formatos HTML. Para funcionalidades de importação mais avançadas, por favor, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instale o AbiWord ou LibreOffice</a>.",
"pad.modals.connected": "Ligado.", "pad.modals.connected": "Ligado.",
"pad.modals.reconnecting": "A restabelecer ligação ao seu bloco…", "pad.modals.reconnecting": "A restabelecer ligação ao seu bloco…",
"pad.modals.forcereconnect": "Forçar restabelecimento de ligação", "pad.modals.forcereconnect": "Forçar restabelecimento de ligação",
@ -127,7 +128,7 @@
"pad.userlist.guest": "Convidado", "pad.userlist.guest": "Convidado",
"pad.userlist.deny": "Negar", "pad.userlist.deny": "Negar",
"pad.userlist.approve": "Aprovar", "pad.userlist.approve": "Aprovar",
"pad.editbar.clearcolors": "Deseja limpar as cores de autoria em todo o documento?", "pad.editbar.clearcolors": "Limpar as cores de autoria em todo o documento? isto não pode ser anulado",
"pad.impexp.importbutton": "Importar agora", "pad.impexp.importbutton": "Importar agora",
"pad.impexp.importing": "Importando...", "pad.impexp.importing": "Importando...",
"pad.impexp.confirmimport": "A importação de um ficheiro irá substituir o texto atual da nota. Tem certeza que deseja continuar?", "pad.impexp.confirmimport": "A importação de um ficheiro irá substituir o texto atual da nota. Tem certeza que deseja continuar?",
@ -136,5 +137,7 @@
"pad.impexp.uploadFailed": "O carregamento falhou; tente novamente, por favor", "pad.impexp.uploadFailed": "O carregamento falhou; tente novamente, por favor",
"pad.impexp.importfailed": "A importação falhou", "pad.impexp.importfailed": "A importação falhou",
"pad.impexp.copypaste": "Copie e insira, por favor", "pad.impexp.copypaste": "Copie e insira, por favor",
"pad.impexp.exportdisabled": "A exportação no formato {{type}} está desativada. Por favor, contacte o administrador do sistema para mais informações." "pad.impexp.exportdisabled": "A exportação no formato {{type}} está desativada. Por favor, contacte o administrador do sistema para mais informações.",
"pad.impexp.maxFileSize": "Ficheiro muito grande. Contacte o administrador do ''site'' para aumentar o tamanho do ficheiro permitido para importar",
"pad.impexp.permission": "A importação está desativada porque nunca contribuiu para este bloco. Por favor, contribua pelo menos uma vez antes de importar"
} }

View file

@ -59,7 +59,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (документ OpenOffice)", "pad.importExport.exportopen": "ODF (документ OpenOffice)",
"pad.importExport.abiword.innerHTML": "Вы можете импортировать только из обычного текста или HTML. Для более продвинутых функций импорта, пожалуйста,\n <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">установите AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Вы можете импортировать только из обычного текста или HTML. Для более продвинутых функций импорта <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">установите AbiWord или LibreOffice</a>.",
"pad.modals.connected": "Подключен.", "pad.modals.connected": "Подключен.",
"pad.modals.reconnecting": "Повторное подключение к вашему документу", "pad.modals.reconnecting": "Повторное подключение к вашему документу",
"pad.modals.forcereconnect": "Принудительное переподключение", "pad.modals.forcereconnect": "Принудительное переподключение",
@ -127,7 +127,7 @@
"pad.userlist.guest": "Гость", "pad.userlist.guest": "Гость",
"pad.userlist.deny": "Отклонить", "pad.userlist.deny": "Отклонить",
"pad.userlist.approve": "Утвердить", "pad.userlist.approve": "Утвердить",
"pad.editbar.clearcolors": "Очистить авторские цвета во всем документе?", "pad.editbar.clearcolors": "Очистить авторские цвета во всем документе? Это действие не может быть отменено.",
"pad.impexp.importbutton": "Импортировать сейчас", "pad.impexp.importbutton": "Импортировать сейчас",
"pad.impexp.importing": "Импортирование…", "pad.impexp.importing": "Импортирование…",
"pad.impexp.confirmimport": "Импорт файла перезапишет текущий текст. Вы уверены, что вы хотите продолжить?", "pad.impexp.confirmimport": "Импорт файла перезапишет текущий текст. Вы уверены, что вы хотите продолжить?",
@ -136,5 +136,7 @@
"pad.impexp.uploadFailed": "Загрузка не удалась, пожалуйста, попробуйте ещё раз", "pad.impexp.uploadFailed": "Загрузка не удалась, пожалуйста, попробуйте ещё раз",
"pad.impexp.importfailed": "Ошибка при импорте", "pad.impexp.importfailed": "Ошибка при импорте",
"pad.impexp.copypaste": "Пожалуйста, скопируйте", "pad.impexp.copypaste": "Пожалуйста, скопируйте",
"pad.impexp.exportdisabled": "Экспорт в формате {{type}} отключён. Для подробной информации обратитесь к системному администратору." "pad.impexp.exportdisabled": "Экспорт в формате {{type}} отключён. Для подробной информации обратитесь к системному администратору.",
"pad.impexp.maxFileSize": "Файл слишком большой. Обратитесь к администратору сайта, чтобы увеличить разрешённый размер файла для импорта",
"pad.impexp.permission": "Импорт отключен, поскольку вы никогда не вносили вклад в этот документ. Пожалуйста, внесите свой вклад хотя бы один раз перед импортом"
} }

View file

@ -56,7 +56,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Једино можете увести са једноставног текстуалног формата или HTML формата. За компликованије функције о увозу, молимо да <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">инсталирате AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Једино можете увести са једноставног текстуалног формата или HTML формата. За компликованије функције о увозу, молимо да <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">инсталирате AbiWord или LibreOffice</a>.",
"pad.modals.connected": "Повезано.", "pad.modals.connected": "Повезано.",
"pad.modals.reconnecting": "Поново се повезујем на ваш пад..", "pad.modals.reconnecting": "Поново се повезујем на ваш пад..",
"pad.modals.forcereconnect": "Присилно се поново повежи", "pad.modals.forcereconnect": "Присилно се поново повежи",
@ -124,7 +124,7 @@
"pad.userlist.guest": "Гост", "pad.userlist.guest": "Гост",
"pad.userlist.deny": "Одбиј", "pad.userlist.deny": "Одбиј",
"pad.userlist.approve": "Одобри", "pad.userlist.approve": "Одобри",
"pad.editbar.clearcolors": "Очисти ауторске боје за цели документ?", "pad.editbar.clearcolors": "Очисти ауторске боје за цели документ? Ово се не може поништити.",
"pad.impexp.importbutton": "Увези одмах", "pad.impexp.importbutton": "Увези одмах",
"pad.impexp.importing": "Увозим...", "pad.impexp.importing": "Увозим...",
"pad.impexp.confirmimport": "Увоз датотеке ће преписати тренутни текст пада. Да ли сте сигурни да желите наставити?", "pad.impexp.confirmimport": "Увоз датотеке ће преписати тренутни текст пада. Да ли сте сигурни да желите наставити?",
@ -133,5 +133,6 @@
"pad.impexp.uploadFailed": "Нисам успео да отпремим, молимо покушате поново", "pad.impexp.uploadFailed": "Нисам успео да отпремим, молимо покушате поново",
"pad.impexp.importfailed": "Нисам успео да увезем", "pad.impexp.importfailed": "Нисам успео да увезем",
"pad.impexp.copypaste": "Копирајте и залепите", "pad.impexp.copypaste": "Копирајте и залепите",
"pad.impexp.exportdisabled": "Извоз у формату {{type}} није дозвољен. Контактирајте системског администратора за детаље." "pad.impexp.exportdisabled": "Извоз у формату {{type}} није дозвољен. Контактирајте системског администратора за детаље.",
"pad.impexp.maxFileSize": "Датотека је превелика. Контактирајте администратора сајта да повећа допуштену величину датотеке за увоз."
} }

View file

@ -52,7 +52,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Du kan endast importera från oformaterad text eller HTML-format. För mer avancerade importfunktioner, var god <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installera AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Du kan endast importera från oformaterad text eller HTML-format. För mer avancerade importfunktioner, var god <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">installera AbiWord eller LibreOffice</a>.",
"pad.modals.connected": "Ansluten.", "pad.modals.connected": "Ansluten.",
"pad.modals.reconnecting": "Återansluter till ditt block...", "pad.modals.reconnecting": "Återansluter till ditt block...",
"pad.modals.forcereconnect": "Tvinga återanslutning", "pad.modals.forcereconnect": "Tvinga återanslutning",
@ -120,7 +120,7 @@
"pad.userlist.guest": "Gäst", "pad.userlist.guest": "Gäst",
"pad.userlist.deny": "Neka", "pad.userlist.deny": "Neka",
"pad.userlist.approve": "Godkänn", "pad.userlist.approve": "Godkänn",
"pad.editbar.clearcolors": "Rensa författarfärger på hela dokumentet?", "pad.editbar.clearcolors": "Rensa författarfärger för hela dokumentet? Detta kan inte ångras",
"pad.impexp.importbutton": "Importera nu", "pad.impexp.importbutton": "Importera nu",
"pad.impexp.importing": "Importerar...", "pad.impexp.importing": "Importerar...",
"pad.impexp.confirmimport": "Att importera en fil kommer att skriva över den aktuella texten i blocket. Är du säker på att du vill fortsätta?", "pad.impexp.confirmimport": "Att importera en fil kommer att skriva över den aktuella texten i blocket. Är du säker på att du vill fortsätta?",
@ -129,5 +129,7 @@
"pad.impexp.uploadFailed": "Uppladdningen misslyckades, var god försök igen", "pad.impexp.uploadFailed": "Uppladdningen misslyckades, var god försök igen",
"pad.impexp.importfailed": "Importering misslyckades", "pad.impexp.importfailed": "Importering misslyckades",
"pad.impexp.copypaste": "Var god kopiera och klistra in", "pad.impexp.copypaste": "Var god kopiera och klistra in",
"pad.impexp.exportdisabled": "Exportering av formatet {{type}} är inaktiverad. Var god kontakta din systemadministratör för mer information." "pad.impexp.exportdisabled": "Exportering av formatet {{type}} är inaktiverad. Var god kontakta din systemadministratör för mer information.",
"pad.impexp.maxFileSize": "Filen är för stor. Kontakta din systemadministratör för att öka den tillåtna filstorleken för importering",
"pad.impexp.permission": "Import är inaktiverat eftersom du aldrig har bidragit detta block. var god bidra minst en gång innan du importerar"
} }

View file

@ -59,7 +59,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Açık Doküman Biçimi)", "pad.importExport.exportopen": "ODF (Açık Doküman Biçimi)",
"pad.importExport.abiword.innerHTML": "Yalnızca düz metin ya da HTML biçimlerini içe aktarabilirsiniz. Daha fazla gelişmiş içe aktarım özellikleri için lütfen <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord yükleyin</a>.", "pad.importExport.abiword.innerHTML": "Yalnızca düz metin ya da HTML biçimlerini içe aktarabilirsiniz. Daha fazla gelişmiş içe aktarım özellikleri için lütfen <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">AbiWord veya LibreOffice yükleyin</a>.",
"pad.modals.connected": "Bağlandı.", "pad.modals.connected": "Bağlandı.",
"pad.modals.reconnecting": "Bloknotunuza tekrar bağlanılıyor...", "pad.modals.reconnecting": "Bloknotunuza tekrar bağlanılıyor...",
"pad.modals.forcereconnect": "Yeniden bağlanmaya zorla", "pad.modals.forcereconnect": "Yeniden bağlanmaya zorla",
@ -136,5 +136,7 @@
"pad.impexp.uploadFailed": "Yükleme başarısız, lütfen tekrar deneyin", "pad.impexp.uploadFailed": "Yükleme başarısız, lütfen tekrar deneyin",
"pad.impexp.importfailed": "İçe aktarım başarısız oldu", "pad.impexp.importfailed": "İçe aktarım başarısız oldu",
"pad.impexp.copypaste": "Lütfen kopyala yapıştır yapın", "pad.impexp.copypaste": "Lütfen kopyala yapıştır yapın",
"pad.impexp.exportdisabled": "{{type}} biçimiyle dışa aktarma devre dışı bırakıldı. Ayrıntılar için sistem yöneticinizle iletişime geçiniz." "pad.impexp.exportdisabled": "{{type}} biçimiyle dışa aktarma devre dışı bırakıldı. Ayrıntılar için sistem yöneticinizle iletişime geçiniz.",
"pad.impexp.maxFileSize": "Dosya çok büyük. İçe aktarma için izin verilen dosya boyutunu artırmak için site yöneticinize başvurun",
"pad.impexp.permission": "Bu ped'e hiç katkıda bulunmadığınız için içe aktarma devre dışı. Lütfen içe aktarmadan önce en az bir kez katkıda bulunun"
} }

View file

@ -59,7 +59,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (документ OpenOffice)", "pad.importExport.exportopen": "ODF (документ OpenOffice)",
"pad.importExport.abiword.innerHTML": "Ви можете імпортувати лище формати простого тексту або HTML. Для більш просунутих способів імпорту <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">встановіть AbiWord</a>.", "pad.importExport.abiword.innerHTML": "Ви можете імпортувати лише у форматі простого тексту або HTML. Для більш просунутих способів імпорту <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">встановіть AbiWord або LibreOffice</a>.",
"pad.modals.connected": "З'єднано.", "pad.modals.connected": "З'єднано.",
"pad.modals.reconnecting": "Перепідлючення до Вашого документа..", "pad.modals.reconnecting": "Перепідлючення до Вашого документа..",
"pad.modals.forcereconnect": "Примусове перепідключення", "pad.modals.forcereconnect": "Примусове перепідключення",
@ -136,5 +136,7 @@
"pad.impexp.uploadFailed": "Завантаження не вдалось, будь ласка, спробуйте знову", "pad.impexp.uploadFailed": "Завантаження не вдалось, будь ласка, спробуйте знову",
"pad.impexp.importfailed": "Помилка при імпортуванні", "pad.impexp.importfailed": "Помилка при імпортуванні",
"pad.impexp.copypaste": "Будь ласка, скопіюйте та вставте", "pad.impexp.copypaste": "Будь ласка, скопіюйте та вставте",
"pad.impexp.exportdisabled": "Експорт у формат {{type}} вимкнено. Будь ласка, зв'яжіться із Вашим системним адміністратором за деталями." "pad.impexp.exportdisabled": "Експорт у формат {{type}} вимкнено. Будь ласка, зв'яжіться із Вашим системним адміністратором за деталями.",
"pad.impexp.maxFileSize": "Файл завеликий. Зверніться до адміністратора сайту для збільшення максимально дозволеного розміру файлів для імпорту",
"pad.impexp.permission": "Імпорт є вимкненим, оскільки ви ніколи не працювали із цим документом. Будь ласка, відредагуйте хоча б раз перед тим, як зробити імпорт"
} }

View file

@ -7,7 +7,7 @@
"index.newPad": "Novo Pad", "index.newPad": "Novo Pad",
"index.createOpenPad": "O creare o verxare on Pad co'l nome:", "index.createOpenPad": "O creare o verxare on Pad co'l nome:",
"pad.toolbar.bold.title": "Groseto (Ctrl-B)", "pad.toolbar.bold.title": "Groseto (Ctrl-B)",
"pad.toolbar.italic.title": "Corsivo (Ctrl-I)", "pad.toolbar.italic.title": "Corivo (Ctrl-I)",
"pad.toolbar.underline.title": "Sotolineà (Ctrl-U)", "pad.toolbar.underline.title": "Sotolineà (Ctrl-U)",
"pad.toolbar.strikethrough.title": "Barà (Ctrl+5)", "pad.toolbar.strikethrough.title": "Barà (Ctrl+5)",
"pad.toolbar.ol.title": "Ełenco numarà (Ctrl+Shift+N)", "pad.toolbar.ol.title": "Ełenco numarà (Ctrl+Shift+N)",

View file

@ -58,7 +58,7 @@
"pad.importExport.exportword": "Microsoft Word", "pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF", "pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF開放文件格式", "pad.importExport.exportopen": "ODF開放文件格式",
"pad.importExport.abiword.innerHTML": "您只可以從純文字或 HTML 格式檔匯入。<a href=\"ttps://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">安裝\n AbiWord </a>以取得更多進階的匯入功能。", "pad.importExport.abiword.innerHTML": "您只可以從純文字或 HTML 格式檔匯入。<a href=\"ttps://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">安裝\n AbiWord 或是 LibreOffice</a> 以取得更多進階的匯入功能。",
"pad.modals.connected": "已連線。", "pad.modals.connected": "已連線。",
"pad.modals.reconnecting": "重新連線到您的記事本…", "pad.modals.reconnecting": "重新連線到您的記事本…",
"pad.modals.forcereconnect": "強制重新連線", "pad.modals.forcereconnect": "強制重新連線",
@ -135,5 +135,7 @@
"pad.impexp.uploadFailed": "上載失敗,請重試", "pad.impexp.uploadFailed": "上載失敗,請重試",
"pad.impexp.importfailed": "匯入失敗", "pad.impexp.importfailed": "匯入失敗",
"pad.impexp.copypaste": "請複製貼上", "pad.impexp.copypaste": "請複製貼上",
"pad.impexp.exportdisabled": "{{type}}格式的匯出被禁用。有關詳情,請與您的系統管理員聯繫。" "pad.impexp.exportdisabled": "{{type}}格式的匯出被禁用。有關詳情,請與您的系統管理員聯繫。",
"pad.impexp.maxFileSize": "檔案太大。請聯絡您的網站管理員來增加用於匯入的允許檔案大小。",
"pad.impexp.permission": "因為您已沒在此記事本上貢獻,匯入功能已停用。在進行匯入之前,至少要做出一次貢獻"
} }

View file

@ -1076,6 +1076,7 @@ async function handleClientReady(client, message)
var clientVars = { var clientVars = {
"skinName": settings.skinName, "skinName": settings.skinName,
"skinVariants": settings.skinVariants, "skinVariants": settings.skinVariants,
"randomVersionString": settings.randomVersionString,
"accountPrivs": { "accountPrivs": {
"maxRevisions": 100 "maxRevisions": 100
}, },

View file

@ -426,17 +426,17 @@ function compressCSS(filename, content, callback)
/* /*
* Changes done to migrate CleanCSS 3.x -> 4.x: * Changes done to migrate CleanCSS 3.x -> 4.x:
* *
* 1. Disabling rebase is necessary because otherwise the URLs for the web * 1. Rework the rebase logic, because the API was simplified (but we have
* fonts become wrong. * less control now). See:
* https://github.com/jakubpawlowicz/clean-css/blob/08f3a74925524d30bbe7ac450979de0a8a9e54b2/README.md#important-40-breaking-changes
* *
* EXAMPLE 1: * EXAMPLE:
* /static/css/src/static/font/fontawesome-etherpad.woff * The URLs contained in a CSS file (including all the stylesheets
* instead of * imported by it) residing on disk at:
* /static/font/fontawesome-etherpad.woff * /home/muxator/etherpad/src/static/css/pad.css
* EXAMPLE 2 (this is more surprising): *
* /p/src/static/font/opendyslexic.otf * Will be rewritten rebasing them to:
* instead of * /home/muxator/etherpad/src/static/css
* /static/font/opendyslexic.otf
* *
* 2. CleanCSS.minify() can either receive a string containing the CSS, or * 2. CleanCSS.minify() can either receive a string containing the CSS, or
* an array of strings. In that case each array element is interpreted as * an array of strings. In that case each array element is interpreted as
@ -447,7 +447,13 @@ function compressCSS(filename, content, callback)
* "content" argument, but we have to wrap the absolute path to the CSS * "content" argument, but we have to wrap the absolute path to the CSS
* in an array and ask the library to read it by itself. * in an array and ask the library to read it by itself.
*/ */
new CleanCSS({rebase: false}).minify([absPath], function (errors, minified) {
const basePath = path.dirname(absPath);
new CleanCSS({
rebase: true,
rebaseTo: basePath,
}).minify([absPath], function (errors, minified) {
if (errors) { if (errors) {
// on error, just yield the un-minified original, but write a log message // on error, just yield the un-minified original, but write a log message
console.error(`CleanCSS.minify() returned an error on ${filename} (${absPath}): ${errors}`); console.error(`CleanCSS.minify() returned an error on ${filename} (${absPath}): ${errors}`);

View file

@ -42,6 +42,20 @@ var _ = require("underscore");
exports.root = absolutePaths.findEtherpadRoot(); exports.root = absolutePaths.findEtherpadRoot();
console.log(`All relative paths will be interpreted relative to the identified Etherpad base dir: ${exports.root}`); console.log(`All relative paths will be interpreted relative to the identified Etherpad base dir: ${exports.root}`);
/*
* At each start, Etherpad generates a random string and appends it as query
* parameter to the URLs of the static assets, in order to force their reload.
* Subsequent requests will be cached, as long as the server is not reloaded.
*
* For the rationale behind this choice, see
* https://github.com/ether/etherpad-lite/pull/3958
*
* ACHTUNG: this may prevent caching HTTP proxies to work
* TODO: remove the "?v=randomstring" parameter, and replace with hashed filenames instead
*/
exports.randomVersionString = randomString(4);
console.log(`Random string used for versioning assets: ${exports.randomVersionString}`);
/** /**
* The app title, visible e.g. in the browser window * The app title, visible e.g. in the browser window
*/ */

14
src/package-lock.json generated
View file

@ -1,6 +1,6 @@
{ {
"name": "ep_etherpad-lite", "name": "ep_etherpad-lite",
"version": "1.8.0", "version": "1.8.4",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@ -413,9 +413,9 @@
"integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
}, },
"@types/node": { "@types/node": {
"version": "13.13.4", "version": "13.13.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.4.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.5.tgz",
"integrity": "sha512-x26ur3dSXgv5AwKS0lNfbjpCakGIduWU1DU91Zz58ONRWrIKGunmZBNv4P7N+e27sJkiGDsw/3fT4AtsqQBrBA==" "integrity": "sha512-3ySmiBYJPqgjiHA7oEaIo2Rzz0HrOZ7yrNO5HWyaE5q0lQ3BppDZ3N53Miz8bw2I7gh1/zir2MGVZBvpb1zq9g=="
}, },
"@types/request": { "@types/request": {
"version": "2.48.4", "version": "2.48.4",
@ -7334,9 +7334,9 @@
} }
}, },
"ueberdb2": { "ueberdb2": {
"version": "0.4.5", "version": "0.4.9",
"resolved": "https://registry.npmjs.org/ueberdb2/-/ueberdb2-0.4.5.tgz", "resolved": "https://registry.npmjs.org/ueberdb2/-/ueberdb2-0.4.9.tgz",
"integrity": "sha512-D8TogZ6Dc4Ot909b0D0QQRSanVB3W4EtqA8smKEZS7H5eIbAWFOyBF74XADIB9f+NASSjdu8DU3EJeKe9Xdzjg==", "integrity": "sha512-ZP7jhNtc7N3qogp9EYqBffC55KaxGZH3AgupzMh01DUr/E8QV2BU4THBpUVVJUGgoSBU8XxTkTMY9GOakJUTyA==",
"requires": { "requires": {
"async": "^3.2.0", "async": "^3.2.0",
"cassandra-driver": "^4.5.0", "cassandra-driver": "^4.5.0",

View file

@ -61,7 +61,7 @@
"slide": "1.1.6", "slide": "1.1.6",
"socket.io": "2.1.1", "socket.io": "2.1.1",
"tinycon": "0.0.1", "tinycon": "0.0.1",
"ueberdb2": "0.4.5", "ueberdb2": "0.4.9",
"uglify-js": "3.8.1", "uglify-js": "3.8.1",
"underscore": "1.8.3", "underscore": "1.8.3",
"unorm": "1.4.1" "unorm": "1.4.1"
@ -87,6 +87,6 @@
"test": "nyc mocha --timeout 5000 ../tests/backend/specs/api", "test": "nyc mocha --timeout 5000 ../tests/backend/specs/api",
"test-container": "nyc mocha --timeout 5000 ../tests/container/specs/api" "test-container": "nyc mocha --timeout 5000 ../tests/container/specs/api"
}, },
"version": "1.8.3", "version": "1.8.4",
"license": "Apache-2.0" "license": "Apache-2.0"
} }

View file

@ -222,7 +222,7 @@ pre {
word-wrap: break-word; word-wrap: break-word;
} }
@media (max-width: 720px) { @media (max-width: 800px) {
div.innerwrapper { div.innerwrapper {
padding: 0 15px 15px 15px; padding: 0 15px 15px 15px;
} }

View file

@ -28,12 +28,43 @@ html.inner-editor {
padding: 10px; padding: 10px;
overflow: hidden; overflow: hidden;
background-color: white; background-color: white;
/* Be careful editing following rules. Longs words should not overflow, ep_align justify should work,
Test on chrome, firefox and safari... Copy / Paste a word inside a sentence should not add line-breaks
and preserve the style */
display: block; /* for safari and firefox, otherwise the break-word does not work */
white-space: normal;
word-wrap: break-word;
overflow-wrap: break-word;
} }
#innerdocbody, #sidediv { #innerdocbody, #sidediv {
padding-top: 10px; /* Both must have same top padding, so line number are aligned with the rows */ padding-top: 10px; /* Both must have same top padding, so line number are aligned with the rows */
padding-bottom: 10px; /* some space when we scroll to the bottom */ padding-bottom: 10px; /* some space when we scroll to the bottom */
} }
#innerdocbody a {
color: #2e96f3;
}
#innerdocbody.authorColors [class^='author-'] a {
color: inherit;
}
#innerdocbody span {
line-height: 125%;
padding: 6px 0 !important;
}
option {
text-transform: capitalize;
}
#innerdocbody h1,
#innerdocbody h2,
#innerdocbody h3,
#innerdocbody h4 {
margin-bottom: .5em;
}
/* --------------------- */ /* --------------------- */
/* -- BROWSER SUPPORT -- */ /* -- BROWSER SUPPORT -- */
/* --------------------- */ /* --------------------- */
@ -44,39 +75,6 @@ body.mozilla, body.safari {
.safari div { .safari div {
padding-right: 1px; /* prevents the caret from disappearing on the longest line of the doc */ padding-right: 1px; /* prevents the caret from disappearing on the longest line of the doc */
} }
span { line-height: 125%; }
/* -------------- */
/* -- WRAPPING -- */
/* -------------- */
body {
white-space: nowrap;
word-wrap: normal;
}
body.doesWrap {
display: block !important;
/* white-space: pre-wrap; */
/*
Must be pre-wrap to keep trailing spaces. Otherwise you get a zombie caret,
walking around your screen (see #1766).
WARNING: Enabling this causes Paste as plain text in Chrome to remove line breaks
this is probably undesirable
WARNING: This causes copy & paste events to lose bold etc. attributes
NOTE: The walking-zombie caret issue seems to have been fixed in FF upstream
so let's try diabling pre-wrap and see how we get on now.
For more details see: https://github.com/ether/etherpad-lite/issues/2574
*/
word-wrap: break-word; /* fix for issue #1648 - firefox not wrapping long lines (without spaces) correctly */
}
.noprewrap{
white-space: normal;
}
body.doesWrap:not(.noprewrap) > div {
/* Related to #1766 */
white-space: pre-wrap;
}
/* ------------------------------------------ */ /* ------------------------------------------ */
@ -84,13 +82,14 @@ body.doesWrap:not(.noprewrap) > div {
/* ------------------------------------------ */ /* ------------------------------------------ */
#sidediv { #sidediv {
font-size: 11px;
font-family: monospace;
padding-right: 5px;
padding-left: 12px;
background-color: transparent; background-color: transparent;
border-right: 1px solid #ccc; border-right: 1px solid #ccc;
} }
#sidediv .line-number {
font-size: 9px;
padding: 0 10px;
font-family: monospace;
}
#sidedivinner { #sidedivinner {
text-align: right; text-align: right;
opacity: .9; opacity: .9;
@ -98,12 +97,8 @@ body.doesWrap:not(.noprewrap) > div {
#sidediv:not(.sidedivdelayed) { /* before sidediv get initialized, hide text */ #sidediv:not(.sidedivdelayed) { /* before sidediv get initialized, hide text */
color: transparent; color: transparent;
} }
#sidediv.sidedivhidden { .line-numbers-hidden #sidediv .line-number {
/* Do not use display: none to hide the sidediv, otherwise the parent container does not display: none;
get its height properly calculated by flexboxes */
visibility: hidden;
width: 0;
padding: 0;
} }
#linemetricsdiv { #linemetricsdiv {
position: absolute; position: absolute;
@ -114,7 +109,7 @@ body.doesWrap:not(.noprewrap) > div {
font-size: 12px; /* overridden by lineMetricsDiv.style */ font-size: 12px; /* overridden by lineMetricsDiv.style */
font-family: monospace; /* overridden by lineMetricsDiv.style */ font-family: monospace; /* overridden by lineMetricsDiv.style */
} }
@media (max-width: 720px) { @media (max-width: 800px) {
#sidediv { #sidediv {
/* Do not use display: none to hide the sidediv, otherwise the parent container does not /* Do not use display: none to hide the sidediv, otherwise the parent container does not
get its height properly calculated by flexboxes */ get its height properly calculated by flexboxes */
@ -139,7 +134,6 @@ body.doesWrap:not(.noprewrap) > div {
} }
#innerdocbody a { #innerdocbody a {
cursor: pointer !important; cursor: pointer !important;
white-space:pre-wrap;
} }
body.grayedout { body.grayedout {
background-color: #eee !important background-color: #eee !important

View file

@ -152,7 +152,7 @@
display: none; display: none;
} }
@media only screen and (max-width: 720px) { @media only screen and (max-width: 800px) {
#chatbox { #chatbox {
right: 0; right: 0;
bottom: 0; bottom: 0;

View file

@ -32,8 +32,10 @@ select, .nice-select {
.nice-select:hover { .nice-select:hover {
border-color: #dbdbdb; border-color: #dbdbdb;
} }
.nice-select:active,.nice-select.open,.nice-select:focus { .nice-select .current {
/*border-color: #999;*/ width: 90px;
display: inline-block;
overflow: hidden;
} }
.nice-select:after { .nice-select:after {
border-bottom: 2px solid #999; border-bottom: 2px solid #999;

View file

@ -14,13 +14,15 @@
.gritter-item.popup { .gritter-item.popup {
position: relative; position: relative;
max-width: 450px;
visibility: visible; visibility: visible;
right: auto !important; right: auto !important;
left: auto !important; left: auto !important;
top: auto; top: auto;
bottom: auto; bottom: auto;
} }
.gritter-item.popup:not(.error) {
max-width: 450px;
}
.gritter-item .popup-content { .gritter-item .popup-content {
display: flex; display: flex;
@ -40,7 +42,7 @@
background-color: #eed3d4; background-color: #eed3d4;
} }
@media (max-width: 720px) { @media (max-width: 800px) {
#gritter-container { #gritter-container {
left: 1rem; left: 1rem;
right: 1rem; right: 1rem;

View file

@ -29,6 +29,9 @@ body {
height: auto; height: auto;
flex: 1 auto; flex: 1 auto;
} }
#editorcontainerbox #editorcontainer:not(.initialized) {
visibility: hidden;
}
#editorcontainerbox #editorcontainer iframe { #editorcontainerbox #editorcontainer iframe {
width: 100%; width: 100%;
height: auto; height: auto;
@ -44,7 +47,7 @@ body {
width: 0; /* hide when the container is empty */ width: 0; /* hide when the container is empty */
} }
@media only screen and (max-width: 720px) { @media only screen and (max-width: 800px) {
#editorcontainerbox { #editorcontainerbox {
margin-bottom: 39px; /* Leave space for the bottom toolbar on mobile */ margin-bottom: 39px; /* Leave space for the bottom toolbar on mobile */
} }

View file

@ -62,7 +62,7 @@
} }
/* Mobile devices */ /* Mobile devices */
@media only screen and (max-width: 720px) { @media only screen and (max-width: 800px) {
.popup { .popup {
border-radius: 0; border-radius: 0;
top: 1rem; top: 1rem;

View file

@ -98,7 +98,7 @@ input#myusernameedit:not(.editable) {
right: calc(100% + 15px); right: calc(100% + 15px);
z-index: 101; z-index: 101;
} }
@media (max-width: 720px) { @media (max-width: 800px) {
#mycolorpicker.popup { #mycolorpicker.popup {
top: auto; top: auto;
bottom: 0; bottom: 0;

View file

@ -135,7 +135,7 @@
overflow: visible; overflow: visible;
} }
@media only screen and (max-width: 720px) { @media only screen and (max-width: 800px) {
.toolbar ul li.separator { .toolbar ul li.separator {
width: 5px; width: 5px;
} }

View file

@ -2,9 +2,6 @@
padding: 10px; padding: 10px;
display: block; display: block;
} }
#innerdocbody {
margin: 0 auto;
}
.timeslider-bar { .timeslider-bar {
display: flex; display: flex;
@ -128,10 +125,11 @@
white-space: normal; white-space: normal;
word-break: break-word; word-break: break-word;
width: 100%; width: 100%;
height: 100%; margin: 0 auto;
height: auto;
} }
@media (max-width: 720px) { @media (max-width: 800px) {
#timeslider-slider #timer { display: none; } #timeslider-slider #timer { display: none; }
.editbarright [data-key="timeslider_returnToPad"] { .editbarright [data-key="timeslider_returnToPad"] {

View file

@ -237,7 +237,7 @@ function Ace2Editor()
// disableCustomScriptsAndStyles can be used to disable loading of custom scripts // disableCustomScriptsAndStyles can be used to disable loading of custom scripts
if(!clientVars.disableCustomScriptsAndStyles){ if(!clientVars.disableCustomScriptsAndStyles){
$$INCLUDE_CSS("../static/css/pad.css"); $$INCLUDE_CSS("../static/css/pad.css?v=" + clientVars.randomVersionString);
} }
var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){ var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){
@ -247,7 +247,7 @@ function Ace2Editor()
return '../static/plugins/' + path; return '../static/plugins/' + path;
}); });
includedCSS = includedCSS.concat(additionalCSS); includedCSS = includedCSS.concat(additionalCSS);
$$INCLUDE_CSS("../static/skins/" + clientVars.skinName + "/pad.css"); $$INCLUDE_CSS("../static/skins/" + clientVars.skinName + "/pad.css?v=" + clientVars.randomVersionString);
pushStyleTagsFor(iframeHTML, includedCSS); pushStyleTagsFor(iframeHTML, includedCSS);
@ -321,7 +321,7 @@ window.onload = function () {\n\
var includedCSS = []; var includedCSS = [];
var $$INCLUDE_CSS = function(filename) {includedCSS.push(filename)}; var $$INCLUDE_CSS = function(filename) {includedCSS.push(filename)};
$$INCLUDE_CSS("../static/css/iframe_editor.css"); $$INCLUDE_CSS("../static/css/iframe_editor.css");
$$INCLUDE_CSS("../static/css/pad.css"); $$INCLUDE_CSS("../static/css/pad.css?v=" + clientVars.randomVersionString);
var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){ var additionalCSS = _(hooks.callAll("aceEditorCSS")).map(function(path){
@ -331,7 +331,7 @@ window.onload = function () {\n\
return '../static/plugins/' + path } return '../static/plugins/' + path }
); );
includedCSS = includedCSS.concat(additionalCSS); includedCSS = includedCSS.concat(additionalCSS);
$$INCLUDE_CSS("../static/skins/" + clientVars.skinName + "/pad.css"); $$INCLUDE_CSS("../static/skins/" + clientVars.skinName + "/pad.css?v=" + clientVars.randomVersionString);
pushStyleTagsFor(outerHTML, includedCSS); pushStyleTagsFor(outerHTML, includedCSS);

View file

@ -249,7 +249,6 @@ function Ace2Inner(){
var authorStyle = dynamicCSS.selectorStyle(authorSelector); var authorStyle = dynamicCSS.selectorStyle(authorSelector);
var parentAuthorStyle = parentDynamicCSS.selectorStyle(authorSelector); var parentAuthorStyle = parentDynamicCSS.selectorStyle(authorSelector);
var anchorStyle = dynamicCSS.selectorStyle(authorSelector + ' > a')
// author color // author color
authorStyle.backgroundColor = bgcolor; authorStyle.backgroundColor = bgcolor;
@ -258,14 +257,6 @@ function Ace2Inner(){
var textColor = colorutils.textColorFromBackgroundColor(bgcolor, parent.parent.clientVars.skinName); var textColor = colorutils.textColorFromBackgroundColor(bgcolor, parent.parent.clientVars.skinName);
authorStyle.color = textColor; authorStyle.color = textColor;
parentAuthorStyle.color = textColor; parentAuthorStyle.color = textColor;
// anchor text contrast
if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.55)
{
anchorStyle.color = colorutils.triple2css(colorutils.complementary(colorutils.css2triple(bgcolor)));
}else{
anchorStyle.color = null;
}
} }
} }
} }
@ -965,8 +956,7 @@ function Ace2Inner(){
showsuserselections: setClassPresenceNamed(root, "userSelections"), showsuserselections: setClassPresenceNamed(root, "userSelections"),
showslinenumbers : function(value){ showslinenumbers : function(value){
hasLineNumbers = !! value; hasLineNumbers = !! value;
setClassPresence(sideDiv, "sidedivhidden", !hasLineNumbers); setClassPresence(sideDiv.parentNode, "line-numbers-hidden", !hasLineNumbers);
setClassPresence(sideDiv.parentNode, "sidediv-hidden", !hasLineNumbers);
fixView(); fixView();
}, },
grayedout: setClassPresenceNamed(outerWin.document.body, "grayedout"), grayedout: setClassPresenceNamed(outerWin.document.body, "grayedout"),
@ -5284,7 +5274,7 @@ function Ace2Inner(){
function initLineNumbers() function initLineNumbers()
{ {
lineNumbersShown = 1; lineNumbersShown = 1;
sideDiv.innerHTML = '<div id="sidedivinner" class="sidedivinner"><div>1</div></div>'; sideDiv.innerHTML = '<div id="sidedivinner" class="sidedivinner"><div><span class="line-number">1</span></div></div>';
sideDivInner = outerWin.document.getElementById("sidedivinner"); sideDivInner = outerWin.document.getElementById("sidedivinner");
$(sideDiv).addClass("sidediv"); $(sideDiv).addClass("sidediv");
} }
@ -5361,7 +5351,7 @@ function Ace2Inner(){
div.style.height = h +"px"; div.style.height = h +"px";
} }
div.appendChild(odoc.createTextNode(String(n))); $(div).append($("<span class='line-number'>" + String(n) + "</span>"));
fragment.appendChild(div); fragment.appendChild(div);
if(b){ if(b){
b = b.nextSibling; b = b.nextSibling;

View file

@ -573,6 +573,8 @@ var pad = {
mobileMatch.addListener(checkChatAndUsersVisibility); // check if window resized mobileMatch.addListener(checkChatAndUsersVisibility); // check if window resized
setTimeout(function() { checkChatAndUsersVisibility(mobileMatch); }, 0); // check now after load setTimeout(function() { checkChatAndUsersVisibility(mobileMatch); }, 0); // check now after load
$('#editorcontainer').addClass('initialized');
hooks.aCallAll("postAceInit", {ace: padeditor.ace, pad: pad}); hooks.aCallAll("postAceInit", {ace: padeditor.ace, pad: pad});
} }
}, },

View file

@ -20,6 +20,7 @@
* limitations under the License. * limitations under the License.
*/ */
var browser = require('./browser');
var hooks = require('./pluginfw/hooks'); var hooks = require('./pluginfw/hooks');
var padutils = require('./pad_utils').padutils; var padutils = require('./pad_utils').padutils;
var padeditor = require('./pad_editor').padeditor; var padeditor = require('./pad_editor').padeditor;
@ -170,7 +171,15 @@ var padeditbar = (function()
ace: padeditor.ace ace: padeditor.ace
}); });
$('select').niceSelect(); /*
* On safari, the dropdown in the toolbar gets hidden because of toolbar
* overflow:hidden property. This is a bug from Safari: any children with
* position:fixed (like the dropdown) should be displayed no matter
* overflow:hidden on parent
*/
if (!browser.safari) {
$('select').niceSelect();
}
// When editor is scrolled, we add a class to style the editbar differently // When editor is scrolled, we add a class to style the editbar differently
$('iframe[name="ace_outer"]').contents().scroll(function() { $('iframe[name="ace_outer"]').contents().scroll(function() {
@ -288,13 +297,13 @@ var padeditbar = (function()
{ {
var basePath = document.location.href.substring(0, document.location.href.indexOf("/p/")); var basePath = document.location.href.substring(0, document.location.href.indexOf("/p/"));
var readonlyLink = basePath + "/p/" + clientVars.readOnlyId; var readonlyLink = basePath + "/p/" + clientVars.readOnlyId;
$('#embedinput').val('<iframe name="embed_readonly" src="' + readonlyLink + '?showControls=true&showChat=true&showLineNumbers=true&useMonospaceFont=false" width=600 height=400></iframe>'); $('#embedinput').val('<iframe name="embed_readonly" src="' + readonlyLink + '?showControls=true&showChat=true&showLineNumbers=true&useMonospaceFont=false" width="100%" height="600" frameborder="0"></iframe>');
$('#linkinput').val(readonlyLink); $('#linkinput').val(readonlyLink);
} }
else else
{ {
var padurl = window.location.href.split("?")[0]; var padurl = window.location.href.split("?")[0];
$('#embedinput').val('<iframe name="embed_readwrite" src="' + padurl + '?showControls=true&showChat=true&showLineNumbers=true&useMonospaceFont=false" width=600 height=400></iframe>'); $('#embedinput').val('<iframe name="embed_readwrite" src="' + padurl + '?showControls=true&showChat=true&showLineNumbers=true&useMonospaceFont=false" width="100%" height="600" frameborder="0"></iframe>');
$('#linkinput').val(padurl); $('#linkinput').val(padurl);
} }
}, },
@ -303,7 +312,11 @@ var padeditbar = (function()
// reset style // reset style
$('.toolbar').removeClass('cropped') $('.toolbar').removeClass('cropped')
var menu_left = $('.toolbar .menu_left')[0]; var menu_left = $('.toolbar .menu_left')[0];
if (menu_left && menu_left.scrollWidth > $('.toolbar').width()) {
// on mobile the menu_right get displayed at the bottom of the screen
var isMobileLayout = $('.toolbar .menu_right').css('position') === 'fixed';
if (menu_left && menu_left.scrollWidth > $('.toolbar').width() && isMobileLayout) {
$('.toolbar').addClass('cropped'); $('.toolbar').addClass('cropped');
} }
} }

View file

@ -135,6 +135,7 @@ var padeditor = (function()
v = getOption('showAuthorColors', true); v = getOption('showAuthorColors', true);
self.ace.setProperty("showsauthorcolors", v); self.ace.setProperty("showsauthorcolors", v);
$('#chattext').toggleClass('authorColors', v); $('#chattext').toggleClass('authorColors', v);
$('iframe[name="ace_outer"]').contents().find('#sidedivinner').toggleClass('authorColors', v);
padutils.setCheckbox($("#options-colorscheck"), v); padutils.setCheckbox($("#options-colorscheck"), v);
// Override from parameters if true // Override from parameters if true

View file

@ -526,12 +526,30 @@ function setupGlobalExceptionHandler() {
{ {
var errorId = randomString(20); var errorId = randomString(20);
var userAgent = padutils.escapeHtml(navigator.userAgent); var userAgent = padutils.escapeHtml(navigator.userAgent);
if ($("#editorloadingbox").attr("display") != "none"){
//show javascript errors to the user var msgAlreadyVisible = false;
$("#editorloadingbox").css("padding", "10px"); $('.gritter-item .error-msg').each(function() {
$("#editorloadingbox").css("padding-top", "45px"); if ($(this).text() === msg) {
$("#editorloadingbox").html("<div style='text-align:left;color:red;font-size:16px;'><b>An error occurred</b><br>The error was reported with the following id: '" + errorId + "'<br><br><span style='color:black;font-weight:bold;font-size:16px'>Please press and hold Ctrl and press F5 to reload this page, if the problem persists please send this error message to your webmaster: </span><div style='color:black;font-size:14px'>'" msgAlreadyVisible = true;
+ "ErrorId: " + errorId + "<br>URL: " + padutils.escapeHtml(window.location.href) + "<br>UserAgent: " + userAgent + "<br>" + msg + " in " + url + " at line " + linenumber + "'</div></div>"); }
});
if (!msgAlreadyVisible) {
errorMsg = "<b>Please press and hold Ctrl and press F5 to reload this page</b></br> \
If the problem persists please send this error message to your webmaster: </br></br>\
<div style='text-align:left; font-size: .8em'>\
ErrorId: " + errorId + "<br>\
URL: " + padutils.escapeHtml(window.location.href) + "<br>\
UserAgent: " + userAgent + "<br>\
<span class='error-msg'>"+ msg + "</span> in " + url + " at line " + linenumber + '</div>';
$.gritter.add({
title: "An error occurred",
text: errorMsg,
class_name: "error",
position: 'bottom',
sticky: true,
});
} }
//send javascript errors to the server //send javascript errors to the server

View file

@ -6,7 +6,7 @@ form {
body { body {
background: url(images/fond.jpg) center center no-repeat fixed #fff; background: url(images/fond.jpg) center center no-repeat fixed #fff;
font-family: Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif !important; font-family: Quicksand, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
font-size: 16px; font-size: 16px;
line-height: 1.42857143; line-height: 1.42857143;
color: #333; color: #333;
@ -24,6 +24,10 @@ body {
box-shadow: none box-shadow: none
} }
input {
color: #4a5d5c;
}
#inner { #inner {
background: transparent; background: transparent;
padding-top: 0; padding-top: 0;
@ -65,14 +69,15 @@ button[type=submit] {
background: #586a69; background: #586a69;
border: none; border: none;
top: 0; top: 0;
opacity: 1;
transition: .2s background;
} }
#button:hover, #button:hover,
button[type=submit]:hover { button[type=submit]:hover {
cursor: pointer; cursor: pointer;
background: #64d29b; background: #4a5d5c;
border: 2px solid #586a69; color: #64d29b;
color: #586a69;
} }
#padname { #padname {

View file

@ -18,6 +18,7 @@
@import url("src/plugins/brightcolorpicker.css"); @import url("src/plugins/brightcolorpicker.css");
@import url("src/plugins/font_color.css"); @import url("src/plugins/font_color.css");
@import url("src/plugins/tables2.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/author_hover.css");
@import url("src/plugins/comments.css"); @import url("src/plugins/comments.css");

View file

@ -75,7 +75,7 @@
background-color: var(--bg-color); background-color: var(--bg-color);
} }
@media (max-width: 720px) { @media (max-width: 800px) {
#chaticon { #chaticon {
right: 0; right: 0;
} }

View file

@ -2,7 +2,7 @@
background-color: #64d29b; background-color: #64d29b;
background-color: var(--primary-color); background-color: var(--primary-color);
color: #ffffff; color: #ffffff;
color: var(--bg-color); color: var(--super-light-color);
} }
.gritter-item .popup-content { .gritter-item .popup-content {
padding: 15px; padding: 15px;
@ -26,7 +26,7 @@
} }
.gritter-item:not(.error) .gritter-close .buttonicon { .gritter-item:not(.error) .gritter-close .buttonicon {
color: #ffffff; color: #ffffff;
color: var(--bg-color); color: var(--super-light-color);
} }
/* CHAT GRIITER ITEM */ /* CHAT GRIITER ITEM */
@ -62,4 +62,9 @@
.gritter-item.popup.popup-show > .popup-content { .gritter-item.popup.popup-show > .popup-content {
transform: scale(1) translateY(0) !important; transform: scale(1) translateY(0) !important;
transition: all 0.4s cubic-bezier(0.74, -0.05, 0.27, 1.75) !important; transition: all 0.4s cubic-bezier(0.74, -0.05, 0.27, 1.75) !important;
} }
/* for ep_deleted_after_delay */
.gritter-item #close_expiration_notif {
display: none;
}

View file

@ -41,7 +41,7 @@
min-width: 180px; min-width: 180px;
} }
@media (max-width: 720px) { @media (max-width: 800px) {
.popup-content { .popup-content {
padding: 1rem; padding: 1rem;
box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), -1px 1px 16px 3px rgba(27, 39, 51, 0.12); box-shadow: 0 0 0 1px rgba(99, 114, 130, 0.16), -1px 1px 16px 3px rgba(27, 39, 51, 0.12);

View file

@ -12,6 +12,7 @@
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
min-height: 40px;
border-radius: 10px; border-radius: 10px;
background-color: #576273; background-color: #576273;
background-color: var(--scrollbar-thumb); background-color: var(--scrollbar-thumb);
@ -33,6 +34,7 @@
.thin-scrollbar::-webkit-scrollbar-thumb { .thin-scrollbar::-webkit-scrollbar-thumb {
border-radius: 0px; border-radius: 0px;
min-height: 40px;
background-color: #d2d2d2; background-color: #d2d2d2;
background-color: var(--middle-color); background-color: var(--middle-color);
border: none; border: none;

View file

@ -8,27 +8,12 @@
font-family: var(--main-font-family); /* the parent div have font-family monospace (line number) */ font-family: var(--main-font-family); /* the parent div have font-family monospace (line number) */
color: #485365; color: #485365;
color: var(--text-color); color: var(--text-color);
padding-right: 18px !important;
text-transform: capitalize;
font-size: 12px !important;
font-weight: bold; font-weight: bold;
} }
#sidedivinner>div, #sidedivinner>div .line-number {
#sidedivinner.authorColors>div,
#sidedivinner.authorColors>div.primary-none {
padding-right: 5px !important;
border-right: 5px solid transparent;
}
#sidedivinner>div {
line-height: 24px; line-height: 24px;
font-size: 9px !important;
font-family: RobotoMono; font-family: RobotoMono;
color: #576273; color: #576273;
color: var(--text-soft-color); color: var(--text-soft-color);
}
#sidedivinner.authorColors>div, #sidedivinner.authorColors>div.primary-none, #sidedivinner>div {
padding-right: 8px !important;
} }

View file

@ -131,7 +131,7 @@
} }
} }
@media (max-width: 720px) { @media (max-width: 800px) {
.toolbar ul li { .toolbar ul li {
margin: 5px 2px; margin: 5px 2px;

View file

@ -7,16 +7,13 @@
#editorcontainerbox { #editorcontainerbox {
background-color: #f2f3f4; background-color: #f2f3f4;
background-color: var(--bg-color); background-color: var(--bg-color);
color: var(--text-color);
} }
#editorcontainerbox .sticky-container { #editorcontainerbox .sticky-container {
width: 250px; width: 250px;
} }
#outerdocbody.sidediv-hidden {
padding-left: 0; /* sidediv hidden */
}
#outerdocbody iframe, #outerdocbody > #innerdocbody { #outerdocbody iframe, #outerdocbody > #innerdocbody {
max-width: 900px; max-width: 900px;
padding: 40px 55px; padding: 40px 55px;
@ -40,17 +37,6 @@
padding-bottom: var(--editor-vertical-padding); padding-bottom: var(--editor-vertical-padding);
} }
/* Fixs author_hover does not take in account the document padding */
.authortooltip { margin-top: 65px !important; margin-left: 60px; }
.caretindicator { margin-top: 61px!important; margin-left: 52px; }
#outerdocbody.plugin-ep_author_neat .authortooltip{ margin-left: 145px; }
#outerdocbody.plugin-ep_author_neat .caretindicator{ margin-left: 52px; margin-top: 65px!important;}
@media (max-width:1000px) {
#outerdocbody.plugin-ep_author_neat .authortooltip{ margin-left: 115px; }
.caretindicator{ margin-left: 13px; }
#outerdocbody.plugin-ep_author_neat .caretindicator{ margin-left: 17px; }
}
@media (max-width:1000px) { @media (max-width:1000px) {
#outerdocbody { #outerdocbody {
padding-top: 0; padding-top: 0;
@ -59,19 +45,9 @@
max-width: none; max-width: none;
border-radius: 0; border-radius: 0;
} }
.authortooltip { margin-top: 20px !important; }
.caretindicator { margin-top: 0px !important; }
#outerdocbody.plugin-ep_author_neat .caretindicator { margin-top: 10px !important; }
#outerdocbody.plugin-ep_author_neat #sidedivinner>div:before { padding-right: 10px !important; }
#outerdocbody.plugin-ep_author_neat #sidedivinner.authorColors>div,
#outerdocbody.plugin-ep_author_neat #sidedivinner.authorColors>div.primary-none,
#outerdocbody.plugin-ep_author_neat #sidedivinner>div { padding-right: 6px!important; }
#outerdocbody.plugin-ep_author_neat #sidediv { padding-right: 0 !important; }
} }
@media only screen and (max-width: 720px) { @media only screen and (max-width: 800px) {
#editorcontainerbox { #editorcontainerbox {
margin-bottom: 39px; /* margin for bottom toolbar */ margin-bottom: 39px; /* margin for bottom toolbar */
} }

View file

@ -6,29 +6,3 @@
color: #485365; color: #485365;
color: var(--text-color); color: var(--text-color);
} }
#innerdocbody span, #innerdocbody span {
padding: 4px 0 !important;
}
#innerdocbody h1 span, #innerdocbody h1 span {
padding: 0;
}
option {
text-transform: capitalize;
}
#innerdocbody h1 {
font-size: 2.5em !important;
}
#innerdocbody h3 {
font-size: 1.15em;
letter-spacing: 1px;
}
#innerdocbody a {
color: #64d29b;
color: var(--primary-color);
}

View file

@ -1,7 +1,7 @@
/* =========================== */ /* =========================== */
/* === Super Light Toolbar === */ /* === Super Light Toolbar === */
/* =========================== */ /* =========================== */
.super-light-toolbar .toolbar, .super-light-toolbar .popup-content { .super-light-toolbar .toolbar, .super-light-toolbar .popup-content, #pad_title {
--text-color: var(--super-dark-color); --text-color: var(--super-dark-color);
--text-soft-color: var(--dark-color); --text-soft-color: var(--dark-color);
--border-color: #e4e6e9; --border-color: #e4e6e9;
@ -11,7 +11,7 @@
/* ===================== */ /* ===================== */
/* === Light Toolbar === */ /* === Light Toolbar === */
/* ===================== */ /* ===================== */
.light-toolbar .toolbar, .light-toolbar .popup-content { .light-toolbar .toolbar, .light-toolbar .popup-content, #pad_title {
--text-color: var(--super-dark-color); --text-color: var(--super-dark-color);
--text-soft-color: var(--dark-color); --text-soft-color: var(--dark-color);
--border-color: var(--middle-color); --border-color: var(--middle-color);
@ -21,7 +21,7 @@
/* ========================== */ /* ========================== */
/* === Super Dark Toolbar === */ /* === Super Dark Toolbar === */
/* ========================== */ /* ========================== */
.super-dark-toolbar .toolbar, .super-dark-toolbar .popup-content { .super-dark-toolbar .toolbar, .super-dark-toolbar .popup-content, #pad_title {
--text-color: var(--super-light-color); --text-color: var(--super-light-color);
--text-soft-color: var(--light-color); --text-soft-color: var(--light-color);
--border-color: var(--dark-color); --border-color: var(--dark-color);
@ -35,7 +35,7 @@
/* ==================== */ /* ==================== */
/* === Dark Toolbar === */ /* === Dark Toolbar === */
/* ==================== */ /* ==================== */
.dark-toolbar .toolbar, .dark-toolbar .popup-content { .dark-toolbar .toolbar, .dark-toolbar .popup-content, #pad_title {
--text-color: var(--super-light-color); --text-color: var(--super-light-color);
--text-soft-color: var(--light-color); --text-soft-color: var(--light-color);
--border-color: var(--super-dark-color); --border-color: var(--super-dark-color);

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

@ -82,7 +82,7 @@
font-size: .9em; font-size: .9em;
} }
@media (max-width: 720px) { @media (max-width: 800px) {
#slider-btn-container { #slider-btn-container {
margin-top: 0; margin-top: 0;

View file

@ -35,8 +35,8 @@
<link rel="shortcut icon" href="<%=settings.favicon%>"> <link rel="shortcut icon" href="<%=settings.favicon%>">
<link rel="localizations" type="application/l10n+json" href="locales.json"> <link rel="localizations" type="application/l10n+json" href="locales.json">
<script type="text/javascript" src="static/js/html10n.js"></script> <script type="text/javascript" src="static/js/html10n.js?v=<%=settings.randomVersionString%>"></script>
<script type="text/javascript" src="static/js/l10n.js"></script> <script type="text/javascript" src="static/js/l10n.js?v=<%=settings.randomVersionString%>"></script>
<style> <style>
html, body { html, body {
@ -138,7 +138,7 @@
width: 45px; width: 45px;
height: 38px; height: 38px;
} }
@media only screen and (min-device-width: 320px) and (max-device-width: 720px) { @media only screen and (min-device-width: 320px) and (max-device-width: 800px) {
body { body {
background: #bbb; background: #bbb;
background: -webkit-linear-gradient(#aaa,#eee 60%) center fixed; background: -webkit-linear-gradient(#aaa,#eee 60%) center fixed;
@ -156,7 +156,7 @@
} }
} }
</style> </style>
<link href="static/skins/<%=encodeURI(settings.skinName)%>/index.css" rel="stylesheet"> <link href="static/skins/<%=encodeURI(settings.skinName)%>/index.css?v=<%=settings.randomVersionString%>" rel="stylesheet">
<div id="wrapper"> <div id="wrapper">
<% e.begin_block("indexWrapper"); %> <% e.begin_block("indexWrapper"); %>
@ -171,7 +171,7 @@
<% e.end_block(); %> <% e.end_block(); %>
</div> </div>
<script src="static/skins/<%=encodeURI(settings.skinName)%>/index.js"></script> <script src="static/skins/<%=encodeURI(settings.skinName)%>/index.js?v=<%=settings.randomVersionString%>"></script>
<script> <script>
// @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt // @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt
function go2Name() function go2Name()

View file

@ -42,18 +42,18 @@
<link rel="shortcut icon" href="<%=settings.faviconPad%>"> <link rel="shortcut icon" href="<%=settings.faviconPad%>">
<% e.begin_block("styles"); %> <% e.begin_block("styles"); %>
<link href="../static/css/pad.css" rel="stylesheet"> <link href="../static/css/pad.css?v=<%=settings.randomVersionString%>" rel="stylesheet">
<% e.begin_block("customStyles"); %> <% e.begin_block("customStyles"); %>
<link href="../static/skins/<%=encodeURI(settings.skinName)%>/pad.css" rel="stylesheet"> <link href="../static/skins/<%=encodeURI(settings.skinName)%>/pad.css?v=<%=settings.randomVersionString%>" rel="stylesheet">
<% e.end_block(); %> <% e.end_block(); %>
<style title="dynamicsyntax"></style> <style title="dynamicsyntax"></style>
<% e.end_block(); %> <% e.end_block(); %>
<link rel="localizations" type="application/l10n+json" href="../locales.json" /> <link rel="localizations" type="application/l10n+json" href="../locales.json" />
<script type="text/javascript" src="../static/js/html10n.js"></script> <script type="text/javascript" src="../static/js/html10n.js?v=<%=settings.randomVersionString%>"></script>
<script type="text/javascript" src="../static/js/l10n.js"></script> <script type="text/javascript" src="../static/js/l10n.js?v=<%=settings.randomVersionString%>"></script>
<!-- head and body had been removed intentionally --> <!-- head and body had been removed intentionally -->
@ -435,10 +435,10 @@
<% e.begin_block("scripts"); %> <% e.begin_block("scripts"); %>
<script type="text/javascript" src="../static/js/require-kernel.js"></script> <script type="text/javascript" src="../static/js/require-kernel.js?v=<%=settings.randomVersionString%>"></script>
<!-- Include pad_utils manually --> <!-- Include pad_utils manually -->
<script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/pad_utils.js?callback=require.define"></script> <script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/pad_utils.js?callback=require.define&v=<%=settings.randomVersionString%>"></script>
<script type="text/javascript"> <script type="text/javascript">
// @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt // @license magnet:?xt=urn:btih:8e4f440f4c65981c5bf93c76d35135ba5064d8b7&dn=apache-2.0.txt
@ -458,14 +458,14 @@
// @license-end // @license-end
</script> </script>
<script type="text/javascript" src="../socket.io/socket.io.js"></script> <script type="text/javascript" src="../socket.io/socket.io.js?v=<%=settings.randomVersionString%>"></script>
<!-- Include base packages manually (this help with debugging) --> <!-- Include base packages manually (this help with debugging) -->
<script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define"></script> <script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/pad.js?callback=require.define&v=<%=settings.randomVersionString%>"></script>
<script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js?callback=require.define"></script> <script type="text/javascript" src="../javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js?callback=require.define&v=<%=settings.randomVersionString%>"></script>
<% e.begin_block("customScripts"); %> <% e.begin_block("customScripts"); %>
<script type="text/javascript" src="../static/skins/<%=encodeURI(settings.skinName)%>/pad.js"></script> <script type="text/javascript" src="../static/skins/<%=encodeURI(settings.skinName)%>/pad.js?v=<%=settings.randomVersionString%>"></script>
<% e.end_block(); %> <% e.end_block(); %>
<!-- Bootstrap page --> <!-- Bootstrap page -->

View file

@ -35,18 +35,18 @@
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<link rel="shortcut icon" href="<%=settings.faviconTimeslider%>"> <link rel="shortcut icon" href="<%=settings.faviconTimeslider%>">
<% e.begin_block("timesliderStyles"); %> <% e.begin_block("timesliderStyles"); %>
<link rel="stylesheet" href="../../static/css/pad.css"> <link rel="stylesheet" href="../../static/css/pad.css?v=<%=settings.randomVersionString%>">
<link rel="stylesheet" href="../../static/css/iframe_editor.css"> <link rel="stylesheet" href="../../static/css/iframe_editor.css?v=<%=settings.randomVersionString%>">
<link rel="stylesheet" href="../../static/css/timeslider.css"> <link rel="stylesheet" href="../../static/css/timeslider.css?v=<%=settings.randomVersionString%>">
<link rel="stylesheet" href="../../static/skins/<%=encodeURI(settings.skinName)%>/pad.css"> <link rel="stylesheet" href="../../static/skins/<%=encodeURI(settings.skinName)%>/pad.css?v=<%=settings.randomVersionString%>">
<link rel="stylesheet" href="../../static/skins/<%=encodeURI(settings.skinName)%>/timeslider.css"> <link rel="stylesheet" href="../../static/skins/<%=encodeURI(settings.skinName)%>/timeslider.css?v=<%=settings.randomVersionString%>">
<style type="text/css" title="dynamicsyntax"></style> <style type="text/css" title="dynamicsyntax"></style>
<% e.end_block(); %> <% e.end_block(); %>
<link rel="localizations" type="application/l10n+json" href="../../locales.json" /> <link rel="localizations" type="application/l10n+json" href="../../locales.json" />
<% e.begin_block("timesliderScripts"); %> <% e.begin_block("timesliderScripts"); %>
<script type="text/javascript" src="../../static/js/html10n.js"></script> <script type="text/javascript" src="../../static/js/html10n.js?v=<%=settings.randomVersionString%>"></script>
<script type="text/javascript" src="../../static/js/l10n.js"></script> <script type="text/javascript" src="../../static/js/l10n.js?v=<%=settings.randomVersionString%>"></script>
<% e.end_block(); %> <% e.end_block(); %>
</head> </head>
@ -245,14 +245,14 @@
<!-------- JAVASCRIPT ---------> <!-------- JAVASCRIPT --------->
<!-----------------------------> <!----------------------------->
<script type="text/javascript" src="../../static/js/require-kernel.js"></script> <script type="text/javascript" src="../../static/js/require-kernel.js?v=<%=settings.randomVersionString%>"></script>
<script type="text/javascript" src="../../socket.io/socket.io.js"></script> <script type="text/javascript" src="../../socket.io/socket.io.js?v=<%=settings.randomVersionString%>"></script>
<!-- Include base packages manually (this help with debugging) --> <!-- Include base packages manually (this help with debugging) -->
<script type="text/javascript" src="../../javascripts/lib/ep_etherpad-lite/static/js/timeslider.js?callback=require.define"></script> <script type="text/javascript" src="../../javascripts/lib/ep_etherpad-lite/static/js/timeslider.js?callback=require.define&v=<%=settings.randomVersionString%>"></script>
<script type="text/javascript" src="../../javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js?callback=require.define"></script> <script type="text/javascript" src="../../javascripts/lib/ep_etherpad-lite/static/js/ace2_common.js?callback=require.define&v=<%=settings.randomVersionString%>"></script>
<script type="text/javascript" src="../../static/skins/<%=encodeURI(settings.skinName)%>/timeslider.js"></script> <script type="text/javascript" src="../../static/skins/<%=encodeURI(settings.skinName)%>/timeslider.js?v=<%=settings.randomVersionString%>"></script>
<!-- Bootstrap --> <!-- Bootstrap -->
<script type="text/javascript" > <script type="text/javascript" >

View file

@ -53,7 +53,10 @@ var helper = {};
} }
helper.clearCookies = function(){ helper.clearCookies = function(){
window.document.cookie = ""; // Expire cookies, so author and language are changed after reloading the pad.
// See https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie#Example_4_Reset_the_previous_cookie
window.document.cookie = 'token=;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/';
window.document.cookie = 'language=;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/';
} }
// Functionality for knowing what key event type is required for tests // Functionality for knowing what key event type is required for tests

View file

@ -36,6 +36,68 @@ describe("the test helper", function(){
done(); done();
}); });
}); });
// Make sure the cookies are cleared, and make sure that the cookie
// clearing has taken effect at this point in the code. It has been
// observed that the former can happen without the latter if there
// isn't a timeout (within `newPad`) after clearing the cookies.
// However this doesn't seem to always be easily replicated, so this
// timeout may or may end up in the code. None the less, we test here
// to catch it if the bug comes up again.
it("clears cookies", function(done) {
this.timeout(60000);
// set cookies far into the future to make sure they're not expired yet
window.document.cookie = 'token=foo;expires=Thu, 01 Jan 3030 00:00:00 GMT; path=/';
window.document.cookie = 'language=bar;expires=Thu, 01 Jan 3030 00:00:00 GMT; path=/';
const testCookie = 'token=foo; language=bar'
expect(window.document.cookie).to.be(testCookie)
helper.newPad(function(){
// helper function seems to have cleared cookies
// NOTE: this doesn't yet mean it's proven to have taken effect by this point in execution
var firstCookie = window.document.cookie
expect(firstCookie).to.not.be(testCookie)
var chrome$ = helper.padChrome$;
// click on the settings button to make settings visible
var $userButton = chrome$(".buttonicon-showusers");
$userButton.click();
var $usernameInput = chrome$("#myusernameedit");
$usernameInput.click();
$usernameInput.val('John McLear');
$usernameInput.blur();
// Before refreshing, make sure the name is there
expect($usernameInput.val()).to.be('John McLear')
setTimeout(function(){ //give it a second to save the username on the server side
helper.newPad(function(){ // get a new pad, let it clear the cookies
var chrome$ = helper.padChrome$;
// helper function seems to have cleared cookies
// NOTE: this doesn't yet mean cookies were cleared effectively.
// We still need to test below that we're in a new session
expect(window.document.cookie).to.not.be(testCookie)
expect(window.document.cookie).to.not.be(firstCookie)
// click on the settings button to make settings visible
var $userButton = chrome$(".buttonicon-showusers");
$userButton.click();
// confirm that the session was actually cleared
var $usernameInput = chrome$("#myusernameedit");
expect($usernameInput.val()).to.be('')
done();
});
}, 1000);
})
});
}); });
describe("the waitFor method", function(){ describe("the waitFor method", function(){