Merge branch 'staging' into dapsi-demo-update

pull/1/head
ansuz 3 years ago
commit baf9ab0c93

@ -1141,6 +1141,14 @@ define([
}; };
var handleChanges = function (obj, send) { var handleChanges = function (obj, send) {
if (APP.history) {
send({
type: "unSaveLock",
index: ooChannel.cpIndex,
time: +new Date()
});
return;
}
// Add a new entry to the pendingChanges object. // Add a new entry to the pendingChanges object.
// If we can't send the patch within 30s, force a page reload // If we can't send the patch within 30s, force a page reload
var uid = Util.uid(); var uid = Util.uid();

@ -617,11 +617,11 @@ define([
return void cb({error: 'NO_SUCH_CHANNEL'}); return void cb({error: 'NO_SUCH_CHANNEL'});
} }
var proxy = ctx.store.proxy; var proxy = ctx.store.proxy || {};
var msg = [Types.message, proxy.curvePublic, +new Date(), payload]; var msg = [Types.message, proxy.curvePublic, +new Date(), payload];
if (!channel.isFriendChat) { if (!channel.isFriendChat) {
var name = proxy[Constants.displayNameKey] || var name = proxy[Constants.displayNameKey] ||
Messages.anonymous + '#' + proxy.uid.slice(0,5); Messages.anonymous + '#' + (proxy.uid || ctx.store.noDriveUid).slice(0,5);
msg.push(name); msg.push(name);
} }
var msgStr = JSON.stringify(msg); var msgStr = JSON.stringify(msg);

@ -87,8 +87,10 @@ define([
chan.wc = wc; chan.wc = wc;
chan.sendMsg = function (msg, cb) { chan.sendMsg = function (msg, cb) {
cb = cb || function () {}; cb = cb || function () {};
var hash = msg.slice(0, 64);
wc.bcast(msg).then(function () { wc.bcast(msg).then(function () {
chan.history.push(msg); chan.history.push(msg);
chan.lastKnownHash = hash;
cb(); cb();
}, function (err) { }, function (err) {
cb({error: err}); cb({error: err});

@ -20,7 +20,7 @@
"synchronizing": "Sincronizando", "synchronizing": "Sincronizando",
"reconnecting": "Reconectando", "reconnecting": "Reconectando",
"readonly": "Sólo lectura", "readonly": "Sólo lectura",
"anonymous": "Anónimo", "anonymous": "Invitado",
"users": "Usuarios", "users": "Usuarios",
"viewer": "espectador", "viewer": "espectador",
"viewers": "espectadores", "viewers": "espectadores",
@ -124,7 +124,7 @@
"login_invalUser": "Nombre de usuario requerido", "login_invalUser": "Nombre de usuario requerido",
"login_invalPass": "Contraseña requerida", "login_invalPass": "Contraseña requerida",
"login_unhandledError": "Ha ocurrido un error inesperado :(", "login_unhandledError": "Ha ocurrido un error inesperado :(",
"register_importRecent": "Importar documentos de su sesión no registrada", "register_importRecent": "Importar documentos de su sesión de invitado",
"register_acceptTerms": "Acepto los <a>términos de servicio</a>", "register_acceptTerms": "Acepto los <a>términos de servicio</a>",
"register_passwordsDontMatch": "Las contraseñas no corresponden", "register_passwordsDontMatch": "Las contraseñas no corresponden",
"register_mustAcceptTerms": "Tienes que aceptar los términos de servicio", "register_mustAcceptTerms": "Tienes que aceptar los términos de servicio",
@ -167,7 +167,7 @@
"settings_import": "Importar", "settings_import": "Importar",
"settings_importConfirm": "¿Seguro que quieres importar tus pads recientes a tu cuenta CryptDrive?", "settings_importConfirm": "¿Seguro que quieres importar tus pads recientes a tu cuenta CryptDrive?",
"settings_importDone": "Importación terminada", "settings_importDone": "Importación terminada",
"feedback_about": "Si estas leyendo esto, quizás sientas curiosidad por saber por qué CryptPad solicita páginas cuando realizas algunas acciones", "feedback_about": "Si estas leyendo esto, quizás sientas curiosidad por saber por qué CryptPad solicita páginas cuando realizas ciertas acciones.",
"feedback_privacy": "Nos importa tu privacidad, y al mismo tiempo queremos que CryptPad sea muy fácil de usar. Utilizamos este archivo para conocer las funcionalidades que importan a nuestros usuarios, pidiéndolo con un parametro que nos dice qué acción fue realizada.", "feedback_privacy": "Nos importa tu privacidad, y al mismo tiempo queremos que CryptPad sea muy fácil de usar. Utilizamos este archivo para conocer las funcionalidades que importan a nuestros usuarios, pidiéndolo con un parametro que nos dice qué acción fue realizada.",
"feedback_optout": "Si quieres darte de baja, visita <a>tus preferencias</a>, donde podrás activar o desactivar el feedback.", "feedback_optout": "Si quieres darte de baja, visita <a>tus preferencias</a>, donde podrás activar o desactivar el feedback.",
"fm_searchName": "Buscar", "fm_searchName": "Buscar",
@ -294,7 +294,7 @@
"topbar_whatIsCryptpad": "Qué es CryptPad", "topbar_whatIsCryptpad": "Qué es CryptPad",
"header_homeTitle": "Volver a la página de inicio", "header_homeTitle": "Volver a la página de inicio",
"userListButton": "Lista de usuarios", "userListButton": "Lista de usuarios",
"userAccountButton": "Tu cuenta", "userAccountButton": "Menú de usuario",
"canvas_saveToDrive": "Guardar esta imagen como archivo en tu CryptDrive", "canvas_saveToDrive": "Guardar esta imagen como archivo en tu CryptDrive",
"canvas_currentBrush": "Pincel actual", "canvas_currentBrush": "Pincel actual",
"fm_viewListButton": "Lista", "fm_viewListButton": "Lista",
@ -306,13 +306,13 @@
"button_newkanban": "Nuevo Kanban", "button_newkanban": "Nuevo Kanban",
"button_newsheet": "Nueva Hoja", "button_newsheet": "Nueva Hoja",
"padNotPinned": "Esta nota expirará luego de 3 meses de inactividad, {0}ingresar{1} o {2}registrarse{3}para conservar.", "padNotPinned": "Esta nota expirará luego de 3 meses de inactividad, {0}ingresar{1} o {2}registrarse{3}para conservar.",
"anonymousStoreDisabled": "El webmaster de esta instancia de CryptPad a deshabilitado al almacenamiento para usuarios anónimos. Debes ingresar para poder usar CrytDrive.", "anonymousStoreDisabled": "El administrador de esta instancia de CryptPad ha deshabilitado al almacenamiento para usuarios anónimos. Debes iniciar sesión para poder usar CryptDrive.",
"expiredError": "Este pad ha expirado y ya no está disponible.", "expiredError": "Este pad ha expirado y ya no está disponible.",
"deletedError": "Esta nota ha sido borrada por su dueño y ya no está disponible.", "deletedError": "Este documento ha sido borrado y ya no se encuentra disponible.",
"inactiveError": "Esta nota ha sido eliminada por inactividad. Presione Esc para crear una nueva nota.", "inactiveError": "Esta nota ha sido eliminada por inactividad. Presione Esc para crear una nueva nota.",
"chainpadError": "Ha ocurrido un error crítico al actualizar su contenido. Esta página esta en modo de sólo lectura, para asegurarse que no perderá su trabajo.<br>Hit<em>Esc</em>para continuar y ver esta nota, o recargar para editar nuevamente.", "chainpadError": "Ha ocurrido un error crítico al actualizar su contenido. Esta página esta en modo de sólo lectura, para asegurarse que no perderá su trabajo.<br>Hit<em>Esc</em>para continuar y ver esta nota, o recargar para editar nuevamente.",
"invalidHashError": "El documento que has solicitado tiene una URL invalida.", "invalidHashError": "El documento que has solicitado tiene una URL invalida.",
"errorCopy": " Aún puedes acceder al contenido presionando <em>Esc</em>.<br>Una vez que cierres esta ventana no te será posible acceder a ella nuevamente.", "errorCopy": " Aún puedes acceder esta versión en modo lectura persionando <em>Esc</em>.",
"errorRedirectToHome": "Presiona<em>Esc</em>para ser redirigido a tu Cryptdrive.", "errorRedirectToHome": "Presiona<em>Esc</em>para ser redirigido a tu Cryptdrive.",
"newVersionError": "Una nueva versión de CryptPad está disponible.<br><a href='#'>Recargar</a> para usar la nueva versión, o presiona escape para acceder a tu contenido en <b>modo offline</b>.", "newVersionError": "Una nueva versión de CryptPad está disponible.<br><a href='#'>Recargar</a> para usar la nueva versión, o presiona escape para acceder a tu contenido en <b>modo offline</b>.",
"deletedFromServer": "Nota borrada", "deletedFromServer": "Nota borrada",
@ -527,7 +527,7 @@
"whatis_drive": "Organización con CryptDrive", "whatis_drive": "Organización con CryptDrive",
"features": "Caracteristicas", "features": "Caracteristicas",
"features_title": "Características", "features_title": "Características",
"features_anon": "No registrado", "features_anon": "Invitado",
"features_registered": "Registrado", "features_registered": "Registrado",
"features_premium": "Premium", "features_premium": "Premium",
"features_f_apps": "Acceso a todas las aplicaciones", "features_f_apps": "Acceso a todas las aplicaciones",
@ -539,7 +539,7 @@
"features_f_cryptdrive0_note": "Posibilidad de almacenar los pads visitados en su navegador para poder abrirlos más tarde", "features_f_cryptdrive0_note": "Posibilidad de almacenar los pads visitados en su navegador para poder abrirlos más tarde",
"features_f_storage0": "Tiempo de almacenamiento limitado", "features_f_storage0": "Tiempo de almacenamiento limitado",
"features_f_storage0_note": "Los documentos se eliminan después de {0} días de inactividad", "features_f_storage0_note": "Los documentos se eliminan después de {0} días de inactividad",
"features_f_anon": "Todas las funciones de usuario anónimo", "features_f_anon": "Todas las funciones de invitado",
"features_f_anon_note": "Con funcionalidad adicional", "features_f_anon_note": "Con funcionalidad adicional",
"features_f_cryptdrive1": "Funcionalidad completa de CryptDrive", "features_f_cryptdrive1": "Funcionalidad completa de CryptDrive",
"features_f_cryptdrive1_note": "Carpetas, compartir carpetas, plantillas, tareas", "features_f_cryptdrive1_note": "Carpetas, compartir carpetas, plantillas, tareas",
@ -570,7 +570,7 @@
"creation_404": "Este pad ya no existe. Utilice el siguiente formulario para crear un nuevo pad.", "creation_404": "Este pad ya no existe. Utilice el siguiente formulario para crear un nuevo pad.",
"creation_owned1": "Un objeto <b>propiedad</b> puede ser destruido cuando el propietario lo desee. La destrucción de un objeto propio hace que no esté disponible en los CryptDrives de otros usuarios.", "creation_owned1": "Un objeto <b>propiedad</b> puede ser destruido cuando el propietario lo desee. La destrucción de un objeto propio hace que no esté disponible en los CryptDrives de otros usuarios.",
"settings_padNotifTitle": "Notificaciones de comentarios", "settings_padNotifTitle": "Notificaciones de comentarios",
"password_info": "El bloc que intentas abrir no existe o está protegido con una contraseña. Ingrese la contraseña correcta para acceder a su contenido.", "password_info": "El documento que intenta abrir no existe o está protegido con una contraseña. Ingrese la contraseña correcta para acceder a su contenido.",
"creation_newPadModalDescription": "Haz click en un tipo de documento para crearlo. Tú también puedes presionar <b>Tab</b> para seleccionar el tipo y presiona <b>Enter</b> para confirmar.", "creation_newPadModalDescription": "Haz click en un tipo de documento para crearlo. Tú también puedes presionar <b>Tab</b> para seleccionar el tipo y presiona <b>Enter</b> para confirmar.",
"toolbar_degraded": "Actualmente hay más de {0} editores en este documento. La lista de usuarios y el chat están desactivados para mejorar el rendimiento.", "toolbar_degraded": "Actualmente hay más de {0} editores en este documento. La lista de usuarios y el chat están desactivados para mejorar el rendimiento.",
"oo_lostEdits": "Lamentablemente, las ediciones recientes no guardadas no se pueden recuperar después de sincronizar el nuevo contenido.", "oo_lostEdits": "Lamentablemente, las ediciones recientes no guardadas no se pueden recuperar después de sincronizar el nuevo contenido.",
@ -582,14 +582,14 @@
"properties_addPassword": "Añadir una contraseña", "properties_addPassword": "Añadir una contraseña",
"password_submit": "Enviar", "password_submit": "Enviar",
"password_placeholder": "Escriba la contraseña aquí...", "password_placeholder": "Escriba la contraseña aquí...",
"password_error": "¡No se ha encontrado el pad!<br>Este error puede ser causado por dos factores: o la contraseña no es válida, o el pad ha sido borrado del servidor.", "password_error": "No se ha encontrado el documento<br>Este error puede ser causado por dos factores: la contraseña no es válida o el pad ha sido borrado del servidor.",
"creation_passwordValue": "Contraseña", "creation_passwordValue": "Contraseña",
"creation_expiration": "Fecha de vencimiento", "creation_expiration": "Fecha de vencimiento",
"creation_noOwner": "Sin propietario", "creation_noOwner": "Sin propietario",
"creation_owners": "Propietarios", "creation_owners": "Propietarios",
"creation_create": "Crear", "creation_create": "Crear",
"creation_newTemplate": "Nueva plantilla", "creation_newTemplate": "Nueva plantilla",
"creation_noTemplate": "Sin plantilla", "creation_noTemplate": "Documento vacío",
"creation_password": "Contraseña\n", "creation_password": "Contraseña\n",
"creation_expireMonths": "Mes(es)", "creation_expireMonths": "Mes(es)",
"creation_expireDays": "Día(s)", "creation_expireDays": "Día(s)",
@ -601,8 +601,8 @@
"sharedFolders_forget": "Este bloc sólo se almacena en una carpeta compartida, no puedes moverlo a la papelera. Puedes usar tu CryptDrive si quieres borrarlo.", "sharedFolders_forget": "Este bloc sólo se almacena en una carpeta compartida, no puedes moverlo a la papelera. Puedes usar tu CryptDrive si quieres borrarlo.",
"share_mediatagCopy": "Copiar mediatag al portapapeles", "share_mediatagCopy": "Copiar mediatag al portapapeles",
"share_contactCategory": "Contactos", "share_contactCategory": "Contactos",
"share_linkCopy": "Copiar", "share_linkCopy": "Copiar enlace",
"share_linkOpen": "Previsualizar", "share_linkOpen": "Abrir enlace",
"share_linkView": "Ver", "share_linkView": "Ver",
"share_linkEdit": "Editar", "share_linkEdit": "Editar",
"share_linkAccess": "Permisos de acceso", "share_linkAccess": "Permisos de acceso",
@ -646,5 +646,34 @@
"convertFolderToSF_SFParent": "Esta carpeta no puede ser convertida a una carpeta compartida en su actual localización. Mueva la carpeta fuera de la carperta compartida para continuar.", "convertFolderToSF_SFParent": "Esta carpeta no puede ser convertida a una carpeta compartida en su actual localización. Mueva la carpeta fuera de la carperta compartida para continuar.",
"sharedFolders_share": "Comparte este enlace con otros usuarios registrados para darles accesso a la carpeta compartida. Una vez que ellos/as abran este enlace, la carpeta compartida será añadida a sus CryptDrive.", "sharedFolders_share": "Comparte este enlace con otros usuarios registrados para darles accesso a la carpeta compartida. Una vez que ellos/as abran este enlace, la carpeta compartida será añadida a sus CryptDrive.",
"sharedFolders_create": "Crear una carpeta compartida", "sharedFolders_create": "Crear una carpeta compartida",
"sharedFolders_duplicate": "Algunos de los documentos que intentaste mover ya estaban compartidos en la carpeta de destino" "sharedFolders_duplicate": "Algunos de los documentos que intentaste mover ya estaban compartidos en la carpeta de destino",
"admin_flushCacheTitle": "Vaciar caché HTTP",
"admin_updateLimitDone": "Actualización correcta",
"admin_updateLimitButton": "Actualizar cuotas",
"admin_updateLimitHint": "Forzar una actualización de los límites de almacenamiento del usuario se puede hacer en cualquier momento, pero sólo es necesario en caso de error",
"crowdfunding_button2": "Ayuda a CryptPad",
"autostore_pad": "bloc",
"settings_padOpenLinkTitle": "Abrir links con un click",
"fm_expirablePad": "Expiración: {0}",
"crowdfunding_button": "Apoya a CryptPad",
"autostore_file": "archivo",
"admin_diskUsageButton": "Generar informe",
"admin_diskUsageHint": "Cantidad de almacenamiento gastado por diversos recursos de CryptPad",
"admin_diskUsageTitle": "Almacenamiento usado",
"timeoutError": "Algún error ha cortado la conexión al servidor. <br>Pulsa<em>Esc </em> para recargar la página.",
"contact_email": "Correo electrónico",
"contact_chat": "Chat",
"contact_bug": "Informe de error",
"contact_devHint": "Para sugerencias de funciones, mejoras de usabilidad o para simplemente agradecer.",
"contact_dev": "Contactar a los desarrolladores",
"contact_adminHint": "Para cualquier problema relacionado con su cuenta, límites de almacenamiento o disponibilidad del servicio.\n",
"contact_admin": "Contactar a los administradores",
"footer_tos": "Términos de Servicio",
"footer_legal": "Legal",
"footer_donate": "Donar",
"footer_team": "Colaboradores",
"footer_product": "Producto",
"admin_flushCacheDone": "Vaciado de caché exitoso",
"admin_flushCacheButton": "Vaciar caché",
"admin_flushCacheHint": "Obligar a usuarios a descargar los recursos más nuevos para el cliente (sólo si su servidor está en modo actualizado o “fresh mode”)"
} }

@ -171,7 +171,7 @@ define([
$block.append(h('p', text)); $block.append(h('p', text));
// Add filter input // Add filter input
var $filter = $(h('p.cp-modal-form')).appendTo($block); var $filter = $(h('p.cp-modal-form')).hide().appendTo($block);
var to; var to;
var $input = $('<input>', { var $input = $('<input>', {
type: 'text', type: 'text',
@ -211,6 +211,7 @@ define([
updateContainer = function () { updateContainer = function () {
var filter = $input.val().trim(); var filter = $input.val().trim();
var todo = function (err, list) { var todo = function (err, list) {
$filter.show();
if (err) { return void console.error(err); } if (err) { return void console.error(err); }
$container.html(''); $container.html('');
Object.keys(list).forEach(function (id) { Object.keys(list).forEach(function (id) {

Loading…
Cancel
Save