Merge remote-tracking branch 'origin/master' into feature/improve_nm_performance
@ -5,9 +5,8 @@
|
||||
* @link http://www.egroupware.org
|
||||
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||
* @package admin
|
||||
* @copyright (c) 2009-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||
* @copyright (c) 2009-19 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
use EGroupware\Api;
|
||||
@ -166,7 +165,7 @@ class admin_accesslog
|
||||
'start' => 0, // IO position in list
|
||||
'order' => 'li', // IO name of the column to sort after (optional for the sortheaders)
|
||||
'sort' => 'DESC', // IO direction of the sort: 'ASC' or 'DESC'
|
||||
//'default_cols' => // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
|
||||
'default_cols' => '!session_action', // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
|
||||
'csv_fields' => false, // I false=disable csv export, true or unset=enable it with auto-detected fieldnames,
|
||||
//or array with name=>label or name=>array('label'=>label,'type'=>type) pairs (type is a eT widget-type)
|
||||
'actions' => $this->get_actions($sessions_list),
|
||||
|
@ -176,7 +176,7 @@ app.classes.admin = AppJS.extend(
|
||||
jQuery(this.ajax_target.node).empty();
|
||||
}
|
||||
this.egw.json(
|
||||
framework.activeApp.getMenuaction('ajax_exec'),
|
||||
framework.activeApp.getMenuaction('ajax_exec', _url),
|
||||
// It's important that the context is null, or etemplate2
|
||||
// won't load the template properly
|
||||
[_url], this._ajax_load_callback,null, true, this
|
||||
@ -731,7 +731,7 @@ app.classes.admin = AppJS.extend(
|
||||
if(this.egw.user('apps').policy)
|
||||
{
|
||||
dialog_options['width'] = 550;
|
||||
dialog_options['height'] = 350,
|
||||
dialog_options['height'] = 450,
|
||||
modifications.tabs = {
|
||||
add_tabs: true,
|
||||
tabs: [{
|
||||
|
@ -1,9 +1,12 @@
|
||||
%1 %2 rights for %3 on %4 to %5 admin es-es %1 %2 derechos para %3 en %4 a %5
|
||||
%1 - %2 of %3 user accounts admin es-es %1 - %2 de %3 cuentas de usuarios
|
||||
%1 - %2 of %3 user groups admin es-es %1 - %2 de %3 grupos de usuarios
|
||||
%1 access to other data admin es-es acceso de %1 a otros datos
|
||||
%1 accounts being activated admin es-es %1 cuentas activadas
|
||||
%1 acl entries deleted. admin es-es %1 entradas de ACL borradas.
|
||||
%1 acl records of not (longer) existing accounts deleted. admin es-es Se han borrado %1 registros de cuentas inexistentes.
|
||||
%1 categories of not (longer) existing accounts deleted. admin es-es Se han borrado %1 categorías de cuentas que ya no existen.
|
||||
%1 category '%2' %3 admin es-es %1 categoría '%2' %3
|
||||
%1 category(s) %2 admin es-es %1 categorías %2
|
||||
%1 category(s) %2, %3 failed because of insufficent rights !!! admin es-es %1 categorías %2, %3 fallaron por permisos insuficiente
|
||||
%1 class not instanciated admin es-es La clase %1 no está instanciada
|
||||
@ -19,10 +22,17 @@
|
||||
%1 user %2 admin es-es %1 usuario %2
|
||||
(de)activate mail accounts admin es-es (des)activar cuentas de correo
|
||||
(default no, leave it off if you dont use it) admin es-es (por defecto, No, desactivar si no se usa)
|
||||
(imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver) admin es-es (imapclass debe admitir esta característica al consultar el valor de configuración correspondiente y pasarlo como cuota predeterminada al imapserver)
|
||||
(no subject) admin es-es (Sin asunto)
|
||||
(stored password will not be shown here) admin es-es (las claves guardadas no se mostrarán aquí)
|
||||
(to install new applications use<br><a href="setup/" target="setup">setup</a> [manage applications] !!!) admin es-es (Para instalar nuevas aplicaciones, utilice <br><a href="setup/" target="setup">Instalación</a> [Administrar Aplicaciones])
|
||||
- type admin es-es - tipo
|
||||
1 year admin es-es 1 año
|
||||
2 month admin es-es 2 meses
|
||||
2 weeks admin es-es 2 semanas
|
||||
2-factor-authentication for interactive login admin es-es Autenticación de 2 factores para inicio de sesión interactivo
|
||||
3 month admin es-es 3 meses
|
||||
6 month admin es-es 6 meses
|
||||
access by admin es-es Acceso por
|
||||
access control admin es-es Control de acceso
|
||||
access to %1 data by others admin es-es Acceso a datos %1 por otros
|
||||
@ -46,6 +56,7 @@ account preferences admin es-es Preferencias de la cuenta
|
||||
account saved. admin es-es Cuenta grabada.
|
||||
account-id's have to be integers! admin es-es ¡Los identificadores de cuenta tienen que ser enteros!
|
||||
acl added. admin es-es Se ha añadido la ACL.
|
||||
acl csv export admin es-es Exportación en CSV de ACL
|
||||
acl deleted. admin es-es Se ha borrado la ACL.
|
||||
acl entry deleted. admin es-es Se ha borrado la entrada ACL.
|
||||
acl entry not found! admin es-es ¡No se ha encontrado la entrada de la ACL!
|
||||
@ -57,6 +68,8 @@ action admin es-es Acción
|
||||
actions admin es-es Acciones
|
||||
activate admin es-es Activar
|
||||
activate wysiwyg-editor admin es-es Activar editor WYSIWYG
|
||||
activated admin es-es activado
|
||||
active mail accounts admin es-es Cuentas de correo activas
|
||||
active templates admin es-es Plantillas activas
|
||||
add a category admin es-es añadir una categoría
|
||||
add a group admin es-es añadir un grupo
|
||||
@ -78,6 +91,7 @@ add profile admin es-es Añadir perfil
|
||||
add sub-category admin es-es Añadir subcategoría
|
||||
add user admin es-es Añadir usuario
|
||||
add user or group admin es-es Añadir usuario o grupo
|
||||
added admin es-es añadido
|
||||
admin dn admin es-es dn del administrador
|
||||
admin email admin es-es Correo electrónico del administrador
|
||||
admin email addresses (comma-separated) to be notified about the blocking (empty for no notify) admin es-es Direcciones de correo de Administración (separadas por comas) para notificar los bloqueos (en blanco para no notificar)
|
||||
@ -88,8 +102,11 @@ admin username admin es-es usuario del administrador
|
||||
administration admin es-es Administración
|
||||
admins admin es-es Administradores
|
||||
advanced options admin es-es opciones avanzadas
|
||||
after how many unsuccessful attempts to login, an account should be blocked (default 3) ? admin es-es Después de cuántos intentos fallidos de iniciar sesión en una cuenta se debe bloquear. Predeterminado = 3
|
||||
after how many unsuccessful attempts to login, an ip should be blocked (default 15) ? admin es-es ¿Después de cuántos intentos fallidos de conexión debe bloquearse una IP? (por defecto, 3)
|
||||
aliases admin es-es Alias
|
||||
all accounts admin es-es Todas las cuentas
|
||||
all acls admin es-es Todos los ACLs
|
||||
all applications admin es-es Todas las aplicaciones
|
||||
all categories admin es-es Todas las categorías
|
||||
all groups admin es-es Todos los grupos
|
||||
@ -97,14 +114,17 @@ all records and account information will be lost! admin es-es ¡Se perderán tod
|
||||
all users admin es-es Todos los usuarios
|
||||
allow anonymous access to this app admin es-es Permitir acceso anónimo a esta aplicación
|
||||
allow remote administration from following install id's (comma separated) admin es-es Permitir la administración remota desde los siguientes ID de instalación (separados por comas)
|
||||
allow user to set 'remember me' token admin es-es Permitir al usuario configurar el token 'Recordarme'
|
||||
allow users to change forwards admin es-es Permitir a los usuarios cambiar reenvíos
|
||||
allow users to create identities for aliases admin es-es Permitir a los usuarios crear identidades para alias
|
||||
allowed just as second factor admin es-es permitido como segundo factor
|
||||
alternate email address admin es-es Dirección de correo-e alterna
|
||||
and logged in admin es-es y conectado
|
||||
anonymous user admin es-es Usuario anónimo
|
||||
anonymous user (not shown in list sessions) admin es-es Usuario anónimo (no se muestra en la lista de sesiones)
|
||||
anonymous user does not exist! admin es-es ¡El usuario anónimo no existe!
|
||||
anonymous user has no run-rights for the application! admin es-es ¡El usuario anónimo NO tiene derecho de ejecución para la aplicación!
|
||||
anonymous user. not shown in list sessions. admin es-es Usuario anónimo. No se muestra en la lista de sesiones.
|
||||
any application admin es-es Cualquier aplicación
|
||||
any group admin es-es Cualquier grupo
|
||||
any user admin es-es Calquier usuario
|
||||
@ -118,8 +138,10 @@ applications available on mobile devices admin es-es Aplicaciones disponibles en
|
||||
applications list admin es-es Lista de aplicaciones
|
||||
applications run rights updated. admin es-es Se han actualizado los derechos de ejecución.
|
||||
applies the changes admin es-es aplica los cambios
|
||||
apply changes admin es-es Aplicar cambios
|
||||
apply the changes admin es-es Aplicar los cambios
|
||||
archive: zip or tar admin es-es Archivar: zip o tar
|
||||
are you sure you want to %1 mail for selected accounts? admin es-es ¿Está seguro de que desea %1 correo para las cuentas seleccionadas?
|
||||
are you sure you want to delete the application %1 ? admin es-es ¿Está seguro de que quiere borrar la aplicación %1 ?
|
||||
are you sure you want to delete this account ? admin es-es ¿Está seguro de que quiere borrar esta cuenta?
|
||||
are you sure you want to delete this application ? admin es-es ¿Está seguro de que quiere borrar esta aplicación?
|
||||
@ -137,8 +159,10 @@ attribute mail explained admin es-es Esto maneja el atributo <b><i>-mail-</i></b
|
||||
attribute mailalternateaddress explained admin es-es Esto maneja el atributo <b><i>-mailAlternateAddress-</i></b> del esquema de QMAIL y puede manejarse como mapas virtuales o alias.
|
||||
attribute mailforwardingaddress explained admin es-es Esto maneja el atributo <b><i>-mailForwardingAddress-</i></b> del esquema de QMAIL y no debe estar vacío si está asignado.
|
||||
attributes admin es-es Atributos Atributos
|
||||
authentication admin es-es Autenticación
|
||||
authentication / accounts admin es-es Identificación / Cuentas
|
||||
auto create account records for authenticated users admin es-es Crear cuentas automáticamente para usuarios identificados
|
||||
automatically transfer entries owned by the user: admin es-es Transfiere automáticamente las entradas propiedad del usuario:
|
||||
available placeholders admin es-es Marcadores disponibles
|
||||
back to admin/grouplist admin es-es Volver a Administración/Lista de grupos
|
||||
back to admin/userlist admin es-es Volver a Administración/Lista de usuarios
|
||||
@ -149,6 +173,7 @@ bad or malformed request. server responded: %s admin es-es Petición errónea o
|
||||
bad request: %s admin es-es Petición errónea: %s
|
||||
bi-dir passthrough admin es-es bidireccional passthrough
|
||||
bi-directional admin es-es bidireccional
|
||||
blocking after wrong password admin es-es Bloqueo después de una contraseña incorrecta
|
||||
bottom admin es-es parte inferior
|
||||
bulk password reset admin es-es Restablecimiento de contraseña en bruto
|
||||
calculate next run admin es-es Calcular la siguiente ejecución
|
||||
@ -158,23 +183,30 @@ can be used by group admin es-es puede usarse por el grupo
|
||||
can be used by user admin es-es puede usarse por el usuario
|
||||
can change password admin es-es Puede cambiar la contraseña
|
||||
can not change users into groups, same sign required! admin es-es ¡NO se pueden cambiar los usuarios en grupos, se requiere el mismo signo!
|
||||
cancel changes admin es-es Cancelar cambios
|
||||
cancel testjob! admin es-es Cancelar trabajo de prueba
|
||||
cancel this scheduled command admin es-es Cancelar este comando programado
|
||||
categories list admin es-es Lista de categorías
|
||||
category %1 has been saved ! admin es-es La categoría %1 ha sido guardada
|
||||
category '%1' deleted admin es-es Categoría '%1' eliminada
|
||||
category deleted. admin es-es Se ha borrado la categoría
|
||||
category list admin es-es Lista de categorías
|
||||
category saved. admin es-es Se ha guardado la categoria
|
||||
certificate admin es-es Cartificado
|
||||
certificate details admin es-es Certificate details
|
||||
certificate validation in days admin es-es Validación del certificado en días.
|
||||
change account_id admin es-es Cambiar el campo account_id
|
||||
change acl rights admin es-es cambiar permisos de ACL
|
||||
change config settings admin es-es Cambiar opciones de configuración
|
||||
change domain of email address and aliases admin es-es cambiar el dominio de la dirección de correo y alias
|
||||
change login screen message admin es-es Cambiar mensaje de la pantalla principal
|
||||
change owner admin es-es Cambiar el propietario
|
||||
change owner of found files to the new user, and move the home folder to /home/new-user/old-home-username. admin es-es Los archivos en /home tendrán el propietario cambiado al nuevo usuario. La carpeta de inicio se moverá a /home/ new-user/old-home-username.
|
||||
change password for %1 admin es-es cambiar la contraseña para %1
|
||||
change password hash to admin es-es Cambiar el hash de la contraseña a
|
||||
changed password hash for %1 to %2. admin es-es Se ha cambiado el hash de la contraseña de %1 a %2.
|
||||
changelog admin es-es Registro de cambios
|
||||
changelog and versions admin es-es Registro de cambios y versiones
|
||||
check acl for entries of not (longer) existing accounts admin es-es Comprobar las ACL para las entradas de cuentas que no existen
|
||||
check categories for not (longer) existing accounts admin es-es Comprobar las categorías para las cuentas que ya no existen
|
||||
check ip address of all sessions admin es-es Comprobar la IP de todas las sesiones
|
||||
@ -183,15 +215,21 @@ children admin es-es Hijos
|
||||
clear cache and register hooks admin es-es Limpiar la caché y registrar los hooks
|
||||
click to select a color admin es-es Pulse para seleccionar un color
|
||||
color admin es-es Color
|
||||
comma-separated ip addresses white-listed from above blocking (:optional number of attempts) admin es-es Direcciones IP separadas por comas en la lista blanca del bloqueo anterior (:número opcional de intentos)
|
||||
command scheduled to run at %1 admin es-es El comando se ha planificado para ejecutarse a %1
|
||||
command was run %1 on %2 admin es-es El comando ejecutado %1 en %2
|
||||
commercial: all sorts of companies admin es-es Comercial: todo tipo de empresas
|
||||
config password or md5 hash from the header.inc.php admin es-es Configurar contraseña o hash md5 de header.inc.php
|
||||
configuration admin es-es Configuración
|
||||
configuration saved. admin es-es Configuración guardada.
|
||||
connection dropped by imap server. admin es-es El servidor IMAP ha interrumpido la conexión
|
||||
connection is not secure! everyone can read eg. your credentials. admin es-es ¡La conexión NO es segura! e.g. Todos pueden leer sus credenciales
|
||||
continue admin es-es Continuar
|
||||
cookie domain (default empty means use full domain name, for sitemgr eg. ".domain.com" allows to use the same cookie for egw.domain.com and www.domain.com) admin es-es Dominio de la cookie (vacío significa usar el nombre del dominio completo, para el Administrador de sitios web, p. ej. "dominio.com" permite usar la misma cookie para egw.dominio.com y www.dominio.com)
|
||||
cookie path (allows multiple egw sessions with different directories, has problemes with sitemgr!) admin es-es Ruta de la cookie (permite múltiples sesiones de egw con distintos directorios, pero ¡tiene problemas con el Administrador de sitios web!)
|
||||
could not append message: admin es-es No se pudo agregar el mensaje:
|
||||
could not complete request. reason given: %s admin es-es No se pudo completar la solicitud. Motivo: %s
|
||||
could not extract private key from given p12 file. either the p12 file is broken or password is wrong! admin es-es No se pudo extraer la clave privada del archivo p12 dado. ¡O el archivo p12 está roto o la contraseña es incorrecta!
|
||||
could not open secure connection to the imap server. %s : %s. admin es-es No se pudo abrir una conexión segura con el servidor IMAP. %s: %s.
|
||||
could not remote execute the command admin es-es No se pudo ejecutar el comando remoto
|
||||
country admin es-es País
|
||||
@ -206,9 +244,19 @@ creates / updates user accounts from csv file admin es-es Crea o actualiza las c
|
||||
creates / updates user groups from csv file admin es-es Crea o actualiza los grupos de usuarios desde un archivo CSV
|
||||
creates a new field admin es-es crea un campo nuevo
|
||||
crontab only (recomended) admin es-es Sólo mediante crontab (recomendado)
|
||||
current certificate admin es-es Current certificate
|
||||
current hash admin es-es Hash actual
|
||||
currently: admin es-es Actualmente:
|
||||
custom 1 admin es-es Custom 1
|
||||
custom 2 admin es-es Custom 2
|
||||
custom 3 admin es-es Custom 3
|
||||
custom fields admin es-es Campos personalizados
|
||||
custom translation admin es-es Traducción personalizada
|
||||
customfield '%1' added admin es-es Se agregó el campo personalizado '%1'
|
||||
customfield '%1' deleted admin es-es Se suprimió el campo personalizado '%1'
|
||||
customfield '%1' modified admin es-es Se modificó el campo personalizado '%1'
|
||||
customfield deleted admin es-es Campo personalizado suprimido
|
||||
customfield saved. admin es-es Campo personalizado grabado
|
||||
cyrus imap server admin es-es Servidor IMAP Cyrus
|
||||
cyrus imap server administration admin es-es Administración del servidor IMAP Cyrus
|
||||
data admin es-es Datos
|
||||
@ -217,15 +265,20 @@ day admin es-es Día
|
||||
day of week<br>(0-6, 0=sun) admin es-es Día de la semana<br>(0-6, 0=Dom)
|
||||
db backup and restore admin es-es Copia de seguridad y restauración de la base de datos
|
||||
deactivate admin es-es Desactivar
|
||||
deactivated admin es-es desactivado
|
||||
debug admin es-es Depurar
|
||||
default admin es-es predeterminada
|
||||
default file system space per user admin es-es Espacio predetermiado en el sistema de archivos por usuario
|
||||
default file system space per user/group ? admin es-es Espacio predetermiado en el sistema de archivos por usuario/grupo
|
||||
default of currently admin es-es incumplimiento de actualmente
|
||||
deinstall crontab admin es-es Desinstalar crontab
|
||||
delete account admin es-es Suprimir cuenta
|
||||
delete account %1 admin es-es Suprimir cuenta %1
|
||||
delete account %s admin es-es Suprimir la cuenta %s
|
||||
delete all records admin es-es Suprimir todos los registros
|
||||
delete application admin es-es Suprimir aplicación
|
||||
delete category admin es-es Suprimir categoría
|
||||
delete certificate admin es-es Suprimir certificado
|
||||
delete group admin es-es Suprimir grupo
|
||||
delete identity admin es-es Suprimir identidad
|
||||
delete including sub-entries admin es-es Suprimir incluyendo sub-entradas
|
||||
@ -264,15 +317,21 @@ deny all users access to preferences ? admin es-es ¿Denegar a todos los usuario
|
||||
description can not exceed 255 characters in length ! admin es-es ¡La descripción no puede exceder de 255 caracteres de longitud!
|
||||
destination account #%1 does exist and is not renamed itself! can not merge accounts, it will violate unique contains. delete with transfer of data instead. admin es-es ¡La cuenta de destino nº %1 no existe y NO se renombra a sí misma! No se pueden mezclar cuentas, ya que violaría los contenidos únicos. Borre con transferencia de datos en lugar de esto.
|
||||
determines the order the fields are displayed admin es-es determina el orden en que se muestran los campos
|
||||
direct login without password or second factor admin es-es inicio de sesión directo sin contraseña o segundo factor
|
||||
disable admin es-es Deshabilitar
|
||||
disable "auto completion" of the login form admin es-es Deshabilitar completado automático en el formulario de inicio de sesión
|
||||
disable all admin es-es Deshabilitar todo
|
||||
disable minifying of javascript and css files admin es-es Deshabilitar la reducción de archivos javascript y CSS
|
||||
disable pgp encryption (mailvelope) admin es-es Deshabilitar el cifrado PGP (Mailvelope)
|
||||
disable wysiwyg-editor admin es-es Deshabilitar editor WYSIWYG
|
||||
disabled (not recomended) admin es-es Deshabilitado (no se recomienda)
|
||||
disabled, do not show on login page admin es-es deshabilitado, no se muestra en la página de inicio de sesión
|
||||
display admin es-es Mostrar
|
||||
displayed length of input field (set rows=1 to limit length) admin es-es longitud visualizada del campo de entrada (establecer filas=1 para limitar la longitud)
|
||||
displaying html messages is disabled admin es-es Mostrar los mensajes en HTML está desactivado
|
||||
displaying plain messages is disabled admin es-es mostrar mensajes simples está deshabilitado
|
||||
do not delete the category and return back to the list admin es-es NO borrar la categoría y regresar a la lista
|
||||
do not generate email addresses admin es-es No generar direcciones de correo-e
|
||||
do not offer introduction video admin es-es No ofrecer video introductorio
|
||||
do not validate certificate admin es-es No validar el certificado
|
||||
do you also want to delete all global subcategories ? admin es-es ¿Desea eliminar también todas las subcategorías globales?
|
||||
@ -284,6 +343,8 @@ document root (default) admin es-es Raíz de los documentos (Document root) (pre
|
||||
domainname admin es-es Nombre del dominio
|
||||
down admin es-es Abajo
|
||||
download csv admin es-es Descargar CSV
|
||||
each value is a line like id[=label], or use @path to read options from a file in egroupware directory admin es-es cada valor es una línea como id=[javascript], o use @path para leer las opciones de un archivo en el directorio EGroupware
|
||||
each value is a line like label=[javascript] admin es-es cada valor es una línea como label=[javascript]
|
||||
edit account admin es-es Editar cuenta
|
||||
edit application admin es-es Editar aplicación
|
||||
edit email settings admin es-es Editar configuración de correo-e
|
||||
@ -298,6 +359,7 @@ edit this group admin es-es Editar este grupo
|
||||
edit this user admin es-es Editar este usuario
|
||||
edit user admin es-es Editar usuario
|
||||
edit user account admin es-es Editar cuenta de usuario
|
||||
edited admin es-es editado
|
||||
educational: universities, schools, ... admin es-es Educación: Universiddes, Colegios, ...
|
||||
egroupware directory admin es-es Directorio de EGroupware
|
||||
egroupware tutorial admin es-es Tutorial de EGroupware
|
||||
@ -323,6 +385,7 @@ encrypted connection admin es-es Conexión cifrada
|
||||
encryption admin es-es Cifrado
|
||||
encryption settings admin es-es Configuración del cifrado
|
||||
enter a description for the category admin es-es introduzca una descripción para esta categoría
|
||||
enter a passphrase if you would like to protect your private key by password. admin es-es Ingrese una frase de contraseña si desea proteger su clave privada con contraseña.
|
||||
enter some random text for app_session <br>encryption (requires mcrypt) admin es-es Introduzca un texto aleatorio para el cifrado <br> de la sesión (requiere mcrypt)
|
||||
enter the background color for the login page admin es-es Introduzca el color de fondo para la página de inicio de sesión
|
||||
enter the background color for the site title admin es-es Introduzca el color de fondo para el título del sitio
|
||||
@ -346,6 +409,8 @@ enter your http proxy server admin es-es Introduzca su servidor proxy HTTP
|
||||
enter your http proxy server port admin es-es Introduzca el puerto de su servidor proxy HTTP
|
||||
enter your smtp server hostname or ip address admin es-es Introduzca su servidor SMTP (nombre o IP)
|
||||
enter your smtp server port admin es-es Introduzca el puerto del servidor SMTP
|
||||
entries admin es-es Entries
|
||||
entries owned by the user: admin es-es Entradas propiedad del usuario:
|
||||
entry saved admin es-es La entrada ha sido guardada
|
||||
error canceling timer, maybe there's none set !!! admin es-es Error al cancelar el temporizador ¡Puede que no haya ninguno!
|
||||
error changing the password for %1 !!! admin es-es ¡Error al cambiar la contraseña para %1!
|
||||
@ -360,41 +425,57 @@ error saving the entry!!! admin es-es Error guardando el elemento!!!
|
||||
error saving to db: admin es-es Error al guardar a la base de datos:
|
||||
error setting timer, wrong syntax or maybe there's one already running !!! admin es-es Error al configurar el temporizador. La sintaxis es incorrecta o puede que haya uno que ya se esté ejecutándo.
|
||||
error! no appname found admin es-es ¡Error! No se encontró el nombre de la aplicación
|
||||
error, no username! admin es-es Error, ¡no hay nombre de usuario!
|
||||
error: %1 not found or other error !!! admin es-es Error: no se encontró %1 u otro error
|
||||
event details follow admin es-es A continuación, los detalles del evento
|
||||
exists admin es-es Existe
|
||||
expired admin es-es Expirado
|
||||
expires admin es-es Expira
|
||||
explanation of ldapman admin es-es Este módulo ha sido probado en POSTFIX, LDAP, Courier-IMAP y necesita los esquemas CORE y QMAIL (OID7914). Más detalles sobre el uso y configuración de este sistema puede encontrarse en el fichero README.ldapman en el directorio doc de ADMIN.
|
||||
exports groups into a csv file. admin es-es Exportar los grupos en un fichero CSV.
|
||||
export certificate as p12 admin es-es exportar certificado como p12
|
||||
exports groups into a csv file. admin es-es Exporta los grupos a un archivo CSV.
|
||||
exports permission settings into a csv file. admin es-es Exporta la configuración de permisos a un archivo CSV.
|
||||
exports users into a csv file. admin es-es Exporta los usuarios en un fichero CSV.
|
||||
failed to change password for account "%1"! admin es-es ¡Fallo al cambiar la contraseña para la cuenta "%1"!
|
||||
failed to change password. admin es-es Falló al cambiar la contraseña.
|
||||
failed to delete account! admin es-es ¡Falló al eliminar la cuenta!
|
||||
failed to mount backup directory! admin es-es Fallo el montar el directorio de backup
|
||||
failed to save user! admin es-es Fallo al guardar el usuario
|
||||
failed to upload %1 admin es-es Falló al cargar %1
|
||||
fallback (after each pageview) admin es-es retardo (después de ver cada página)
|
||||
false admin es-es falso
|
||||
field '%1' already exists !!! admin es-es ¡El campo '%1' ya existe!
|
||||
file rejected, no %2. is:%1 admin es-es Archivo rechazado, no %2. Es: %1
|
||||
file space admin es-es Espacio del fichero
|
||||
file space must be an integer admin es-es El espacio del fichero debe ser un entero
|
||||
filtered by account admin es-es filtrado por cuenta
|
||||
filtered by group admin es-es filtrado por grupo
|
||||
folder acl admin es-es Carpeta ACL
|
||||
for the times above admin es-es durante las horas indicadas arriba
|
||||
for the times below (empty values count as '*', all empty = every minute) admin es-es para las horas indicadas debajo (los valores vacíos cuentan como '*', todos vacío = cada minuto)
|
||||
forbid users to create identities admin es-es Prohibir a los usuarios crear identidades
|
||||
force selectbox admin es-es Forzar cuadro de selección
|
||||
force users to change their password regularily?(empty for no,number for after that number of days admin es-es ¿Forzar a que los usuarios cambien su contraseña regularmente (en blanco es no, o un número para ese número de días)?
|
||||
forward also to admin es-es reenviar también a
|
||||
forward email's to admin es-es reenviar correos a
|
||||
forward emails to admin es-es reenviar correos a
|
||||
forward only admin es-es sólo reenviar
|
||||
forward also to admin es-es Reenviar también a
|
||||
forward email's to admin es-es Reenviar correos-e a
|
||||
forward emails to admin es-es Reenviar correos-e a
|
||||
forward only admin es-es Solo reenviar
|
||||
forward only disables imap mailbox / storing of mails and just forwards them to given address. admin es-es Reenviar solo deshabilita el buzón IMAP / almacenamiento de correos y solo los reenvía a la dirección dada.
|
||||
full name admin es-es Nombre completo
|
||||
general admin es-es General
|
||||
generate certificate admin es-es Generar certificado
|
||||
git clone admin es-es Clon de git
|
||||
global categories common es-es Categorías globales
|
||||
global options admin es-es opciones globales
|
||||
go directly to admin menu, returning here the next time you click on administration. admin es-es Ir directamente al menú de administración, volviendo aquí la próxima vez que pulse en administración.
|
||||
google recaptcha admin es-es Google recaptcha
|
||||
google recaptcha secret key admin es-es Clave secreta de Google recaptcha
|
||||
google recaptcha site key admin es-es Clave del sitio de Google recaptcha
|
||||
governmental: incl. state or municipal authorities or services admin es-es Gubernamental: incluye estado o autoridades municipales o servicios
|
||||
grant admin es-es Conceder acceso
|
||||
group #%1 must have negative sign! admin es-es El grupo nº %1 debe tener un signo negativo
|
||||
group %1 %2 admin es-es Groupo %1 %2
|
||||
group '%1' deleted. admin es-es Groupo '%1' suprimido.
|
||||
group ? admin es-es ¿Grupo?
|
||||
group csv export admin es-es Exportar grupo a CSV
|
||||
group csv import admin es-es Importar grupo CSV
|
||||
@ -407,6 +488,7 @@ group manager admin es-es Administrador de grupos
|
||||
group name admin es-es Nombre del grupo
|
||||
hash admin es-es Hash
|
||||
hide php information admin es-es Ocultar información de PHP
|
||||
hide sidebox video tutorials admin es-es Ocultar los tutoriales en video de la caja lateral
|
||||
home directory admin es-es Directorio personal
|
||||
home screen message admin es-es Mensaje de la pantalla principal
|
||||
host information admin es-es Información del servidor
|
||||
@ -416,13 +498,22 @@ how many days should entries stay in the access log, before they get deleted (de
|
||||
how many entries should non-admins be able to export (empty = no limit, no = no export) admin es-es ¿Cuántas entradas deben poder exportar los usuarios que no son administradores (vacío=sin límite, no=no exportan)?
|
||||
how many minutes should an account or ip be blocked (default 1) ? admin es-es ¿Cuántos minutos debe permanecer bloqueada una cuenta o una IP? (por defecto, 30)
|
||||
how should email addresses for new users be constructed? admin es-es ¿Cómo deben construirse las direcciones para los usuarios nuevos?
|
||||
how username get constructed admin es-es Cómo se construye el nombre de usuario
|
||||
html/plaintext admin es-es html/plaintext
|
||||
icon admin es-es Icono
|
||||
identity admin es-es Identidad
|
||||
identity deleted admin es-es Identidad suprimida
|
||||
identity saved. admin es-es Identidad grabada.
|
||||
idle admin es-es inactivo
|
||||
if different from email address admin es-es si es diferente de la dirección de correo-e
|
||||
if disabled existing tokens immediatly stop working. admin es-es Si se deshabilita, los tokens existentes dejan de funcionar inmediatamente
|
||||
if no acl records for user or any group the user is a member of admin es-es Si no se encuentran registros ACL del usuario y grupo, entonces el usuario es miembro de
|
||||
if using ldap, do you want to manage homedirectory and loginshell attributes? admin es-es Si se usa LDAP, ¿desea manejar los atributos del directorio de inicio y la cuenta?
|
||||
if using ssl or tls, you must have the php openssl extension loaded. admin es-es Si usa SSL o TLS, debe tener cargada la extensión openssl de PHP.
|
||||
if you delete the user without selecting an account to move the data to, all entries get deleted! admin es-es Si elimina al usuario sin seleccionar una cuenta para mover los datos, ¡todas las entradas se eliminarán!
|
||||
if you ignore that error as admin, you should check "%1"! admin es-es Si ignora ese error como administrador, ¡debería marcar "%1"!
|
||||
if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that) admin es-es si especifica el puerto 5190 como puerto del servidor de sieve, aplicará SSL para el sieve (el servidor debe admitirlo)
|
||||
if you wish to have randomly selected images you may upload multiple images. admin es-es Si desea tener imágenes seleccionadas al azar, puede cargar varias imágenes.
|
||||
imap admin password admin es-es contraseña del administrador IMAP
|
||||
imap admin user admin es-es usuario administrador IMAP
|
||||
imap c-client version < 2001 admin es-es Versión C-Cliente IMAP < 2001
|
||||
@ -449,9 +540,12 @@ instance admin es-es Instancia
|
||||
interface admin es-es Interfaz
|
||||
international use admin es-es Uso internacional
|
||||
invalid argument '%1' !!! admin es-es ¡El argumento '%1' no es válido!
|
||||
invalid email admin es-es Correo-e no es válido
|
||||
invalid formated date "%1"! admin es-es ¡La fecha %1 no tiene un formato válido!
|
||||
invalid remote id or name "%1"! admin es-es ¡El nombre o id remoto %1 no es válido!
|
||||
invalid type "%1"! admin es-es ¡Tipo no válido "%1"!
|
||||
invalid value "%1" use yes or no! admin es-es El valor "%1" no es válido. Use "sí" o "no"
|
||||
invalid value "%1", use only: admin es-es Valor no válido "%1", use solo:
|
||||
ip admin es-es IP
|
||||
jobs admin es-es Trabajos
|
||||
kill admin es-es Matar
|
||||
@ -462,8 +556,9 @@ languages admin es-es Idiomas
|
||||
last %1 logins admin es-es Ultimos %1 inicios de sesión
|
||||
last %1 logins for %2 admin es-es Ultimos %1 inicios de sesión de %2
|
||||
last action admin es-es Última acción
|
||||
last login admin es-es Ultimo inicio de sesión
|
||||
last login from admin es-es Ultimo inicio de sesión desde
|
||||
last ip admin es-es Último IP
|
||||
last login admin es-es Último inicio de sesión
|
||||
last login from admin es-es Último inicio de sesión desde
|
||||
last password change admin es-es Último cambio de contraseña
|
||||
last submission: admin es-es Último envío:
|
||||
last time read admin es-es Ultima lectura
|
||||
@ -490,18 +585,21 @@ leave without saveing the entry admin es-es salir sin guardar la entrada
|
||||
leaves without saveing admin es-es sale sin guardar
|
||||
length admin es-es Longitud
|
||||
length<br>rows admin es-es Longitud<br>Filas
|
||||
lifetime of 'remember me' token admin es-es Vida útil del token 'Recuérdame'
|
||||
limit global category to members of a certain group admin es-es Limitar la categoría global a los miembros de cierto grupo
|
||||
limit to members of admin es-es Limitar a los miembros de
|
||||
list config settings admin es-es Lista de las opciones de configuración
|
||||
list current sessions admin es-es Lista de las sesiones actuales
|
||||
list of current users admin es-es Lista de usuarios actuales
|
||||
log user-agent and action of changes in history-log of entries admin es-es Registrar el agente de usuario y acción de los cambios en el registro histórico de entradas
|
||||
logged out admin es-es sesión finalizada
|
||||
logged out admin es-es Sesión finalizada
|
||||
login history admin es-es Historial de accesos
|
||||
login id admin es-es Identificación de ingreso
|
||||
login message admin es-es Mensaje de inicio de sesión
|
||||
login screen admin es-es Pantalla de inicio de sesión
|
||||
login shell admin es-es Shell de inicio de sesión
|
||||
login time admin es-es Hora de inicio de sesión
|
||||
login-id admin es-es Identificación de ingreso
|
||||
login-status admin es-es Estado de la sesión
|
||||
loginid admin es-es LoginID
|
||||
logintime admin es-es Hora de inicio de sesión
|
||||
@ -510,6 +608,7 @@ lowercase email addresses admin es-es Direcciones de correo-e en minúsculas
|
||||
mail account admin es-es Cuenta de correo
|
||||
mail settings admin es-es Configuración del correo.
|
||||
main email-address admin es-es Dirección de correo principal
|
||||
main screen message admin es-es Mensaje de la pantalla principal
|
||||
manage mapping admin es-es Gestión de mapeos
|
||||
manage stationery templates admin es-es Gestionar plantillas preimpresas
|
||||
manager admin es-es Administrador
|
||||
@ -529,14 +628,15 @@ more secure admin es-es más seguro
|
||||
mount backup directory to %1 admin es-es Montar el directorio de la copia de seguridad en %1
|
||||
must change password upon next login admin es-es Debe cambiar la contraseña la próxima vez que inicie la sesión
|
||||
name must not be empty !!! admin es-es El nombre no debe estar vacío
|
||||
name of account admin es-es Nombre de la cuenta
|
||||
name of organisation admin es-es Nombre de la organización
|
||||
name of the egroupware instance, eg. default admin es-es Nombre de la instancia de EGroupware, p. ej., default
|
||||
new group name admin es-es Nuevo nombre de grupo
|
||||
new name admin es-es nuevo nombre
|
||||
new name admin es-es Nuevo nombre
|
||||
new password admin es-es Contraseña nueva
|
||||
new password [ leave blank for no change ] admin es-es Nueva contraseña [ Dejar en blanco para no cambiar ]
|
||||
next run admin es-es Siguiente ejecución
|
||||
no algorithms available admin es-es no hay algoritmos disponibles
|
||||
no algorithms available admin es-es No hay algoritmos disponibles
|
||||
no alternate email address admin es-es Sin dirección de correo alternativa
|
||||
no default account found! admin es-es ¡No se encontró ninguna cuenta predeterminada!
|
||||
no encryption admin es-es Sin cifrar
|
||||
@ -545,12 +645,13 @@ no jobs in the database !!! admin es-es ¡No hay trabajos en la base de datos!
|
||||
no login history exists for this user admin es-es No existen registros de acceso para este usuario
|
||||
no matches found admin es-es No se encontraron resultados
|
||||
no message returned. admin es-es No se devolvió ningún mensaje.
|
||||
no modes available admin es-es no hay modos disponibles
|
||||
no permission to add groups admin es-es no tiene permiso para añadir grupos
|
||||
no permission to add users admin es-es no tiene permiso para añadir usuarios
|
||||
no permission to create groups admin es-es no tiene permiso para crear grupos
|
||||
no modes available admin es-es No hay modos disponibles
|
||||
no permission to add groups admin es-es No tiene permiso para añadir grupos
|
||||
no permission to add users admin es-es No tiene permiso para añadir usuarios
|
||||
no permission to create groups admin es-es No tiene permiso para crear grupos
|
||||
no plain text part found admin es-es No se encontró ninguna parte con texto sencillo
|
||||
no profile defined for user %1 admin es-es No se ha definido un perfil para el usuario %1
|
||||
no sieve support detected, either fix configuration manually or leave it switched off. admin es-es No se detectó soporte de sieve, arregle la configuración manualmente o déjelo apagado.
|
||||
no supported imap authentication method could be found. admin es-es No se pudo encontrar ningún método soportado de identificación IMAP.
|
||||
non profit: clubs, associations, ... admin es-es Sin ánimo de lucro: clubs, asociaciones...
|
||||
note: ssl available only if php is compiled with curl support admin es-es Nota: SSL está disponible sólo si PHP está compilado con soporte curl
|
||||
@ -573,14 +674,18 @@ only below displayed information is directly submitted to %s. admin es-es Sólo
|
||||
operating system admin es-es Sistema operativo
|
||||
order admin es-es orden
|
||||
organisation admin es-es organización
|
||||
other security configuration admin es-es Otra configuración de seguridad
|
||||
outbound admin es-es De salida
|
||||
own categories admin es-es Categorías propias
|
||||
own install id admin es-es ID de instalación propio
|
||||
own install id: admin es-es ID de instalación propio:
|
||||
owner "%1" removed, please select group-owner admin es-es Se ha eliminado el propietario "%1", por favor, seleccione el propietario del grupo
|
||||
passphrase admin es-es frase de contraseña
|
||||
passthrough admin es-es pasage
|
||||
password for smtp-authentication admin es-es Contraseña para identificación SMTP
|
||||
password to unlock encrypted p12 admin es-es Contraseña para desbloquear p12 encriptado
|
||||
password updated admin es-es Se ha actualizado la contraseña
|
||||
passwords admin es-es Contraseñas
|
||||
passwords and/or attributes of %1 accounts changed admin es-es Las contraseñas y atributos de %1 cuentas se han cambiado
|
||||
passwords require a minimum number of characters admin es-es Las contraseñas requieren un número mínimo de caracteres
|
||||
passwords requires this number of different character classes admin es-es Las contraseñas requieren este número de clases distintas de caracteres
|
||||
@ -589,6 +694,7 @@ peer server list admin es-es Lista de servidores 'peer'
|
||||
peer servers admin es-es Servidores 'peer'
|
||||
percent of users that logged out admin es-es Porcentaje de usuarios que cerraron la sesión
|
||||
percent this user has logged out admin es-es Porcentaje que este usuario ha cerrado la sesión
|
||||
periodic admin es-es Periódico
|
||||
permission denied admin es-es Permiso denegado
|
||||
permission denied !!! admin es-es ¡Permiso denegado!
|
||||
permission denied!!! admin es-es ¡Permiso denegado!
|
||||
@ -599,10 +705,13 @@ php version admin es-es Versión de PHP
|
||||
phpinfo admin es-es Información de PHP
|
||||
phrase admin es-es Frase
|
||||
phrase deleted admin es-es Se ha borrado la frase
|
||||
please check email. it gets automatically deleted if email integration is used. admin es-es Por favor revise su correo-e. Se elimina automáticamente si se utiliza la integración de correo-e.
|
||||
please enter a name admin es-es Por favor introduzca un nombre
|
||||
please enter a name for that server ! admin es-es Por favor, introduzca un nombre para ese sevidor
|
||||
please manually deal with entries owned by the user: admin es-es Maneje manualmente las entradas propiedad del usuario:
|
||||
please run setup to become current admin es-es Por favor ejecute setup para estar al día
|
||||
please select admin es-es Por favor, seleccione
|
||||
please submit (or postpone) statistic first admin es-es Por favor envíe (o posponga) primero la estadística
|
||||
plesk can't rename users --> request ignored admin es-es Plesk no puede renombrar usuarios --> Se ignora la solicitud
|
||||
plesk imap server (courier) admin es-es Servidor IMAP Plesk (Courier)
|
||||
plesk mail script '%1' not found !!! admin es-es ¡No se encontró el script de correo de Plesk '%1'!
|
||||
@ -615,6 +724,7 @@ postfix with ldap admin es-es Postfix con LDAP
|
||||
postpone for admin es-es Posponer durante
|
||||
preferences admin es-es Preferencias
|
||||
primary group admin es-es Grupo principal
|
||||
processing of file %1 failed. failed to meet basic restrictions. admin es-es El procesamiento del archivo %1 falló. No se pudieron cumplir las restricciones básicas.
|
||||
profile access rights admin es-es Derechos de acceso del perfil
|
||||
profile is active admin es-es el perfil está activo
|
||||
profile list admin es-es Lista de perfiles
|
||||
@ -627,12 +737,14 @@ read this list of methods. admin es-es Leer esta lista de métodos
|
||||
register application hooks admin es-es Registrar "hooks" de la aplicación
|
||||
reject passwords containing part of username or full name (3 or more characters long) admin es-es Rechazar las contraseñas que contengan parte del nombre o el nombre completo (con 3 o más caracteres de longitud)
|
||||
remote administration instances admin es-es Instancias de administración remota
|
||||
remote administration need to be enabled in the remote instance under admin > site configuration! admin es-es ¡La administración remota debe habilitarse en la instancia remota en Admin> Configuración del sitio!
|
||||
remote administration need to be enabled in the remote instance under admin > site configuration! admin es-es ¡La administración remota necesita estar activada en la instancia remota en Administración > Configuración del sitio!
|
||||
remote instance saved admin es-es Se ha guardado la instancia remota
|
||||
remove admin es-es borrar
|
||||
remove all users from this group admin es-es Borrar todos los usuarios de este grupo
|
||||
remove all users from this group ? admin es-es ¿Borrar todos los usuarios de este grupo?
|
||||
removing access for groups may cause problems for data in this category. are you sure? users in these groups may no longer have access: admin es-es Eliminar el acceso a grupos puede causar problemas para los datos en esta categoría. ¿Está seguro? Los usuarios de estos grupos puede que ya no tengan acceso:
|
||||
renaming user 'anonymous' will break file sharing and collabora online office! admin es-es ¡Cambiar el nombre del usuario 'anónimo' interrumpirá el intercambio de archivos y la oficina en línea de Collabora!
|
||||
requested admin es-es Requerido
|
||||
reset filter admin es-es restablecer filtro
|
||||
rights admin es-es Derechos
|
||||
@ -641,10 +753,14 @@ rows admin es-es Filas
|
||||
rpm or debian package admin es-es Paquete RPM o Debian
|
||||
run admin es-es ejecutar
|
||||
run asynchronous services admin es-es Ejecutar servicios asíncronos
|
||||
save as default admin es-es guardar por defecto
|
||||
save changes admin es-es Grabar cambios
|
||||
save of message %1 failed. could not save message to folder %2 due to: %3 admin es-es Error al guardar el mensaje %1. No se pudo guardar el mensaje en la carpeta 2 debido a: %3
|
||||
save the category admin es-es guardar la categoría
|
||||
save the category and return back to the list admin es-es guardar la categoría y volver a la lista
|
||||
saves the changes made and leaves admin es-es guarda los cambios y sale
|
||||
saves this entry admin es-es Guarda esta entrada
|
||||
saving of message %1 failed. destination folder %2 does not exist. admin es-es Error al guardar el mensaje %1. La carpeta de destino %2 no existe.
|
||||
scheduled admin es-es Programada
|
||||
search accounts admin es-es Buscar cuentas
|
||||
search categories admin es-es Buscar categorías
|
||||
@ -654,6 +770,9 @@ secure connection admin es-es Conexión segura
|
||||
security admin es-es Seguridad
|
||||
select accounts for which the custom field should be visible admin es-es Seleccionar las cuentas para las que el campo personalizado debe estar visible
|
||||
select group managers admin es-es Seleccionar administradores de grupo
|
||||
select language to define language based message. language 'english' is default page for all languages therefore for setting a general message across all languages you only need to set the 'english' page. admin es-es Seleccione el idioma para definir el mensaje basado en el idioma. El idioma 'inglés' es la página predeterminada para todos los idiomas, por lo tanto, para configurar un mensaje general en todos los idiomas solo necesita configurar la página 'inglés'.
|
||||
select multiple admin es-es Seleccionar múltiples
|
||||
select owner admin es-es Seleccionar propietario
|
||||
select permissions this group will have admin es-es Seleccione los permisos que tendrá este grupo
|
||||
select the parent category. if this is a main category select no category admin es-es Seleccione la categoría superior. Si ésta es una categoría principal seleccione SIN CATEGORIA
|
||||
select type of imap server admin es-es Seleccione el tipo de servidor IMAP
|
||||
@ -673,13 +792,17 @@ server settings admin es-es configuración del servidor
|
||||
server type(mode) admin es-es Tipo (modo) del servidor
|
||||
server url admin es-es URL del servidor
|
||||
server username admin es-es Usuario del servidor
|
||||
sessions admin es-es Sesiones
|
||||
sessions last 30 days admin es-es Sesiones en los últimos 30 días
|
||||
set a random password admin es-es Establecer una contraseña aleatoria.
|
||||
set preference values. admin es-es Establecer valores para las preferencias
|
||||
settings admin es-es Configuraciones
|
||||
should exceptions contain a trace (including function arguments) admin es-es Las excepciones deben contener una traza (incluyendo argumentos de funciones)
|
||||
should the login page include a language selectbox (useful for demo-sites) ? admin es-es ¿Debe incluir la página de inicio de sesión un cuadro de selección de idioma (útil para sitios de demostración)?
|
||||
show 'powered by' logo on admin es-es Mostrar logo de 'Diseñado con' en
|
||||
show access log admin es-es Mostrar registro de acceso
|
||||
show as optional, but required once user has it setup admin es-es se muestra como opcional, pero se requiere una vez que el usuario lo tiene configurado
|
||||
show as required, but only once user has it setup admin es-es mostrar según sea necesario, pero solo una vez que el usuario lo tiene configurado
|
||||
show current action admin es-es Mostrar acción actual
|
||||
show error log admin es-es Mostrar registro de errores
|
||||
show members admin es-es Mostrar miembros
|
||||
@ -689,6 +812,8 @@ sieve server hostname or ip address admin es-es Nombre del servidor Sieve o dire
|
||||
sieve server port admin es-es Puerto del servidor Sieve
|
||||
sieve settings admin es-es Configuración de Sieve
|
||||
site admin es-es Sitio
|
||||
skip imap admin es-es Omitir IMAP
|
||||
skipping imap configuration! admin es-es ¡Omitiendo la configuración de IMAP!
|
||||
smtp authentication admin es-es identificación SMTP
|
||||
smtp options admin es-es opciones SMTP
|
||||
smtp server admin es-es servidor SMTP
|
||||
@ -709,7 +834,9 @@ standard pop3 server admin es-es Servidor POP3 estándar
|
||||
standard smtp-server admin es-es Servidor SMTP estándar
|
||||
start admin es-es Inicio
|
||||
start testjob! admin es-es Iniciar el trabajo de prueba
|
||||
starts with admin es-es Comienza con
|
||||
stationery admin es-es material preimpreso
|
||||
strictly required, user can not login without admin es-es estrictamente requerido, el usuario no puede iniciar sesión sin esto
|
||||
submit changes admin es-es Enviar cambios
|
||||
submit displayed information? admin es-es ¿Enviar la información mostrada?
|
||||
submit statistic information admin es-es Enviar información estadística
|
||||
@ -717,7 +844,10 @@ submit the search string admin es-es Enviar la cadena de búsqueda
|
||||
submit to egroupware.org admin es-es Enviar a egroupware.org
|
||||
subtype admin es-es Subtipo
|
||||
subversion checkout admin es-es Checkout de subversion
|
||||
success admin es-es correcto
|
||||
success admin es-es Correcto
|
||||
successful connected to %1 server%2. admin es-es Conectado correctamente al %1 servidor %2.
|
||||
switch back to standard identity to save account. admin es-es Vuelva a la identidad estándar para guardar la cuenta.
|
||||
switch back to standard identity to save other account data. admin es-es Vuelva a la identidad estándar para guardar otros datos de la cuenta.
|
||||
switch it off, if users are randomly thrown out admin es-es Desactivarlo si a los usuarios se les cierra la sesión aleatoriamente
|
||||
template selection admin es-es Selección de plantilla
|
||||
templates admin es-es Plantillas
|
||||
@ -754,6 +884,7 @@ times admin es-es Horas
|
||||
to allow us to track the growth of your individual installation use this submit id, otherwise delete it: admin es-es Para permitirnos seguir el crecimiento de su instalación individual use este ID de envío. Si no, bórrelo:
|
||||
to use a tls connection, you must be running a version of php 5.1.0 or higher. admin es-es Para usar una conexión TLS, debe ejecutar una versión de PHP 5.1.0 o superior.
|
||||
top admin es-es Superior
|
||||
total of %1 accounts deleted. admin es-es Total de %1 cuentas suprimidas.
|
||||
total of %1 id's changed. admin es-es Se han cambiado en total %1 ids
|
||||
total records admin es-es Total de registros
|
||||
translation admin es-es Traducción
|
||||
@ -766,6 +897,7 @@ two months admin es-es dos meses
|
||||
two weeks admin es-es dos semanas
|
||||
type '%1' already exists !!! admin es-es ¡El tipo '%1' ya existe!
|
||||
type of customfield admin es-es Tipo de campo personalizado
|
||||
type of field admin es-es Tipo de campo
|
||||
under windows you need to install the asyncservice %1manually%2 or use the fallback mode. fallback means the jobs get only checked after each page-view !!! admin es-es En windows, se necesita instalar asyncservice %1manualmente%2 o usar el modo de fallos. El modo de fallos sólo comprueba los trabajos después de ver cada página. ¡Cuidado!
|
||||
unexpected response from server to authenticate command. admin es-es Respuesta inesperada del servidor al comando AUTHENTICATE.
|
||||
unexpected response from server to digest-md5 response. admin es-es Respuesta inesperada del servidor a la respuesta Digest-MD5.
|
||||
@ -779,6 +911,10 @@ unwilling to save category with current settings. check for inconsistency: admin
|
||||
up admin es-es Arriba
|
||||
update current email address: admin es-es Actualizar la dirección de correo actual:
|
||||
updated admin es-es actualizado
|
||||
upload your background image or enter the url admin es-es Subir la imagen de fondo o ingresar el URL
|
||||
upload your favicon or enter the url admin es-es Subir el favicon o ingresar la URL
|
||||
upload your header logo or enter the url (leave it empty if it is the same as login logo) admin es-es Cargue el logotipo de su encabezado o ingrese el URL (déjelo en blanco si es el mismo que el logotipo de inicio de sesión)
|
||||
upload your logo or enter the url admin es-es Subir el logo o ingresar el URL
|
||||
uppercase, lowercase, number, special char admin es-es Mayúsculas, minúsculas, números, caracteres especiales
|
||||
url of the egroupware installation, eg. http://domain.com/egroupware admin es-es La URL de la instalación de EGroupware, p. ej. http://dominio.com/egroupware
|
||||
usage admin es-es Uso
|
||||
@ -792,8 +928,10 @@ use smtp auth admin es-es Usar identificación SMTP
|
||||
use theme admin es-es Usar tema
|
||||
use tls authentication admin es-es Usar identificación TLS
|
||||
use tls encryption admin es-es Usar cifrado TLS
|
||||
use users email-address (as seen in useraccount) admin es-es Use la dirección de correo-e de los usuarios, como se establece en la cuenta de usuario
|
||||
user accounts admin es-es Cuentas de usuario
|
||||
user can edit forwarding address admin es-es El usuario puede editar la dirección de reenvío
|
||||
user choice admin es-es Elección del usuario
|
||||
user csv export admin es-es Exportación CSV de usuarios
|
||||
user csv import admin es-es Importación CSV de usuarios
|
||||
user data common es-es Datos del usuario
|
||||
|
@ -14,6 +14,7 @@
|
||||
<column disabled="@no_total" width="80"/>
|
||||
<column width="80"/>
|
||||
<column width="40%"/>
|
||||
<column width="30%"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row class="th">
|
||||
@ -26,6 +27,7 @@
|
||||
<nextmatch-header label="Total" id="total"/>
|
||||
<nextmatch-sortheader label="Idle" id="session_dla"/>
|
||||
<nextmatch-sortheader label="User-Agent" id="user_agent"/>
|
||||
<nextmatch-header label="Action" id="session_action"/>
|
||||
</row>
|
||||
<row class="row $row_cont[class]">
|
||||
<hbox>
|
||||
@ -42,6 +44,7 @@
|
||||
<date-duration id="${row}[total]" readonly="true" options=",hm,24"/>
|
||||
<date-since id="${row}[session_dla]" readonly="true"/>
|
||||
<description statustext="$row_cont[user_agent]" id="${row}[os_browser]" class="admin_userAgent"/>
|
||||
<description id="${row}[session_action]"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<!-- $Id$ -->
|
||||
<overlay>
|
||||
<template id="admin.acl.edit.acl" template="" lang="" group="0" version="1.9.001">
|
||||
<grid>
|
||||
<grid width="100%" resize_ratio="0">
|
||||
<columns>
|
||||
<column/>
|
||||
<column/>
|
||||
|
@ -493,14 +493,11 @@ var et2_dataview = (function(){ "use strict"; return Class.extend({
|
||||
*/
|
||||
_buildGrid: function() {
|
||||
// Create the collection of column ids
|
||||
var colIds = new Array();
|
||||
var colIds = new Array(this.columns.length);
|
||||
for (var i = 0; i < this.columns.length; i++)
|
||||
{
|
||||
if(this.columns[i].visible)
|
||||
{
|
||||
colIds[i] = this.columns[i].id;
|
||||
}
|
||||
}
|
||||
|
||||
// Create the row provider
|
||||
if (this.rowProvider)
|
||||
|
@ -100,14 +100,13 @@ var et2_dataview_rowProvider = (function(){ "use strict"; return Class.extend(
|
||||
var tr = jQuery(document.createElement("tr"));
|
||||
|
||||
// Append a td for each column
|
||||
for (var column of this._columnIds)
|
||||
for (var i = 0; i < this._columnIds.length; i++)
|
||||
{
|
||||
if(!column) continue;
|
||||
var td = jQuery(document.createElement("td"))
|
||||
.addClass(this._outerId + "_td_" + column)
|
||||
.addClass(this._outerId + "_td_" + this._columnIds[i])
|
||||
.appendTo(tr);
|
||||
var div = jQuery(document.createElement("div"))
|
||||
.addClass(this._outerId + "_div_" + column)
|
||||
.addClass(this._outerId + "_div_" + this._columnIds[i])
|
||||
.addClass("innerContainer")
|
||||
.appendTo(td);
|
||||
}
|
||||
|
@ -806,7 +806,7 @@ var et2_nextmatch = (function(){ "use strict"; return et2_DOMWidget.extend([et2_
|
||||
negated = this.options.settings.default_cols[0] == "!";
|
||||
columnPreference = negated ? this.options.settings.default_cols.substring(1) : this.options.settings.default_cols;
|
||||
}
|
||||
if(this.options.settings.selectcols)
|
||||
if(this.options.settings.selectcols && this.options.settings.selectcols.length)
|
||||
{
|
||||
columnPreference = this.options.settings.selectcols;
|
||||
negated = false;
|
||||
@ -953,7 +953,10 @@ var et2_nextmatch = (function(){ "use strict"; return et2_DOMWidget.extend([et2_
|
||||
_colData[i].width = parseInt(size[colName])+'px';
|
||||
}
|
||||
}
|
||||
if(!negated)
|
||||
{
|
||||
_colData[i].order = typeof order[colName] === 'undefined' ? i : order[colName];
|
||||
}
|
||||
for(var j = 0; j < columnDisplay.length; j++)
|
||||
{
|
||||
if(columnDisplay[j] == colName)
|
||||
@ -971,7 +974,14 @@ var et2_nextmatch = (function(){ "use strict"; return et2_DOMWidget.extend([et2_
|
||||
return a.order - b.order;
|
||||
});
|
||||
_row.sort(function(a,b) {
|
||||
if(typeof a.colData !== 'undefined' && typeof b.colData !== 'undefined')
|
||||
{
|
||||
return a.colData.order - b.colData.order;
|
||||
}
|
||||
else if (typeof a.order !== 'undefined' && typeof b.order !== 'undefined')
|
||||
{
|
||||
return a.order - b.order;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@ -1203,18 +1213,14 @@ var et2_nextmatch = (function(){ "use strict"; return et2_DOMWidget.extend([et2_
|
||||
},
|
||||
|
||||
_parseDataRow: function(_row, _rowData, _colData) {
|
||||
var columnWidgets = new Array();
|
||||
var columnWidgets = new Array(this.columns.length);
|
||||
|
||||
_row.sort(function(a,b) {
|
||||
return a.colData.order - b.colData.order;
|
||||
});
|
||||
|
||||
for (var x = 0; x < this.columns.length; x++)
|
||||
for (var x = 0; x < columnWidgets.length; x++)
|
||||
{
|
||||
if (!this.columns[x].visible)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (typeof _row[x] != "undefined" && _row[x].widget)
|
||||
{
|
||||
columnWidgets[x] = _row[x].widget;
|
||||
@ -1448,7 +1454,7 @@ var et2_nextmatch = (function(){ "use strict"; return et2_DOMWidget.extend([et2_
|
||||
});
|
||||
defaultCheck.set_value(this.options.settings.columns_forced ? 'force': '');
|
||||
|
||||
var okButton = et2_createWidget("buttononly", {}, this);
|
||||
var okButton = et2_createWidget("buttononly", {"background_image":true, image:"check"}, this);
|
||||
okButton.set_label(this.egw().lang("ok"));
|
||||
okButton.onclick = function() {
|
||||
// Update visibility
|
||||
@ -1557,7 +1563,7 @@ var et2_nextmatch = (function(){ "use strict"; return et2_DOMWidget.extend([et2_
|
||||
self.selectPopup = null;
|
||||
};
|
||||
|
||||
var cancelButton = et2_createWidget("buttononly", {}, this);
|
||||
var cancelButton = et2_createWidget("buttononly", {"background_image":true, image:"cancel"}, this);
|
||||
cancelButton.set_label(this.egw().lang("cancel"));
|
||||
cancelButton.onclick = function() {
|
||||
self.selectPopup.toggle();
|
||||
|
@ -236,7 +236,7 @@ var et2_nextmatch_rowProvider = (function(){ "use strict"; return ClassWithAttri
|
||||
_getVariableAttributeSet: function(_widget) {
|
||||
var variableAttributes = [];
|
||||
|
||||
var process = function(_widget) {
|
||||
_widget.iterateOver(function(_widget) {
|
||||
// Create the attribtues
|
||||
var hasAttr = false;
|
||||
var widgetData = {
|
||||
@ -578,8 +578,7 @@ var et2_nextmatch_rowWidget = (function(){ "use strict"; return et2_widget.exten
|
||||
*/
|
||||
createWidgets: function(_widgets) {
|
||||
// Clone the given the widgets with this element as parent
|
||||
this._widgets = new Array();
|
||||
var row_id = 0;
|
||||
this._widgets = new Array(_widgets.length);
|
||||
for (var i = 0; i < _widgets.length; i++)
|
||||
{
|
||||
// Disabled columns might be missing widget - skip it
|
||||
@ -590,9 +589,8 @@ var et2_nextmatch_rowWidget = (function(){ "use strict"; return et2_widget.exten
|
||||
// Set column alignment from widget
|
||||
if(this._widgets[i].align)
|
||||
{
|
||||
this._row.childNodes[row_id].align = this._widgets[i].align;
|
||||
this._row.childNodes[i].align = this._widgets[i].align;
|
||||
}
|
||||
row_id++;
|
||||
}
|
||||
},
|
||||
|
||||
@ -603,16 +601,12 @@ var et2_nextmatch_rowWidget = (function(){ "use strict"; return et2_widget.exten
|
||||
* @return {DOMElement}
|
||||
*/
|
||||
getDOMNode: function(_sender) {
|
||||
var row_id = 0;
|
||||
for (var i = 0; i < this._widgets.length; i++)
|
||||
{
|
||||
// Disabled columns might be missing widget - skip it
|
||||
if(!this._widgets[i]) continue;
|
||||
if (this._widgets[i] == _sender)
|
||||
{
|
||||
return this._row.childNodes[row_id].childNodes[0]; // Return the i-th td tag
|
||||
return this._row.childNodes[i].childNodes[0]; // Return the i-th td tag
|
||||
}
|
||||
row_id++;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
@ -144,6 +144,9 @@ var et2_htmlarea = (function(){ "use strict"; return et2_editableWidget.extend([
|
||||
mobile: {
|
||||
theme: 'silver'
|
||||
},
|
||||
formats: {
|
||||
customparagraph: { block: 'p', styles: {"margin-block-start": "0px", "margin-block-end": "0px"}}
|
||||
},
|
||||
min_height: 100,
|
||||
convert_urls: false,
|
||||
language: et2_htmlarea.LANGUAGE_CODE[egw.preference('lang', 'common')],
|
||||
@ -167,7 +170,7 @@ var et2_htmlarea = (function(){ "use strict"; return et2_editableWidget.extend([
|
||||
],
|
||||
toolbar: et2_htmlarea.TOOLBAR_SIMPLE,
|
||||
block_formats: "Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;"+
|
||||
"Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre",
|
||||
"Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre;Custom Paragraph=customparagraph",
|
||||
font_formats: "Andale Mono=andale mono,times;Arial=arial,helvetica,"+
|
||||
"sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book "+
|
||||
"antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;"+
|
||||
@ -334,6 +337,11 @@ var et2_htmlarea = (function(){ "use strict"; return et2_editableWidget.extend([
|
||||
|
||||
var rte_menubar = egw.preference('rte_menubar', 'common');
|
||||
var rte_toolbar = egw.preference('rte_toolbar', 'common');
|
||||
// we need to have rte_toolbar values as an array
|
||||
if (rte_toolbar && typeof rte_toolbar == "object")
|
||||
{
|
||||
rte_toolbar = Object.values(rte_toolbar);
|
||||
}
|
||||
var settings = {
|
||||
fontsize_formats: et2_htmlarea.FONT_SIZE_FORMATS[egw.preference('rte_font_unit', 'common')],
|
||||
menubar: parseInt(rte_menubar) && this.menubar ? true : typeof rte_menubar != 'undefined' ? false : this.menubar
|
||||
|
@ -1236,42 +1236,68 @@ var et2_vfsSelect = (function(){ "use strict"; return et2_inputWidget.extend(
|
||||
// define a mini app object for vfs select UI
|
||||
app.vfsSelectUI = new app.classes.vfsSelectUI;
|
||||
|
||||
this.dialog = et2_createWidget("dialog",
|
||||
// callback for dialog
|
||||
this.submit_callback = function(submit_button_id, submit_value, savemode)
|
||||
{
|
||||
callback: function(_button_id, _value)
|
||||
{
|
||||
if ((_button_id == 'submit' || (extra_buttons_action && extra_buttons_action[_button_id])) && _value)
|
||||
if ((submit_button_id == 'submit' || (extra_buttons_action && extra_buttons_action[submit_button_id])) && submit_value)
|
||||
{
|
||||
var files = [];
|
||||
switch(_data.content.mode)
|
||||
{
|
||||
case 'open-multiple':
|
||||
if (_value.dir && _value.dir.selected)
|
||||
if (submit_value.dir && submit_value.dir.selected)
|
||||
{
|
||||
for(var key in Object.keys(_value.dir.selected))
|
||||
for(var key in Object.keys(submit_value.dir.selected))
|
||||
{
|
||||
if (_value.dir.selected[key] != "")
|
||||
if (submit_value.dir.selected[key] != "")
|
||||
{
|
||||
files.push(_value.path+'/'+_value.dir.selected[key]);
|
||||
files.push(submit_value.path+'/'+submit_value.dir.selected[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'select-dir':
|
||||
files = _value.path;
|
||||
files = submit_value.path;
|
||||
break;
|
||||
default:
|
||||
if (self.options.method === 'download') _value.path = _data.content.download_baseUrl;
|
||||
files = _value.path+'/'+_value.name;
|
||||
if (self.options.method === 'download') submit_value.path = _data.content.download_baseUrl;
|
||||
files = submit_value.path+'/'+submit_value.name;
|
||||
if (self.options.method !== 'download' && !savemode)
|
||||
{
|
||||
for(var p in _data.content.dir)
|
||||
{
|
||||
if (_data.content.dir[p]['name'] == submit_value.name)
|
||||
{
|
||||
var saveModeDialogButtons = [
|
||||
{text: self.egw().lang("Yes"), id: "overwrite", class: "ui-priority-primary", "default": true, image: 'check'},
|
||||
{text: self.egw().lang("Rename"), id:"rename", image: 'edit'},
|
||||
{text: self.egw().lang("Cancel"), id:"cancel"}
|
||||
];
|
||||
return et2_dialog.show_prompt(function(_button_id, _value) {
|
||||
switch (_button_id)
|
||||
{
|
||||
case "overwrite":
|
||||
return self.submit_callback(submit_button_id, submit_value, 'overwrite');
|
||||
case "rename":
|
||||
submit_value.name = _value;
|
||||
return self.submit_callback(submit_button_id, submit_value, 'rename');
|
||||
}
|
||||
},
|
||||
self.egw().lang('Do you want to overwrite existing file %1 in directory %2?', submit_value.name, submit_value.path),
|
||||
self.egw().lang('File %1 already exists', submit_value.name),
|
||||
submit_value.name, saveModeDialogButtons);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
self._setRecentPaths(_value.path);
|
||||
self._setRecentPaths(submit_value.path);
|
||||
self.value = files;
|
||||
if (self.options.method && self.options.method !== 'download')
|
||||
{
|
||||
egw(window).json(
|
||||
self.options.method,
|
||||
[self.options.method_id, files, _button_id],
|
||||
[self.options.method_id, files, submit_button_id, savemode],
|
||||
function(){
|
||||
jQuery(self.node).change();
|
||||
}
|
||||
@ -1284,7 +1310,11 @@ var et2_vfsSelect = (function(){ "use strict"; return et2_inputWidget.extend(
|
||||
delete app.vfsSelectUI;
|
||||
return true;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
this.dialog = et2_createWidget("dialog",
|
||||
{
|
||||
callback: this.submit_callback,
|
||||
title: this.options.dialog_title,
|
||||
buttons: buttons,
|
||||
minWidth: 500,
|
||||
|
@ -1164,5 +1164,39 @@ var fw_base = (function(){ "use strict"; return Class.extend(
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Set a notification message for topmenu info item
|
||||
*
|
||||
* @param {string} _id id of topmenu info item with its prefix
|
||||
* @param {string} _message message that should be displayed
|
||||
* @param {string} _tooltip hint text as tooltip
|
||||
*/
|
||||
topmenu_info_notify: function(_id, _switch, _message, _tooltip) {
|
||||
var $items = jQuery('#egw_fw_topmenu_info_items').children();
|
||||
var prefix = "topmenu_info_";
|
||||
|
||||
$items.each(function(i,item){
|
||||
if (item.id == prefix+_id || item.id == _id)
|
||||
{
|
||||
var $notify = jQuery(item).find('.egw_fw_topmenu_info_notify');
|
||||
if (_switch)
|
||||
{
|
||||
if ($notify.length == 0)
|
||||
{
|
||||
$notify = jQuery(document.createElement('div'))
|
||||
.addClass('egw_fw_topmenu_info_notify')
|
||||
.prop('title', _tooltip)
|
||||
.appendTo(item);
|
||||
}
|
||||
$notify.prop('title', _tooltip).text(_message);
|
||||
}
|
||||
else
|
||||
{
|
||||
$notify.remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});}).call(this);
|
||||
|
@ -286,7 +286,7 @@ var fw_browser = (function(){ "use strict"; return Class.extend(
|
||||
jQuery(this.contentDiv).empty();
|
||||
var self_egw = egw(this.app.appName);
|
||||
var req = self_egw.json(
|
||||
this.app.getMenuaction('ajax_exec'),
|
||||
this.app.getMenuaction('ajax_exec', targetUrl),
|
||||
[targetUrl], this.browse_callback,this, true, this
|
||||
);
|
||||
req.sendRequest();
|
||||
|
@ -59,8 +59,9 @@ function egw_fw_class_application(_parentFw, _appName, _displayName, _icon,
|
||||
* lie inside the default egw instance.
|
||||
*
|
||||
* @param {string} _fun is the function which shall be called on the server.
|
||||
* @param {string} _ajax_exec_url contains menuaction for _fun === 'ajax_exec'
|
||||
*/
|
||||
egw_fw_class_application.prototype.getMenuaction = function(_fun)
|
||||
egw_fw_class_application.prototype.getMenuaction = function(_fun, _ajax_exec_url)
|
||||
{
|
||||
var baseUrl = '';
|
||||
var appName = 'home';
|
||||
@ -79,8 +80,11 @@ egw_fw_class_application.prototype.getMenuaction = function(_fun)
|
||||
baseUrl = baseUrl + 'json.php?menuaction=';
|
||||
}
|
||||
|
||||
var menuaction = _ajax_exec_url ? _ajax_exec_url.match(/menuaction=([^&]+)/) : null;
|
||||
|
||||
// use template handler to call current framework, eg. pixelegg
|
||||
return baseUrl + appName + '.jdots_framework.' + _fun + '.template';
|
||||
return baseUrl + appName + '.jdots_framework.' + _fun + '.template'+
|
||||
(menuaction ? '.'+menuaction[1] : '');
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -59,3 +59,14 @@ egw_LAB.wait(function()
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
// register service worker
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('./service-worker.js', {scope:"/egroupware/"})
|
||||
.then(function(registration) {
|
||||
console.log('Registration successful, scope is:', registration.scope);
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.log('Service worker registration failed, error:', error);
|
||||
});
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
%1 copied - the copy can now be edited common es-es %1 copiado - la copia ya puede ser editada
|
||||
%1 directories %2 found! admin es-es ¡%1 directorios %2 encontrados!
|
||||
%1 email addresses inserted common es-es Se han insertado %1 direcciones de correo
|
||||
%1 email(s) added into %2 common es-es Se añadieron %1 correos-e a %2
|
||||
%1 entries found, select one ... common es-es Se han encontrado %1 entradas. Seleccione una...
|
||||
%1 etemplates deleted common es-es %1 plantillas borradas
|
||||
%1 etemplates for application '%2' dumped to '%3' common es-es %1 plantillas para la aplicación '%2' volcadas a '%3'
|
||||
@ -10,6 +11,7 @@
|
||||
%1 file common es-es archivo %1
|
||||
%1 is not executable by the webserver !!! common es-es %1 no tiene permiso de ejecución para el servidor web
|
||||
%1 matches on search criteria common es-es %1 coincidencias para la búsqueda solicitada
|
||||
%1 more %2 selected ... common es-es %1 más %2 seleccionados...
|
||||
%1 more... common es-es %1 más...
|
||||
%1 new etemplates imported for application '%2' common es-es %1 nuevas plantillas importadas para la aplicación '%2'
|
||||
%1 not implemented for %2! common es-es %1 no está implementado para %2!
|
||||
@ -42,9 +44,11 @@
|
||||
1 week common es-es 1 semana
|
||||
13 (ntp) admin es-es 13 (ntp)
|
||||
15 minutes common es-es 15 minutos
|
||||
2-factor-authentication common es-es Autenticación de 2 factores
|
||||
30 minutes common es-es 30 minutos
|
||||
30 seconds common es-es 30 segundos
|
||||
5 minutes common es-es 5 minutos
|
||||
5 seconds common es-es 5 segundos
|
||||
80 (http) admin es-es 80 (http)
|
||||
a pattern to be searched for common es-es un patrón de búsqueda
|
||||
a request to the egroupware server returned with an error common es-es Una solicitud al servidor de EGroupware devolvió un error
|
||||
@ -99,8 +103,12 @@ afghanistan common es-es AFGHANISTAN
|
||||
albania common es-es ALBANIA
|
||||
algeria common es-es ARGELIA
|
||||
align common es-es Alinear
|
||||
aligncenter common es-es Centrar
|
||||
alignjustify common es-es Justificar
|
||||
alignleft common es-es Alinear a la izquierda
|
||||
alignment of label and input-field in table-cell common es-es posición de la etiqueta y campo de entrada en la celda de la tabla
|
||||
alignment of the v/hbox containing table-cell common es-es Posición del recuadro horizontal o vertical que contiene la celda de la tabla
|
||||
alignright common es-es Alinear a la derecha
|
||||
all common es-es Todos
|
||||
all addressbooks groupdav es-es Todas las libretas de direcciones
|
||||
all categories common es-es Todas las categorías
|
||||
@ -137,6 +145,7 @@ applies the changes made common es-es aplica los cambios realizados
|
||||
applies the changes to the given version of the template common es-es aplica los cambios a la versión dada de la plantilla
|
||||
apply common es-es Aplicar
|
||||
apply the action on the whole query, not only the shown entries common es-es Aplicar la acción a toda la consulta, NO solo a las entradas mostradas
|
||||
apps & license common es-es Aplicaciones y licencia
|
||||
april common es-es Abril
|
||||
are you sure you want to delete these entries ? common es-es ¿Seguro que desea borrar estas entradas?
|
||||
are you sure you want to delete this entry ? common es-es ¿Está seguro de querer borrar esta entrada?
|
||||
@ -149,6 +158,7 @@ as default common es-es como predeterminado
|
||||
attach common es-es Adjuntar
|
||||
attach file common es-es Adjuntar archivo
|
||||
attachment common es-es Adjunto
|
||||
attention: action will be applied to all rows, not only visible ones! api es-es Atención: la acción se aplicará a todas las filas, ¡no solo a las visibles!
|
||||
august common es-es Agosto
|
||||
australia common es-es AUSTRALIA
|
||||
austria common es-es AUSTRIA
|
||||
@ -163,6 +173,7 @@ autosave default category common es-es Guardar auotmáticamente la categoria pre
|
||||
azerbaijan common es-es AZERBAIJAN
|
||||
back common es-es Atrás
|
||||
back to user login common es-es Volver al inicio de sesión del usuario
|
||||
backcolor common es-es Color de fondo
|
||||
background color: common es-es Color de fondo:
|
||||
backup key common es-es Clave de respaldo
|
||||
backup/restore common es-es Respaldar/Restaurar
|
||||
@ -275,6 +286,7 @@ click here to upload the file common es-es Subir el archivo
|
||||
click or mouse over to show menus common es-es Mostrar los menús al pulsar sobre ellos o al mover el ratón por encima
|
||||
click or mouse over to show menus? common es-es ¿Mostrar los menús al pulsar sobre ellos o al mover el ratón por encima?
|
||||
click this image on the navbar: %1 common es-es Pulse esta imagen en la barra de navegación: %1
|
||||
click to open colorpicker common es-es Haga clic para abrir el selector de color
|
||||
click to order after that criteria common es-es pulse para ordenar después de ese criterio
|
||||
clickable path common es-es ruta pulsable
|
||||
clients not explicitly stating a limit get limited to these many days. a too high limit may cause problems with some clients. groupdav es-es Los clientes que no indiquen explícitamente un quedan limitados a esta cantidad de días. Un límite demasiado alto puede causar problemas con algunos clientes.
|
||||
@ -282,6 +294,7 @@ close common es-es Cerrar
|
||||
close sidebox common es-es Cerrar caja lateral
|
||||
closes the window without saving the changes common es-es cierra la ventana sin guardar los cambios
|
||||
cocos (keeling) islands common es-es COCOS (KEELING) ISLANDS
|
||||
code common es-es Código
|
||||
collection empty. common es-es La colección está vacía
|
||||
collection listing common es-es Listado de colecciones
|
||||
colombia common es-es COLOMBIA
|
||||
@ -406,6 +419,7 @@ distribution lists as groups groupdav es-es Listas de distribución como grupos
|
||||
djibouti common es-es DJIBOUTI
|
||||
do not notify common es-es No notificar
|
||||
do not notify of these changes common es-es No notificar estos cambios
|
||||
do not use on public computers! common es-es ¡NO lo use en computadoras públicas!
|
||||
do you also want to delete all subcategories ? common es-es ¿Desea eliminar también todas las subcategorías?
|
||||
do you want to save the changes you made in table %s? common es-es ¿Desea guardar los cambios que ha realizado en la tabla %s?
|
||||
do you want to send the message to all selected entries, without further editing? common es-es ¿Desea enviar el mensaje a todas las entradas seleccionadas, SIN seguir editando?
|
||||
@ -425,6 +439,7 @@ done common es-es Hecho
|
||||
dos international common es-es DOS internacional
|
||||
download common es-es Descargar
|
||||
download link common es-es Enlace de descarga
|
||||
drag markers to pick a color common es-es Arrastra los marcadores para elegir un color
|
||||
drop a table - this can not be undone common es-es Borrar una tabla - NO se puede deshacer
|
||||
drop table common es-es Borrar tabla
|
||||
dump4setup common es-es Volcar para instalación
|
||||
@ -474,6 +489,7 @@ enter filename to upload and attach, use [browse...] to search for it common es-
|
||||
enter the location of egroupware's url.<br>example: http://www.domain.com/egroupware or /egroupware<br><b>no trailing slash</b> admin es-es Introduzca la URL de EGroupware. <br>Ejemplo: http://www.dominio.com/egroupware o /egroupware<br><b>Sin barra al final</b>
|
||||
enter the new version number here (> old_version), empty for no update-file common es-es Ingrese el número de versión nuevo, > old_version, vacío para ningún archivo de actualización
|
||||
enter the new version number here (has to be > old_version) common es-es Introduzca el nuevo número de versión aquí (tiene que ser mayor que la versión anterior)
|
||||
enter your file name common es-es Ingrese su nombre de archivo
|
||||
entry has been deleted sucessfully common es-es La entrada ha sido eliminada correctamente
|
||||
entry not found! common es-es ¡No se encontró la entrada!
|
||||
entry saved common es-es La entrada ha sido guardada
|
||||
@ -554,11 +570,15 @@ firstname common es-es Nombre de pila
|
||||
fixme! common es-es ¡Corríjame!
|
||||
floating point common es-es Coma flotante
|
||||
folder already exists. common es-es La carpeta ya existe
|
||||
fontselect common es-es Seleccionar tipografía
|
||||
fontsizeselect common es-es Seleccionar tamaño de letra
|
||||
for more than one contact in a document use the tag pagerepeat! preferences es-es ¡Use la etiqueta repetición de página para más de un contacto en un documento!
|
||||
force common es-es forzar
|
||||
force selectbox common es-es Forzar cuadro de selección
|
||||
forecolor common es-es Color frontal
|
||||
foreign key common es-es Clave ajena
|
||||
forever common es-es Para siempre
|
||||
formatselect common es-es Seleccionar formato
|
||||
formatted text (html) common es-es Texto con formato (HTML)
|
||||
found unconnected %1 %2! admin es-es ¡Se encontró desconexión %1 %2!
|
||||
fr common es-es Fr
|
||||
@ -569,6 +589,7 @@ french southern territories common es-es FRENCH SOUTHERN TERRITORIES
|
||||
friday common es-es Viernes
|
||||
ftp common es-es FTP
|
||||
fullname common es-es Nombre completo
|
||||
fullscreen common es-es Pantalla completa
|
||||
fullscreen mode common es-es Modo de pantalla completa
|
||||
gabon common es-es GABON
|
||||
gambia common es-es GAMBIA
|
||||
@ -623,12 +644,14 @@ height, disabled common es-es Altura, desactivada
|
||||
help common es-es Ayuda
|
||||
high common es-es Alta
|
||||
highest common es-es La más alta
|
||||
history common es-es Historia
|
||||
history log common es-es Registro histórico
|
||||
hold [%1] and [%2] key to drag %3 to your desktop common es-es Mantenga presionadas las teclas [%1] y [%2] para arrastrar %3 a su escritorio
|
||||
hold [%1] key to select text eg. to copy it common es-es Mantenga presionada la tecla [%1] para seleccionar texto, e.g. para copiarlo
|
||||
holy see (vatican city state) common es-es SANTA SEDE (ESTADO DE LA CIUDAD DEL VATICANO)
|
||||
home common es-es Inicio
|
||||
home email common es-es correo electrónico particular
|
||||
home screen common es-es Pantalla principal
|
||||
honduras common es-es HONDURAS
|
||||
hong kong common es-es HONG KONG
|
||||
horizontal rule common es-es Línea horizontal
|
||||
@ -652,6 +675,7 @@ if the error persists, contact your administrator for help and ask to check the
|
||||
if there are some images in the background folder you can choose the one you would like to see. common es-es Si hay algunas imágenes en la carpeta de fondo, puede elegir la que desea ver.
|
||||
if you specify a directory (full vfs path) here, %1 displays an action for each document. that action allows to download the specified document with the data inserted. preferences es-es Si especifica un directorio, ruta completa vfs, %1 muestra una acción para cada documento. Esa acción permite descargar el documento especificado con los datos insertados.
|
||||
if you specify a document (full vfs path) here, %1 displays an extra document icon for each entry. that icon allows to download the specified document with the data inserted. preferences es-es Si especifica un directorio aquí (la ruta vgs completa), %1 muestra un icono extra de documento para cada entrada. Ese icono permite descargar el documento especificado con los datos insertados.
|
||||
if you use "2-factor-authentication", please enter the code here. common es-es Si usa "Autenticación de 2 factores", ingrese el código aquí.
|
||||
image common es-es Imagen
|
||||
image directory relative to document root (use / !), example: common es-es Directorio de imágenes relativo a la raíz de los documentos (use / !). Ejemplo:
|
||||
image url common es-es URL de la imagen
|
||||
@ -661,6 +685,7 @@ import table-definitions from existing db-table common es-es Importar definicion
|
||||
import xml common es-es Importar XML
|
||||
in order to copy to clipboard, you need to allow flash player by clicking on gray box.\nyou can permanently allow flash player for egroupware in your browser settings. common es-es Para copiar al portapapeles, debe permitir Flash Player haciendo clic en el cuadro gris.\nPuede permitir permanentemente Flash Player para EGroupware en la configuración de su navegador.
|
||||
increment version to not overwrite the existing template common es-es Incrementar la versión para no sobreescribir la plantilla existente
|
||||
indent common es-es Sangrar
|
||||
index/name of returned content (name of the template, link / method for image) common es-es Nombre o índice del nombre del contenido devuelto (nombre de la plantilla, enlace o método para una imagen)
|
||||
indexed common es-es Indexado
|
||||
indexoptions common es-es Opciones de indexar
|
||||
@ -686,9 +711,12 @@ insert new row after this one common es-es Insertar una nueva fila después de
|
||||
insert new row in front of first line common es-es Insertar una nueva fila delante de la primera línea
|
||||
insert row after common es-es Insertar una fila despues
|
||||
insert row before common es-es Insertar una fila antes
|
||||
insert timestamp into description field common es-es Insertar marca de tiempo en el campo de descripción
|
||||
install common es-es Instalar
|
||||
integer common es-es Entero
|
||||
international common es-es Internacional
|
||||
introduction common es-es Introducción
|
||||
invalid email common es-es Correo-e no válido
|
||||
invalid filename common es-es Nombre de archivo inválido.
|
||||
invalid ip address common es-es Dirección IP inválida.
|
||||
invalid password common es-es La contraseña inválida.
|
||||
@ -726,6 +754,7 @@ kuwait common es-es KUWAIT
|
||||
kyrgyzstan common es-es KYRGYZSTAN
|
||||
label common es-es Etiqueta
|
||||
label:[bold][italic] text:[len][,max] numbers:[min][,[max][,len]] t.area:[rows][,cols] radiob.:value h.rule:[width] templ.:[indexincontent] select:[multiselect] date:[values: eg. 'y-m-d'] common es-es Etiqueta:[bold][italic] Texto:[len][,max] Números:[min][,[max][,len]] Área de texto:[rows][,cols] BotónRadio:valor Línea hor.:[width] Plantilla:[IndexInContent] Selec.:[multiselect] Fecha:[valores: ej. 'A-m-d']
|
||||
landscape common es-es Paisaje
|
||||
lang common es-es Idioma
|
||||
language common es-es Idioma
|
||||
language-short (eg. 'en' for english) for language-dependent template ('' reads your pref. languages or the default, us 'default' to read the default template '') common es-es Abreviatura del idioma (ej. 'en' para inglés) para plantillas que dependen del idioma ('' lee las preferencias del idioma o el predeterminado. Use 'default' para la plantilla predeterminada.
|
||||
@ -789,7 +818,6 @@ mail domain, eg. "%1" common es-es dominio de correo, p.ej. "%1"
|
||||
mailvelope addon installation failed! please try again. common es-es Falló la instalación del complemento Mailvelope! Inténtalo de nuevo.
|
||||
mailvelope addon installation succeded. now you may configure the options. common es-es La instalación del complemento Mailvelope se realizó correctamente. Ahora puedes configurar las opciones.
|
||||
main category common es-es Categoria principal
|
||||
home screen common es-es Pantalla principal
|
||||
maintainer common es-es Mantenido por
|
||||
malawi common es-es MALAWI
|
||||
malaysia common es-es MALASIA
|
||||
@ -924,6 +952,7 @@ now common es-es Ahora
|
||||
number of colums the field/cell should span or 'all' for the remaining columns, css-class name (for the td tag) common es-es número de columnas por las que el campo o celda debe distribuirse, o 'todas' para el resto de columnas, nombre de la clase CSS (para la etiqueta TD)
|
||||
number of rows/cols in a v/hbox, cellpadding, cellspacing common es-es número de filas o columnas en un recuadro vertical u horizontal, distancia del texto a la celda y espaciado entre celdas
|
||||
numbers common es-es números
|
||||
numlist common es-es Lista de números
|
||||
october common es-es Octubre
|
||||
of common es-es de
|
||||
off common es-es apagado
|
||||
@ -987,15 +1016,19 @@ permissions to the files/users directory common es-es permisos a los directorios
|
||||
permisson denied! common es-es Permiso denegado
|
||||
personal common es-es Personal
|
||||
peru common es-es PERU
|
||||
pg down common es-es Av Pág
|
||||
pg up common es-es Re Pág
|
||||
pgp encryption common es-es Cifrado PGP
|
||||
pgp encryption installation common es-es instalación del cifrado PGP
|
||||
philippines common es-es FILIPINAS
|
||||
phone number common es-es Número de teléfono
|
||||
pitcairn common es-es PITCAIRN
|
||||
placeholders common es-es Marcador
|
||||
play/pause common es-es Reproducir/Pausar
|
||||
please %1 by hand common es-es Por favor %1 manualmente
|
||||
please enter a name common es-es Por favor, introduzca un nombre
|
||||
please enter table-name first !!! common es-es Por favor, introduzca el nombre de la tabla primero
|
||||
please reload the egroupware desktop (f5 / cmd+r). common es-es Vuelva a cargar el escritorio EGroupware (F5 / Cmd+r).
|
||||
please run setup to become current common es-es Por favor ejecute la instalación para actualizar
|
||||
please select common es-es Por favor, seleccione
|
||||
please set your global preferences common es-es Por favor, ponga sus preferencias globales
|
||||
@ -1008,6 +1041,7 @@ pm common es-es pm
|
||||
poland common es-es POLONIA
|
||||
popup common es-es Ventama emergente
|
||||
popup with search common es-es Ventana emergente con búsqueda
|
||||
portrait common es-es Retrato
|
||||
portugal common es-es PORTUGAL
|
||||
postal common es-es Postal
|
||||
powered by common es-es Proporcionado por
|
||||
@ -1028,9 +1062,11 @@ private common es-es Privado
|
||||
programs common es-es Programas
|
||||
project common es-es Proyecto
|
||||
properties common es-es Propiedades
|
||||
protocol is required common es-es Se requiere protocolo
|
||||
public common es-es público
|
||||
puerto rico common es-es PUERTO RICO
|
||||
qatar common es-es QATAR
|
||||
quick add common es-es Añadir rápido
|
||||
radiobutton common es-es Botón tipo radio
|
||||
read common es-es Leer
|
||||
read a list of entries. common es-es Leer una lista de entradas
|
||||
@ -1039,23 +1075,42 @@ read etemplate from database (for the keys above) common es-es leer plantilla de
|
||||
read this list of methods. common es-es Leer esta lista de métodos
|
||||
reading common es-es leyendo
|
||||
readonly common es-es sólo lectura
|
||||
readonly filemanager directory common es-es Directorio del administrador de archivos de solo lectura
|
||||
readonly share common es-es Compartir solo lectura
|
||||
redo common es-es Rehacer
|
||||
refresh common es-es Refrescar
|
||||
register common es-es Registrar
|
||||
regular common es-es Regular
|
||||
reject common es-es Rechazar
|
||||
remember me common es-es Recordarme
|
||||
remember me for %1 common es-es Recuérdame para %1
|
||||
remove api es-es Quitar
|
||||
remove row (can not be undone!!!) common es-es Eliminar fila (¡NO se puede deshacer!)
|
||||
remove selected accounts common es-es borrar las cuentas seleccionadas
|
||||
remove shortcut common es-es Eliminar acceso directo
|
||||
remove this link (not the entry itself) common es-es Borrar este enlace (no la entrada en sí)
|
||||
removed (now) empty directory fs_id=%1 admin es-es Se eliminó (ahora) el directorio vacío fs_id = %1
|
||||
removeformat common es-es Eliminar formato
|
||||
rename common es-es Renombrar
|
||||
replace common es-es Sustituir
|
||||
replace with common es-es Sustituir por
|
||||
requests and full responses to files directory common es-es Solicitudes y respuestas completas al directorio de archivos
|
||||
required common es-es Requerido
|
||||
required directory "%1" created. admin es-es Directorio requerido "%1" creado.
|
||||
required directory "%1" has wrong mode %2 instead of %3! admin es-es ¡El directorio requerido "%1" tiene un modo incorrecto %2 en lugar de %3!
|
||||
required directory "%1" not found! admin es-es ¡No se encontró el directorio requerido "%1"!
|
||||
reset common es-es Restablecer
|
||||
reset all to default common es-es Restablecer todo a predeterminado
|
||||
reset all user's column preferences common es-es Restablecer todas las preferencias de columna del usuario
|
||||
resource calendars groupdav es-es Calendarios de recursos
|
||||
resource type common es-es Tipo de recurso
|
||||
resources common es-es Recursos
|
||||
restore all common es-es Restaura todo
|
||||
restore all application templates, overwriting existing ones with identical version number common es-es Restaure todas las plantillas de aplicaciones, sobrescribiendo las existentes con un número de versión idéntico
|
||||
restore failed common es-es Fallo al restaurar
|
||||
restore key common es-es Restaurar clave
|
||||
restore password common es-es Restaurar contraseña
|
||||
retry common es-es Reintentar
|
||||
returns a full list of accounts on the system. warning: this is return can be quite large common es-es Devuelve una lista completa de las cuentas del sistema. Aviso: puede ser bastante largo
|
||||
returns an array of todo items common es-es Devuelve un array de elementos pendientes
|
||||
returns savely, without deleting common es-es Vuelve de forma segura, SIN borrar
|
||||
@ -1063,6 +1118,8 @@ returns struct of users application access common es-es Devuelve la estructura d
|
||||
reunion common es-es REUNION
|
||||
right common es-es Derecha
|
||||
romania common es-es RUMANIA
|
||||
rotate left common es-es Girar a la izquierda
|
||||
rotate right common es-es Girar a la derecha
|
||||
row... common es-es Fila...
|
||||
russian common es-es Ruso
|
||||
russian federation common es-es FEDERACION RUSA
|
||||
@ -1081,6 +1138,7 @@ savant2 version differs from savant2 wrapper. <br/>this version: %1 <br/>savants
|
||||
save common es-es Grabar
|
||||
save all common es-es Guardar todo
|
||||
save as common es-es Guardar como
|
||||
save as zip common es-es Guardar como Zip
|
||||
save selected columns as default preference for all users. common es-es Guardar las columnas seleccionadas como preferencia predeterminada para todos los usuarios.
|
||||
save the changes made and close the window common es-es Guardar los cambios realizados y cerrar la ventana
|
||||
save the etemplate under the above keys (name, ...), change them for a saveas common es-es Guardar la plantilla bajo las claves de arriba (nombre, etc). Cámbielas para Guardar como.
|
||||
@ -1088,80 +1146,101 @@ saves changes to tables_current.inc.php common es-es Guarda los cambios en table
|
||||
saves the template with given version number and closes the window common es-es Guarda la plantilla con el número de versión indicado y cierra la ventana
|
||||
scale common es-es Escala
|
||||
scale for float common es-es escala para flotante
|
||||
scheduling inbox common es-es Bandeja de entrada de programación
|
||||
scheduling outbox common es-es Bandeja de salida de programación
|
||||
search common es-es Buscar
|
||||
search %1 '%2' common es-es Buscar %1 '%2'
|
||||
search accounts common es-es Buscar cuentas
|
||||
search for '%1' common es-es Buscar '%1'
|
||||
search letter common es-es Buscar carta
|
||||
search or select accounts common es-es buscar o seleccionar cuentas
|
||||
search... common es-es Buscar...
|
||||
searchreplace common es-es Buscar y reemplazar
|
||||
second common es-es segundo
|
||||
section common es-es Sección
|
||||
select common es-es Seleccionar
|
||||
select "%1", if your client does not support multiple addressbooks. groupdav es-es Seleccione "%1", si su cliente no admite múltiples libretas de direcciones.
|
||||
select "%1", if your client support groups, eg. os x or ios addressbook. groupdav es-es Seleccione "%1", si su cliente soporta grupos, e.g. Libreta de direcciones OS X o iOS.
|
||||
select a category common es-es seleccionar una categoría
|
||||
select a primary contact, to show in the list common es-es Seleccionar un contacto primario, para mostrar en la lista
|
||||
select access common es-es Seleccionar acceso
|
||||
select account common es-es Seleccionar cuenta
|
||||
select action common es-es Seleccionar acción
|
||||
select all common es-es Seleccionar todo
|
||||
select all %1 %2 for %3 common es-es Seleccionar todos los %1 %2 para %3
|
||||
select all entries common es-es Seleccionar todas las entradas
|
||||
select access common es-es Seleccione acceso
|
||||
select account common es-es Seleccione cuenta
|
||||
select action common es-es Seleccione acción
|
||||
select all common es-es Seleccione todo
|
||||
select all %1 %2 for %3 common es-es Seleccione todos los %1 %2 para %3
|
||||
select all entries common es-es Seleccione todas las entradas
|
||||
select an app first !!! common es-es Seleccione una aplicación primero
|
||||
select an app to search in common es-es Seleccionar una aplicación en la que buscar
|
||||
select an application common es-es Seleccionar una aplicación
|
||||
select an application, (*) = uninstalled common es-es Seleccionar una aplicación. (*) = sin instalar
|
||||
select an entry to link with common es-es Seleccionar una entrada para enlazar
|
||||
select an app to search in common es-es Seleccione una aplicación en la que buscar
|
||||
select an application common es-es Seleccione una aplicación
|
||||
select an application, (*) = uninstalled common es-es Seleccione una aplicación. (*) = sin instalar
|
||||
select an entry to link with common es-es Seleccione una entrada para enlazar
|
||||
select an opened dialog common es-es Seleccione un diálogo abierto
|
||||
select an table of the application common es-es Seleccione una tabla de la aplicación
|
||||
select application common es-es Seleccionar aplicación
|
||||
select application to search common es-es Seleccionar aplicación para buscar
|
||||
select category common es-es Seleccionar categoría
|
||||
select color common es-es Seleccionar color
|
||||
select columns common es-es Seleccionar columnas
|
||||
select country common es-es Seleccionar país
|
||||
select date common es-es Seleccionar fecha
|
||||
select day common es-es Seleccionar día
|
||||
select day of week common es-es Seleccionar día de la semana
|
||||
select entry common es-es Seleccionar entrada
|
||||
select file(s) from vfs common es-es Seleccionar archivo(s) desde VFS
|
||||
select files from filemanager ... common es-es Seleccionar archivos desde el Administrador de archivos
|
||||
select group common es-es Seleccionar grupo
|
||||
select home email address common es-es Seleccionar dirección de correo inicial
|
||||
select hour common es-es Seleccionar hora del día
|
||||
select application common es-es Seleccione aplicación
|
||||
select application to search common es-es Seleccione aplicación para buscar
|
||||
select category common es-es Seleccione categoría
|
||||
select color common es-es Seleccione color
|
||||
select columns common es-es Seleccione columnas
|
||||
select country common es-es Seleccione país
|
||||
select date common es-es Seleccione fecha
|
||||
select day common es-es Seleccione día
|
||||
select day of week common es-es Seleccione día de la semana
|
||||
select entry common es-es Seleccione entrada
|
||||
select file(s) from vfs common es-es Seleccione archivo(s) desde VFS
|
||||
select files from filemanager ... common es-es Seleccione archivos desde el Administrador de archivos
|
||||
select group common es-es Seleccione grupo
|
||||
select home email address common es-es Seleccione dirección de correo inicial
|
||||
select hour common es-es Seleccione hora del día
|
||||
select if content of field should not be translated (label gets always translated) common es-es Seleccione si el contenido del campo no debe traducirse (la etiqueta siempre se traduce)
|
||||
select language common es-es Seleccionar idioma
|
||||
select month common es-es Seleccionar mes
|
||||
select multiple accounts common es-es seleccionar múltiples cuentas
|
||||
select number common es-es Seleccionar número
|
||||
select one common es-es Seleccionar uno
|
||||
select one ... common es-es Seleccionar uno...
|
||||
select percentage common es-es Seleccionar porcentaje
|
||||
select priority common es-es Seleccionar prioridad
|
||||
select some options common es-es Seleccionar algunas opciones
|
||||
select state common es-es Seleccionar estado
|
||||
select the columns to display in the list common es-es Seleccionar columnas a mostrar en la lista
|
||||
select language common es-es Seleccione idioma
|
||||
select month common es-es Seleccione mes
|
||||
select multiple accounts common es-es Seleccione múltiples cuentas
|
||||
select number common es-es Seleccione número
|
||||
select one common es-es Seleccione uno
|
||||
select one ... common es-es Seleccione...
|
||||
select percentage common es-es Seleccione porcentaje
|
||||
select priority common es-es Seleccione prioridad
|
||||
select some options common es-es Seleccione algunas opciones
|
||||
select state common es-es Seleccione estado
|
||||
select the columns to display in the list common es-es Seleccione columnas a mostrar en la lista
|
||||
select the default height for the application windows common es-es Seleccione la altura predeterminada para las ventanas de la aplicación
|
||||
select the default width for the application windows common es-es Seleccione el ancho predeterminado para las ventanas de la aplicación
|
||||
select the indexed columns in their desired order common es-es Seleccionar las columnas indexadas en su orden deseado
|
||||
select this etemplate to delete it common es-es Seleccionar esta plantilla para borrarla
|
||||
select user common es-es Seleccionar usuario
|
||||
select which accounts to show common es-es seleccionar las cuentas a mostrar
|
||||
select which values to show common es-es Seleccionar qué valores mostrar
|
||||
select work email address common es-es Seleccionar dirección de correo del trabajo
|
||||
select year common es-es Seleccionar año
|
||||
select the indexed columns in their desired order common es-es Seleccione las columnas indexadas en su orden deseado
|
||||
select this etemplate to delete it common es-es Seleccione esta plantilla para borrarla
|
||||
select user common es-es Seleccione usuario
|
||||
select user or group common es-es Seleccione usuario ogrupo
|
||||
select which accounts to show common es-es Seleccione las cuentas a mostrar
|
||||
select which values to show common es-es Seleccione qué valores mostrar
|
||||
select work email address common es-es Seleccione dirección de correo del trabajo
|
||||
select year common es-es Seleccione año
|
||||
selectbox common es-es Cuadro de selección
|
||||
selection common es-es Selección
|
||||
send common es-es Enviar
|
||||
send succeeded to %1 common es-es Enviado correctamente a %1
|
||||
senegal common es-es SENEGAL
|
||||
september common es-es Septiembre
|
||||
serbia common es-es Serbia
|
||||
server %1 has been added common es-es El servidor %1 ha sido añadido
|
||||
server answered. processing response... common es-es El servidor ha respondido. Procesando la respuesta...
|
||||
server contacted. waiting for response... common es-es Se ha conectado con el servidor. Esperando la respuesta...
|
||||
server error common es-es Error del servidor
|
||||
server is unwilling to perform. common es-es El servidor es incapaz de hacer.
|
||||
server name common es-es Nombre del servidor
|
||||
session has been killed common es-es La sesión ha sido eliminada
|
||||
set as default common es-es Establecer como predeterminado
|
||||
set these columns as the default common es-es Establecer estas columnas como predeterminadas
|
||||
set user as only responsible user, but keeping groups groupdav es-es establecer al usuario como el único responsable, pero manteniendo grupos
|
||||
set user as only responsible, removing all existing responsibles groupdav es-es establecer al usuario como el único responsable, eliminando todos los responsables existentes
|
||||
sets today as date common es-es pone hoy como fecha
|
||||
settings saved. common es-es Se guardó la configuración.
|
||||
setup common es-es Instalación
|
||||
setup main menu common es-es Menú principal de instalación
|
||||
seychelles common es-es SEYCHELLES
|
||||
share common es-es Compartir
|
||||
share files common es-es Compartir archivos
|
||||
share link common es-es Compartir enlace
|
||||
shift common es-es May
|
||||
shift ⇧ common es-es May ⇧
|
||||
should the form be submitted or any custom javascript be executed common es-es Se debe enviar el formulario o ejecutar cualquier javascript personalizado
|
||||
show common es-es Mostrar
|
||||
show (no save) common es-es Mostrar (sin guardar)
|
||||
@ -1174,6 +1253,8 @@ show home and logout button in main application bar? common es-es ¿Mostrar los
|
||||
show in sidebox common es-es Mostrar en el menú lateral
|
||||
show logo's on the desktop. common es-es Mostrar logo en el escritorio
|
||||
show menu common es-es mostrar menú
|
||||
show next login common es-es Mostrar registro del siguiente dispositivo
|
||||
show now common es-es Mostrar ahora
|
||||
show page generation time common es-es Mostrar el tiempo que tarda en generarse la página
|
||||
show page generation time on the bottom of the page? common es-es ¿Mostrar el tiempo que tarda en generarse la página en la parte inferior de la página?
|
||||
show page generation time? common es-es ¿Mostrar el tiempo que tarda en generarse la página?
|
||||
@ -1186,6 +1267,7 @@ showing %1 - %2 of %3 common es-es mostrando %1 - %2 de %3
|
||||
shows / allows you to enter values into the etemplate for testing common es-es muestra / permite introducir valores en la plantilla para probar
|
||||
shows/displays etemplate for testing, does not save it before common es-es Muestra la plantilla para pruebas. NO la guarda antes
|
||||
sierra leone common es-es SIERRA LEONA
|
||||
sign up common es-es Registrarse
|
||||
simple common es-es Simple
|
||||
singapore common es-es SINGAPUR
|
||||
site configuration common es-es Configuración del sitio
|
||||
@ -1234,7 +1316,9 @@ sweden common es-es SUECIA
|
||||
switch to a parent widget common es-es Cambiar a un control superior
|
||||
switch to an other widgets of that container common es-es Cambiar a otros controles de ese contenedor
|
||||
switzerland common es-es SUIZA
|
||||
sync all selected into one groupdav es-es Sincronizar todos los seleccionados en uno
|
||||
syrian arab republic common es-es SYRIAN ARAB REPUBLIC
|
||||
tab common es-es Tab
|
||||
tabindex common es-es Índice de tabulación
|
||||
table %1 is excluded from backup and restore. data will not be restored. common es-es La tabla %1 se ha excluido del respaldo y la restauración. Los datos no se restaurarán.
|
||||
table properties common es-es Propiedades de la tabla
|
||||
@ -1252,13 +1336,16 @@ text color: common es-es Color del texto:
|
||||
textarea common es-es Area de texto
|
||||
thailand common es-es TAILANDIA
|
||||
the backup key has been deleted. common es-es La clave de respaldo se ha suprimido.
|
||||
the browser popup blocker is on. please click on ok button to see the pop-up.\n\nif you would like to not see this message for the next time, allow your browser pop-up blocker to open popups from %1 common es-es El bloqueador de ventanas emergentes del navegador está activado. Haga clic en el botón Aceptar para ver la ventana emergente.\n\nSi no desea ver este mensaje la próxima vez, permita que el bloqueador de ventanas emergentes de su navegador abra ventanas emergentes desde %1
|
||||
the document can contain placeholder like {{%3}}, to be replaced with the data (%1full list of placeholder names%2). preferences es-es El documento puede contener un marcador como {{%3}}, para sustituirlo con los datos (%1lista completa de nombres de marcadores%2).
|
||||
the following applications require upgrades common es-es Las siguientes aplicaciones requieren actualizaciones
|
||||
the following document-types are supported: preferences es-es Los siguientes tipos de documentos están soportados:
|
||||
the mail server returned common es-es El servidor de correo devolvió
|
||||
there already is a system-user with this name. user's should not have the same name as a systemuser common es-es Ya hay un usuario de sistema con este nombre. Los usuarios no deben tener el mismo nombre que un usuario de sistema.
|
||||
they will be sub-folders in users home (%1 attribute). common es-es Serán subcarpetas en la página de inicio de los usuarios (atributo %1).
|
||||
this name has been used already common es-es ¡Este nombre ya ha sido usado!
|
||||
this text gets displayed if the input-field is empty and has no focus (blur) common es-es este texto se muestra si el campo de entrada está vacío y no tiene foco (borroso)
|
||||
this will reset toolbar preferences for all users and set them to configured default prefs. common es-es Esto restablecerá las preferencias de la barra de herramientas para todos los usuarios y los establecerá en las preferencias predeterminadas configuradas.
|
||||
thursday common es-es Jueves
|
||||
tiled common es-es mosaico
|
||||
time common es-es Hora (completa)
|
||||
@ -1282,6 +1369,7 @@ tonga common es-es TONGA
|
||||
too many unsucessful attempts to login: %1 for the user '%2', %3 for the ip %4 common es-es Demasiados intentos fallidos de inicio de sesión: %1 para el usuario '%2', %3 para la IP %4
|
||||
top common es-es Superior
|
||||
total common es-es Total
|
||||
total: %1 successful: %2 failed: %3 skipped: %4 common es-es Total: %1 Exitoso: %2 Falló: %3 Saltado: %4
|
||||
transparant bg for the icons? common es-es ¿Fondo transparente para los iconos?
|
||||
tree common es-es Arbol
|
||||
trinidad and tobago common es-es TRINIDAD AND TOBAGO
|
||||
@ -1296,9 +1384,12 @@ type of the column common es-es tipo de la columna
|
||||
type of the field (select label if field should be empty) common es-es tipo del campo (seleccionar la etiqueta si el campo tiene que estar vacío)
|
||||
uganda common es-es UGANDA
|
||||
ukraine common es-es UCRANIA
|
||||
un-delete common es-es Recuperar
|
||||
uncheck all common es-es Desmarcar todo
|
||||
undefined common es-es indefinido
|
||||
underline common es-es Subrayado
|
||||
undo common es-es Deshacer
|
||||
unicode common es-es Unicode
|
||||
unique common es-es Único
|
||||
united arab emirates common es-es EMIRATOS ARABES UNIDOS
|
||||
united kingdom common es-es REINO UNIDO
|
||||
@ -1341,13 +1432,17 @@ version common es-es Versión
|
||||
version-number, should be in the form: major.minor.revision.number (eg. 0.9.13.001 all numbers filled up with zeros) common es-es número de la versión, en formato mayor.menor.revisión.número (por ej. 0.9.13.001, con todos los números rellenos con ceros)
|
||||
vertical alignment of row common es-es alineación vertical de la fila
|
||||
vfs upload directory common es-es Directorio de subida de archivos VFS
|
||||
video tutorials common es-es Tutoriales en video
|
||||
viet nam common es-es VIETNAM
|
||||
view common es-es Ver
|
||||
view linked %1 entries common es-es Ver entradas vinculadas de %1
|
||||
view this etemplate common es-es ver esta plantilla
|
||||
view this linked entry in its application common es-es ver esta entrada enlazada en su aplicación
|
||||
virgin islands, british common es-es VIRGIN ISLANDS, BRITISH
|
||||
virgin islands, u.s. common es-es VIRGIN ISLANDS, U.S.
|
||||
wallis and futuna common es-es WALLIS AND FUTUNA
|
||||
was not able to delete the backup key because %1 common es-es No se pudo suprimir la clave de respaldo porque %1
|
||||
we would like to introduce you to egroupware by showing a short introduction video. common es-es Nos gustaría presentarte EGroupware mostrando un breve video de introducción.
|
||||
wednesday common es-es Miércoles
|
||||
weekend common es-es fin de semana
|
||||
welcome common es-es Página principal
|
||||
@ -1359,6 +1454,7 @@ what style would you like the image to have? common es-es ¿Qué estilo desea qu
|
||||
when you say yes the home and logout buttons are presented as applications in the main top applcation bar. common es-es Si dice que sí, los botones de Inicio y Salir se presentan como aplicaciones en la barra principal de aplicaciones.
|
||||
where and how will the egroupware links like preferences, about and logout be displayed. common es-es Dónde y cómo mostrar los enlaces de egroupware com las preferencias, acerca de y salir.
|
||||
which groups common es-es Qué grupos
|
||||
which infolog types should be synced with the device, default only tasks. common es-es Cuales tipos de InfoLog deben sincronizarse con el dispositivo, solo tareas predeterminadas.
|
||||
whole query common es-es la consulta completa
|
||||
widget copied into clipboard common es-es control copiado en el portapapeles
|
||||
width common es-es Ancho
|
||||
@ -1369,7 +1465,11 @@ width, disabled common es-es Ancho, desactivado
|
||||
wk common es-es Semana
|
||||
work email common es-es correo del trabajo
|
||||
working days common es-es días laborales
|
||||
works reliable for total size up to 1-2 mb, might work for 5-10 mb, most likely to fail for >10mb common es-es Funciona de forma confiable para un tamaño total de hasta 1-2 MB, puede funcionar para 5-10 MB, lo más probable es que falle para >10 MB
|
||||
would you like to display the page generation time at the bottom of every window? common es-es ¿Desea mostrar el tiempo que tarda en generarse la página en la parte inferior de cada ventana?
|
||||
writable common es-es Writable
|
||||
writable filemanager directory common es-es Directorio del administrador de archivos grabable
|
||||
writable share common es-es Cuota de escritura
|
||||
write <app>/setup/tables_current.inc.php common es-es Escribir <app>/setup/tables_current.inc.php
|
||||
write langfile common es-es Escribir archivo de idioma
|
||||
write tables common es-es Escribir tablas
|
||||
@ -1383,9 +1483,11 @@ yemen common es-es YEMEN
|
||||
yes common es-es Sí
|
||||
yes - delete common es-es Sí - Eliminar
|
||||
yes - delete including sub-entries common es-es Sí - Eliminar incluso las subentradas
|
||||
yes and allow non-admin users to do that too (recommended) common es-es Sí y permitir que los usuarios que no sean administradores también lo hagan (recomendado)
|
||||
you are not allowed to export more than %1 entries! common es-es ¡No se le permite exportar más de %1 entradas!
|
||||
you are required to change your password during your first login common es-es Es necesario que cambie la contraseña durante su primer inicio de sesión.
|
||||
you can customize how many icons and toolbars the editor shows. common es-es Puede personalizar el número de iconos y barras de herramientas que muestra el editor.
|
||||
you can not choose more then %1 item(s)! common es-es ¡No puede elegir más de% 1 artículo (s)!
|
||||
you can respond by visiting: common es-es Puede responder visitando:
|
||||
you have been successfully logged out login es-es Usted ha salido correctamente
|
||||
you have not entered a title common es-es No ha introducido un título
|
||||
@ -1398,9 +1500,14 @@ you have successfully logged out common es-es Ha terminado la sesión correctame
|
||||
you need to %1set your timezone preference%2. common es-es Necesita %1 establecer su preferencia de zona horaria%2.
|
||||
you need to add the webserver user '%1' to the group '%2'. common es-es Necesita añadir el usuario del servidor web '%1' al grupo '%2'.
|
||||
you need to be an egroupware administrator to access this functionality! common es-es ¡Necesita ser administrador de EGroupware para acceder a esta funcionalidad!
|
||||
you need to install mailvelope plugin available for chrome and firefox from www.mailvelope.com or by clicking on install button. common es-es Debe instalar el complemento Mailvelope disponible para Chrome y Firefox desde www.mailvelope.com o haciendo clic en el botón de instalación.
|
||||
you need to select a file first! common es-es ¡Seleccione un archivo primero!
|
||||
you need to select some entries first! common es-es ¡Necesita seleccionar algunas entradas primero!
|
||||
you need to set enable logging to "%1" to create/update a log. groupdav es-es Debe establecer habilitar el registro en "%1" para crear/actualizar un registro.
|
||||
you tried to automatically size a flex column, which always takes the rest of the space common es-es Intentó dimensionar automáticamente una columna flexible, que siempre ocupa el resto del espacio.
|
||||
you will not be able to send or receive encrypted mails before completing that step! common es-es ¡NO podrá enviar ni recibir correos cifrados antes de completar ese paso!
|
||||
you've tried to open the egroupware application: %1, but you have no permission to access this application. common es-es Ha intentado abrir la aplicación de EGroupware %1, pero no tiene permiso para acceder a esta aplicación.
|
||||
your browser is not up-to-date (javascript es6 compatible), you may experience some of the features not working. common es-es Su navegador no está actualizado (compatible con JavaScript ES6), es posible que algunas de las funciones no funcionen.
|
||||
your code is incorrect !!! common es-es ¡Código es incorrecto!
|
||||
your key has been restored successfully. common es-es Su clave ha sido restaurada con éxito.
|
||||
your message could <b>not</b> be sent!<br> common es-es Su mensaje <b>no</b> se pudo enviar<br>
|
||||
|
@ -14,7 +14,7 @@ $setup_info['api']['title'] = 'EGroupware API';
|
||||
$setup_info['api']['version'] = '19.1.003';
|
||||
$setup_info['api']['versions']['current_header'] = '1.29';
|
||||
// maintenance release in sync with changelog in doc/rpm-build/debian.changes
|
||||
$setup_info['api']['versions']['maintenance_release'] = '19.1.20191119';
|
||||
$setup_info['api']['versions']['maintenance_release'] = '19.1.20191220';
|
||||
$setup_info['api']['enable'] = 3;
|
||||
$setup_info['api']['app_order'] = 1;
|
||||
$setup_info['api']['license'] = 'GPL';
|
||||
|
@ -194,11 +194,11 @@ class Egw extends Egw\Base
|
||||
|
||||
if ($GLOBALS['egw_info']['flags']['currentapp'] != 'login' && $GLOBALS['egw_info']['flags']['currentapp'] != 'logout')
|
||||
{
|
||||
$this->define_egw_constants();
|
||||
|
||||
$this->verify_session();
|
||||
$this->applications->read_installed_apps(); // to get translated app-titles, has to be after verify_session
|
||||
|
||||
$this->define_egw_constants();
|
||||
|
||||
$this->check_app_rights();
|
||||
|
||||
$this->load_optional_classes();
|
||||
|
@ -1121,52 +1121,70 @@ abstract class Framework extends Framework\Extra
|
||||
*/
|
||||
function topmenu(array $vars,array $apps)
|
||||
{
|
||||
$this->_add_topmenu_info_item($this->_user_avatar_menu(), 'user_avatar');
|
||||
// array of topmenu info items (orders of the items matter)
|
||||
$topmenu_info_items = [
|
||||
'user_avatar' => $this->_user_avatar_menu(),
|
||||
'logout' => (Header\UserAgent::mobile() || $GLOBALS['egw_info']['user']['preferences']['common']['theme'] == 'fw_mobile') ? self::_logout_menu() : null,
|
||||
'update' => ($update = Framework\Updates::notification()) ? $update : null,
|
||||
'notifications' => ($GLOBALS['egw_info']['user']['apps']['notifications']) ? self::_get_notification_bell() : null,
|
||||
'quick_add' => $vars['quick_add'],
|
||||
'print_title' => $this->_print_menu()
|
||||
];
|
||||
|
||||
// array of topmenu items (orders of the items matter)
|
||||
$topmenu_items = [
|
||||
0 => (is_array(($current_user = $this->_current_users()))) ? $current_user : null,
|
||||
];
|
||||
|
||||
// Home should be at the top before preferences
|
||||
if($GLOBALS['egw_info']['user']['apps']['home'] && isset($apps['home']))
|
||||
{
|
||||
$this->_add_topmenu_item($apps['home']);
|
||||
}
|
||||
|
||||
// array of topmenu preferences items (orders of the items matter)
|
||||
$topmenu_preferences = ['prefs', 'acl', 'cats', 'security'];
|
||||
|
||||
// set topmenu preferences items
|
||||
if($GLOBALS['egw_info']['user']['apps']['preferences'])
|
||||
{
|
||||
$this->add_preferences_topmenu('prefs');
|
||||
$this->add_preferences_topmenu('acl');
|
||||
$this->add_preferences_topmenu('cats');
|
||||
$this->add_preferences_topmenu('security');
|
||||
foreach ($topmenu_preferences as $prefs)
|
||||
{
|
||||
$this->add_preferences_topmenu($prefs);
|
||||
}
|
||||
}
|
||||
|
||||
/* disable help until content is reworked
|
||||
if($GLOBALS['egw_info']['user']['apps']['manual'] && isset($apps['manual']))
|
||||
{
|
||||
$this->_add_topmenu_item(array_merge($apps['manual'],array('title' => lang('Help'))));
|
||||
}*/
|
||||
|
||||
// call topmenu info items hooks
|
||||
Hooks::process('topmenu_info',array(),true);
|
||||
|
||||
if (($update = Framework\Updates::notification()))
|
||||
{
|
||||
$this->_add_topmenu_info_item($update, 'update');
|
||||
}
|
||||
if($GLOBALS['egw_info']['user']['apps']['notifications'])
|
||||
{
|
||||
$this->_add_topmenu_info_item(self::_get_notification_bell(), 'notifications');
|
||||
}
|
||||
|
||||
if (is_array(($current_user = $this->_current_users()))) $this->_add_topmenu_item($current_user);
|
||||
$this->_add_topmenu_info_item($vars['quick_add'], 'quick_add');
|
||||
$this->_add_topmenu_info_item($this->_print_menu(), 'print_title');
|
||||
// Add extra items added by hooks
|
||||
foreach(self::$top_menu_extra as $extra_item) {
|
||||
if ($extra_item['name'] == 'search')
|
||||
{
|
||||
$this->_add_topmenu_info_item('<a href="'.$extra_item['url'].'" title="'.$extra_item['title'].'"></a>', 'search');
|
||||
$topmenu_info_items['search'] = '<a href="'.$extra_item['url'].'" title="'.$extra_item['title'].'"></a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_add_topmenu_item($extra_item);
|
||||
array_push($topmenu_items, $extra_item);
|
||||
}
|
||||
}
|
||||
$this->_add_topmenu_item($apps['logout']);
|
||||
// push logout as the last item in topmenu items list
|
||||
array_push($topmenu_items, $apps['logout']);
|
||||
|
||||
// set topmenu info items
|
||||
foreach ($topmenu_info_items as $id => $content)
|
||||
{
|
||||
if (!$content || (in_array($id, ['search', 'quick_add', 'update']) && (Header\UserAgent::mobile() || $GLOBALS['egw_info']['user']['preferences']['common']['theme'] == 'fw_mobile')))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
$this->_add_topmenu_info_item($content, $id);
|
||||
}
|
||||
// set topmenu items
|
||||
foreach ($topmenu_items as $item)
|
||||
{
|
||||
if ($item) $this->_add_topmenu_item($item);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -555,7 +555,9 @@ class Html
|
||||
$html2ret[] = substr($html,0,$pos);
|
||||
while ($pos!==false)
|
||||
{
|
||||
$endofpre = stripos($html,'</pre>',$pos);
|
||||
// avoid infinit loop in case the endof pre can't be found, just give the
|
||||
// end position to return the rest of content as return html
|
||||
$endofpre = (stripos($html,'</pre>',$pos) === false ? strlen($html) : stripos($html,'</pre>',$pos));
|
||||
$length = $endofpre-$pos+6;
|
||||
$html2ret[] = substr($html,$pos,$length);
|
||||
$searchFor = '<pre ';
|
||||
|
@ -282,12 +282,6 @@ class Session
|
||||
*/
|
||||
function __destruct()
|
||||
{
|
||||
// write dla update on destruct, allows to modify session action by calling Session::set_action()
|
||||
if (!isset($GLOBALS['egw_info']['flags']['no_dla_update']) || !$GLOBALS['egw_info']['flags']['no_dla_update'])
|
||||
{
|
||||
$this->update_dla(true);
|
||||
}
|
||||
|
||||
self::encrypt($this->kp3);
|
||||
}
|
||||
|
||||
@ -806,7 +800,7 @@ class Session
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new \Exception(implode(', $errors'), self::CD_SECOND_FACTOR_REQUIRED);
|
||||
throw new \Exception(implode(', ', $errors), self::CD_SECOND_FACTOR_REQUIRED);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1015,6 +1009,8 @@ class Session
|
||||
'session_action' => $this->update_dla(false), // dont update egw_access_log
|
||||
),false,__LINE__,__FILE__);
|
||||
|
||||
$_SESSION[self::EGW_SESSION_VAR]['session_logged_dla'] = $now;
|
||||
|
||||
$ret = $GLOBALS['egw']->db->get_last_insert_id(self::ACCESS_LOG_TABLE,'sessionid');
|
||||
|
||||
// if we can not store failed login attempts in database, store it in cache
|
||||
@ -1299,7 +1295,7 @@ class Session
|
||||
// allow xajax / notifications to not update the dla, so sessions can time out again
|
||||
if (!isset($GLOBALS['egw_info']['flags']['no_dla_update']) || !$GLOBALS['egw_info']['flags']['no_dla_update'])
|
||||
{
|
||||
$this->update_dla();
|
||||
$this->update_dla(true);
|
||||
}
|
||||
elseif ($GLOBALS['egw_info']['flags']['currentapp'] == 'notifications')
|
||||
{
|
||||
@ -1758,6 +1754,11 @@ class Session
|
||||
$this->action = $action;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ignore dla logging for a maximum of 900s = 15min
|
||||
*/
|
||||
const MAX_IGNORE_DLA_LOG = 900;
|
||||
|
||||
/**
|
||||
* Update session_action and session_dla (session last used time)
|
||||
*
|
||||
@ -1767,15 +1768,11 @@ class Session
|
||||
private function update_dla($update_access_log=false)
|
||||
{
|
||||
// This way XML-RPC users aren't always listed as xmlrpc.php
|
||||
if (!$update_access_log)
|
||||
if (isset($_GET['menuaction']))
|
||||
{
|
||||
if ($this->xmlrpc_method_called)
|
||||
{
|
||||
$action = $this->xmlrpc_method_called;
|
||||
}
|
||||
elseif (isset($_GET['menuaction']))
|
||||
{
|
||||
$action = $_GET['menuaction'];
|
||||
list(, $action) = explode('.ajax_exec.template.', $_GET['menuaction']);
|
||||
|
||||
if (empty($action)) $action = $_GET['menuaction'];
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1793,13 +1790,16 @@ class Session
|
||||
}
|
||||
}
|
||||
$this->set_action($action);
|
||||
}
|
||||
|
||||
// update dla in access-log table, if we have an access-log row (non-anonymous session)
|
||||
if ($this->sessionid_access_log && $update_access_log &&
|
||||
// ignore updates (session creation is written) of *dav, avatar and thumbnail, due to possible high volume of updates
|
||||
!preg_match('#^(/webdav|/groupdav|/api/avatar|/api/thumbnail)\.php#', $this->action) &&
|
||||
(!preg_match('#^(/webdav|/groupdav|/api/avatar|/api/thumbnail)\.php#', $this->action) ||
|
||||
(time() - $_SESSION[self::EGW_SESSION_VAR]['session_logged_dla']) > self::MAX_IGNORE_DLA_LOG) &&
|
||||
is_object($GLOBALS['egw']->db))
|
||||
{
|
||||
$_SESSION[self::EGW_SESSION_VAR]['session_logged_dla'] = time();
|
||||
|
||||
$GLOBALS['egw']->db->update(self::ACCESS_LOG_TABLE,array(
|
||||
'session_dla' => time(),
|
||||
'session_action' => $this->action,
|
||||
|
@ -486,12 +486,6 @@ class Storage extends Storage\Base
|
||||
*/
|
||||
protected function process_search(&$criteria, &$only_keys=True, &$order_by='', &$extra_cols='', &$wildcard='', &$op='AND', &$filter=null, &$join='')
|
||||
{
|
||||
// if no CFs are defined OR used and became unavailable (deleted or permissions changed)
|
||||
if (!$this->customfields && strpos($order_by, self::CF_PREFIX) === false &&
|
||||
strpos(implode(',', array_keys($filter ? $filter : [])), self::CF_PREFIX) === false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if ($only_keys === false)
|
||||
{
|
||||
$only_keys = $this->table_name.'.*';
|
||||
@ -588,6 +582,15 @@ class Storage extends Storage\Base
|
||||
{
|
||||
$col = $this->table_name .'.'.array_search($col, $this->db_cols).' AS '.$col;
|
||||
}
|
||||
// Check to make sure our order by doesn't have aliases that won't work
|
||||
else if (stripos($col, 'AS') !== false && $order_by)
|
||||
{
|
||||
list($value, $alias) = explode(' AS ', $col);
|
||||
if(stripos($order_by, $alias) !== FALSE)
|
||||
{
|
||||
$order_by = str_replace($alias, $value, $order_by);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// check if we order by a custom field --> join cf table for given cf and order by it's value
|
||||
|
188
api/src/Storage/RowsIterator.php
Normal file
@ -0,0 +1,188 @@
|
||||
<?php
|
||||
/**
|
||||
* EGroupware generalized SQL Storage Object: Iterator for get_rows
|
||||
*
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @package api
|
||||
* @subpackage storage
|
||||
* @link http://www.egroupware.org
|
||||
* @author Ralf Becker <rb@egroupware.org>
|
||||
* @copyright 2020 by Ralf Becker <rb@egroupware.org>
|
||||
*/
|
||||
|
||||
namespace EGroupware\Api\Storage;
|
||||
use EGroupware\Api;
|
||||
|
||||
/**
|
||||
* Iterator using a get_rows method and querying it in chunks instead of all rows as once
|
||||
*
|
||||
* You should use a consisten sorting eg. by id, in case rows change while the iterator is instanciated!
|
||||
*
|
||||
* Instead of ($query['num_rows']=-1, $query['start']=0):
|
||||
*
|
||||
* $storage->get_rows($query, $rows, $readonlys);
|
||||
*
|
||||
* Use:
|
||||
*
|
||||
* $rows = new RowsIterator($storage, $query);
|
||||
*/
|
||||
class RowsIterator implements \Iterator
|
||||
{
|
||||
/**
|
||||
* Reference of Storage\Base class or other object with a get_rows method
|
||||
*
|
||||
* @var Base
|
||||
*/
|
||||
protected $storage;
|
||||
|
||||
/**
|
||||
* query parameter for get_rows
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $query;
|
||||
|
||||
/**
|
||||
* name of (unique) key in row or null to use $this->start + key returned by get_rows
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $key;
|
||||
|
||||
/**
|
||||
* current chunk
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $rows;
|
||||
|
||||
/**
|
||||
* Start value for callback
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
protected $start=0;
|
||||
|
||||
/**
|
||||
* Number of rows queried from get_rows in one call
|
||||
*/
|
||||
const CHUNK_SIZE = 500;
|
||||
|
||||
/**
|
||||
* Log calls via error_log()
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
public $debug = false;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param Base $storage only requirement is class to have a get_rows method
|
||||
* @param array $query query parameter for get_rows
|
||||
* @param string $key =null name of (unique) key in row, default use $this->start + key from get_rows
|
||||
*/
|
||||
public function __construct($storage, array $query, $key=null)
|
||||
{
|
||||
if (!is_object($storage) || !method_exists($storage, 'get_rows'))
|
||||
{
|
||||
throw new Api\Exception\WrongParameter("\$storage parameter needs to be object with a get_rows method!");
|
||||
}
|
||||
$this->storage = $storage;
|
||||
$this->query = $query;
|
||||
$this->key = $key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the current element
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function current()
|
||||
{
|
||||
if ($this->debug) error_log(__METHOD__."() returning ".array2string(current($this->rows)));
|
||||
return current($this->rows);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the key of the current element
|
||||
*
|
||||
* @return int|string
|
||||
*/
|
||||
public function key()
|
||||
{
|
||||
$current = current($this->rows);
|
||||
|
||||
$key = !empty($this->key) ? $current[$this->key] : $this->start + key($this->rows);
|
||||
if ($this->debug) error_log(__METHOD__."() returning ".array2string($key));
|
||||
return $key;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move forward to next element (called after each foreach loop)
|
||||
*/
|
||||
public function next()
|
||||
{
|
||||
if (next($this->rows) !== false)
|
||||
{
|
||||
if ($this->debug) error_log(__METHOD__."() returning TRUE");
|
||||
return true;
|
||||
}
|
||||
// check if previous query gave less then CHUNK_SIZE entries --> we're done
|
||||
if ($this->start && count($this->rows) < self::CHUNK_SIZE)
|
||||
{
|
||||
if ($this->debug) error_log(__METHOD__."() returning FALSE (no more entries)");
|
||||
return false;
|
||||
}
|
||||
// try query further rows via get_rows method and store result in $this->rows
|
||||
$readonlys = null;
|
||||
$this->query['start'] = $this->start;
|
||||
$this->query['num_rows'] = self::CHUNK_SIZE;
|
||||
$this->storage->get_rows($this->query, $this->rows, $readonlys);
|
||||
|
||||
// remove non-rows returned (sel_options and the like, or leading false old eTemplate required)
|
||||
foreach($this->rows as $key => $row)
|
||||
{
|
||||
if (!is_int($key) || !is_array($row))
|
||||
{
|
||||
unset($this->rows[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_array($this->rows) || !($entries = count($this->rows)))
|
||||
{
|
||||
if ($this->debug) error_log(__METHOD__."() returning FALSE (no more entries)");
|
||||
return false; // no further entries
|
||||
}
|
||||
$this->start += self::CHUNK_SIZE;
|
||||
reset($this->rows);
|
||||
|
||||
if ($this->debug) error_log(__METHOD__."() this->start=$this->start, entries=$entries, count(this->files)=".count($this->rows)." returning ".array2string(current($this->rows) !== false));
|
||||
|
||||
return current($this->rows) !== false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rewind the Iterator to the first element (called at beginning of foreach loop)
|
||||
*/
|
||||
public function rewind()
|
||||
{
|
||||
if ($this->debug) error_log(__METHOD__."()");
|
||||
|
||||
$this->start = 0;
|
||||
$this->rows = [];
|
||||
if (!$this->rows) $this->next(); // otherwise valid will return false and nothing get returned
|
||||
reset($this->rows);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if current position is valid
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function valid ()
|
||||
{
|
||||
if ($this->debug) error_log(__METHOD__."() returning ".array2string(current($this->rows) !== false));
|
||||
return current($this->rows) !== false;
|
||||
}
|
||||
}
|
@ -2838,8 +2838,8 @@ td.avatar {
|
||||
border: 1px solid silver;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
background-image: url(images/photo.png);
|
||||
background-size: 35px 35px;
|
||||
background-repeat: no-repeat;
|
||||
@ -2849,7 +2849,7 @@ td.avatar {
|
||||
}
|
||||
.avatar img{
|
||||
padding-top:0 !important;
|
||||
width:50px;
|
||||
width:40px;
|
||||
border:none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
BIN
api/templates/default/images/logo_192x192.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
api/templates/default/images/logo_512x512.png
Normal file
After Width: | Height: | Size: 51 KiB |
@ -803,7 +803,7 @@ class calendar_boupdate extends calendar_bo
|
||||
* @param array $to_notify numerical user-ids as keys (!) (value is not used)
|
||||
* @param array $old_event Event before the change
|
||||
* @param array $new_event =null Event after the change
|
||||
* @param int $user =0 User who started the notify, default current user
|
||||
* @param int/string $user =0 User/participant who started the notify, default current user
|
||||
* @return bool true/false
|
||||
*/
|
||||
function send_update($msg_type,$to_notify,$old_event,$new_event=null,$user=0)
|
||||
@ -841,8 +841,23 @@ class calendar_boupdate extends calendar_bo
|
||||
$lang = $GLOBALS['egw_info']['user']['preferences']['common']['lang'];
|
||||
if ($GLOBALS['egw']->preferences->account_id != $user)
|
||||
{
|
||||
$GLOBALS['egw']->preferences->__construct($user);
|
||||
// Get correct preferences
|
||||
$GLOBALS['egw']->preferences->__construct(is_numeric($user) ? $user : $temp_user['account_id']);
|
||||
$GLOBALS['egw_info']['user']['preferences'] = $GLOBALS['egw']->preferences->read_repository();
|
||||
|
||||
// If target user/participant is not an account, try to get good notification message
|
||||
if(!is_numeric($user))
|
||||
{
|
||||
$res_info = $this->resource_info($user);
|
||||
$title = $res_info['name'] ?: Link::title($res_info['app'], $res_info['res_id']) ?: $res_info['res_id'] ?: $user;
|
||||
$GLOBALS['egw']->preferences->values['fullname'] = $GLOBALS['egw']->preferences->values['lastname'] = $title;
|
||||
$GLOBALS['egw']->preferences->values['firstname'] = '';
|
||||
$msg = $GLOBALS['egw']->preferences->user['calendar']['notifyResponse'] ?: $GLOBALS['egw']->preferences->default['calendar']['notifyResponse'] ?: $GLOBALS['egw']->preferences->forced['calendar']['notifyResponse'];
|
||||
$GLOBALS['egw_info']['user']['preferences']['calendar']['notifyResponse'] = $GLOBALS['egw']->preferences->parse_notify(
|
||||
$msg
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
$senderid = $this->user;
|
||||
$event = $msg_type == MSG_ADDED || $msg_type == MSG_MODIFIED ? $new_event : $old_event;
|
||||
@ -1660,7 +1675,7 @@ class calendar_boupdate extends calendar_bo
|
||||
{
|
||||
if (!is_array($event)) $event = $this->read($cal_id);
|
||||
if (isset($recur_date)) $event = $this->read($event['id'],$recur_date); //re-read the actually edited recurring event
|
||||
$user_id = is_numeric($uid) ? (int)$uid : 0;
|
||||
$user_id = is_numeric($uid) ? (int)$uid : $uid;
|
||||
$this->send_update($status2msg[$status],$event['participants'],$event, null, $user_id);
|
||||
}
|
||||
|
||||
|
@ -688,7 +688,9 @@ class calendar_groupdav extends Api\CalDAV\Handler
|
||||
if (isset($expand['start'])) $expand['start'] = $this->vCalendar->_parseDateTime($expand['start']);
|
||||
if (isset($expand['end'])) $expand['end'] = $this->vCalendar->_parseDateTime($expand['end']);
|
||||
}
|
||||
$events =& self::get_series($event['uid'], $this->bo, $expand, $user);
|
||||
// pass in original event as master, as it has correct start-date even if first recurrence is an exception
|
||||
$events =& self::get_series($event['uid'], $this->bo, $expand, $user, $event);
|
||||
|
||||
// as alarm is now only on next recurrence, set alarm from original event on master
|
||||
if ($event['alarm']) $events[0]['alarm'] = $event['alarm'];
|
||||
}
|
||||
@ -708,9 +710,10 @@ class calendar_groupdav extends Api\CalDAV\Handler
|
||||
* @param calendar_bo $bo =null calendar_bo object to reuse for search call
|
||||
* @param boolean|array $expand =false true or array with values for 'start', 'end' to expand recurrences
|
||||
* @param int $user =null account_id of calendar to display, to remove master, if current user does not participate in
|
||||
* @param array $master =null use provided event as master to fix wrong start-date if first recurrence is an exception
|
||||
* @return array
|
||||
*/
|
||||
private static function &get_series($uid,calendar_bo $bo=null, $expand=false, $user=null)
|
||||
private static function &get_series($uid,calendar_bo $bo=null, $expand=false, $user=null, $master=null)
|
||||
{
|
||||
if (is_null($bo)) $bo = new calendar_bopdate();
|
||||
|
||||
@ -729,13 +732,12 @@ class calendar_groupdav extends Api\CalDAV\Handler
|
||||
}
|
||||
|
||||
// find master, which is not always first event, eg. when first event is an exception
|
||||
$master = null;
|
||||
$exceptions = array();
|
||||
foreach($events as $k => &$recurrence)
|
||||
{
|
||||
if ($recurrence['recur_type'])
|
||||
{
|
||||
$master = $recurrence;
|
||||
if (!isset($master)) $master = $recurrence;
|
||||
$exceptions =& $master['recur_exception'];
|
||||
unset($events[$k]);
|
||||
break;
|
||||
@ -747,7 +749,7 @@ class calendar_groupdav extends Api\CalDAV\Handler
|
||||
foreach($events as $k => &$recurrence)
|
||||
{
|
||||
//error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."($uid)[$k]:" . array2string($recurrence));
|
||||
if ($master && $recurrence['reference'] != $master['id'])
|
||||
if ($master && $recurrence['reference'] && $recurrence['reference'] != $master['id'])
|
||||
{
|
||||
unset($events[$k]);
|
||||
continue; // same uid, but references a different event or is own master
|
||||
|
@ -672,9 +672,10 @@ class calendar_ical extends calendar_boupdate
|
||||
{
|
||||
foreach ($event['recur_exception'] as $key => $timestamp)
|
||||
{
|
||||
// current Horde_Icalendar 2.1.4 exports EXDATE always in UTC, so we should not set a timezone here
|
||||
// current Horde_Icalendar 2.1.4 exports EXDATE always postfixed with a Z :(
|
||||
// so if we set a timezone here, we have to remove the Z, see the hack at the end of this method
|
||||
// Apple calendar on OS X 10.11.4 uses a timezone, so does Horde eg. for Recurrence-ID
|
||||
$event['recur_exception'][$key] = self::getDateTime($timestamp,$tzid);//,$parameters['EXDATE']);
|
||||
$event['recur_exception'][$key] = self::getDateTime($timestamp, $tzid, $parameters['EXDATE']);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1073,7 +1074,13 @@ class calendar_ical extends calendar_boupdate
|
||||
error_log(__FILE__.'['.__LINE__.'] '.__METHOD__ .
|
||||
"()\n".array2string($retval)."\n",3,$this->logfile);
|
||||
}
|
||||
return $retval;
|
||||
|
||||
// hack to fix iCalendar exporting EXDATE always postfixed with a Z
|
||||
// EXDATE can have multiple values and therefore be folded into multiple lines
|
||||
return preg_replace_callback("/\nEXDATE;TZID=[^:]+:[0-9TZ \n,]+/", function($matches)
|
||||
{
|
||||
return preg_replace('/([0-9 ])Z/', '$1', $matches[0]);
|
||||
}, $retval);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -26,6 +26,7 @@ action that caused the notify: added, canceled, accepted, rejected, ... calendar
|
||||
actions calendar es-es Acciones
|
||||
actions... calendar es-es Acciones...
|
||||
add alarm calendar es-es Añadir alarma
|
||||
add appointments via shortened dialog or complete edit window calendar es-es Añada citas por medio de un diálogo reducido o complete la ventana de edición
|
||||
add current view as favorite calendar es-es Añadir vista actual como favorita
|
||||
add new alarm calendar es-es Añadir nueva alarma
|
||||
add new participants or resource calendar es-es Añadir nuevos participantes o recursos
|
||||
@ -54,12 +55,15 @@ allow booking requests from any user when creating events? calendar es-es ¿Perm
|
||||
allow users to prevent change notifications ('do not notify') calendar es-es Permitir a los usuarios evitar notificaciones de cambios "No notificar"
|
||||
allows to edit the event again calendar es-es Permite volver a editar el evento
|
||||
always calendar es-es Siempre
|
||||
always use full edit dialog calendar es-es Utilice siempre el cuadro de diálogo de edición completa
|
||||
always use the full edit dialog, not this little dialog calendar es-es Utilice siempre el cuadro de diálogo de edición completo, no este pequeño cuadro de diálogo
|
||||
apply the action on the whole query, not only the shown events calendar es-es Aplicar la acción en toda la consulta, NO sólo en los eventos mostrados
|
||||
apply the changes calendar es-es Aplicar los cambios
|
||||
appointment settings calendar es-es Ajustes de Citas
|
||||
as an alternative you can %1download a mysql dump%2 and import it manually into egw_cal_timezones table. calendar es-es Como alternativa, puede %1descargar un volcado de MySQL%2 e importarlo manualmente en la tabla egw_cal_timezones.
|
||||
at start of the event calendar es-es al inicio del evento
|
||||
automatically purge old events after admin es-es Purgar automáticamente eventos antiguos después de
|
||||
available for the first entry inside each day of week or daily table inside the selected range: calendar es-es Disponible para la primera entrada dentro de cada día de la semana o tabla diaria dentro del rango seleccionado:
|
||||
back half a month calendar es-es Medio mes hacia atrás
|
||||
back one month calendar es-es Un mes hacia atrás
|
||||
back one year calendar es-es Un año atrás
|
||||
@ -93,12 +97,14 @@ canceled calendar es-es Cancelado
|
||||
category %1 removed because of missing rights calendar es-es Se ha eliminado la categoría %1 por falta de permisos
|
||||
category acl common es-es ACL de la categoría
|
||||
category acl only restrict adding a category to an event or changing status of a participant. it does not change the visibility of an event! calendar es-es La ACL de la categoría sólo restringe añadir una categoría a un evento o cambiar el estado de un participante. ¡Esto NO cambia la visibilidad de un evento!
|
||||
category automatically added to new events calendar es-es Categoría agregada automáticamente a nuevos eventos
|
||||
chair calendar es-es Silla
|
||||
change history calendar es-es Cambiar historial
|
||||
change your status calendar es-es Cambiar su estado
|
||||
charset of file calendar es-es Juego de caracteres del fichero
|
||||
check all calendar es-es Marcar todo
|
||||
choose a category calendar es-es Elija una categoría
|
||||
choose owner of imported data calendar es-es Elegir propietario de datos importados
|
||||
close the window calendar es-es Cerrar la ventana
|
||||
compose a mail to all participants after the event is saved calendar es-es redactar un correo para todos los participantes después de guardar el evento
|
||||
configuration settings calendar es-es Ajustes de configuración
|
||||
@ -128,6 +134,7 @@ custom_2 common es-es disponibilidad
|
||||
daily calendar es-es Diario
|
||||
daily tables calendar es-es Tablas diarias
|
||||
data exchange settings calendar es-es Opciones para intercambio de datos
|
||||
date for the day of the week calendar es-es Fecha para el día de la semana.
|
||||
date for the day of the week, available for the first entry inside each day of week or daily table inside the selected range. calendar es-es Fecha para el día de la semana, disponible para la primera entrada dentro de cada día de la semana o tabla diaria dentro del rango seleccionado.
|
||||
day calendar es-es Día
|
||||
day of week tables calendar es-es Tablas de día de la semana
|
||||
@ -168,6 +175,7 @@ do not include events of group members calendar es-es No incluir los eventos de
|
||||
do you really want to change the start of this series? if you do, the original series will be terminated as of %1 and a new series for the future reflecting your changes will be created. calendar es-es ¿Realmente desea cambiar el principio de la serie? Si lo hace, la serie original terminará %1 y se creará otra serie nueva para el futuro reflejando los cambios.
|
||||
do you want a weekview with or without weekend? calendar es-es ¿Desea una vista de la semana con o sin fin de semana?
|
||||
do you want non-egroupware participants of events you created to be automatically notified about new or changed appointments? calendar es-es ¿Desea que los participantes que no son de EGroupware de los eventos que creó sean notificados automáticamente sobre citas nuevas o modificadas?
|
||||
do you want responses from events you created, but are not participating in? calendar es-es ¿Desea respuestas de los eventos que creó, pero no participa?
|
||||
do you want to be notified about changes of appointments you modified? calendar es-es ¿Desea recibir notificaciones de los cambios en las citas que ha modificado?
|
||||
do you want to be notified about new or changed appointments? you are not notified about changes you made yourself.<br>you can limit the notifications to certain changes only. each item includes all notifications listed above. all modifications include changes of title, description, participants, but no participant responses. if the owner of an event requested any notifcations, he will always get participant responses like acceptions or rejections too. calendar es-es ¿Desea que se le notifiquen citas nuevas o modificadas? Se le notificará de los cambios que haga usted mismo.<br>Puede limitar las notificaciones para sólo ciertos cambios. Cada elemento incluye toda la notificación listada encima. Todas las modificaciones incluyen cambios de título, participantes, pero no las respuestas de los participantes. Si el dueño de un evento solicitó alguna notificación, siempre obtendrá las respuestas de aceptación o rechazo del participante.
|
||||
do you want to be notified about new or changed appointments? you be notified about changes you make yourself.<br>you can limit the notifications to certain changes only. each item includes all the notification listed above it. all modifications include changes of title, description, participants, but no participant responses. if the owner of an event requested any notifcations, he will always get the participant responses like acceptions and rejections too. calendar es-es ¿Desea recibir notificaciones sobre las citas nuevas o modificadas? Recibirá notificaciones cuando usted mismo haga cambios.<br>Puede limitar las modificaciones sólo a ciertos cambios. Cada elemento incluye todas las notificaciones de la lista que tenga encima de ella. Todas las modificaciones incluyen los cambios de título, descripción, participantes, pero no las respuestas de los participantes. Si el propietario de un evento solicitó alguna notificación, siempre recibirá las respuestas del participante, como aceptacines y también rechazos.
|
||||
@ -207,6 +215,7 @@ error: you can't shift a series from the past! calendar es-es Error: No se puede
|
||||
event common es-es Evento
|
||||
event deleted calendar es-es Evento borrado
|
||||
event details follow calendar es-es A continuación, los detalles del evento
|
||||
event has been deleted by organizer! calendar es-es ¡El evento ha sido eliminado por el organizador!
|
||||
event saved calendar es-es Evento guardado
|
||||
event will occupy the whole day calendar es-es El evento ocupará todo el día
|
||||
events common es-es eventos
|
||||
@ -249,6 +258,7 @@ freetime calendar es-es Tiempo libre
|
||||
freetime search calendar es-es Buscar en el tiempo libre
|
||||
fri calendar es-es Vie
|
||||
full description calendar es-es Descripción completa
|
||||
full edit dialog calendar es-es Diálogo de edición completa
|
||||
fullname of person to notify calendar es-es Nombre completo de la persona a la que notificar
|
||||
general fields: calendar es-es Campos generales:
|
||||
general settings calendar es-es Opciones generales
|
||||
@ -310,7 +320,7 @@ interval calendar es-es Intervalo
|
||||
invalid email-address "%1" for user %2 calendar es-es La dirección de correo "%1" no es válida para el usuario %2
|
||||
invalid owner id: %1. might be a bad field translation. used %2 instead. calendar es-es El ID del propietario no es válido: %1. Puede ser una mala traducción del campo. Se ha usado %2 en su lugar.
|
||||
invitations calendar es-es Invitaciones
|
||||
invite calendar es-es invitar
|
||||
invite common es-es invitar
|
||||
it can not read timezones from sqlite database %1! calendar es-es ¡NO puede leer las zonas horarias de la base de datos sqlite %1!
|
||||
just me calendar es-es Solo yo
|
||||
keep exceptions calendar es-es Mantener excepciones
|
||||
@ -357,9 +367,11 @@ monthly (by day) calendar es-es Mensual (por día)
|
||||
monthview calendar es-es Vista mensual
|
||||
multiple week view calendar es-es Vista de múltiples semanas
|
||||
name of current user, all other contact fields are valid too calendar es-es Nombre del usuario actual. Todos los demás campos del contacto también son válidos.
|
||||
name of the day of the week (ex: monday) calendar es-es Nombre del día de la semana (e.g. lunes)
|
||||
name of the week (ex: monday), available for the first entry inside each day of week or daily table inside the selected range. calendar es-es Nombre de la semana, por ejemplo: lunes, disponible para la primera entrada dentro de cada día de la semana o tabla diaria dentro del rango seleccionado.
|
||||
needs action calendar es-es Necesita acción
|
||||
new calendar es-es Nueva
|
||||
new event category calendar es-es Nueva categoría de evento
|
||||
new event participants calendar es-es Nuevos participantes del evento
|
||||
new search with the above parameters calendar es-es nueva búsqueda con los parámetros de arriba
|
||||
no automatic purging admin es-es Sin purgado automático
|
||||
@ -402,14 +414,19 @@ one month calendar es-es Un mes
|
||||
one week calendar es-es Una semana
|
||||
one year calendar es-es Un año
|
||||
only group-events calendar es-es Sólo eventos grupales
|
||||
only recurrences until %1 (excluding) have been checked! calendar es-es ¡Solo las repeticiones hasta que %1 (excluyendo) hayan sido verificadas!
|
||||
only supported by a few fully conformant clients (eg. from apple). if you have to enter a url, it will most likly not be suppored! calendar es-es Solo es compatible con unos pocos clientes totalmente conformes (por ejemplo, de Apple). Si tiene que ingresar una URL, lo más probable es que no sea compatible.
|
||||
only the initial date of that recurring event is checked! calendar es-es ¡Sólo está marcada la fecha inicial del evento recurrente!
|
||||
only used for first viewing of calendar, afterwards last selected view is used. calendar es-es Solo se usa para la primera vista del calendario, luego se usa la última vista seleccionada.
|
||||
open todo's: calendar es-es Abrir tareas pendientes
|
||||
optional calendar es-es Opcional
|
||||
organizer calendar es-es Organizador
|
||||
overlap holiday calendar es-es solapar festivo
|
||||
owner too calendar es-es El propietario también
|
||||
participant names by type calendar es-es Nombres de participantes por tipo
|
||||
participant table calendar es-es Tabla de participantes
|
||||
participants calendar es-es Participantes
|
||||
participants automatically added to new events calendar es-es Los participantes se añaden automáticamente a nuevos eventos
|
||||
participants uninvited from an event calendar es-es Participantes que dejan de ser invitados de un evento
|
||||
participants, resources, ... calendar es-es Participantes, recursos
|
||||
password for not loged in users to your freebusy information? calendar es-es ¿Contraseña para los usuarios sin sesión para la información de disponibilidad?
|
||||
@ -417,6 +434,8 @@ people holiday calendar es-es Festivo para la gente
|
||||
permission denied calendar es-es Permiso denegado
|
||||
planner by category calendar es-es Planificador por categorías
|
||||
planner by user calendar es-es Planificador por usuario
|
||||
please first select participants on the left and then use plus button to add them calendar es-es Primero seleccione los participantes a la izquierda y luego use el botón más para agregarlos
|
||||
please note: conflict check is never done in the past and always limited by above recurrence horizont. calendar es-es Tenga en cuenta: la verificación de conflictos nunca se realiza en el pasado y siempre está limitada por el horizonte de repetición anterior.
|
||||
please note: you can configure the field assignments after you uploaded the file. calendar es-es Por favor, tenga en cuenta: puede configurar el campo asignaciones DESPUES de subir el fichero.
|
||||
preselected group for entering the planner calendar es-es Grupo preseleccionado para entrar en el planificador
|
||||
prevent deleting of entries admin es-es Prevenir el borrado de entradas
|
||||
@ -425,6 +444,8 @@ private and global public calendar es-es Privado y público global
|
||||
private and group public calendar es-es Privado y público global
|
||||
private only calendar es-es Privado solamente
|
||||
quantity calendar es-es Cantidad
|
||||
quick add calendar es-es Añadir rápido
|
||||
range fields calendar es-es Campos de rango
|
||||
re-edit event calendar es-es Volver a editar evento
|
||||
receive email updates calendar es-es Recibir actualizaciones de correo
|
||||
receive notifications about events you created/modified/deleted calendar es-es Recibir notificaciones de eventos que usted haya creado, modificado o borrado
|
||||
@ -433,7 +454,9 @@ recover calendar es-es Recuperar
|
||||
recovered calendar es-es Recuperado.
|
||||
recurrence calendar es-es Repeticiones
|
||||
recurrence enddate calendar es-es Fecha de finalización de las repeticiones
|
||||
recurrences and conflict check calendar es-es Verificación de repeticiones y de conflictos
|
||||
recurring event calendar es-es evento recurrente
|
||||
regular edit calendar es-es Edición regular
|
||||
reject calendar es-es Rechazar
|
||||
rejected calendar es-es Rechazado
|
||||
repeat days calendar es-es Días de repetición
|
||||
@ -443,8 +466,11 @@ repeating event information calendar es-es Información repetitiva de eventos
|
||||
repeating interval, eg. 2 to repeat every second week calendar es-es intervalo de repetición, p. ej., 2 para repetir cada segunda semana
|
||||
repetition calendar es-es Repetición
|
||||
repetitiondetails (or empty) calendar es-es Detalles de la repetición (o vacío)
|
||||
replacements for inserting events into documents calendar es-es Reemplazos para insertar eventos en documentos
|
||||
reply to meeting request calendar es-es Responder a solicitud de reunión
|
||||
requested calendar es-es Requerido
|
||||
requested date %1 outside allowed range of %2 days: recurring events obmitted! calendar es-es Fecha solicitada %1 fuera del rango permitido de %2 días: ¡eventos recurrentes omitidos!
|
||||
requested meeting is in the past! calendar es-es ¡La reunión solicitada está en el pasado!
|
||||
require an acl grant to invite other users and groups admin es-es Requerir el permiso de una ACL para invitar a otros grupos
|
||||
reset calendar es-es Restablecer
|
||||
reset participant stati on event shifts calendar es-es Restablecer el estado del participante en cambios de evento
|
||||
|
@ -1,18 +1,23 @@
|
||||
################################################################################
|
||||
##
|
||||
## EGroupware FPM container using Ubuntu 18.04 and PHP 7.3 from ondrej/php PPA
|
||||
## EGroupware FPM container using Ubuntu 18.04 and PHP from ondrej/php PPA
|
||||
##
|
||||
################################################################################
|
||||
FROM ubuntu:18.04
|
||||
MAINTAINER rb@egroupware.org
|
||||
|
||||
ARG VERSION=dev-master
|
||||
ARG PHP_VERSION=7.3
|
||||
|
||||
# keeping build-arg in environment for entrypoint.sh
|
||||
ENV VERSION=$VERSION
|
||||
ENV PHP_VERSION=$PHP_VERSION
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y software-properties-common \
|
||||
&& LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php \
|
||||
&& apt-get update \
|
||||
&& bash -c "apt-get install -y php7.3-{cli,mysql,json,gd,xsl,bz2,opcache,apcu,tidy,zip,bcmath,mbstring,smbclient,ldap,curl,fpm,pgsql,gmp}" \
|
||||
&& bash -c "apt-get install -y php$PHP_VERSION-{cli,mysql,json,gd,xsl,bz2,opcache,apcu,tidy,zip,bcmath,mbstring,smbclient,ldap,curl,fpm,pgsql,gmp}" \
|
||||
# fpm and php.ini settings
|
||||
&& sed -e 's/^;\?listen \?=.*/listen = 9000/g' \
|
||||
-e '/allowed_clients/d' \
|
||||
@ -22,7 +27,7 @@ RUN apt-get update \
|
||||
-e 's/^;\?pm.max_requests =.*/pm.max_requests = 30/' \
|
||||
-e 's/^;\?php_admin_value\[memory_limit\].*/php_admin_value[memory_limit] = 172M/' \
|
||||
-e 's/^;\?request_terminate_timeout.*/request_terminate_timeout = 70m/' \
|
||||
-i /etc/php/7.3/fpm/pool.d/www.conf \
|
||||
-i /etc/php/$PHP_VERSION/fpm/pool.d/www.conf \
|
||||
&& sed -e 's/^;\?session.gc_maxlifetime.*/session.gc_maxlifetime = 14400/g' \
|
||||
-e 's|^;\?date.timezone.*|date.timezone = UTC|g' \
|
||||
-e 's|^;\?sys_temp_dir.*|sys_temp_dir = /tmp|g' \
|
||||
@ -33,14 +38,14 @@ RUN apt-get update \
|
||||
-e 's|^;\?max_input_vars \?=.*|max_input_vars = 2000|g' \
|
||||
-e 's|^;\?zlib.output_compression \?=.*|zlib.output_compression = On|g' \
|
||||
-e 's|^;\?opcache.validate_timestamps \?=.*|opcache.validate_timestamps=0|g' \
|
||||
-i /etc/php/7.3/fpm/php.ini \
|
||||
-i /etc/php/$PHP_VERSION/fpm/php.ini \
|
||||
&& sed -e 's|^;\?date.timezone.*|date.timezone = UTC|g' \
|
||||
-e 's|^;\?sys_temp_dir.*|sys_temp_dir = /tmp|g' \
|
||||
-i /etc/php/7.3/cli/php.ini \
|
||||
-i /etc/php/$PHP_VERSION/cli/php.ini \
|
||||
# create directory for pid file
|
||||
&& mkdir -p /run/php \
|
||||
# send logs to stderr to be viewed by docker logs
|
||||
&& ln -s /dev/stderr /var/log/php7.3-fpm.log \
|
||||
&& ln -s /dev/stderr /var/log/php$PHP_VERSION-fpm.log \
|
||||
# install tools to build EGroupware
|
||||
&& apt-get install -y rsync npm zip curl sudo cron patch \
|
||||
&& npm install -g grunt-cli \
|
||||
@ -62,21 +67,23 @@ exit $RESULT' \
|
||||
&& echo "TLS_REQCERT never" >> /etc/ldap/ldap.conf
|
||||
|
||||
# install diverse developper tools, not installed above / in stock container
|
||||
RUN apt-get install -y php7.3-xdebug git vim yarn \
|
||||
&& echo "xdebug.remote_enable=1" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini \
|
||||
&& echo "xdebug.remote_port=9001" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini \
|
||||
&& echo "xdebug.remote_host=172.17.0.1" >> /etc/php/7.3/fpm/conf.d/20-xdebug.ini \
|
||||
RUN apt-get install -y php$PHP_VERSION-cli php-xdebug inetutils-ping iproute2 git vim yarn \
|
||||
&& echo "xdebug.remote_enable=1" >> /etc/php/$PHP_VERSION/fpm/conf.d/20-xdebug.ini \
|
||||
&& echo "xdebug.remote_port=9001" >> /etc/php/$PHP_VERSION/fpm/conf.d/20-xdebug.ini \
|
||||
&& echo "xdebug.remote_host=172.17.0.1" >> /etc/php/$PHP_VERSION/fpm/conf.d/20-xdebug.ini \
|
||||
&& ln -s /usr/local/bin/composer.phar /usr/local/bin/composer \
|
||||
&& sed -e 's|^;\?opcache.validate_timestamps \?=.*|opcache.validate_timestamps=1|g' \
|
||||
-i /etc/php/7.3/fpm/php.ini \
|
||||
&& apt-get clean
|
||||
-i /etc/php/$PHP_VERSION/fpm/php.ini \
|
||||
&& apt-get clean \
|
||||
&& update-alternatives --install /usr/sbin/php-fpm php-fpm /usr/sbin/php-fpm$PHP_VERSION 5
|
||||
|
||||
VOLUME /var/www
|
||||
VOLUME /var/lib/egroupware
|
||||
VOLUME /var/lib/php/sessions
|
||||
|
||||
EXPOSE 9000
|
||||
|
||||
ADD entrypoint.sh /
|
||||
|
||||
CMD ["php-fpm7.3", "--nodaemonize"]
|
||||
CMD ["php-fpm", "--nodaemonize"]
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
|
@ -1,23 +1,47 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
REPO=egroupware
|
||||
IMAGE=development
|
||||
BASE=ubuntu:18.04
|
||||
RECOMMENDED_PHP_VERSION=7.3
|
||||
|
||||
PHP_VERSION=${1:-7.3}
|
||||
|
||||
TAG=$(docker run --rm -i --entrypoint bash $REPO/$IMAGE -c "apt update && apt search php$PHP_VERSION-fpm" 2>/dev/null|grep php$PHP_VERSION-fpm|sed "s|^php$PHP_VERSION-fpm/bionic.*\(7\.[0-9]*\.[0-9]*\).*|\1|g")
|
||||
test -z "$TAG" && {
|
||||
echo "Can't get new tag of $REPO/$IMAGE container --> existing"
|
||||
exit 1
|
||||
}
|
||||
|
||||
DEFAULT=$(git branch|grep ^*|cut -c3-)
|
||||
TAG=${1:-$DEFAULT}
|
||||
VERSION=$TAG
|
||||
VERSION=${2:-$DEFAULT}
|
||||
BRANCH=$(echo $VERSION|sed 's/\.[0-9]\{8\}$//')
|
||||
[ $VERSION = $BRANCH ] && VERSION="$BRANCH.x-dev"
|
||||
|
||||
[ $BRANCH != "master" ] && {
|
||||
TAG=$BRANCH-$TAG
|
||||
}
|
||||
[ $BRANCH = "master" ] && {
|
||||
TAG=master
|
||||
VERSION=dev-master
|
||||
}
|
||||
echo -e "\nbuilding $REPO/$IMAGE:$TAG\n"
|
||||
|
||||
cd $(dirname $0)
|
||||
|
||||
docker pull ubuntu:18.04
|
||||
docker build --build-arg "VERSION=$VERSION" -t egroupware/development:$TAG . && {
|
||||
docker push egroupware/development:$TAG
|
||||
# tag only stable releases as latest
|
||||
[ $TAG != "master" ] && {
|
||||
docker tag egroupware/development:$TAG egroupware/development:latest
|
||||
docker push egroupware/development:latest
|
||||
}
|
||||
[ "$BRANCH" != $VERSION -a "${BRANCH}.x-dev" != $VERSION ] && {
|
||||
docker tag egroupware/development:$VERSION egroupware/development:$BRANCH
|
||||
docker push egroupware/development:$BRANCH
|
||||
docker pull $BASE
|
||||
docker build --build-arg "VERSION=$VERSION" --build-arg="PHP_VERSION=$PHP_VERSION" -t $REPO/$IMAGE:$TAG . && {
|
||||
docker push $REPO/$IMAGE:$TAG
|
||||
|
||||
# tag by major PHP version eg. 7.3
|
||||
docker tag $REPO/$IMAGE:$TAG $REPO/$IMAGE:$PHP_VERSION
|
||||
docker push $REPO/$IMAGE:$PHP_VERSION
|
||||
|
||||
# tag only recommended PHP version as latest and $BRANCH (eg. master)
|
||||
[ $BRANCH = "master" -a $PHP_VERSION = $RECOMMENDED_PHP_VERSION ] && {
|
||||
docker tag $REPO/$IMAGE:$TAG $REPO/$IMAGE:latest
|
||||
docker push $REPO/$IMAGE:latest
|
||||
docker tag $REPO/$IMAGE:$TAG $REPO/$IMAGE:$BRANCH
|
||||
docker push $REPO/$IMAGE:$BRANCH
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,16 @@ volumes:
|
||||
type: none
|
||||
o: bind
|
||||
device: $PWD/sources/egroupware/swoolepush
|
||||
# collabora-config
|
||||
collabora-config:
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
# to upgrade an existing non-docker installation most easy is to use the existing
|
||||
# data directory /var/lib/egroupware AND the host database see below
|
||||
#device: /var/lib/egroupware/default/loolwsd
|
||||
# otherwise data is stored in data subdirectory of the current directory
|
||||
device: $PWD/data/default/loolwsd
|
||||
# for Mac and Windows, do NOT use a directory for the DB, as the Docker host is in a VM!
|
||||
db:
|
||||
sessions:
|
||||
@ -32,6 +42,7 @@ volumes:
|
||||
cache:
|
||||
services:
|
||||
egroupware:
|
||||
# you can also use tags like: 7.3, 7.3.12 or 7.4
|
||||
image: egroupware/development:master
|
||||
# setting a default language for a new installation
|
||||
#environment:
|
||||
@ -110,6 +121,7 @@ services:
|
||||
- "4443:443"
|
||||
depends_on:
|
||||
- egroupware
|
||||
- collabora-key
|
||||
container_name: egroupware-nginx
|
||||
|
||||
# run an own MariaDB:10.4 (you can use EGroupware's database backup and restore to add your existing database)
|
||||
@ -121,6 +133,9 @@ services:
|
||||
volumes:
|
||||
- db:/var/lib/mysql
|
||||
container_name: egroupware-db
|
||||
# make mysql also available on the host
|
||||
#ports:
|
||||
#- "3306:3306"
|
||||
|
||||
# push server using phpswoole
|
||||
push:
|
||||
@ -153,3 +168,20 @@ services:
|
||||
command: --schedule "0 0 4 * * *"
|
||||
container_name: egroupware-watchtower
|
||||
restart: always
|
||||
|
||||
# Collabora Online Office
|
||||
collabora-key:
|
||||
image: "quay.io/egroupware/collabora-key:stable"
|
||||
#image: collabora/code:latest
|
||||
# needs to be initialised via: docker run --rm -v dev_collabora-config:/mnt --entrypoint '/bin/cp -r /etc/loolwsd /mnt' quay.io/egroupware/collabora-key:stable
|
||||
volumes:
|
||||
- collabora-config:/etc/loolwsd
|
||||
# dont try to regenerate the (not used certificate) as volumn is readonly
|
||||
environment:
|
||||
- DONT_GEN_SSL_CERT=1
|
||||
restart: always
|
||||
container_name: collabora-key
|
||||
# set the ip-address of your docker host AND your official DNS name so Collabora
|
||||
# can access EGroupware without the need to go over your firewall
|
||||
#extra_hosts:
|
||||
#- "my.host.name:ip-address"
|
||||
|
@ -2,16 +2,17 @@
|
||||
set -ex
|
||||
|
||||
VERSION=${VERSION:-dev-master}
|
||||
PHP_VERSION=${PHP_VERSION:-7.3}
|
||||
|
||||
# if EGW_SESSION_TIMEOUT is set in environment, propagate value to php.ini
|
||||
test -n "$EGW_SESSION_TIMEOUT" && test "$EGW_SESSION_TIMEOUT" -ge 1440 &&
|
||||
sed -e "s/^;\?session.gc_maxlifetime.*/session.gc_maxlifetime=$EGW_SESSION_TIMEOUT/g" \
|
||||
-i /etc/php/7.3/fpm/php.ini
|
||||
-i /etc/php/$PHP_VERSION/fpm/php.ini
|
||||
|
||||
# if XDEBUG_REMOTE_HOST is set, patch it into xdebug config
|
||||
test -n "$XDEBUG_REMOTE_HOST" && \
|
||||
sed -e "s/^xdebug.remote_host.*/xdebug.remote_host=$XDEBUG_REMOTE_HOST/g" \
|
||||
-i /etc/php/7.3/fpm/conf.d/*xdebug.ini
|
||||
-i /etc/php/$PHP_VERSION/fpm/conf.d/*xdebug.ini
|
||||
|
||||
# downgrade composer to 1.8.6, as 1.9.x does not work with "dev-master" version :(
|
||||
composer selfupdate 1.8.6
|
||||
@ -79,7 +80,7 @@ chmod 600 $LOG
|
||||
max_retries=10
|
||||
export try=0
|
||||
# EGW_SKIP_INSTALL=true skips initial installation (no header.inc.php yet)
|
||||
until [ -n "$EGW_SKIP_INSTALL" -a ! -f /var/www/egroupware/header.inc.php ] || \
|
||||
until [ "$EGW_SKIP_INSTALL" = "allways" -o -n "$EGW_SKIP_INSTALL" -a ! -f /var/www/egroupware/header.inc.php ] || \
|
||||
php /var/www/egroupware/doc/rpm-build/post_install.php \
|
||||
--start_webserver "" --autostart_webserver "" \
|
||||
--start_db "" --autostart_db "" \
|
||||
@ -113,4 +114,4 @@ done 2>&1 | tee -a $LOG
|
||||
# to run async jobs
|
||||
service cron start
|
||||
|
||||
exec "$@"
|
||||
exec php-fpm$PHP_VERSION --nodaemonize
|
@ -27,9 +27,6 @@ server {
|
||||
|
||||
index index.php index.html index.htm;
|
||||
|
||||
# other settings
|
||||
client_max_body_size 65M;
|
||||
|
||||
# EGroupware installed in /var/www/egroupware
|
||||
location ^~ /egroupware {
|
||||
alias /var/www/egroupware/;
|
||||
@ -114,4 +111,25 @@ server {
|
||||
location = / {
|
||||
return 301 $scheme://$http_host/egroupware/index.php;
|
||||
}
|
||||
|
||||
# Collabora sniplet meant to be included in server block of EGroupware vhost
|
||||
# static files
|
||||
location ^~ /loleaflet {
|
||||
proxy_pass http://collabora-key:9980;
|
||||
proxy_set_header Host $http_host;
|
||||
}
|
||||
|
||||
# WOPI discovery URL
|
||||
location ^~ /hosting/discovery {
|
||||
proxy_pass http://collabora-key:9980;
|
||||
proxy_set_header Host $http_host;
|
||||
}
|
||||
|
||||
# websockets, download, presentation and image upload
|
||||
location ^~ /lool {
|
||||
proxy_pass http://collabora-key:9980;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Host $http_host;
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,12 @@ upstream fpm {
|
||||
server egroupware:9000;
|
||||
}
|
||||
|
||||
# redirects needs to use X-Forwarded-Proto too
|
||||
map $http_x_forwarded_proto $redirectscheme {
|
||||
default $scheme;
|
||||
https https;
|
||||
}
|
||||
|
||||
server {
|
||||
access_log off;
|
||||
|
||||
@ -105,15 +111,15 @@ server {
|
||||
}
|
||||
# CalDAV & CardDAV autoconfig
|
||||
location ~ ^/.well-known/(caldav|carddav)$ {
|
||||
return 301 $scheme://$host/egroupware/groupdav.php/;
|
||||
return 301 $redirectscheme://$host/egroupware/groupdav.php/;
|
||||
}
|
||||
location ~ ^(/principals/users/.*)$ {
|
||||
return 301 $scheme://$host/egroupware/groupdav.php$1;
|
||||
return 301 $redirectscheme://$host/egroupware/groupdav.php$1;
|
||||
}
|
||||
# Nginx does NOT use index for OPTIONS requests breakng WebDAV
|
||||
# for Windows, which sends OPTIONS / and stalls on Nginx 405 response!
|
||||
# This also redirects all requests to root to EGroupware.
|
||||
location = / {
|
||||
return 301 $scheme://$host/egroupware/index.php;
|
||||
return 301 $redirectscheme://$host/egroupware/index.php;
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,22 @@
|
||||
egroupware-docker (19.1.20191220) hardy; urgency=low
|
||||
|
||||
* All apps: make list columns being sortable via column-selector dialog
|
||||
* Admin: optional session-action column in access-log and sessions
|
||||
* Admin: Add filemanager (home directory) as an option to move to new user when deleting an account
|
||||
* Admin: Fix some hooks got missed when deleting a user
|
||||
* File selector: implement Overwrite and Rename possibilities for saving an existing email message or attachment
|
||||
* Mobile theme: fix mobile theme sidebar not showing notifications
|
||||
* Html Editor: Add a custom paragraph into block formating in order to get paragraph lines with no line-height
|
||||
* Mail: keep number & bullet lists when converting to plain text
|
||||
* Notifications: implement new indicator in dashboard in order to notify user about unread notifications
|
||||
* Calendar: New preference for notifications about events you created, but are not a participant in
|
||||
* Addressbook: Fix files and entries linked to a new contact were not saved
|
||||
* Rocket.Chat: fix Message action on status app's contextmenu is always active even when Rochet.Chat is not yet logged in and active
|
||||
* Tracker: Fix HTML tickets showed their HTML tags in async notifications
|
||||
* Packages/WebDAV: remove upload / PUT limit of 65MB (now 1GB), you need to accept/merge changes in apache/nginx.conf files!
|
||||
|
||||
-- Ralf Becker <rb@egroupware.org> Fri, 20 Dec 2019 08:40:34 +0100
|
||||
|
||||
egroupware-docker (19.1.20191119) hardy; urgency=low
|
||||
|
||||
* CalDAV/Calendar: Lightning 68 no longer allowed to accept/reject invitations
|
||||
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.8 KiB |
14
home/templates/pixelegg/images/navbar.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<?xml-stylesheet type="text/css" href="../less/svg.css" ?>
|
||||
<svg version="1.1" id="pixelegg_home" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="32px" height="32px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#696969" d="M30.62,16.719L17.894,3.991c-0.514-0.514-1.232-0.655-1.889-0.494
|
||||
c-0.658-0.162-1.375-0.02-1.889,0.494L1.388,16.719c-0.781,0.781-0.181,1,0.601,1.781c0,0,3.069,0.088,3,0v11h8v-9h6v9h8v-11h3
|
||||
C30.771,17.719,31.401,17.5,30.62,16.719z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 832 B |
2
json.php
@ -104,7 +104,7 @@ try {
|
||||
'no_exception_handler' => true, // we already installed our own
|
||||
// only log ajax requests which represent former GET requests or submits
|
||||
// cuts down updates to egw_access_log table
|
||||
'no_dla_update' => !preg_match('/(Etemplate::ajax_process_content|\.jdots_framework\.ajax_exec\.template)$/', $_GET['menuaction']),
|
||||
'no_dla_update' => !preg_match('/(Etemplate::ajax_process_content|\.jdots_framework\.ajax_exec\.template)/', $_GET['menuaction']),
|
||||
)
|
||||
);
|
||||
include_once('./header.inc.php');
|
||||
|
@ -2813,18 +2813,22 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
||||
* action => string
|
||||
* )
|
||||
* @param string $path path to save the emails
|
||||
* @param string $submit_button_id dialog button id of triggered submit
|
||||
* @param string $savemode save mode: 'overwrite' or 'rename'
|
||||
*/
|
||||
function ajax_vfsSave ($params,$path)
|
||||
function ajax_vfsSave ($params, $path, $submit_button_id='', $savemode='rename')
|
||||
{
|
||||
unset($submit_button_id); // not used here
|
||||
|
||||
$response = Api\Json\Response::get();
|
||||
|
||||
switch ($params['action'])
|
||||
{
|
||||
case 'message':
|
||||
$result = $this->vfsSaveMessages($params['ids'], $path);
|
||||
$result = $this->vfsSaveMessages($params['ids'], $path, $savemode);
|
||||
break;
|
||||
case 'attachment':
|
||||
$result = $this->vfsSaveAttachments($params['ids'], $path);
|
||||
$result = $this->vfsSaveAttachments($params['ids'], $path, $savemode);
|
||||
break;
|
||||
}
|
||||
$response->call('app.mail.vfsSaveCallback', $result);
|
||||
@ -2835,6 +2839,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
||||
*
|
||||
* @param string|array $ids use splitRowID, to separate values
|
||||
* @param string $path path in vfs (no Vfs::PREFIX!), only directory for multiple id's ($ids is an array)
|
||||
* @param string $savemode save mode: 'overwrite' or 'rename'
|
||||
*
|
||||
* @return array returns an array including message and success result
|
||||
* array (
|
||||
@ -2842,7 +2847,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
||||
* 'success' => BOOLEAN
|
||||
* )
|
||||
*/
|
||||
function vfsSaveMessages($ids,$path)
|
||||
function vfsSaveMessages($ids,$path, $savemode='rename')
|
||||
{
|
||||
// add mail translation
|
||||
Api\Translation::add_app('mail');
|
||||
@ -2884,6 +2889,8 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
||||
$file = $dir . '/' . mail_bo::clean_subject_for_filename(str_replace($dir.'/', '', $path));
|
||||
}
|
||||
|
||||
if ($savemode != 'overwrite')
|
||||
{
|
||||
// Check if file already exists, then try to assign a none existance filename
|
||||
$counter = 1;
|
||||
$tmp_file = $file;
|
||||
@ -2895,6 +2902,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
||||
$counter++;
|
||||
}
|
||||
$file = $tmp_file;
|
||||
}
|
||||
|
||||
if (!($fp = Vfs::fopen($file,'wb')) || !fwrite($fp,$message))
|
||||
{
|
||||
@ -2927,6 +2935,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
||||
*
|
||||
* @param string|array $ids '::' delimited mailbox::uid::part-id::is_winmail::name (::name for multiple id's)
|
||||
* @param string $path path in vfs (no Vfs::PREFIX!), only directory for multiple id's ($ids is an array)
|
||||
* @param string $savemode save mode: 'overwrite' or 'rename'
|
||||
*
|
||||
* @return array returns an array including message and success result
|
||||
* array (
|
||||
@ -2934,7 +2943,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
||||
* 'success' => BOOLEAN
|
||||
* )
|
||||
*/
|
||||
function vfsSaveAttachments($ids,$path)
|
||||
function vfsSaveAttachments($ids,$path, $savemode='rename')
|
||||
{
|
||||
$res = array (
|
||||
'msg' => lang('Attachment has been saved successfully.'),
|
||||
@ -3032,6 +3041,8 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
||||
|
||||
$file = $dir. '/' . ($filename ? $filename : mail_bo::clean_subject_for_filename($attachment['filename']));
|
||||
|
||||
if ($savemode != 'overwrite')
|
||||
{
|
||||
$counter = 1;
|
||||
$tmp_file = $file;
|
||||
while (Vfs::file_exists($tmp_file))
|
||||
@ -3042,6 +3053,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2);
|
||||
$counter++;
|
||||
}
|
||||
$file = $tmp_file;
|
||||
}
|
||||
|
||||
if (!($fp = Vfs::fopen($file,'wb')) ||
|
||||
!fwrite($fp,$attachment['attachment']))
|
||||
|
@ -3047,7 +3047,7 @@ app.classes.mail = AppJS.extend(
|
||||
subject = this.et2.getArrayMgr('content').getEntry('mail_displaysubject');
|
||||
}
|
||||
// Replace these now, they really cause problems later
|
||||
var filename = subject ? subject.replace(/[\f\n\t\v\/\\\?]/g,"_") : 'unknown';
|
||||
var filename = subject ? subject.replace(/[\f\n\t\v\x0b\:*#?<>%"\/\\\?]/g,"_") : 'unknown';
|
||||
ids.push(_id);
|
||||
names.push(filename+'.eml');
|
||||
}
|
||||
|
@ -3,6 +3,8 @@
|
||||
(select mails by clicking on the line, like a checkbox) mail ru (выберите письма нажатием на строчку, как место выбора)
|
||||
(with checkbox enforced) mail ru (с отмеченным флажком)
|
||||
activating by date requires a start- and end-date! mail ru Активация по дате требует наличия начальной и конечной даты!
|
||||
add as new mail ru Новая запись
|
||||
add folder mail ru Добавить папку
|
||||
add to addressbook mail ru добавить в адресную книгу
|
||||
all available info admin ru Вся доступная информация
|
||||
all of mail ru Все из
|
||||
@ -12,6 +14,7 @@ allways a new window mail ru Всегда новое окно
|
||||
always show html emails mail ru Всегда показывать письма формата HTML
|
||||
any of mail ru Любой из
|
||||
any status mail ru Любое состояние
|
||||
append mail ru Дополнить
|
||||
attach users vcard at compose to every new mail mail ru Вкладывать визитку пользователя в каждое новое письмо
|
||||
attach vcard mail ru Вложить vCard (визитку)
|
||||
attachments mail ru Вложения
|
||||
@ -215,6 +218,7 @@ save: mail ru Сохранить
|
||||
saving of message %1 failed. destination folder %2 does not exist. mail ru Сохранение сообщения %1 не удалось. Папка назначения %2 не существует.
|
||||
saving of message %1 succeeded. check folder %2. mail ru Сохранение сообщения %1 прошло успешно. Проверьте папку %2.
|
||||
select all mail ru Выбрать все
|
||||
select an existing entry in order to append mail content to it mail ru Выберите существующую запись для добавления в неё содержимого письма
|
||||
selected mail ru Выбранный
|
||||
send message and move to send folder (if configured) mail ru Отправить сообщение и переместить в папку Отправленные
|
||||
sender mail ru Отправитель
|
||||
|
@ -1016,6 +1016,7 @@ body {
|
||||
border-right: 0;
|
||||
border-top: 0;
|
||||
border-bottom: 0;
|
||||
margin-left: 4px;
|
||||
}
|
||||
#mail-index div.splitter-bar-horizontal {
|
||||
border-top: 1px solid #B4B4B4;
|
||||
@ -1036,7 +1037,6 @@ body {
|
||||
margin: 3px 5px 0 0;
|
||||
}
|
||||
#mail-index div#mail-index_mailPreview div#mail-index_mailPreviewHeadersSubject {
|
||||
width: 58%;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
|
@ -1004,6 +1004,7 @@ body {
|
||||
border-right: 0;
|
||||
border-top: 0;
|
||||
border-bottom: 0;
|
||||
margin-left: 4px;
|
||||
}
|
||||
#mail-index div.splitter-bar-horizontal {
|
||||
border-top: 1px solid #B4B4B4;
|
||||
|
@ -90,6 +90,7 @@ body {
|
||||
border-right: 0;
|
||||
border-top: 0;
|
||||
border-bottom: 0;
|
||||
margin-left: 4px;
|
||||
}
|
||||
div.splitter-bar-horizontal {
|
||||
border-top:1px solid #B4B4B4;
|
||||
|
27
manifest.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"short_name": "EGroupware",
|
||||
"name": "EGroupware",
|
||||
"category": ["business", "education"],
|
||||
"description": "EGroupware is an online open-source enterprise software for business use and provides the services by using cutting edge collaboration technologies which allow organisations to collaborate in a secure and function rich environment, supporting integrated project teams across and within organisation boundaries.",
|
||||
"orientation": "landscape-primary",
|
||||
"icons": [
|
||||
{
|
||||
"src": "api/templates/default/images/logo_192x192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "api/templates/default/images/logo_512x512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"start_url": "index.php",
|
||||
"background_color": "#fafafa",
|
||||
"display": "standalone",
|
||||
"scope": "/egroupware",
|
||||
"theme_color": "#0073ae",
|
||||
"serviceworker": {
|
||||
"src": "/service-worker.js"
|
||||
}
|
||||
}
|
@ -765,7 +765,7 @@
|
||||
if (!$egwpopup.is(":visible"))
|
||||
{
|
||||
$body.on('click', function(e){
|
||||
if (!$counter.is(e.target) && e.originalEvent.target.className !== 'popup_note' &&
|
||||
if (!$counter.is(e.target) && $counter.find(e.target).length == 0 &&
|
||||
!$egwpopup.is(e.target) && $egwpopup.has(e.target).length == 0)
|
||||
{
|
||||
jQuery(this).off(e);
|
||||
@ -781,8 +781,6 @@
|
||||
if (_stat) return;
|
||||
$body.off('click');
|
||||
}
|
||||
// Remove popup_note as soon as message list is toggled
|
||||
jQuery('.popup_note', '#topmenu_info_notifications').remove();
|
||||
|
||||
if ($egwpopup.length>0) $egwpopup.toggle('slide');
|
||||
};
|
||||
@ -793,7 +791,6 @@
|
||||
notifications.prototype.counterUpdate = function ()
|
||||
{
|
||||
var $topmenu_info_notifications = jQuery('#topmenu_info_notifications');
|
||||
var $popup_note = jQuery(document.createElement('div')).addClass('popup_note');
|
||||
var counter = 0;
|
||||
for (var id in notifymessages)
|
||||
{
|
||||
@ -802,13 +799,11 @@
|
||||
if (counter > 0)
|
||||
{
|
||||
$topmenu_info_notifications.addClass('egwpopup_notify');
|
||||
if (jQuery('#egw_fw_topmenu:visible').length == 0) $topmenu_info_notifications.append($popup_note);
|
||||
$popup_note.text(egw.lang('You have %1 unread notifications', counter));
|
||||
setTimeout(function (){$popup_note.remove();}, 4000);
|
||||
framework.topmenu_info_notify('notifications', true, counter,egw.lang('You have %1 unread notifications', counter));
|
||||
}
|
||||
else
|
||||
{
|
||||
$topmenu_info_notifications.removeClass('egwpopup_notify');
|
||||
framework.topmenu_info_notify('notifications', false);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1242,7 +1242,7 @@ option:checked {
|
||||
.ui-icon-close {
|
||||
/*visibility: hidden;*/
|
||||
/*background-image: url(../images/search.png);*/
|
||||
background-image: url("../images/cancel.png");
|
||||
background-image: url("../images/cancel.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-color: #FFFFFF;
|
||||
background-size: 12px 12px;
|
||||
@ -1272,7 +1272,7 @@ span.ui-icon-close {
|
||||
}
|
||||
/*Schliessen x*/
|
||||
.ui-icon-closethick {
|
||||
background-image: url(../images/close.png) !important;
|
||||
background-image: url(../images/close.svg) !important;
|
||||
background-repeat: no-repeat;
|
||||
background-color: #FFFFFF;
|
||||
background-size: contain;
|
||||
@ -1321,7 +1321,7 @@ span.ui-multiselect-header {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
span.ui-icon-search {
|
||||
background-image: url(../images/search.png) !important;
|
||||
background-image: url(../images/search.svg) !important;
|
||||
background-position: 0px;
|
||||
background-size: 10px 10px;
|
||||
}
|
||||
@ -5078,6 +5078,21 @@ td.message span.message {
|
||||
background-image: url(../images/notification_message.svg);
|
||||
border-left: 1px solid #636262;
|
||||
}
|
||||
#egw_fw_topmenu_info_items #topmenu_info_notifications .egw_fw_topmenu_info_notify {
|
||||
position: absolute;
|
||||
background-color: #c14343;
|
||||
bottom: 0px;
|
||||
height: 17px;
|
||||
white-space: nowrap;
|
||||
line-height: 16px;
|
||||
width: 17px;
|
||||
border-top-right-radius: 50%;
|
||||
margin-left: -3px;
|
||||
color: #fff9fb;
|
||||
border: 2px solid #ffffff;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
}
|
||||
#egw_fw_topmenu_info_items #topmenu_info_notifications .popup_note {
|
||||
position: absolute;
|
||||
width: 280px;
|
||||
@ -6482,7 +6497,7 @@ span.egw_tutorial_title {
|
||||
body #egw_fw_basecontainer div#egw_fw_topmenu_items {
|
||||
width: 100%;
|
||||
display: block;
|
||||
padding-top: 10px;
|
||||
padding-top: 50px;
|
||||
}
|
||||
body #egw_fw_basecontainer div#egw_fw_topmenu_items ul {
|
||||
display: inline-block;
|
||||
@ -6522,7 +6537,7 @@ span.egw_tutorial_title {
|
||||
display: none;
|
||||
}
|
||||
body #egw_fw_basecontainer div#egw_fw_topmenu_items ul a#topmenu_home {
|
||||
background-image: url(../images/topmenu_items/mobile/home.png);
|
||||
background-image: url(../images/topmenu_items/mobile/home.svg);
|
||||
display: none;
|
||||
}
|
||||
body #egw_fw_basecontainer div#egw_fw_topmenu_items ul a#topmenu_prefs {
|
||||
@ -6694,10 +6709,6 @@ span.egw_tutorial_title {
|
||||
body #egw_fw_sidebar.avatarSubmenu {
|
||||
top: 280px;
|
||||
}
|
||||
body #egw_fw_sidebar {
|
||||
top: 55px;
|
||||
bottom: 5px;
|
||||
}
|
||||
body #egw_fw_sidebar #egw_fw_sidemenu {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
@ -6707,13 +6718,12 @@ span.egw_tutorial_title {
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
z-index: 0;
|
||||
padding-top: 0.6em;
|
||||
font-size: 0.9em;
|
||||
background-color: white;
|
||||
}
|
||||
body #egw_fw_sidebar #egw_fw_sidemenu .egw_fw_ui_sidemenu_entry_apps .egw_fw_ui_sidemenu_entry_header {
|
||||
margin: 0px 5px 0px 2px;
|
||||
padding: 4px 10px 0 16px;
|
||||
padding: 4px 10px 0 0px;
|
||||
overflow: visible;
|
||||
height: 38px;
|
||||
border: none;
|
||||
@ -6967,17 +6977,13 @@ span.egw_tutorial_title {
|
||||
body .sidebar-toggle #egw_fw_top_toolbar div#egw_fw_menu {
|
||||
background-image: url(../images/topmenu_items/mobile/menu.png);
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_top_toolbar #egw_fw_topmenu_info_items,
|
||||
body .sidebar-toggle #egw_fw_top_toolbar #egw_fw_topmenu,
|
||||
body .sidebar-toggle #egw_fw_top_toolbar #egw_fw_userinfo,
|
||||
body .sidebar-toggle #egw_fw_top_toolbar .egw_fw_logout,
|
||||
body .sidebar-toggle #egw_fw_top_toolbar #egw_fw_appsToggle {
|
||||
display: none !important;
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_sidebar {
|
||||
top: 70px;
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_sidebar #egw_fw_sidemenu {
|
||||
width: 82px !important;
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_sidebar #egw_fw_sidemenu .egw_fw_ui_sidemenu_entry_content {
|
||||
display: none !important;
|
||||
}
|
||||
@ -6989,8 +6995,8 @@ span.egw_tutorial_title {
|
||||
padding: 0;
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_sidebar #egw_fw_sidemenu .egw_fw_ui_sidemenu_entry_header {
|
||||
margin: 0px 5px 0px 2px;
|
||||
padding: 4px 10px 0 16px;
|
||||
margin: 0px 0px 0px 2px;
|
||||
padding: 4px 0px 0 0px;
|
||||
overflow: visible;
|
||||
height: 38px;
|
||||
width: 50px;
|
||||
|
@ -228,7 +228,7 @@
|
||||
div#egw_fw_topmenu_items{
|
||||
width: 100%;
|
||||
display: block;
|
||||
padding-top:10px;
|
||||
padding-top:50px;
|
||||
ul{
|
||||
|
||||
display:inline-block;
|
||||
@ -264,7 +264,7 @@
|
||||
}
|
||||
a#topmenu_home, a#topmenu_logout {display: none;}
|
||||
a#topmenu_home {
|
||||
background-image: url(../images/topmenu_items/mobile/home.png);
|
||||
background-image: url(../images/topmenu_items/mobile/home.svg);
|
||||
display: none;
|
||||
}
|
||||
a#topmenu_prefs {
|
||||
@ -442,8 +442,6 @@
|
||||
//###################
|
||||
#egw_fw_sidebar.avatarSubmenu {top:280px;}
|
||||
#egw_fw_sidebar{
|
||||
top: 55px;
|
||||
bottom: 5px;
|
||||
//SIDE AREA
|
||||
#egw_fw_sidemenu {
|
||||
position: absolute;
|
||||
@ -454,14 +452,13 @@
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling:touch;
|
||||
z-index: 0;
|
||||
padding-top: 0.6em;
|
||||
font-size: 0.9em;
|
||||
background-color:white;
|
||||
.egw_fw_ui_sidemenu_entry_apps {
|
||||
.egw_fw_ui_sidemenu_entry_header
|
||||
{
|
||||
margin:0px 5px 0px 2px;
|
||||
padding: 4px 10px 0 16px;
|
||||
padding: 4px 10px 0 0px;
|
||||
overflow: visible;
|
||||
height:38px;
|
||||
border:none;
|
||||
@ -680,12 +677,10 @@
|
||||
.sidebar-toggle{
|
||||
#egw_fw_top_toolbar {
|
||||
div#egw_fw_menu {background-image: url(../images/topmenu_items/mobile/menu.png);}
|
||||
#egw_fw_userinfo, .egw_fw_logout, #egw_fw_appsToggle {display: none !important;}
|
||||
#egw_fw_topmenu_info_items, #egw_fw_topmenu, #egw_fw_userinfo, .egw_fw_logout, #egw_fw_appsToggle {display: none !important;}
|
||||
}
|
||||
#egw_fw_sidebar{
|
||||
top: 70px;
|
||||
#egw_fw_sidemenu{
|
||||
width:82px !important;
|
||||
.egw_fw_ui_sidemenu_entry_content{
|
||||
display:none !important;
|
||||
}
|
||||
@ -699,8 +694,8 @@
|
||||
}
|
||||
}
|
||||
.egw_fw_ui_sidemenu_entry_header{
|
||||
margin:0px 5px 0px 2px;
|
||||
padding: 4px 10px 0 16px;
|
||||
margin:0px 0px 0px 2px;
|
||||
padding: 4px 0px 0 0px;
|
||||
overflow: visible;
|
||||
height:38px;
|
||||
width:50px;
|
||||
|
@ -1231,7 +1231,7 @@ option:checked {
|
||||
.ui-icon-close {
|
||||
/*visibility: hidden;*/
|
||||
/*background-image: url(../images/search.png);*/
|
||||
background-image: url("../images/cancel.png");
|
||||
background-image: url("../images/cancel.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-color: #FFFFFF;
|
||||
background-size: 12px 12px;
|
||||
@ -1261,7 +1261,7 @@ span.ui-icon-close {
|
||||
}
|
||||
/*Schliessen x*/
|
||||
.ui-icon-closethick {
|
||||
background-image: url(../images/close.png) !important;
|
||||
background-image: url(../images/close.svg) !important;
|
||||
background-repeat: no-repeat;
|
||||
background-color: #FFFFFF;
|
||||
background-size: contain;
|
||||
@ -1310,7 +1310,7 @@ span.ui-multiselect-header {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
span.ui-icon-search {
|
||||
background-image: url(../images/search.png) !important;
|
||||
background-image: url(../images/search.svg) !important;
|
||||
background-position: 0px;
|
||||
background-size: 10px 10px;
|
||||
}
|
||||
@ -5067,6 +5067,21 @@ td.message span.message {
|
||||
background-image: url(../images/notification_message.svg);
|
||||
border-left: 1px solid #636262;
|
||||
}
|
||||
#egw_fw_topmenu_info_items #topmenu_info_notifications .egw_fw_topmenu_info_notify {
|
||||
position: absolute;
|
||||
background-color: #c14343;
|
||||
bottom: 0px;
|
||||
height: 17px;
|
||||
white-space: nowrap;
|
||||
line-height: 16px;
|
||||
width: 17px;
|
||||
border-top-right-radius: 50%;
|
||||
margin-left: -3px;
|
||||
color: #fff9fb;
|
||||
border: 2px solid #ffffff;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
}
|
||||
#egw_fw_topmenu_info_items #topmenu_info_notifications .popup_note {
|
||||
position: absolute;
|
||||
width: 280px;
|
||||
|
@ -1242,7 +1242,7 @@ option:checked {
|
||||
.ui-icon-close {
|
||||
/*visibility: hidden;*/
|
||||
/*background-image: url(../images/search.png);*/
|
||||
background-image: url("../images/cancel.png");
|
||||
background-image: url("../images/cancel.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-color: #FFFFFF;
|
||||
background-size: 12px 12px;
|
||||
@ -1272,7 +1272,7 @@ span.ui-icon-close {
|
||||
}
|
||||
/*Schliessen x*/
|
||||
.ui-icon-closethick {
|
||||
background-image: url(../images/close.png) !important;
|
||||
background-image: url(../images/close.svg) !important;
|
||||
background-repeat: no-repeat;
|
||||
background-color: #FFFFFF;
|
||||
background-size: contain;
|
||||
@ -1321,7 +1321,7 @@ span.ui-multiselect-header {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
span.ui-icon-search {
|
||||
background-image: url(../images/search.png) !important;
|
||||
background-image: url(../images/search.svg) !important;
|
||||
background-position: 0px;
|
||||
background-size: 10px 10px;
|
||||
}
|
||||
@ -5078,6 +5078,21 @@ td.message span.message {
|
||||
background-image: url(../images/notification_message.svg);
|
||||
border-left: 1px solid #636262;
|
||||
}
|
||||
#egw_fw_topmenu_info_items #topmenu_info_notifications .egw_fw_topmenu_info_notify {
|
||||
position: absolute;
|
||||
background-color: #c14343;
|
||||
bottom: 0px;
|
||||
height: 17px;
|
||||
white-space: nowrap;
|
||||
line-height: 16px;
|
||||
width: 17px;
|
||||
border-top-right-radius: 50%;
|
||||
margin-left: -3px;
|
||||
color: #fff9fb;
|
||||
border: 2px solid #ffffff;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
}
|
||||
#egw_fw_topmenu_info_items #topmenu_info_notifications .popup_note {
|
||||
position: absolute;
|
||||
width: 280px;
|
||||
|
@ -11,6 +11,7 @@
|
||||
<meta name="author" content="EGroupware GmbH http://www.egroupware.org" />
|
||||
{pngfix}
|
||||
{meta_robots}
|
||||
<link rel="manifest" href="{webserver_url}/manifest.json"/>
|
||||
<link rel="icon" href="{img_icon}" type="image/x-ico" />
|
||||
<link rel="shortcut icon" href="{img_shortcut}" />
|
||||
<link rel="stylesheet" href="{webserver_url}/api/js/offline/themes/offline-theme-slide.css">
|
||||
|
BIN
pixelegg/images/dhtmlxtree/thunderbird.png
Executable file → Normal file
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 1.8 KiB |
14
pixelegg/images/dhtmlxtree/thunderbird.svg
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<?xml-stylesheet type="text/css" href="../less/svg.css" ?>
|
||||
<svg version="1.1" id="pixelegg_home" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="32px" height="32px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#696969" d="M30.62,16.719L17.894,3.991c-0.514-0.514-1.232-0.655-1.889-0.494
|
||||
c-0.658-0.162-1.375-0.02-1.889,0.494L1.388,16.719c-0.781,0.781-0.181,1,0.601,1.781c0,0,3.069,0.088,3,0v11h8v-9h6v9h8v-11h3
|
||||
C30.771,17.719,31.401,17.5,30.62,16.719z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 832 B |
@ -1,24 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="32" height="32" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<?xml-stylesheet type="text/css" href="../less/svg.css" ?>
|
||||
<svg version="1.1" id="pixelegg_search" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="32px" height="32px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#696969" d="M20.201,21.894l-0.182-0.182c-0.332-0.331-0.332-0.868,0-1.2
|
||||
l0.601-0.602c0.332-0.332,0.87-0.332,1.202,0l0.182,0.182c1.473-1.861,2.357-4.209,2.357-6.768
|
||||
c0-6.036-4.893-10.929-10.927-10.929c-6.036,0-10.929,4.893-10.929,10.929s4.893,10.929,10.929,10.929
|
||||
c2.558,0,4.905-0.886,6.767-2.357l1.717,1.718l1.803-1.803l-1.719-1.719C21.473,20.762,20.87,21.364,20.201,21.894z
|
||||
M13.433,21.674c-4.612,0-8.35-3.738-8.35-8.35s3.738-8.35,8.35-8.35c4.611,0,8.349,3.738,8.349,8.35
|
||||
S18.044,21.674,13.433,21.674z"/>
|
||||
<path fill="#696969" d="M29.217,25.742l-4.041-4.04c-0.371-0.372-0.975-0.372-1.347,0
|
||||
l-0.108,0.108l1.104,1.104c0.332,0.332,0.332,0.87,0,1.202l-0.602,0.602c-0.332,0.331-0.869,0.331-1.201,0l-1.104-1.105
|
||||
l-0.108,0.109c-0.373,0.371-0.373,0.975,0,1.348l4.041,4.041c0.371,0.371,0.975,0.371,1.346,0l2.021-2.021
|
||||
C29.589,26.717,29.589,26.113,29.217,25.742z"/>
|
||||
</g>
|
||||
<title>background</title>
|
||||
<rect fill="none" id="canvas_background" height="402" width="582" y="-1" x="-1"/>
|
||||
</g>
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<path id="svg_2" d="m30.695,26.655l-4.929,-4.613c-0.037,-0.034 -0.081,-0.05 -0.121,-0.078l-1.991,-1.861c1.366,-2.06 2.132,-4.547 2.044,-7.207c-0.225,-6.808 -5.926,-12.144 -12.732,-11.919c-6.808,0.226 -12.144,5.926 -11.919,12.735c0.225,6.807 5.926,12.143 12.734,11.918c2.117,-0.071 4.084,-0.678 5.792,-1.678l2.349,2.199c0.002,0 0.002,0.001 0.002,0.001l4.929,4.616c0.453,0.421 1.166,0.397 1.592,-0.053l2.305,-2.468c0.423,-0.454 0.4,-1.167 -0.055,-1.592zm-17.081,-3.829c-5.258,0.175 -9.661,-3.946 -9.836,-9.205c-0.173,-5.258 3.948,-9.662 9.207,-9.835c5.257,-0.174 9.662,3.947 9.836,9.206c0.173,5.258 -3.948,9.66 -9.207,9.834z" fill="#62686A"/>
|
||||
<line id="svg_3" y2="54.75" x2="14.958" y1="29.125" x1="14.958" fill="none"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 953 B |
@ -1,24 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="32" height="32" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<?xml-stylesheet type="text/css" href="../less/svg.css" ?>
|
||||
<svg version="1.1" id="pixelegg_search" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="32px" height="32px" viewBox="0 0 32 32" enable-background="new 0 0 32 32" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#696969" d="M20.201,21.894l-0.182-0.182c-0.332-0.331-0.332-0.868,0-1.2
|
||||
l0.601-0.602c0.332-0.332,0.87-0.332,1.202,0l0.182,0.182c1.473-1.861,2.357-4.209,2.357-6.768
|
||||
c0-6.036-4.893-10.929-10.927-10.929c-6.036,0-10.929,4.893-10.929,10.929s4.893,10.929,10.929,10.929
|
||||
c2.558,0,4.905-0.886,6.767-2.357l1.717,1.718l1.803-1.803l-1.719-1.719C21.473,20.762,20.87,21.364,20.201,21.894z
|
||||
M13.433,21.674c-4.612,0-8.35-3.738-8.35-8.35s3.738-8.35,8.35-8.35c4.611,0,8.349,3.738,8.349,8.35
|
||||
S18.044,21.674,13.433,21.674z"/>
|
||||
<path fill="#696969" d="M29.217,25.742l-4.041-4.04c-0.371-0.372-0.975-0.372-1.347,0
|
||||
l-0.108,0.108l1.104,1.104c0.332,0.332,0.332,0.87,0,1.202l-0.602,0.602c-0.332,0.331-0.869,0.331-1.201,0l-1.104-1.105
|
||||
l-0.108,0.109c-0.373,0.371-0.373,0.975,0,1.348l4.041,4.041c0.371,0.371,0.975,0.371,1.346,0l2.021-2.021
|
||||
C29.589,26.717,29.589,26.113,29.217,25.742z"/>
|
||||
</g>
|
||||
<title>background</title>
|
||||
<rect fill="none" id="canvas_background" height="402" width="582" y="-1" x="-1"/>
|
||||
</g>
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<path id="svg_2" d="m30.695,26.655l-4.929,-4.613c-0.037,-0.034 -0.081,-0.05 -0.121,-0.078l-1.991,-1.861c1.366,-2.06 2.132,-4.547 2.044,-7.207c-0.225,-6.808 -5.926,-12.144 -12.732,-11.919c-6.808,0.226 -12.144,5.926 -11.919,12.735c0.225,6.807 5.926,12.143 12.734,11.918c2.117,-0.071 4.084,-0.678 5.792,-1.678l2.349,2.199c0.002,0 0.002,0.001 0.002,0.001l4.929,4.616c0.453,0.421 1.166,0.397 1.592,-0.053l2.305,-2.468c0.423,-0.454 0.4,-1.167 -0.055,-1.592zm-17.081,-3.829c-5.258,0.175 -9.661,-3.946 -9.836,-9.205c-0.173,-5.258 3.948,-9.662 9.207,-9.835c5.257,-0.174 9.662,3.947 9.836,9.206c0.173,5.258 -3.948,9.66 -9.207,9.834z" fill="#62686A"/>
|
||||
<line id="svg_3" y2="54.75" x2="14.958" y1="29.125" x1="14.958" fill="none"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 964 B |
12
pixelegg/images/view.svg
Normal file
@ -0,0 +1,12 @@
|
||||
<svg width="32" height="32" xmlns="http://www.w3.org/2000/svg">
|
||||
|
||||
<g>
|
||||
<title>background</title>
|
||||
<rect fill="none" id="canvas_background" height="402" width="582" y="-1" x="-1"/>
|
||||
</g>
|
||||
<g>
|
||||
<title>Layer 1</title>
|
||||
<path id="svg_2" d="m30.695,26.655l-4.929,-4.613c-0.037,-0.034 -0.081,-0.05 -0.121,-0.078l-1.991,-1.861c1.366,-2.06 2.132,-4.547 2.044,-7.207c-0.225,-6.808 -5.926,-12.144 -12.732,-11.919c-6.808,0.226 -12.144,5.926 -11.919,12.735c0.225,6.807 5.926,12.143 12.734,11.918c2.117,-0.071 4.084,-0.678 5.792,-1.678l2.349,2.199c0.002,0 0.002,0.001 0.002,0.001l4.929,4.616c0.453,0.421 1.166,0.397 1.592,-0.053l2.305,-2.468c0.423,-0.454 0.4,-1.167 -0.055,-1.592zm-17.081,-3.829c-5.258,0.175 -9.661,-3.946 -9.836,-9.205c-0.173,-5.258 3.948,-9.662 9.207,-9.835c5.257,-0.174 9.662,3.947 9.836,9.206c0.173,5.258 -3.948,9.66 -9.207,9.834z" fill="#62686A"/>
|
||||
<line id="svg_3" y2="54.75" x2="14.958" y1="29.125" x1="14.958" fill="none"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 964 B |
@ -396,12 +396,7 @@
|
||||
{
|
||||
this._super.apply(this,arguments);
|
||||
this.setSidebarState(this.activeApp.preferences.toggleMenu);
|
||||
var self = this;
|
||||
var $user = jQuery('#egw_fw_userinfo .user');
|
||||
|
||||
var $avatar = jQuery('#egw_fw_userinfo .avatar img');
|
||||
$avatar.attr('src', egw.webserverUrl + '/api/avatar.php?account_id=' + egw.user('account_id'));
|
||||
|
||||
var $avatar = jQuery('#topmenu_info_user_avatar');
|
||||
var $sidebar = jQuery('#egw_fw_sidebar');
|
||||
$sidebar.removeClass('avatarSubmenu');
|
||||
this.updateAppsToggle();
|
||||
@ -409,8 +404,6 @@
|
||||
$avatar.off().on('click',function(){
|
||||
$sidebar.toggleClass('avatarSubmenu',!$sidebar.hasClass('avatarSubmenu'));
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
@ -462,13 +455,13 @@
|
||||
if (state === 'on')
|
||||
{
|
||||
jQuery('.egw_fw_sidebar_dropMask').remove();
|
||||
$toggleMenu.addClass('sidebar-toggle');
|
||||
$toggleMenu.addClass('sidebar-toggle egw_fw_sidebar_toggleOn');
|
||||
this.toggleMenuResizeHandler(collapseSize);
|
||||
this.setToggleMenuState('off');
|
||||
}
|
||||
else
|
||||
{
|
||||
$toggleMenu.removeClass('sidebar-toggle');
|
||||
$toggleMenu.removeClass('sidebar-toggle egw_fw_sidebar_toggleOn');
|
||||
this.toggleMenuResizeHandler(expandSize);
|
||||
this.setToggleMenuState('on');
|
||||
if (screen.width<700)
|
||||
@ -1058,11 +1051,13 @@
|
||||
|
||||
jQuery(document).ready(function() {
|
||||
window.framework = new fw_mobile("egw_fw_sidemenu", "egw_fw_tabs",
|
||||
window.egw_webserverUrl, egw_setSideboxSize, 300, 'egw_fw_basecontainer', 'egw_fw_menu');
|
||||
window.egw_webserverUrl, egw_setSideboxSize, 300, 'egw_fw_basecontainer', 'egw_fw_toggler');
|
||||
window.callManual = window.framework.callManual;
|
||||
jQuery('#egw_fw_print').click(function(){window.framework.print();});
|
||||
jQuery('#topmenu_logout').click(function(){ window.framework.redirect(this.getAttribute('href')); return false;});
|
||||
jQuery('form[name^="tz_selection"]').children().on('change', function(){framework.tzSelection(this.value); return false;});
|
||||
jQuery('form[name^="tz_selection"]').children()
|
||||
.on('change', function() { framework.tzSelection(this.value); return false; })
|
||||
.on('click', function(e) { e.stopPropagation(); });
|
||||
window.egw.link_quick_add('quick_add');
|
||||
history.pushState({type:'main'}, 'main', '#main');
|
||||
jQuery(window).on('popstate', function(e){
|
||||
|
@ -71,6 +71,40 @@
|
||||
et2_loadingFinished: function() {
|
||||
this._super.apply(this, arguments);
|
||||
setTimeout(function(){jQuery('#egw_fw_firstload').remove();}, 1000);
|
||||
},
|
||||
|
||||
/**
|
||||
* Set a notification message for topmenu info item
|
||||
*
|
||||
* @param {string} _id id of topmenu info item with its prefix
|
||||
* @param {string} _message message that should be displayed
|
||||
* @param {string} _tooltip hint text as tooltip
|
||||
*/
|
||||
topmenu_info_notify: function(_id, _switch, _message, _tooltip) {
|
||||
var $items = jQuery('#egw_fw_topmenu_info_items').children();
|
||||
var prefix = "topmenu_info_";
|
||||
|
||||
$items.each(function(i,item){
|
||||
if (item.id == prefix+_id || item.id == _id)
|
||||
{
|
||||
var $notify = jQuery(item).find('.egw_fw_topmenu_info_notify');
|
||||
if (_switch)
|
||||
{
|
||||
if ($notify.length == 0)
|
||||
{
|
||||
$notify = jQuery(document.createElement('div'))
|
||||
.addClass('egw_fw_topmenu_info_notify')
|
||||
.prop('title', _tooltip)
|
||||
.appendTo(item);
|
||||
}
|
||||
$notify.prop('title', _tooltip).text(_message);
|
||||
}
|
||||
else
|
||||
{
|
||||
$notify.remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -93,7 +127,9 @@
|
||||
jQuery('#topmenu_info_user_avatar').click(function(){window.framework.toggle_avatar_menu();});
|
||||
jQuery('#topmenu_info_print_title').click(function(){window.framework.print();});
|
||||
jQuery('#topmenu_info_logout').click(function(){ window.framework.redirect(this.getAttribute('data-logout-url')); });
|
||||
jQuery('form[name^="tz_selection"]').children().on('change', function(){framework.tzSelection(this.value); return false;});
|
||||
jQuery('form[name^="tz_selection"]').children()
|
||||
.on('change', function() { framework.tzSelection(this.value); return false; })
|
||||
.on('click', function(e) { e.stopPropagation(); });
|
||||
window.egw.link_quick_add('topmenu_info_quick_add');
|
||||
|
||||
// allowing javascript urls in topmenu and sidebox only under CSP by binding click handlers to them
|
||||
|
@ -185,7 +185,7 @@ option:checked {background-color: @color_hover_row;}
|
||||
.ui-icon-close{
|
||||
/*visibility: hidden;*/
|
||||
/*background-image: url(../images/search.png);*/
|
||||
background-image: url("../images/cancel.png");
|
||||
background-image: url("../images/cancel.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-color: @gray_0;
|
||||
background-size: 12px 12px;
|
||||
@ -206,7 +206,7 @@ span.ui-icon-close {margin-top: 0px; top: 5px;}
|
||||
|
||||
/*Schliessen x*/
|
||||
.ui-icon-closethick {
|
||||
background-image: url(../images/close.png) !important;
|
||||
background-image: url(../images/close.svg) !important;
|
||||
background-repeat: no-repeat;
|
||||
background-color: @gray_0;
|
||||
background-size: contain;
|
||||
@ -245,7 +245,7 @@ span.ui-icon-close {margin-top: 0px; top: 5px;}
|
||||
span.ui-multiselect-header {color: @gray_0;}
|
||||
|
||||
span.ui-icon-search {
|
||||
background-image: url(../images/search.png) !important;
|
||||
background-image: url(../images/search.svg) !important;
|
||||
background-position: 0px;
|
||||
background-size: 10px 10px;
|
||||
|
||||
|
@ -119,6 +119,21 @@
|
||||
opacity: 0.4;
|
||||
background-image: url(../images/notification_message.svg);
|
||||
border-left: 1px solid #636262;
|
||||
.egw_fw_topmenu_info_notify {
|
||||
position: absolute;
|
||||
background-color: #c14343;
|
||||
bottom: 0px;
|
||||
height: 17px;
|
||||
white-space: nowrap;
|
||||
line-height: 16px;
|
||||
width: 17px;
|
||||
border-top-right-radius: 50%;
|
||||
margin-left: -3px;
|
||||
color: #fff9fb;
|
||||
border: 2px solid #ffffff;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.popup_note {
|
||||
position: absolute;
|
||||
width: 280px;
|
||||
|
@ -1253,7 +1253,7 @@ option:checked {
|
||||
.ui-icon-close {
|
||||
/*visibility: hidden;*/
|
||||
/*background-image: url(../images/search.png);*/
|
||||
background-image: url("../images/cancel.png");
|
||||
background-image: url("../images/cancel.svg");
|
||||
background-repeat: no-repeat;
|
||||
background-color: #FFFFFF;
|
||||
background-size: 12px 12px;
|
||||
@ -1283,7 +1283,7 @@ span.ui-icon-close {
|
||||
}
|
||||
/*Schliessen x*/
|
||||
.ui-icon-closethick {
|
||||
background-image: url(../images/close.png) !important;
|
||||
background-image: url(../images/close.svg) !important;
|
||||
background-repeat: no-repeat;
|
||||
background-color: #FFFFFF;
|
||||
background-size: contain;
|
||||
@ -1332,7 +1332,7 @@ span.ui-multiselect-header {
|
||||
color: #FFFFFF;
|
||||
}
|
||||
span.ui-icon-search {
|
||||
background-image: url(../images/search.png) !important;
|
||||
background-image: url(../images/search.svg) !important;
|
||||
background-position: 0px;
|
||||
background-size: 10px 10px;
|
||||
}
|
||||
@ -5089,6 +5089,21 @@ td.message span.message {
|
||||
background-image: url(../images/notification_message.svg);
|
||||
border-left: 1px solid #636262;
|
||||
}
|
||||
#egw_fw_topmenu_info_items #topmenu_info_notifications .egw_fw_topmenu_info_notify {
|
||||
position: absolute;
|
||||
background-color: #c14343;
|
||||
bottom: 0px;
|
||||
height: 17px;
|
||||
white-space: nowrap;
|
||||
line-height: 16px;
|
||||
width: 17px;
|
||||
border-top-right-radius: 50%;
|
||||
margin-left: -3px;
|
||||
color: #fff9fb;
|
||||
border: 2px solid #ffffff;
|
||||
text-align: center;
|
||||
border-radius: 50%;
|
||||
}
|
||||
#egw_fw_topmenu_info_items #topmenu_info_notifications .popup_note {
|
||||
position: absolute;
|
||||
width: 280px;
|
||||
@ -6493,7 +6508,7 @@ span.egw_tutorial_title {
|
||||
body #egw_fw_basecontainer div#egw_fw_topmenu_items {
|
||||
width: 100%;
|
||||
display: block;
|
||||
padding-top: 10px;
|
||||
padding-top: 50px;
|
||||
}
|
||||
body #egw_fw_basecontainer div#egw_fw_topmenu_items ul {
|
||||
display: inline-block;
|
||||
@ -6533,7 +6548,7 @@ span.egw_tutorial_title {
|
||||
display: none;
|
||||
}
|
||||
body #egw_fw_basecontainer div#egw_fw_topmenu_items ul a#topmenu_home {
|
||||
background-image: url(../images/topmenu_items/mobile/home.png);
|
||||
background-image: url(../images/topmenu_items/mobile/home.svg);
|
||||
display: none;
|
||||
}
|
||||
body #egw_fw_basecontainer div#egw_fw_topmenu_items ul a#topmenu_prefs {
|
||||
@ -6705,10 +6720,6 @@ span.egw_tutorial_title {
|
||||
body #egw_fw_sidebar.avatarSubmenu {
|
||||
top: 280px;
|
||||
}
|
||||
body #egw_fw_sidebar {
|
||||
top: 55px;
|
||||
bottom: 5px;
|
||||
}
|
||||
body #egw_fw_sidebar #egw_fw_sidemenu {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
@ -6718,13 +6729,12 @@ span.egw_tutorial_title {
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
z-index: 0;
|
||||
padding-top: 0.6em;
|
||||
font-size: 0.9em;
|
||||
background-color: white;
|
||||
}
|
||||
body #egw_fw_sidebar #egw_fw_sidemenu .egw_fw_ui_sidemenu_entry_apps .egw_fw_ui_sidemenu_entry_header {
|
||||
margin: 0px 5px 0px 2px;
|
||||
padding: 4px 10px 0 16px;
|
||||
padding: 4px 10px 0 0px;
|
||||
overflow: visible;
|
||||
height: 38px;
|
||||
border: none;
|
||||
@ -6978,17 +6988,13 @@ span.egw_tutorial_title {
|
||||
body .sidebar-toggle #egw_fw_top_toolbar div#egw_fw_menu {
|
||||
background-image: url(../images/topmenu_items/mobile/menu.png);
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_top_toolbar #egw_fw_topmenu_info_items,
|
||||
body .sidebar-toggle #egw_fw_top_toolbar #egw_fw_topmenu,
|
||||
body .sidebar-toggle #egw_fw_top_toolbar #egw_fw_userinfo,
|
||||
body .sidebar-toggle #egw_fw_top_toolbar .egw_fw_logout,
|
||||
body .sidebar-toggle #egw_fw_top_toolbar #egw_fw_appsToggle {
|
||||
display: none !important;
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_sidebar {
|
||||
top: 70px;
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_sidebar #egw_fw_sidemenu {
|
||||
width: 82px !important;
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_sidebar #egw_fw_sidemenu .egw_fw_ui_sidemenu_entry_content {
|
||||
display: none !important;
|
||||
}
|
||||
@ -7000,8 +7006,8 @@ span.egw_tutorial_title {
|
||||
padding: 0;
|
||||
}
|
||||
body .sidebar-toggle #egw_fw_sidebar #egw_fw_sidemenu .egw_fw_ui_sidemenu_entry_header {
|
||||
margin: 0px 5px 0px 2px;
|
||||
padding: 4px 10px 0 16px;
|
||||
margin: 0px 0px 0px 2px;
|
||||
padding: 4px 0px 0 0px;
|
||||
overflow: visible;
|
||||
height: 38px;
|
||||
width: 50px;
|
||||
@ -7331,6 +7337,7 @@ form[id^="ranking-"] .dialogHeadbar {
|
||||
margin: 0 auto;
|
||||
}
|
||||
div#loginMainDiv div#centerBox {
|
||||
position: relative;
|
||||
padding: 0;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
-webkit-border-bottom-right-radius: 0;
|
||||
@ -7390,6 +7397,9 @@ form[id^="ranking-"] .dialogHeadbar {
|
||||
}
|
||||
}
|
||||
@media only screen and (max-device-width : 1024px) and (orientation : portrait) {
|
||||
body div#loginMainDiv div#centerBox {
|
||||
position: relative;
|
||||
}
|
||||
body div#loginMainDiv div#centerBox form table.divLoginbox {
|
||||
width: 100%;
|
||||
}
|
||||
@ -7424,6 +7434,9 @@ form[id^="ranking-"] .dialogHeadbar {
|
||||
-o-filter: none;
|
||||
filter: none;
|
||||
}
|
||||
body #egw_fw_sidebar {
|
||||
top: 50px;
|
||||
}
|
||||
body #egw_fw_basecontainer #egw_fw_top_toolbar {
|
||||
z-index: 998;
|
||||
width: 300px;
|
||||
@ -7605,7 +7618,8 @@ form[id^="ranking-"] .dialogHeadbar {
|
||||
left: 10px;
|
||||
float: none;
|
||||
}
|
||||
body #egw_fw_basecontainer.sidebar-toggle #egw_fw_top_toolbar #egwpopup_fw_notifications {
|
||||
body #egw_fw_basecontainer.sidebar-toggle #egw_fw_top_toolbar #egwpopup_fw_notifications,
|
||||
body #egw_fw_basecontainer.sidebar-toggle #egw_fw_top_toolbar #egw_fw_topmenu_info_items {
|
||||
display: none !important;
|
||||
}
|
||||
body #egw_fw_basecontainer.sidebar-toggle #egw_fw_top_toolbar div#egw_fw_menu {
|
||||
@ -7667,6 +7681,20 @@ form[id^="ranking-"] .dialogHeadbar {
|
||||
body #egw_fw_basecontainer #egw_fw_top_toolbar #egwpopup_fw_notifications .popup_note {
|
||||
display: none;
|
||||
}
|
||||
body #egw_fw_basecontainer #egw_fw_top_toolbar #egw_fw_topmenu_info_items {
|
||||
height: 50px;
|
||||
}
|
||||
body #egw_fw_basecontainer #egw_fw_top_toolbar #egw_fw_topmenu_info_items .topmenu_info_item {
|
||||
border: 0;
|
||||
height: 50px;
|
||||
}
|
||||
body #egw_fw_basecontainer #egw_fw_top_toolbar #egw_fw_topmenu_info_items #topmenu_info_print_title span {
|
||||
height: 50px;
|
||||
}
|
||||
body #egw_fw_basecontainer #egw_fw_top_toolbar #egw_fw_topmenu_info_items #topmenu_info_user_avatar span {
|
||||
margin-top: 4px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
body #egw_fw_basecontainer #egw_fw_top_toolbar div#egw_fw_topmenu_items ul {
|
||||
border-left: 6px solid silver;
|
||||
}
|
||||
@ -7724,6 +7752,29 @@ form[id^="ranking-"] .dialogHeadbar {
|
||||
body #egw_fw_basecontainer .egw_fw_ui_sidemenu_entry_apps > div {
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
body #egw_fw_basecontainer #egw_fw_toggler {
|
||||
height: 50px;
|
||||
}
|
||||
body #egw_fw_basecontainer #egw_fw_toggler span {
|
||||
top: 15px;
|
||||
}
|
||||
body #egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler {
|
||||
height: 50px;
|
||||
background-color: transparent;
|
||||
}
|
||||
body #egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler span {
|
||||
top: 15px;
|
||||
}
|
||||
body #egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler span,
|
||||
body #egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler:hover span {
|
||||
background-color: white;
|
||||
}
|
||||
body #egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler span:before,
|
||||
body #egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler:hover span:before,
|
||||
body #egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler span:after,
|
||||
body #egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler:hover span:after {
|
||||
background-color: white !important;
|
||||
}
|
||||
body div.dhtmlxMenu_egw_SubLevelArea_Polygon {
|
||||
font-size: medium;
|
||||
top: 50px !important;
|
||||
|
@ -112,6 +112,7 @@
|
||||
}
|
||||
}
|
||||
div#centerBox{
|
||||
position: relative;
|
||||
padding: 0;
|
||||
-webkit-border-top-right-radius: 0;
|
||||
-webkit-border-bottom-right-radius:0;
|
||||
@ -173,6 +174,7 @@
|
||||
body{
|
||||
div#loginMainDiv{
|
||||
div#centerBox{
|
||||
position: relative;
|
||||
form {
|
||||
table.divLoginbox {
|
||||
width:100%;
|
||||
@ -217,6 +219,9 @@
|
||||
}
|
||||
|
||||
}
|
||||
#egw_fw_sidebar {
|
||||
top:50px;
|
||||
}
|
||||
#egw_fw_basecontainer {
|
||||
|
||||
#egw_fw_top_toolbar {
|
||||
@ -385,7 +390,7 @@
|
||||
}
|
||||
#egw_fw_basecontainer.sidebar-toggle {
|
||||
#egw_fw_top_toolbar {
|
||||
#egwpopup_fw_notifications {display: none !important;}
|
||||
#egwpopup_fw_notifications, #egw_fw_topmenu_info_items {display: none !important;}
|
||||
div#egw_fw_menu {
|
||||
background-image: url(../images/topmenu_items/mobile/menu.svg);
|
||||
width: 50px;
|
||||
@ -443,6 +448,24 @@
|
||||
margin-left: 15px;
|
||||
.popup_note {display: none;}
|
||||
}
|
||||
#egw_fw_topmenu_info_items {
|
||||
height: 50px;
|
||||
.topmenu_info_item {
|
||||
border: 0;
|
||||
height: 50px;
|
||||
}
|
||||
#topmenu_info_print_title {
|
||||
span {
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
#topmenu_info_user_avatar {
|
||||
span {
|
||||
margin-top: 4px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
div#egw_fw_topmenu_items {
|
||||
ul {
|
||||
border-left: 6px solid silver;
|
||||
@ -510,6 +533,27 @@
|
||||
.egw_fw_ui_sidemenu_entry_apps> div{
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
#egw_fw_toggler {
|
||||
height: 50px;
|
||||
span {
|
||||
top: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
#egw_fw_basecontainer.egw_fw_sidebar_toggleOn {
|
||||
#egw_fw_toggler {
|
||||
height: 50px;
|
||||
background-color: transparent;
|
||||
span {
|
||||
top: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
#egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler span,
|
||||
#egw_fw_basecontainer.egw_fw_sidebar_toggleOn #egw_fw_toggler:hover span{
|
||||
background-color: white;
|
||||
&:before, &:after {background-color: white !important}
|
||||
}
|
||||
|
||||
|
||||
|
@ -429,9 +429,10 @@ class preferences_hooks
|
||||
'h4' => lang("Heading %1", '4'),
|
||||
'h5' => lang("Heading %1", '5'),
|
||||
'h6' => lang("Heading %1", '6'),
|
||||
'pre' => lang("Preformatted")
|
||||
'pre' => lang("Preformatted"),
|
||||
'customparagraph' => lang("Custom Paragraph")
|
||||
),
|
||||
'help' => 'Automatically start with this format block',
|
||||
'help' => 'Automatically start with this format block.<br/><b>Custom Paragraph</b> adds less line space between new lines.',
|
||||
'xmlrpc' => True,
|
||||
'admin' => false,
|
||||
'default' => 'p'
|
||||
|
@ -15,7 +15,7 @@ audio effect preferences de Audio-Effekt
|
||||
audio effect enables|disables sound effects used in the theme preferences de Audio Effekte (Sound) für das Thema aktivieren|deaktivieren.
|
||||
automatically start with this font preferences de Startet automatisch mit dieser Schrift
|
||||
automatically start with this font size preferences de Startet automatisch mit dieser Schriftgröße
|
||||
automatically start with this format block preferences de Startet automatisch mit dieser Formatierung
|
||||
automatically start with this format block.<br/><b>Custom Paragraph</b> adds less line space between new lines. preferences de Startet automatisch mit dieser Formatierung.<br/> <b>Absatz schmal</b> erzeugt einen geringeren Zeilenabstand.
|
||||
br preferences de br
|
||||
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences de Ändern Sie Ihr Passwort, indem Sie Ihr altes und neues Passwort angeben. Es wird TRUE zurückgegeben für eine erfolgreiche Änderung und FALSE wenn es nicht erfolgreich war.
|
||||
change password preferences de Passwort ändern
|
||||
@ -31,6 +31,7 @@ color preferences de Farbe
|
||||
country preferences de Land
|
||||
current password preferences de Aktuelles Passwort
|
||||
custom login box color, defaults to above color darkened preferences de Benutzerdefinierte Farbe der Anmeldemaske, Vorgabe obige Farbe abgedunkelt
|
||||
custom paragraph preferences de Absatz schmal
|
||||
custom sidebar menu active color, defaults to above color darkened preferences de Benutzerdefinierte Farbe des Seitenmenü, Vorgabe obige Farbe abgedunkelt
|
||||
dark moono theme preferences de Dunkles Moono Schema
|
||||
data exchange settings preferences de Einstellungen für den Datenaustausch
|
||||
|
@ -15,7 +15,7 @@ audio effect preferences en Audio effect
|
||||
audio effect enables|disables sound effects used in the theme preferences en Audio effect enables|disables sound effects used in the theme
|
||||
automatically start with this font preferences en Automatically start with this font
|
||||
automatically start with this font size preferences en Automatically start with this font size
|
||||
automatically start with this format block preferences en Automatically start with this format block
|
||||
automatically start with this format block.<br/><b>Custom Paragraph</b> adds less line space between new lines. preferences en Automatically start with this format block.<br/><b>Custom Paragraph</b> adds less line space between new lines.
|
||||
br preferences en br
|
||||
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences en Change a user password by passing the old and new passwords. Returns TRUE on success, FALSE on failure.
|
||||
change password preferences en Change password
|
||||
@ -31,6 +31,7 @@ color preferences en Color
|
||||
country preferences en Country
|
||||
current password preferences en Current password
|
||||
custom login box color, defaults to above color darkened preferences en Custom login box color, defaults to above color darkened
|
||||
custom paragraph preferences en Custom Paragraph
|
||||
custom sidebar menu active color, defaults to above color darkened preferences en Custom sidebar menu active color, defaults to above color darkened
|
||||
dark moono theme preferences en Dark Moono Theme
|
||||
data exchange settings preferences en Data exchange settings
|
||||
|
@ -6,13 +6,16 @@
|
||||
24 hour preferences es-es 24 horas
|
||||
a template defines the layout of egroupware and it contains icons for each application. preferences es-es Una plantilla define el formato de EGroupware y contiene iconos para cada aplicación.
|
||||
a theme defines the colors and fonts used by the template. preferences es-es Un tema define los colores y los tipos de letra usados en la plantilla
|
||||
access token revoked. preferences es-es Token de acceso revocado.
|
||||
acl grants have been updated preferences es-es Los permisos de la LCA se han actualizado
|
||||
any listing in egw will show you this number of entries or lines per page.<br>to many slow down the page display, to less will cost you the overview. preferences es-es Cualquier listado en eGW le mostrará este número de entradas o líneas por página.<br>Demasiadas ralentizan la página, demasiado pocas pueden ser malo.
|
||||
applications list scroll area preferences es-es Área de desplazamiento de la lista de aplicaciones
|
||||
are you sure you want to delete this category ? preferences es-es ¿Seguro que desea borrar esta categoría?
|
||||
audio effect preferences es-es Efecto de audio
|
||||
audio effect enables|disables sound effects used in the theme preferences es-es El efecto de audio habilita|deshabilita los efectos de sonido usados en el tema
|
||||
automatically start with this font preferences es-es Comenzar automáticamente con esta tipografía
|
||||
automatically start with this font size preferences es-es Comenzar automáticamente con este tamaño de tipografía
|
||||
automatically start with this format block preferences es-es Comience automáticamente con este bloque de formato
|
||||
br preferences es-es br
|
||||
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences es-es Cambia la contraseña de un usuario pasando la contraseña anterior y la nueva. Si es correcto, devuelve TRUE, y si no, FALSE.
|
||||
change password preferences es-es Cambiar contraseña
|
||||
@ -21,9 +24,12 @@ change your profile preferences es-es Cambiar perfil
|
||||
change your settings preferences es-es Cambiar su configuración
|
||||
charset for the csv export addressbook es-es Juego de caracteres para exportar a CSV
|
||||
charset for the csv export/import preferences es-es Juego de caracteres
|
||||
click to install preferences es-es haga clic para instalar
|
||||
click to select a color preferences es-es Pulse para seleccionar un color
|
||||
code is invalid preferences es-es El código es no válido
|
||||
color preferences es-es Color
|
||||
country preferences es-es País
|
||||
current password preferences es-es Contraseña actual
|
||||
custom login box color, defaults to above color darkened preferences es-es Color del cuadro de inicio de sesión personalizado, por defecto el color anterior se oscureció
|
||||
custom sidebar menu active color, defaults to above color darkened preferences es-es Color de menú de barra lateral personalizado activo, por defecto el color anterior se oscureció
|
||||
dark moono theme preferences es-es Tema Moono oscuro
|
||||
@ -33,6 +39,7 @@ default preferences es-es Predeterminado
|
||||
default application preferences es-es Aplicación predeterminada
|
||||
default font preferences es-es Tipografía predeterminada
|
||||
default font size preferences es-es Tamaño predeterminado de tipografía
|
||||
default format block preferences es-es Bloque de formato predeterminado
|
||||
default preferences preferences es-es Preferencias predeterminadas
|
||||
delete categories preferences es-es Borrar categorías
|
||||
deny following groups access to acl (grant access) admin es-es Denegar el acceso a la lista de control de acceso a los grupos siguientes
|
||||
|
@ -56,6 +56,9 @@ tr.prefRow:hover .prefHelp {
|
||||
.prefDefault {
|
||||
float: right;
|
||||
width:48%;
|
||||
overflow-x: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 300px;
|
||||
}
|
||||
.prefValue textarea, textarea.prefValue {
|
||||
width: 99%;
|
||||
|
@ -73,6 +73,9 @@ tr.prefRow:hover .prefHelp {
|
||||
.prefDefault {
|
||||
float: right;
|
||||
width: 48%;
|
||||
overflow-x: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 300px;
|
||||
}
|
||||
.prefValue textarea,
|
||||
textarea.prefValue {
|
||||
|
12
service-worker.js
Normal file
@ -0,0 +1,12 @@
|
||||
/**
|
||||
* EGroupware service worker
|
||||
*
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @author Hadi Nategh <hn-At-egroupware.org>
|
||||
* @copyright (c) 2019 by Hadi Nategh <hn-At-egroupware.org>
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
*/
|
||||
|
||||
this.addEventListener('fetch', function (event) {
|
||||
// temporary just to ommit error app not installable
|
||||
});
|
@ -239,6 +239,7 @@ class timesheet_ui extends timesheet_bo
|
||||
if ($this->data['old_pm_id'])
|
||||
{
|
||||
Link::unlink2(0,TIMESHEET_APP,$content['link_to']['to_id'],0,'projectmanager',$this->data['old_pm_id']);
|
||||
unset($content['link_to']['to_id']['projectmanager:'.$this->data['old_pm_id']]);
|
||||
unset($this->data['old_pm_id']);
|
||||
}
|
||||
}
|
||||
|