Merge branch 'staging' into hackathon-2021

pull/1/head
ansuz 3 years ago
commit 25a3359671

@ -1,11 +1,5 @@
node_modules/
www/bower_components/
www/common/less.min.js
www/common/pdfjs/
www/common/tippy/
www/common/textFit.min.js
www/common/highlight/
www/common/jquery-ui/
www/common/onlyoffice/sdkjs
www/common/onlyoffice/web-apps
www/common/onlyoffice/x2t
@ -14,7 +8,6 @@ www/common/onlyoffice/v2*
www/common/onlyoffice/v4
server.js
www/common/old-media-tag.js
www/scratch
www/accounts
www/lib

@ -13,6 +13,12 @@
* 'Tools' menu to collapse the tag and view mode UI
* general
* main toolbar collapse
* clear login token
1. when you delete your account
2. when logging in
* remove unused files
* /common/noscriptfix.js
* include vendor and appVersion in support ticket data
# 4.9.0

@ -36,7 +36,6 @@
"alertifyjs": "1.0.11",
"scrypt-async": "1.2.0",
"require-css": "0.1.10",
"less": "3.7.1",
"bootstrap": "^v4.0.0",
"diff-dom": "2.1.1",
"nthen": "0.1.7",

@ -463,6 +463,7 @@ define([
var proceed = function (result) {
hashing = false;
if (test && typeof test === "function" && test()) { return; }
LocalStore.clearLoginToken();
Realtime.whenRealtimeSyncs(result.realtime, function () {
Exports.redirect();
});

@ -5,7 +5,7 @@ define([
'/common/common-feedback.js',
'/common/common-interface.js',
'/common/common-hash.js',
'/common/textFit.min.js',
'/lib/textFit.min.js',
'/customize/messages.js',
'/customize/application_config.js',
'/common/outer/local-store.js',
@ -67,6 +67,7 @@ define([
icons.forEach(function (a) {
setTimeout(function () {
// ensure that text in our app icons doesn't overflow
TextFit($(a).find('.pad-button-text')[0], {minFontSize: 13, maxFontSize: 18});
});
});

@ -54,7 +54,8 @@ Channel.clearOwnedChannel = function (Env, safeKey, channelId, cb, Server) {
});
};
var archiveOwnedChannel = function (Env, safeKey, channelId, _cb, Server) {
var archiveOwnedChannel = function (Env, safeKey, channelId, __cb, Server) {
var _cb = Util.once(Util.mkAsync(__cb));
var unsafeKey = Util.unescapeKeyCharacters(safeKey);
nThen(function (w) {
// confirm that the channel exists before worrying about whether
@ -160,7 +161,10 @@ Channel.trimHistory = function (Env, safeKey, data, cb) {
nThen(function (w) {
Metadata.getMetadataRaw(Env, channelId, w(function (err, metadata) {
if (err) { return void cb(err); }
if (err) {
w.abort();
return void cb(err);
}
if (!Core.hasOwners(metadata)) {
w.abort();
return void cb('E_NO_OWNERS');
@ -173,6 +177,11 @@ Channel.trimHistory = function (Env, safeKey, data, cb) {
}));
}).nThen(function () {
Env.msgStore.trimChannel(channelId, hash, function (err) {
Env.Log.info('HK_TRIM_HISTORY', {
unsafeKey: unsafeKey,
channelId: channelId,
status: err? String(err): 'SUCCESS',
});
if (err) { return void cb(err); }
// clear historyKeeper's cache for this channel
Env.historyKeeper.channelClose(channelId);

@ -2,8 +2,6 @@ var EN = require("../www/common/translations/messages.json");
var simpleTags = [
'<br>',
'<br />',
'<br/>',
'<a href="/login/">',
'<a href="/register/">',

@ -88,11 +88,10 @@ html, body {
.cp-notice-browser, .cp-notice-details, .cp-notice-other {
font-size: 70%;
}
.underline { text-decoration: underline; }
.cp-app-checkup-version, .cp-app-checkup-browser {
text-decoration: underline;
.underline;
}
iframe {
display: none;
}

@ -14,6 +14,25 @@ define([
return false;
};
var OS_HINTS = {
"Win": "Windows",
"Mac": "MacOS",
"X11": "UNIX",
"Linux": "Linux",
};
Tools.guessOS = function () {
var result = "UNKNOWN";
if (!window.navigator || !window.navigator.appVersion) { return result; }
result = window.navigator.appVersion;
console.log(result);
Object.keys(OS_HINTS).some(function (key) {
if (result.indexOf(key) === -1) { return; }
result = OS_HINTS[key]; // else
return true;
});
return result;
};
Tools.isSafari = function () {
return navigator.vendor.match(/apple/i);

@ -932,7 +932,9 @@ define([
return h('p.cp-notice-browser', [
"You appear to be using a ",
h('span.cp-app-checkup-browser', name),
' browser to view this page.',
' browser on ',
h('span.underline', Tools.guessOS()),
' to view this page.',
]);
};

@ -110,7 +110,7 @@ define([
if (lessEngine) {
cb(lessEngine);
} else {
require(['/common/less.min.js'], function (Less) {
require(['/lib/less.min.js'], function (Less) {
if (lessEngine) { return void cb(lessEngine); }
lessEngine = Less;
Less.functions.functionRegistry.add('LessLoader_currentFile', function () {

@ -15,15 +15,15 @@ define([
'/common/common-notifier.js',
'/customize/application_config.js',
'/bower_components/alertifyjs/dist/js/alertify.js',
'/common/tippy/tippy.min.js',
'/lib/tippy/tippy.min.js',
'/common/hyperscript.js',
'/customize/loading.js',
'/common/test.js',
'/common/jquery-ui/jquery-ui.min.js',
'/lib/jquery-ui/jquery-ui.min.js', // autocomplete widget
'/bower_components/bootstrap-tokenfield/dist/bootstrap-tokenfield.js',
'css!/common/tippy/tippy.css',
'css!/common/jquery-ui/jquery-ui.min.css'
'css!/lib/tippy/tippy.css',
'css!/lib/jquery-ui/jquery-ui.min.css'
], function ($, Messages, Util, Hash, Notifier, AppConfig,
Alertify, Tippy, h, Loading, Test) {
var UI = {};
@ -867,7 +867,8 @@ define([
UI.passwordInput = function (opts, displayEye) {
opts = opts || {};
var attributes = merge({
type: 'password'
type: 'password',
autocomplete: 'new-password', // https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values
}, opts);
var input = h('input.cp-password-input', attributes);

@ -145,7 +145,7 @@ define([
video.src = url;
};
Thumb.fromPdfBlob = function (blob, cb) {
require.config({paths: {'pdfjs-dist': '/common/pdfjs'}});
require.config({paths: {'pdfjs-dist': '/lib/pdfjs'}});
require(['pdfjs-dist/build/pdf'], function (PDFJS) {
var url = URL.createObjectURL(blob);
var makeThumb = function (page) {

@ -919,10 +919,13 @@ define([
}, [
h('i.fa.' + icon),
h('span.cp-toolbar-name'+drawerCls, data.text)
])).click(common.prepareFeedback(data.name || 'DEFAULT'));
if (callback) {
button.click(callback);
}
]));
var feedbackHandler = common.prepareFeedback(data.name || 'DEFAULT');
button[0].addEventListener('click', function () {
feedbackHandler();
if (typeof(callback) !== 'function') { return; }
callback();
});
if (data.style) { button.attr('style', data.style); }
if (data.id) { button.attr('id', data.id); }
if (data.hiddenReadOnly) { button.addClass('cp-hidden-if-readonly'); }
@ -3703,6 +3706,21 @@ define([
return false;
};
UIElements.fixInlineBRs = function (htmlString) {
if (!htmlString && typeof(htmlString) === 'string') { return; }
var lines = htmlString.split('<br>');
if (lines.length === 1) { return lines; }
var len = lines.length - 1;
var result = [];
for (var i = 0; i <= len; i++) {
result.push(lines[i]);
if (i < len) {
result.push(h('br'));
}
}
return result;
};
UIElements.openSnapshotsModal = function (common, load, make, remove) {
var modal;
var readOnly = common.getMetadataMgr().getPrivateData().readOnly;

@ -8,13 +8,13 @@ define([
'/common/inner/common-mediatag.js',
'/common/media-tag.js',
'/customize/messages.js',
'/common/less.min.js',
'/lib/less.min.js',
'/customize/pages.js',
'/common/highlight/highlight.pack.js',
'/lib/highlight/highlight.pack.js',
'/lib/diff-dom/diffDOM.js',
'/bower_components/tweetnacl/nacl-fast.min.js',
'css!/common/highlight/styles/'+ (window.CryptPad_theme === 'dark' ? 'dark.css' : 'github.css')
'css!/lib/highlight/styles/'+ (window.CryptPad_theme === 'dark' ? 'dark.css' : 'github.css')
],function ($, ApiConfig, Marked, Hash, Util, h, MT, MediaTag, Messages, Less, Pages) {
var DiffMd = {};
@ -424,7 +424,7 @@ define([
// Only allow iframe, video and audio with local source
var checkSrc = function (root) {
if (restrictedTags.indexOf(root.nodeName.toUpperCase()) === -1) { return true; }
return root.getAttribute && /^(blob\:|\/common\/pdfjs)/.test(root.getAttribute('src'));
return root.getAttribute && /^(blob\:|\/lib\/pdfjs)/.test(root.getAttribute('src'));
};
var removeForbiddenTags = function (root) {

@ -1733,7 +1733,7 @@ define([
removeSelected();
refresh();
});
}, null, true);
});
};

@ -981,11 +981,11 @@ define([
common.gotoURL(_href);
}, {force: true});
}
return void UI.alert(Messages.properties_passwordSuccess, function () {
return void UI.alert(UIElements.fixInlineBRs(Messages.properties_passwordSuccess), function () {
if (!isSharedFolder) {
common.gotoURL(_href);
}
}, {force: true});
});
});
});
});

@ -20,7 +20,7 @@ define([
// This file is loaded by sframe-common so the following config is used in all the inner apps
if (MediaTag) {
MediaTag.setDefaultConfig('pdf', {
viewer: '/common/pdfjs/web/viewer.html'
viewer: '/lib/pdfjs/web/viewer.html'
});
MediaTag.setDefaultConfig('download', {
text: Messages.mediatag_saveButton,

@ -170,7 +170,8 @@ define([
teamId: typeof(owned) === "number" && owned
}, function (obj) {
spinner.hide();
if (obj && obj.error) {
if (obj && obj.error || obj.warning) {
console.error(obj.warning);
$(size).append(h('div.alert.alert-danger', Messages.trimHistory_error));
return;
}

@ -1,3 +0,0 @@
// Fix for noscript bugs when caching iframe content.
// Caution, this file will get cached, you must change the name if you change it.
document.getElementById('pad-iframe').setAttribute('src', 'inner.html?cb=' + (+new Date()));

@ -775,7 +775,10 @@ define([
}
});
}
return list;
return list.filter(function (channel) {
if (typeof(channel) !== 'string') { return; }
return [32, 48].indexOf(channel.length) !== -1;
});
};
var removeOwnedPads = function (waitFor) {
// Delete owned pads
@ -2156,6 +2159,8 @@ define([
if (!data.channel) { return void cb({ error: 'ENOTFOUND'}); }
if (!data.command) { return void cb({ error: 'EINVAL' }); }
var s = getStore(data.teamId);
if (!s) { return void cb({ error: 'ENOTFOUND' }); }
var otherChannels = data.channels;
delete data.channels;
s.rpc.setMetadata(data, function (err, res) {

@ -82,6 +82,10 @@ define([
} catch (err) { return; }
};
LocalStore.clearLoginToken = function () {
localStorage.removeItem(Constants.loginToken);
};
LocalStore.setDriveRedirectPreference = function (bool) {
localStorage.setItem(Constants.redirectToDriveKey, Boolean(bool));
};

@ -133,7 +133,7 @@ var factory = function (Util, Rpc) {
exp.removeOwnedChannel = function (channel, cb) {
if (typeof(channel) !== 'string' || [32,48].indexOf(channel.length) === -1) {
// can't use this on files because files can't be owned...
console.error('invalid channel to remove', channel);
return void cb('INVALID_ARGUMENTS');
}
rpc.send('REMOVE_OWNED_CHANNEL', channel, function (e, response) {

@ -1167,6 +1167,13 @@ define([
Store
*/
var excludeInvalidIdentifiers = function (result) {
return result.filter(function (channel) {
if (typeof(channel) !== 'string') { return; }
return [32, 48].indexOf(channel.length) !== -1;
});
};
// Get the list of channels filtered by a type (expirable channels, owned channels, pin list)
var getChannelsList = function (Env, type) {
var result = [];
@ -1228,8 +1235,8 @@ define([
}
};
if (type === 'owned' && !Env.edPublic) { return result; }
if (type === 'pin' && !Env.edPublic) { return result; }
if (type === 'owned' && !Env.edPublic) { return excludeInvalidIdentifiers(result); }
if (type === 'pin' && !Env.edPublic) { return excludeInvalidIdentifiers(result); }
// Get the list of user objects
var userObjects = _getUserObjects(Env);
@ -1256,10 +1263,7 @@ define([
Array.prototype.push.apply(result, sfChannels);
}
return result.filter(function (channel) {
if (typeof(channel) !== 'string') { return; }
return [32, 48].indexOf(channel.length) !== -1;
});
return excludeInvalidIdentifiers(result);
};
var addPad = function (Env, path, pad, cb) {

@ -13,8 +13,6 @@ define([
"mermaid": "/code/mermaid.min",
// json.sortify same
"json.sortify": "/bower_components/json.sortify/dist/JSON.sortify",
//"pdfjs-dist/build/pdf": "/bower_components/pdfjs-dist/build/pdf",
//"pdfjs-dist/build/pdf.worker": "/bower_components/pdfjs-dist/build/pdf.worker"
cm: '/bower_components/codemirror',
'tui-code-snippet': '/lib/calendar/tui-code-snippet.min',
'tui-date-picker': '/lib/calendar/date-picker',

@ -1 +0,0 @@
(function(root,factory){"use strict";if(typeof define==="function"&&define.amd){define([],factory)}else if(typeof exports==="object"){module.exports=factory()}else{root.textFit=factory()}})(typeof global==="object"?global:this,function(){"use strict";var defaultSettings={alignVert:false,alignHoriz:false,multiLine:false,detectMultiLine:true,minFontSize:6,maxFontSize:80,reProcess:true,widthOnly:false,alignVertWithFlexbox:false};return function textFit(els,options){if(!options)options={};var settings={};for(var key in defaultSettings){if(options.hasOwnProperty(key)){settings[key]=options[key]}else{settings[key]=defaultSettings[key]}}if(typeof els.toArray==="function"){els=els.toArray()}var elType=Object.prototype.toString.call(els);if(elType!=="[object Array]"&&elType!=="[object NodeList]"&&elType!=="[object HTMLCollection]"){els=[els]}for(var i=0;i<els.length;i++){processItem(els[i],settings)}};function processItem(el,settings){if(!isElement(el)||!settings.reProcess&&el.getAttribute("textFitted")){return false}if(!settings.reProcess){el.setAttribute("textFitted",1)}var innerSpan,originalHeight,originalHTML,originalWidth;var low,mid,high;originalHTML=el.innerHTML;originalWidth=innerWidth(el);originalHeight=innerHeight(el);if(!originalWidth||!settings.widthOnly&&!originalHeight){if(!settings.widthOnly)throw new Error("Set a static height and width on the target element "+el.outerHTML+" before using textFit!");else throw new Error("Set a static width on the target element "+el.outerHTML+" before using textFit!")}if(originalHTML.indexOf("textFitted")===-1){innerSpan=document.createElement("span");innerSpan.className="textFitted";innerSpan.style["display"]="inline-block";innerSpan.innerHTML=originalHTML;el.innerHTML="";el.appendChild(innerSpan)}else{innerSpan=el.querySelector("span.textFitted");if(hasClass(innerSpan,"textFitAlignVert")){innerSpan.className=innerSpan.className.replace("textFitAlignVert","");innerSpan.style["height"]="";el.className.replace("textFitAlignVertFlex","")}}if(settings.alignHoriz){el.style["text-align"]="center";innerSpan.style["text-align"]="center"}var multiLine=settings.multiLine;if(settings.detectMultiLine&&!multiLine&&innerSpan.scrollHeight>=parseInt(window.getComputedStyle(innerSpan)["font-size"],10)*2){multiLine=true}if(!multiLine){el.style["white-space"]="nowrap"}low=settings.minFontSize+1;high=settings.maxFontSize+1;while(low<=high){mid=parseInt((low+high)/2,10);innerSpan.style.fontSize=mid+"px";if(innerSpan.scrollWidth<=originalWidth&&(settings.widthOnly||innerSpan.scrollHeight<=originalHeight)){low=mid+1}else{high=mid-1}}innerSpan.style.fontSize=mid-1+"px";if(settings.alignVert){addStyleSheet();var height=innerSpan.scrollHeight;if(window.getComputedStyle(el)["position"]==="static"){el.style["position"]="relative"}if(!hasClass(innerSpan,"textFitAlignVert")){innerSpan.className=innerSpan.className+" textFitAlignVert"}innerSpan.style["height"]=height+"px";if(settings.alignVertWithFlexbox&&!hasClass(el,"textFitAlignVertFlex")){el.className=el.className+" textFitAlignVertFlex"}}}function innerHeight(el){var style=window.getComputedStyle(el,null);return el.clientHeight-parseInt(style.getPropertyValue("padding-top"),10)-parseInt(style.getPropertyValue("padding-bottom"),10)}function innerWidth(el){var style=window.getComputedStyle(el,null);return el.clientWidth-parseInt(style.getPropertyValue("padding-left"),10)-parseInt(style.getPropertyValue("padding-right"),10)}function isElement(o){return typeof HTMLElement==="object"?o instanceof HTMLElement:o&&typeof o==="object"&&o!==null&&o.nodeType===1&&typeof o.nodeName==="string"}function hasClass(element,cls){return(" "+element.className+" ").indexOf(" "+cls+" ")>-1}function addStyleSheet(){if(document.getElementById("textFitStyleSheet"))return;var style=[".textFitAlignVert{","position: absolute;","top: 0; right: 0; bottom: 0; left: 0;","margin: auto;","display: flex;","justify-content: center;","flex-direction: column;","}",".textFitAlignVertFlex{","display: flex;","}",".textFitAlignVertFlex .textFitAlignVert{","position: static;","}"].join("");var css=document.createElement("style");css.type="text/css";css.id="textFitStyleSheet";css.innerHTML=style;document.body.appendChild(css)}});

@ -418,7 +418,7 @@
"settings_deleteButton": "Suprimir el vostre compte",
"settings_deleteModal": "Envieu la següent informació a qui administri el vostre CryptPad per tal que les vostres dades siguin esborrades del servidor.",
"settings_deleted": "El vostre compte ha estat suprimit. Premeu D'acord per tornar a la pàgina inicial.",
"storageStatus": "Emmagatzematge:<br /><b>{0}</b> utilitzats de <b>{1}</b>",
"storageStatus": "Emmagatzematge:<br><b>{0}</b> utilitzats de <b>{1}</b>",
"settings_anonymous": "No heu iniciat la sessió. Els paràmetres només s'aplicaran al navegador actual.",
"settings_publicSigningKey": "Clau pública de signatura",
"settings_logoutEverywhereButton": "Tanca la sessió",

@ -677,7 +677,7 @@
"share_linkFriends": "Mit Kontakten teilen",
"share_withFriends": "Teilen",
"notifications_dismiss": "Verbergen",
"fm_info_sharedFolderHistory": "Dies ist nur der Verlauf deines geteilten Ordners: <b>{0}</b><br/>Dein CryptDrive bleibt beim Navigieren im Nur-Lesen-Modus.",
"fm_info_sharedFolderHistory": "Dies ist nur der Verlauf deines geteilten Ordners: <b>{0}</b><br>Dein CryptDrive bleibt beim Navigieren im Nur-Lesen-Modus.",
"fc_expandAll": "Alle ausklappen",
"fc_collapseAll": "Alle einklappen",
"fc_color": "Farbe ändern",
@ -822,7 +822,7 @@
"properties_passwordWarningFile": "Das Passwort wurde erfolgreich geändert. Allerdings konnten die Daten in deinem CryptDrive nicht aktualisiert werden. Möglicherweise musst du die alte Version der Datei manuell entfernen.",
"properties_passwordSuccessFile": "Das Passwort wurde geändert.",
"driveOfflineError": "Die Verbindung zu CryptPad ist verloren gegangen. Änderungen an diesem Pad werden nicht in deinem CryptDrive gespeichert. Bitte schließe alle CryptPad-Tabs und versuche es in einem neuen Fenster erneut. ",
"storageStatus": "Speicher:<br /><b>{0}</b> von <b>{1}</b> belegt",
"storageStatus": "Speicher:<br><b>{0}</b> von <b>{1}</b> belegt",
"teams_table": "Rollen",
"teams_table_generic": "Rollen und Berechtigungen",
"teams_table_generic_view": "Ansehen: Zugriff auf Ordner und Pads (nur Lesen)",
@ -1231,7 +1231,7 @@
"register_registrationIsClosed": "Die Registrierung ist geschlossen.",
"mediatag_defaultImageName": "Bild",
"oo_importBin": "Klicke auf OK, um CryptPads interne Format .bin zu importieren.",
"oo_conversionSupport": "Dein Browser unterstützt die Konvertierung von und in Microsoft-Office-Formaten nicht. Wir empfehlen die Verwendung einer aktuellen Version von Firefox oder Chrome.",
"oo_conversionSupport": "Dein Browser unterstützt die Konvertierung von und in Office-Dateiformaten nicht. Wir empfehlen die Verwendung einer aktuellen Version von Firefox oder Chrome.",
"admin_emailTitle": "E-Mail-Adresse der Administratoren",
"admin_emailHint": "Lege hier die Kontaktadresse für deine Instanz fest",
"admin_supportPrivHint": "Lasse dir den privaten Schlüssel anzeigen, den andere Administratoren zum Zugriff auf die Support-Tickets benötigen. Ein Formular zur Eingabe dieses Schlüssels wird in ihrem Administrationsbereich angezeigt.",
@ -1379,5 +1379,8 @@
"fm_link_name_placeholder": "Mein Link",
"fm_link_url": "URL",
"fm_link_type": "Link",
"fm_link_new": "Neuer Link"
"fm_link_new": "Neuer Link",
"form_totalResponses": "Antworten insgesamt: {0}",
"ui_expand": "Ausklappen",
"ui_collapse": "Einklappen"
}

@ -13,7 +13,8 @@
"file": "Archivo",
"media": "Media",
"sheet": "Hoja de Cálculo",
"teams": "Equipos"
"teams": "Equipos",
"form": "Formulario"
},
"disconnected": "Desconectado",
"synchronizing": "Sincronizando",
@ -563,7 +564,7 @@
"features_f_subscribe_note": "Se necesita una cuenta registrada para suscribirse",
"four04_pageNotFound": "No pudimos encontrar la página que estabas buscando.",
"help_genericMore": "Obtenga más información sobre cómo CryptPad puede funcionar para usted leyendo nuestras <a> Preguntas frecuentes </a>",
"storageStatus": "Almacenamiento:<br /><b>{0}</b> usado de <b>{1}</b>",
"storageStatus": "Almacenamiento:<br><b>{0}</b> usado de <b>{1}</b>",
"settings_cursorColorTitle": "Color de puntero",
"mdToolbar_button": "Mostrar u ocultar la barra de herramientas de Markdown",
"creation_404": "Este pad ya no existe. Utilice el siguiente formulario para crear un nuevo pad.",

@ -62,7 +62,7 @@
"language": "Kieli",
"upgrade": "Päivitä",
"upgradeAccount": "Päivitä tili",
"storageStatus": "Tallennustila:<br /><b>{0}</b> käytetty <b>{1}</b>",
"storageStatus": "Tallennustila:<br><b>{0}</b> käytetty <b>{1}</b>",
"MB": "Mt",
"GB": "Gt",
"KB": "Kt",
@ -863,7 +863,7 @@
"admin_supportInitHelp": "Palvelimellesi ei ole asetettu ylläpitopostilaatikkoa. Jos haluat ottaa käyttöön ylläpitopostilaatikon käyttäjiltä tulevia viestejä varten, pyydä palvelimen ylläpitäjää ajamaan skripti \"./scripts/generate-admin-keys.js\", laittamaan skriptin generoima julkinen avain \"config.js\"-tiedostoon ja lähettämään sinulle yksityinen avain.",
"admin_cat_support": "Tuki",
"supportPage": "Tuki",
"fm_info_sharedFolderHistory": "Tämä on jaetun kansiosi historia: <b>{0}</b><br/>CryptDrivesi pysyy vain luku-tilassa selatessasi sitä.",
"fm_info_sharedFolderHistory": "Tämä on jaetun kansiosi historia: <b>{0}</b><br>CryptDrivesi pysyy vain luku-tilassa selatessasi sitä.",
"notifications_dismiss": "Hylkää",
"share_withFriends": "Jaa",
"share_linkFriends": "Jaa yhteystietojen kanssa",

@ -679,7 +679,7 @@
"share_linkFriends": "Partager avec des contacts",
"share_withFriends": "Partager",
"notifications_dismiss": "Cacher",
"fm_info_sharedFolderHistory": "Vous regardez l'historique de votre dossier partagé <b>{0}</b><br/>Votre CryptDrive restera en lecture seule pendant la navigation.",
"fm_info_sharedFolderHistory": "Vous regardez l'historique de votre dossier partagé <b>{0}</b><br>Votre CryptDrive restera en lecture seule pendant la navigation.",
"fc_color": "Changer la couleur",
"supportPage": "Support",
"admin_cat_support": "Support",
@ -819,7 +819,7 @@
"properties_passwordWarningFile": "Le mot de passe a été modifié avec succès mais nous n'avons pas réussi à mettre à jour votre CryptDrive avec les nouvelles informations. Vous devrez peut-être supprimer manuellement l'ancienne version de ce fichier.",
"properties_passwordSuccessFile": "Le mot de passe a été modifié avec succès.",
"driveOfflineError": "Votre connexion à CryptPad a été perdue. Les modifications dans ce pad ne seront pas stockées dans votre CryptDrive. Veuillez fermer tous vos onglets CryptPad et ré-essayer dans une nouvelle fenêtre. ",
"storageStatus": "Stockage : <br /><b>{0}</b> utilisés sur <b>{1}</b>",
"storageStatus": "Stockage : <br><b>{0}</b> utilisés sur <b>{1}</b>",
"teams_table": "Rôles",
"teams_table_generic": "Rôles et permissions",
"teams_table_generic_view": "Voir : accéder aux dossiers et pads (lecture seule).",
@ -1379,5 +1379,7 @@
"fm_link_name": "Titre du lien",
"fm_link_type": "Lien",
"fm_link_new": "Nouveau Lien",
"notification_openLink": "Vous avez reçu un lien <b>{0}</b> de {1} :"
"notification_openLink": "Vous avez reçu un lien <b>{0}</b> de {1} :",
"ui_expand": "Développer",
"ui_collapse": "Réduire"
}

@ -397,7 +397,7 @@
"settings_deleteHint": "La cancellazione dell'account è permanente. Il tuo CryptDrive e il tuo elenco di pad saranno cancellati dal server. Il resto dei tuoi pad sarà eliminato in 90 giorni se nessun altro li ha salvati nel suo CryptDrive.",
"settings_deleteButton": "Cancella il tuo account",
"padNotPinnedVariable": "Questo pad scadrà dopo {4} giorni di inattività, {0}accedi{1} o {2}registrati{3} per conservarlo.",
"storageStatus": "Spazio:<br /><b>{0}</b> utilizzato su <b>{1}</b>",
"storageStatus": "Spazio:<br><b>{0}</b> utilizzato su <b>{1}</b>",
"uploadFolderButton": "Carica cartella",
"fm_morePads": "Altro",
"fc_color": "Cambia colore",
@ -910,7 +910,7 @@
"admin_flushCacheButton": "Svuota la cache",
"admin_diskUsageHint": "Lo spazio di memoria disponibile è stato esaurito da varie risorse CryptPad",
"profile_info": "Altri utenti possono trovare il tuo profilo tramite il tuo avatar nella lista degli utenti dei documenti.",
"fm_info_sharedFolderHistory": "questa è solo la cronologia delle tue cartelle condivise: <b>{0}</b><br/>Il tuo CryptDrive rimarrà in sola lettura durante la navigazione.",
"fm_info_sharedFolderHistory": "questa è solo la cronologia delle tue cartelle condivise: <b>{0}</b><br>Il tuo CryptDrive rimarrà in sola lettura durante la navigazione.",
"admin_supportInitHelp": "Il tuo server non è ancora configurato per avere una mailbox di supporto. Se vuoi una mailbox di supporto per ricevere messaggi dai tuoi utenti, chiedi all'amministratore del server di avviare lo script posizionato in \"./scripts/generate-admin-keys.js\", quindi salvare la chiave pubblica nel file \"config.js\" ed inviarti la chiave privata.",
"admin_supportInitPrivate": "La tua installazione CryptPad è configurata per usare una mailbox di supporto ma il tuo account non ha la chiave privata corretta per accedervi. Usa il modulo che segue per aggiungere o aggiornare la chiave privata del tuo account.",
"admin_supportInitHint": "Puoi configurare una mailbox di supporto per dare agli utenti del tuo CryptPad un modo per contattarti in maniera sicura se hanno problemi con i loro account.",

@ -86,7 +86,7 @@
"settings_trimHistoryTitle": "履歴の削除",
"trimHistory_success": "履歴を削除しました",
"trimHistory_button": "履歴を削除",
"storageStatus": "ストレージ使用量:<br /><b>{1}</b> の内 <b>{0}</b>",
"storageStatus": "ストレージ使用量:<br><b>{1}</b> の内 <b>{0}</b>",
"formattedKB": "{0} KB",
"formattedGB": "{0} GB",
"formattedMB": "{0} MB",
@ -807,7 +807,7 @@
"settings_resetThumbnailsDescription": "ブラウザに保存したサムネイルを削除します。",
"settings_disableThumbnailsDescription": "新しいパッドを開くと、サムネイルが自動で作成され、ブラウザに保存されます。ここでサムネイルの作成を無効にできます。",
"fm_info_root": "フォルダを作成してファイルを整理できます。",
"oo_conversionSupport": "お使いのブラウザはMicrosoft Officeのフォーマットの変換に対応していません。FirefoxもしくはChromeの最新バージョンの使用を推奨します。",
"oo_conversionSupport": "お使いのブラウザは、オフィスソフトウェアのフォーマットの変換に対応していません。FirefoxもしくはChromeの最新バージョンの使用を推奨します。",
"register_registrationIsClosed": "登録は締め切りました。",
"settings_notifCalendarHint": "今後のカレンダーのイベントの全ての通知を有効もしくは無効にします。",
"reminder_inProgressAllDay": "今日: <b>{0}</b>",
@ -1149,7 +1149,7 @@
"support_disabledTitle": "サポートは有効になっていません",
"admin_supportListHint": "ユーザーからサポートのメールボックスに送信されたチケットの一覧です。管理者はメッセージと回答を閲覧できます。終了したチケットは再開することができます。終了したチケットについては削除する(隠す)ことができますが、他の管理者には引き続き表示されます。",
"drive_sfPassword": "共有フォルダ「 {0} 」は利用できません。オーナーにより削除されたか、新しいパスワードで保護されています。CryptDriveから削除するか、新しいパスワードを使ってアクセスを回復できます。",
"fm_info_sharedFolderHistory": "これは共有フォルダの履歴です: <b>{0}</b><br/>CryptDriveは閲覧モードを継続します。",
"fm_info_sharedFolderHistory": "これは共有フォルダの履歴です: <b>{0}</b><br>CryptDriveは閲覧モードを継続します。",
"notification_folderShared": "{0}があなたとフォルダを共有しました: <b>{1}</b>",
"convertFolderToSF_SFChildren": "このフォルダは共有フォルダを含んでいるため、共有フォルダに変更できません。続けるには、このフォルダを共有フォルダの外に移動してください。",
"sharedFolders_share": "このリンクを登録ユーザーと共有すると、共有フォルダへのアクセスが可能になります。相手がリンクを開くと、CryptDriveに共有フォルダが追加されます。",
@ -1379,5 +1379,8 @@
"fm_link_name_placeholder": "あなたのリンク",
"fm_link_warning": "注意URLが200字を超えています",
"fm_link_invalid": "URLが無効です",
"form_answerAs": "名前を記入してください"
"form_answerAs": "名前を記入してください",
"form_totalResponses": "回答数:{0}",
"ui_expand": "広げる",
"ui_collapse": "折りたたむ"
}

@ -62,7 +62,7 @@
"language": "Language",
"upgrade": "Upgrade",
"upgradeAccount": "Upgrade account",
"storageStatus": "Storage:<br /><b>{0}</b> used out of <b>{1}</b>",
"storageStatus": "Storage:<br><b>{0}</b> used out of <b>{1}</b>",
"MB": "MB",
"GB": "GB",
"KB": "KB",
@ -701,7 +701,7 @@
"share_linkFriends": "Share with contacts",
"share_withFriends": "Share",
"notifications_dismiss": "Dismiss",
"fm_info_sharedFolderHistory": "This is only the history of your shared folder: <b>{0}</b><br/>Your CryptDrive will stay in read-only mode while you navigate.",
"fm_info_sharedFolderHistory": "This is only the history of your shared folder: <b>{0}</b><br>Your CryptDrive will stay in read-only mode while you navigate.",
"supportPage": "Support",
"admin_cat_support": "Support",
"admin_supportInitHelp": "Your server is not yet configured to have a support mailbox. If you want a support mailbox to receive messages from your users, you should ask your server administrator to run the script located in \"./scripts/generate-admin-keys.js\", then store the public key in the \"config.js\" file and send you the private key.",
@ -1379,5 +1379,8 @@
"form_anonName": "Your name",
"form_answerAs": "Answer as",
"fm_link_warning": "Warning: the URL exceeds 200 characters",
"fm_link_invalid": "Invalid URL"
"fm_link_invalid": "Invalid URL",
"ui_collapse": "Collapse",
"ui_expand": "Expand",
"form_totalResponses": "Total responses: {0}"
}

@ -46,7 +46,7 @@
"KB": "KB",
"GB": "GB",
"MB": "MB",
"storageStatus": "Saugykla: <br /> <b> {0} </b> sunaudota iš <b> {1} </b>",
"storageStatus": "Saugykla: <br> <b> {0} </b> sunaudota iš <b> {1} </b>",
"upgrade": "Atnaujinti",
"upgradeAccount": "Atnaujinti paskyrą",
"language": "Kalba",

@ -265,7 +265,7 @@
"formattedKB": "{0} KB",
"formattedGB": "{0} GB",
"formattedMB": "{0} MB",
"storageStatus": "Lagringsplass:<br /><b>{0}</b> brukt, av <b>{1}</b>",
"storageStatus": "Lagringsplass:<br><b>{0}</b> brukt, av <b>{1}</b>",
"padNotPinnedVariable": "Denne dokumentet utløper etter {4] dager med inaktivitet, {0}logg inn{1} eller {2}registrer deg{3} for å bevare det.",
"history_restoreTitle": "Gjenopprett den valgte dokumentversjonen",
"history_closeTitle": "Lukk historikken",

@ -131,7 +131,7 @@
"KB": "KB",
"GB": "GB",
"MB": "MB",
"storageStatus": "Opslag:<br /><b>{0}</b> verbruikt van <b>{1}</b>",
"storageStatus": "Opslag:<br><b>{0}</b> verbruikt van <b>{1}</b>",
"upgradeAccount": "Account opwaarderen",
"upgrade": "Opwaarderen",
"language": "Taal",

@ -322,7 +322,7 @@
"oo_uploaded": "Seu envio foi completado. Clique OK para recarregar a página ou cancele para continuar no modo somente leitura.",
"canvas_opacityLabel": "Opacidade: {0}",
"canvas_widthLabel": "Largura: {0}",
"storageStatus": "Armazenamento:<br /><b>{0}</b> usados do total <b>{1}</b>",
"storageStatus": "Armazenamento:<br><b>{0}</b> usados do total <b>{1}</b>",
"upgradeAccount": "Atualizar conta",
"padNotPinnedVariable": "Este pad vai expirar em {4} dias de inatividade, {0} faça login{1} ou {2}registre-se{3} para preserva-lo.",
"settings_cursorColorTitle": "Cor do cursor",
@ -791,7 +791,7 @@
"admin_supportInitHelp": "Seu servidor ainda não está configurado para ter uma caixa de correio de suporte. Se você deseja que uma caixa de correio de suporte receba mensagens de seus usuários, peça ao administrador do servidor para executar o script localizado em \"./scripts/generate-admin-keys.js\" e, em seguida, armazene a chave pública em \"config.js \"arquivo e enviar a chave privada.",
"admin_cat_support": "Suporte",
"supportPage": "Suporte",
"fm_info_sharedFolderHistory": "Este é apenas o histórico da sua pasta compartilhada: <b> {0} </b> <br/> Seu CryptDrive permanecerá no modo somente leitura enquanto você navega.",
"fm_info_sharedFolderHistory": "Este é apenas o histórico da sua pasta compartilhada: <b> {0} </b> <br> Seu CryptDrive permanecerá no modo somente leitura enquanto você navega.",
"notifications_dismiss": "Recusar",
"share_withFriends": "Compartilhar",
"share_linkFriends": "Compartilhar com contatos",

@ -443,7 +443,7 @@
"fc_color": "Schimbă culoarea",
"fm_morePads": "Mai mult",
"uploadFolderButton": "Încarcă dosar",
"storageStatus": "Capacitate de stocare:<br /><b>{0}</b> utilizat din <b>{1}</b>",
"storageStatus": "Capacitate de stocare:<br><b>{0}</b> utilizat din <b>{1}</b>",
"fc_collapseAll": "Restrânge",
"settings_padSpellcheckLabel": "Activați verificarea ortografică",
"settings_padSpellcheckHint": "Această opțiune vă permite să activați verificarea ortografică în editorul de text. Erorile de ortografie vor fi subliniate cu roșu și va trebui să țineți apăsată tasta Ctrl sau tasta Meta în timp ce faceți clic dreapta pentru a vedea opțiunile corecte.",

@ -442,7 +442,7 @@
"fc_openInCode": "Открыть в редакторе кода",
"fm_morePads": "Ещё",
"uploadFolderButton": "Загрузить папку",
"storageStatus": "Хранилище:<br /><b>{0}</b> использовано из <b>{1}</b>",
"storageStatus": "Хранилище:<br><b>{0}</b> использовано из <b>{1}</b>",
"padNotPinnedVariable": "Этот документ исчезнет через {4} дней неактивности, {0}войдите{1} или {2}зарегистируйтесь{3} чтобы сохранить его.",
"creation_passwordValue": "Пароль",
"creation_owners": "Владельцы",

@ -102,7 +102,7 @@
"KB": "KB",
"GB": "GB",
"MB": "MB",
"storageStatus": "Lagring:<br /><b>{0}</b> använd av <b>{1}</b>",
"storageStatus": "Lagring:<br><b>{0}</b> använd av <b>{1}</b>",
"upgradeAccount": "Uppgradera konto",
"upgrade": "Uppgradera",
"language": "Språk",

@ -279,10 +279,11 @@ define([
tippy: Messages.fm_burnThisDriveButton,
drawer: false
}, function () {
UI.confirm(Messages.fm_burnThisDrive, function (yes) {
var confirmContent = UIElements.fixInlineBRs(Messages.fm_burnThisDrive);
UI.confirm(confirmContent, function (yes) {
if (!yes) { return; }
common.getSframeChannel().event('EV_BURN_ANON_DRIVE');
}, null, true);
});
});
}

@ -1,4 +1,11 @@
This file is intended to be used as a log of what third-party source we have vendored, where we got it, and what modifications we have made to it (if any).
* [turndown v7.1.1](https://github.com/mixmark-io/turndown/releases/tag/v7.1.1) built from unmodified source as per its build scripts.
* [less.min.js v3.11.1](https://github.com/less/less.js/releases/tag/v3.11.1) with a minor modification to produce slightly more compact CSS
* [textFit.min.js v2.4.0 ](https://github.com/STRML/textFit/releases/tag/v2.4.0) to ensure that app names fit inside their icon containers on the home page
* [highlightjs](https://github.com/highlightjs/highlight.js/) for syntax highlighting in our code editor
* [our fork of tippy.js](https://github.com/xwiki-labs/tippyjs) for adding tooltips.
* [jscolor v2.0.5](https://jscolor.com/) for providing a consistent color picker across all browsers
* [jquery.ui 1.12.1](https://jqueryui.com/) for its 'autocomplete' extension which is used for our tag picker
* [pdfjs](https://mozilla.github.io/pdf.js/) with some minor modifications to prevent CSP errors

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Before

Width:  |  Height:  |  Size: 193 B

After

Width:  |  Height:  |  Size: 193 B

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 326 B

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 326 B

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before

Width:  |  Height:  |  Size: 603 B

After

Width:  |  Height:  |  Size: 603 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save