Giter Site home page Giter Site logo

morevnaproject-org / papagayo-ng Goto Github PK

View Code? Open in Web Editor NEW
233.0 233.0 51.0 12.33 MB

Papagayo is a lip-syncing program designed to help you line up phonemes (mouth shapes) with the actual recorded sound of actors speaking. Papagayo makes it easy to lip sync animated characters by making the process very simple - just type in the words being spoken (or copy/paste them from the animation's script), then drag the words on top of the sound's waveform until they line up with the proper sounds.

Python 96.74% NSIS 0.28% HTML 2.18% Shell 0.72% QMake 0.07%

papagayo-ng's People

Contributors

andeon avatar blackwarthog avatar dr-ecker avatar evgenijkatunov avatar jensdreske avatar luzpaz avatar mark-collins-voxsio avatar morevnaproject avatar ogallagher avatar pictureelements avatar steveway avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

papagayo-ng's Issues

More Import Plugins for Animation Software

So, Papagayo-NG is getting pretty good.
But to attract users this needs to be integrated in a workflow.
I've created a new save format, .pg2 which saves the project as a json object.
This should be easier to load and integrate into other software.
I've begun creating a script for blender (2.8) that can load these files and populates GreasePencil Objects with Layers and frames.
https://github.com/steveway/PapagayoNGPlugins
This is more of a prove of concept, creates only empty keyframes, has no UI etc...
But look at this filled timeline:
blender_timeline
If anyone wants to extend that and create a real usable blender addon, go ahead.
Plugins for other applications would also be great if anyone wants to help.
EDIT: Moved Code from Gist to its own Repository.

Memory leak?

After accidentally loading a 200 MB mp3 file the app eats 7GB of RAM and makes the computer unresponsive... Perhaps it is a memory leak? I do not know... but I think there should be some kind of protection implemented...

Papagayo version: tested the version with the latest commits.

Operating System: KDE neon 5.19
KDE Plasma Version: 5.19.4
KDE Frameworks Version: 5.72.0
Qt Version: 5.14.2
Kernel Version: 5.3.0-28-generic
OS Type: 64-bit
Processors: 4 × Intel® Core™ i3-5010U CPU @ 2.10GHz
Memory: 15.3 GiB of RAM
Graphics Processor: Mesa DRI Intel® HD Graphics 5500

Appimage: Dragging elements in waveform view do not snap to frames

Dragging elements (phonemes, words, phrases) in waveform view do not snap to frames. Their boundaries stay somewhere in between of frames.
As result, later Papagayo fails to export into .dat file with error:

Traceback (most recent call last):
  File "/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py", line 662, in OnVoiceExport
    self.doc.currentVoice.Export(dlg.GetPaths()[0])
  File "/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncDoc.py", line 363, in Export
    for frame in range(startFrame, endFrame + 1):
TypeError: 'float' object cannot be interpreted as an integer

This happens on Appimage only. Appimage uses wxPhoenix 4.0.0a2.

This doesn't happens when running from source with native ptyhon-wxgtk3.0 package v3.0.2.0 (Ubuntu).

Screenshot (after drag) - notice elements are not aligned with frame marks:
screenshot_002

Save "mood" with sentences/words/phonemes.

It would be quite interesting to save the "mood", like angry, happy, excited or so, to the phonemes.
We could then use that information in the export to choose some more mouths if they exist.
The older export formats can simply ignore this extra information.
Maybe we can add a textbox to enter the mood on the existing right-click menu.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/32751379-save-mood-with-sentences-words-phonemes?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github).

Install latest from source on MacOS

Attempting to do the install from source on MacOS, Coming back to python after a long absense.
Here's what I've done so far from a terminal:

  • run xcode-select --install
  • run brew install openssl
  • run export CFLAGS="-I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include"
  • run export LDFLAGS="-L$(brew --prefix openssl)/lib"
  • run brew install pyenv
  • run brew install pyenv-virtualenv
  • run pyenv install 3.6.8
  • run pyenv virtualenv 3.6.8 papa
  • run pyenv activate papa
  • run git clone https://github.com/morevnaproject/papagayo-ng.git
    Inside the virtualenv:
    • run pip install PySide2 numpy sounddevice wxpython
    • cd into papagayo-ng folder.
    • run python3 papagayo-ng.py

Error: papagayo-ng.py:19: UserWarning: You either don't have wx installed or you are using wxphoenix. Please test this with wx Version 2.8 before reporting errors!
warnings.warn("You either don't have wx installed or you are using wxphoenix. Please test this with wx Version 2.8 before reporting errors!")

The readme doesn't indicated anything about wx, wxpython or wxpheonix. I went ahead and pip installed wxpython, but the error message didnt change. Any ideas?

UPDATE: in a python repl, importing wx and then running wx.version() returns '4.0.4 osx-cocoa (phoenix) wxWidgets 3.0.5'

Please provide AppImage for download

https://sources.morevnaproject.org/ws-software/PapagayoNG is currently empty. This is its HTML source:

<!DOCTYPE html>
<html xmlns:ajxp>
<head>
    <title>Pydio</title>
    <base href="/"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <link rel="stylesheet" type="text/css" href="plugins/gui.ajax/res/themes/orbit/css/allz.css?v=##VERSION_NUMBER##">
    <!--[if IE 8]>
    <script src="plugins/gui.ajax/res/js/vendor/es6/es5-shim.min.js"></script>
    <script src="plugins/gui.ajax/res/js/vendor/es6/es5-sham.min.js"></script>
    <![endif]-->
    <!--[if IE 7]>
    <script src="plugins/gui.ajax/res/js/vendor/es6/json3.min.js"></script>
    <![endif]-->
    <script language="javascript" type="text/javascript" src="plugins/gui.ajax/res/js/jquery_backbone-min.js"></script>

    <script language="javascript" type="text/javascript" src="plugins/gui.ajax/res/js/ajaxplorer_boot.js?v=##VERSION_NUMBER##"></script>
    <link rel="icon" type="image/x-png" href="index.php?get_action=serve_favicon">
</head>
<body style="overflow: hidden;">
<script type="text/javascript">
    window.ajxpNoNotifLoader = true;
    window.ajxpThemeSkipLoaderProgress = true;
    // Initialize booter. Do not remove the commented line AJXP_JSON_START_PARAMETERS, as it is
    // dynamically replaced by the application!
    var ajaxplorer, startParameters = {}, MessageHash={};
    startParameters = {"BOOTER_URL":"index.php?get_action=get_boot_conf","MAIN_ELEMENT":"ajxp_desktop","APPLICATION_ROOT":"\/","REBASE":"\/","EXT_REP":"\/","PRELOADED_BOOT_CONF":{"ajxpResourcesFolder":"plugins\/gui.ajax\/res","ajxpServerAccess":"index.php","zipEnabled":true,"multipleFilesDownloadEnabled":true,"customWording":{"welcomeMessage":"Welcome to Pydio","title":"Pydio","icon":"plugins\/gui.ajax\/res\/themes\/orbit\/images\/LoginBoxLogo.png","iconWidth":"250px","iconHeight":"120px","iconOnly":true,"titleFontSize":""},"usersEnabled":true,"loggedUser":true,"currentLanguage":"es","session_timeout":1440,"client_timeout":1440,"client_timeout_warning":3,"availableLanguages":{"tr":"T&uuml;rk&#231;e","nl":"Nederlands","gr":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac","fi":"Finnish","si":"Sloven\u0161\u010dina","no":"Norwegian","cs":"\u010ce\u0161tina","es":"Espa\u00f1ol","en":"English","ca":"Catalan","pl":"Polski","eus":"Euskaraz","sv":"Svenska","pt-br":"Portugu\u00eas (Brasil)","de":"Deutsch","zh":"\u7b80\u4f53\u4e2d\u6587","ru":"Russian","he":"\u05e2\u05d1\u05e8\u05d9\u05ea","da":"Danish","fr":"Fran\u00e7ais","it":"Italiano","hu":"Hungarian","et":"Estonian","kr":"\ud55c\uad6d\uc5b4","pt":"Portugu\u00eas (Portugal)","ja":"\u65e5\u672c\u8a9e","zh-tw":"\u7e41\u9ad4\u4e2d\u6587"},"usersEditable":true,"ajxpVersion":"##VERSION_NUMBER##","ajxpVersionDate":"##VERSION_DATE##","i18nMessages":{"inbox_driver.1":"Invitation","inbox_driver.1p":"Invitations","inbox_driver.2":"Shared File","inbox_driver.2p":"Shared Files","inbox_driver.3":"Invalid Share","inbox_driver.3p":"Invalid Shares","inbox_driver.4":"pending","inbox_driver.5":"error","inbox_driver.6":"Files shared with me","inbox_driver.7":"These are the standalone files that people have shared with you. Folders are accessible directly via the left panel.","inbox_driver.8":"Quick Filtering","inbox_driver.9":"By file name","inbox_driver.10":"By Type","inbox_driver.11":"Clear","inbox_driver.12":"Shared Files","inbox_driver.13":"Files shared with me by other users","inbox_driver.14":"Copy to a workspace","inbox_driver.15":"Copy file to another of your workspaces","inbox_driver.16":"Total","inbox_driver.17":"New","ajxp_conf.1":"Datos de Configuraci\u00f3n","ajxp_conf.2":"Usuarios y Grupos","ajxp_conf.3":"Carpetas","ajxp_conf.4":"Logs","ajxp_conf.5":"Diagn\u00f3sticos","ajxp_conf.6":"Nombre de Usuario","ajxp_conf.7":"Es Administrador","ajxp_conf.8":"Etiqueta de Carpeta","ajxp_conf.9":"Tipo de Acceso","ajxp_conf.10":"Or\u00edgenes Meta","ajxp_conf.11":"A\u00f1adir un Origen","ajxp_conf.12":"Plugin Meta","ajxp_conf.13":"Seguro que desea eliminar este Origen?","ajxp_conf.14":"Verdadero","ajxp_conf.15":"Falso","ajxp_conf.16":"Fecha de archivo","ajxp_conf.17":"Fecha","ajxp_conf.18":"I.P.","ajxp_conf.19":"Nivel","ajxp_conf.20":"Usuario","ajxp_conf.21":"Acci\u00f3n","ajxp_conf.22":"Par\u00e1metros","ajxp_conf.22a":"Mas Par\u00e1metros","ajxp_conf.23":"Nombre de prueba","ajxp_conf.24":"Datos de prueba","ajxp_conf.25":"Acceso a Carpetas","ajxp_conf.26":"Modificar contrase\u00f1a","ajxp_conf.27":"Administrar privilegios","ajxp_conf.28":"El usuario tiene privilegios de administrador?","ajxp_conf.29":"Leer","ajxp_conf.30":"Escribir","ajxp_conf.32":"Controlador de Acceso","ajxp_conf.33":"Cargando...","ajxp_conf.34":"Seguro que desea eliminar este usuario? Esta operaci\u00f3n no es reversible!","ajxp_conf.35":"Seguro que desea eliminar esta carpeta? Esta operaci\u00f3n no es reversible!","ajxp_conf.36":"Faltan campos obligatorios!","ajxp_conf.37":"Atenci\u00f3n, las contrase\u00f1as no coinciden!","ajxp_conf.38":"Por favor rellene el campo de login!","ajxp_conf.39":"Por favor rellene los dos campos de contrase\u00f1a!","ajxp_conf.40":"Por favor marque la casilla para confirmar!","ajxp_conf.41":"Opciones de Controlador","ajxp_conf.42":"Por favor elija un Controlador!","ajxp_conf.43":"El usuario ya existe, por favor elija otro login!","ajxp_conf.44":"Usuario creado correctamente","ajxp_conf.45":"Cambiados el privilegio de administrador del usuario ","ajxp_conf.46":"Cambiados privilegios del usuario ","ajxp_conf.47":"Salvados los datos del usuario ","ajxp_conf.48":"Contrase\u00f1a cambiada correctamente para el usuario ","ajxp_conf.49":"La contrase\u00f1a no se puede actualizar","ajxp_conf.50":"Error: ya existe una carpeta con ese nombre","ajxp_conf.51":"No puede escribirse en el directorio CONF","ajxp_conf.52":"Carpeta creada correctamente! Ahora puede a\u00f1adir metadatos para completar la informaci\u00f3n, a\u00f1adir \u00edndices autom\u00e1ticos, etc","ajxp_conf.53":"Error editando la carpeta","ajxp_conf.54":"Carpeta editada correctamente","ajxp_conf.55":"Atenci\u00f3n, en este momento solo puede a\u00f1adir una instacia de cada plugin.","ajxp_conf.56":"Origen de meta a\u00f1adido satisfactoriamente","ajxp_conf.57":"Origen de meta bottado correctamente","ajxp_conf.58":"Origen de meta editado correctamente","ajxp_conf.59":"Carpeta borrada correctamente","ajxp_conf.60":"Usuaro borrado correctamente","ajxp_conf.61":"Argumentos err\u00f3neos!","ajxp_conf.62":"Sumario de Privilegios","ajxp_conf.63":"Todos","ajxp_conf.64":"Cambiados los privilegios del rol ","ajxp_conf.65":"El rol ya existe, elija otro nombre!","ajxp_conf.66":"Rol creado correctamente","ajxp_conf.67":"No puede encontrarse el rol ","ajxp_conf.68":"Rol borrado correctamente","ajxp_conf.69":"Roles","ajxp_conf.70":"Roles de usuario","ajxp_conf.71":"Roles disponibles","ajxp_conf.72":"Arrastre y suelte roles para asignarlos al usuario","ajxp_conf.73":"Rol a\u00f1adido al usuario ","ajxp_conf.74":"Rol borrado del usuario ","ajxp_conf.75":"Nuevo Rol","ajxp_conf.role_access":"o","ajxp_conf.76":"ID de rol","ajxp_conf.77":"Control de Acceso","ajxp_conf.78":"Datos Personales","ajxp_conf.79":"Carpeta","ajxp_conf.80":"Ajustes detallado de este usuario (pulse en una carpeta si quiere configurarla para que \u00e9sta se abra por defecto cuanco el usuario inicie sesi\u00f3n)","ajxp_conf.81":"Datos espec\u00edficos de carpeta","ajxp_conf.82":"Editar usuarios por lotes","ajxp_conf.83":"Arrastre y suelte roles para aplicarlos a todos los usuarios seleccionados (los derechos de usuario se omitir\u00e1n)","ajxp_conf.84":"Roles de usuario","ajxp_conf.85":"Filtrado manual de acciones","ajxp_conf.86":"Lista de acciones (separadas por coma) que ser\u00e1n deshabilitadas en este rol sin importar los derechos de acceso.","ajxp_conf.87":"Acciones para este rol actualizadas correctamente","ajxp_conf.88":"Esta carpeta est\u00e1 definida en el fichero de configuraci\u00f3n, no puede editar sus or\u00edgentes meta desde el interface gr\u00e1fico.","ajxp_conf.89":"Datos espec\u00edficos del usuario","ajxp_conf.90":"Repositorio","ajxp_conf.91":"Plantilla","ajxp_conf.92":"Crear una nueva plantilla","ajxp_conf.93":"Editar","ajxp_conf.94":"Editar por lotes","ajxp_conf.95":"Elija una etoqueta y un controlador para acceder a los datos (compruebe todos las secciones para campos obligatorios, puede posicionar el cursor del rat\u00f3n sobre la etiqueta para obtener m\u00e1s informaci\u00f3n).","ajxp_conf.96":"Cuando seleccione una etiqueta y un controlador, active los campos que quiera que se rellenen autom\u00e1ticamente en la plantilla. Los otros campos ser\u00e1n preguntados al usuario. Puede activar algunos campos y dejarlos vac\u00edos si quiere que queden ocultos para el usuario.","ajxp_conf.repository_access_key":"N","ajxp_conf.97":"Opciones del plugin actualizadas correctamente","ajxp_conf.98":"Configuraciones del n\u00facleo","ajxp_conf.99":"Plugins","ajxp_conf.100":"Opciones comunes de los plugins '%s'","ajxp_conf.101":"Nombre","ajxp_conf.102":"Identificador","ajxp_conf.103":"Descripci\u00f3n","ajxp_conf.104":"Habilitado","ajxp_conf.105":"Comprobaciones autom\u00e1ticas","ajxp_conf.106":"Identificador \u00fanico","ajxp_conf.107":"Configuraciones del plugin","ajxp_conf.108":"Documentaci\u00f3n","ajxp_conf.109":"Configuraciones globales","ajxp_conf.110":"Carpetas y Usuarios","ajxp_conf.111":"Log y otros datos","ajxp_conf.112":"<b>Aplicar este rol por defecto<\/b> para todos los usuarios nuevos.","ajxp_conf.113":"El estado del rol ha sido modificado correctamente","ajxp_conf.114":"Aplicar a ","ajxp_conf.115":"Esquema","ajxp_conf.116":"Etiqueta de la plantilla","ajxp_conf.117":"Controlador de la plantilla","ajxp_conf.118":"Nuevo grupo","ajxp_conf.group_access":"g","ajxp_conf.119":"Fijar grupo de usuario","ajxp_conf.120":"Go Pro","ajxp_conf.121":"Get professional support for your install","ajxp_conf.122":"All Settings","ajxp_conf.123":"Other plugins","ajxp_conf.124":"Source","ajxp_conf.125":"Alias","ajxp_conf.126":"Are you sure that you want to delete the selected element(s)?","ajxp_conf.127":"Warning, please do not use special characters, user would be created with login id '%s'","ajxp_conf.128":"Successfully deleted group","ajxp_conf.129":"Refresh plugins cache","ajxp_conf.130":"Clear plugins cache, can be necessary to see new plugins appear in the list.","ajxp_conf.131":"Plugins cache files were deleted succesfully!","ajxp_conf.132":"Cache cleared, but you are currently running in SKIP_CACHE mode (see bootstrap_context.php).","ajxp_conf.133":"Core application parameters","ajxp_conf.134":"Enable\/disable additional feature-oriented plugins, check if they are correctly working, set up global parameters of the plugins.","ajxp_conf.135":"Enable\/disable core plugins (auth, conf, mail, etc), check if they are correctly working. Configuration of these plugins are generally done through the Main Options","ajxp_conf.136":"Global configurations of the application core and of each plugin. Enable\/disable plugins","ajxp_conf.137":"Day-to-day administration of the application : who accesses to what, create roles, etc.","ajxp_conf.138":"Create and delete workspaces, add features to them using meta sources.","ajxp_conf.139":"Manage users and groups","ajxp_conf.140":"Define profiles that can be applied at once to whole bunch of users.","ajxp_conf.141":"Administrator tasks to monitor the application state.","ajxp_conf.142":"Monitor all activities happening on the server","ajxp_conf.143":"Read the start-up diagnostic","ajxp_conf.144":"Developer Resources","ajxp_conf.145":"Generated documentations for developers","ajxp_conf.146":"Actions API","ajxp_conf.147":"List all actions contributed by all plugins and visualize their input parameters","ajxp_conf.148":"Hooks Definitions","ajxp_conf.149":"List all hooks triggered in the application, their documentation, where there are triggered and which plugin listen to them.","ajxp_conf.150":"Select a repository","ajxp_conf.151":"Root Group","ajxp_conf.152":"Root Group Role","ajxp_conf.153":"Applies to the whole hierarchy of users","ajxp_conf.154":"Repository Templates","ajxp_conf.155":"Access Drivers","ajxp_conf.156":"Standard","ajxp_conf.157":"Administrator","ajxp_conf.158":"Shared","ajxp_conf.159":"Guest","ajxp_conf.160":"Group was successfully created","ajxp_conf.161":"You are attempting to move yourself inside a group, and you will loose super-admininistrative rights. Please login as another user if you really want to do that. Aborting.","ajxp_conf.162":"You are not authorized to update user %s","ajxp_conf.163":"Roles reordered for user %s","ajxp_conf.164":"Successfully updated roles","ajxp_conf.165":"Successfully saved user preferences","ajxp_conf.166":"Successfully set lock (%1) on user (%2)","ajxp_conf.167":"Successfully unlocked user (%s)","ajxp_conf.168":"%1 users were moved to group %2","ajxp_conf.169":"No users were moved, there must have been something wrong!","user_dash.1":"Usuarios compartidos","user_dash.2":"Repositorios compartidos","user_dash.3":"Archivos p\u00fablicos","user_dash.4":"Camino del archivo","user_dash.5":"Repositorio","user_dash.6":"Contrase\u00f1a","user_dash.7":"Caduca","user_dash.8":"Elementos","user_dash.9":"Usuarios asociados","user_dash.10":"Repositorios asociados","user_dash.11":"\u00bfEst\u00e1 seguro de que quiere borrar los elementos selecionados?","user_dash.12":"No tiene permiso para borrar este elemento.","user_dash.13":"Se ha borrado el archivo p\u00fablico.","user_dash.14":"Integridad","user_dash.15":"Ok","user_dash.16":"Roto","user_dash.17":"Descargar URL","user_dash.18":"Copiar URL","user_dash.19":"Copiar URL para enviar email.","user_dash.20":"Descargas","user_dash.21":"Si","user_dash.22":"No","user_dash.23":"Se han borrado %s archivos.","user_dash.24":"Nada para borrar.","user_dash.25":"Limpiar caducados","user_dash.26":"Borra archivos caducados.","user_dash.27":"Due\u00f1o","user_dash.28":"Archivos compartidos para descargas directas, con o sin contrase\u00f1a.","user_dash.29":"Repositorios delegados creados por usuarios.","user_dash.30":"Usuarios creados para acceder a repositorios delegados.","user_dash.31":"Descripci\u00f3n","user_dash.32":"Resetear","user_dash.33":"Resetear el contador de descargas","user_dash.title":"Mi cuenta","user_dash.desc":"Administra mis preferencias, mi libreta de direcciones, mis elementos compartidos, etc.","user_dash.34":"Mis comparticiones","user_dash.35":"Todos mis elementos compartidos (archivos y carpetas)","user_dash.36":"Par\u00e1metros","user_dash.37":"Mi perfil y ajustes de la aplicaci\u00f3n","user_dash.38":"Notificaciones","user_dash.39":"Seleccione un repositorio","user_dash.40":"Bienvenido\/a, %s","user_dash.41":"Usar este repositorio por defecto","user_dash.42":"Entrar","user_dash.43":"Mi perfil","user_dash.43t":"Todos mis datos personales","user_dash.44":"Mi cuenta","user_dash.45":"Datos personales","user_dash.46":"Libreta de direcciones","user_dash.47":"Usuarios y equipos que ha creado","user_dash.48":"Mis usuarios","user_dash.49":"Usuarios externos que ha creado","user_dash.50":"Mis equipos","user_dash.51":"Equipos de usuarios, usados como accesos directos al compartir","user_dash.52":"\u00bfEst\u00e1 seguro que desea eliminar este equipo? Esta acci\u00f3n no eliminar\u00e1 ning\u00fan usuario.","user_dash.53":"Volver a mis repositorios","user_dash.54":"Actualizar miembros","user_dash.55":"Agregar\/quitar usuarios de este equipo","user_dash.56":"Agregar un usuario por linea, escriba en el \u00e1rea de texto para ver aparecer la lista de autocompletado.","user_dash.57":"Crear un equipo","user_dash.58":"Los equipos se utilizan como acceso directo para compartir r\u00e1pidamente una carpeta con un conjunto predefinido de usuarios","user_dash.59":"Etiqueta del equipo","user_dash.60":"Usuarios del equipo","wms.1":"Nombre","wms.2":"T\u00edtulo","wms.3":"Consultable","wms.4":"Estilo","wms.5":"Pal\u00e1bras Clave","wms.6":"Proyecci\u00f3n","user_home.title":"Inicio","user_home.desc":"P\u00e1gina de bienvenida","user_home.39":"Seleccione un repositorio","user_home.40":"Bienvenido\/a, %s","user_home.41":"Usar este repositorio por defecto","user_home.42":"Entrar","user_home.43":"Mi perfil","user_home.43t":"Todos mis datos personales","user_home.44":"Mi cuenta","user_home.45":"Datos personales","user_home.46":"Libreta de direcciones","user_home.47":"Usuarios y equipos que ha creado","user_home.48":"Mis usuarios","user_home.49":"Usuarios externos que ha creado","user_home.50":"Mis equipos","user_home.51":"Equipos de usuarios, usados como accesos directos al compartir","user_home.52":"\u00bfEst\u00e1 seguro de que desea eliminar este equipo? Esta acci\u00f3n no eliminar\u00e1 ning\u00fan usuario.","user_home.53":"Empezando","user_home.54":"Comience con Pydio siguiendo estos videos How-to","user_home.55":"\u00bfNecesita ayuda para <a>empezar?<\/a>","user_home.56":"\u00bfPrimeros pasos con Pydio? \u00a1Aqu\u00ed tiene algunos videos!","user_home.57":"Descargar Pydio para...","user_home.58":"Android","user_home.59":"iPhone\/iPad","user_home.60":"Mac OS (Beta)","user_home.61":"Windows (Beta)","user_home.62":"<h2>Empezando<\/h2>\n            Este video es una introducci\u00f3n a la aplicaci\u00f3n web Pydio :\n            <ul>\n                <li>Cuadro de mandos del usuario<\/li>\n                <li>Descripci\u00f3n del interfaz gr\u00e1fico<\/li>\n                <li>Administrando ficheros y carpetas<\/li>\n                <li>Previsualizando y editando ficheros<\/li>\n                <li>Acceso r\u00e1pido mediante marcadores y motor de b\u00fasqueda<\/li>\n                <li>Cesta de selecci\u00f3n<\/li>\n            <\/ul>","user_home.63":"<h2>Compartiendo ficheros usando Pydio<\/h2>\n            En este tutorial vamos a cubrir los puntos b\u00e1sicos para el intercambio de ficheros con Pydio:\n\t\t\t<ul>\n\t\t\t\t<li>Crear enlaces web<\/li>\n\t\t\t\t<li>Enviarlos a usuarios internos o externos<\/li>\n\t\t\t\t<li>Obtener notificaciones cuando un enlace ha sido descargado<\/li>\n\t\t\t\t<li>Crear un enlace con protecci\u00f3n por contrase\u00f1a<\/li>\n\t\t\t\t<li>Crear m\u00e1s de un enlace para un solo archivo<\/li>\n\t\t\t\t<li>Detener completamente la compartici\u00f3n de un fichero<\/li>\n\t\t\t<\/ul>","user_home.64":"<h2>Compartiendo carpetas usando Pydio<\/h2>\n            Este video muestra las diversas maneras de compartir carpetas en Pydio\n            <ul>\n            <li>Compartir como un nuevo repositorio<\/li>\n\t\t\t<li>Compartir como un minisitio p\u00fablico<\/li>\n            <\/ul>","user_home.65":"\u00a1Descubre m\u00e1s en el canal de Pydio!","user_home.66":"<h2>Usar Pydio en dispositivos iOS<\/h2>\n            Este video muestra como usar la aplicaci\u00f3n Pydio (disponible en el App Store). El proceso es bastante similar en Android.\n\t\t\t<ul>\n\t\t\t\t<li>Configurar la conexi\u00f3n del servidor<\/li>\n\t\t\t\t<li>Navegar a trav\u00e9s de los ficheros<\/li>\n\t\t\t\t<li>Mantener los archivos fuera de l\u00ednea y la interacci\u00f3n con aplicaciones externas<\/li>\n\t\t\t\t<li>Protegiendo la aplicaci\u00f3n mediante un c\u00f3digo PIN<\/li>\n\t\t\t\t<li>Usando marcadores y el motor de b\u00fasqueda<\/li><\/ul>","user_home.67":"\u00bfNo eres %s? %logout","user_home.68":"Download Sync Client for Windows","user_home.69":"Download Sync Client for Mac OSX","user_home.70":"Native application for iOS devices","user_home.71":"Native application for Android Devices","user_home.72":"Server QRCode","user_home.73":"Easily connect your mobile applications","user_home.74":"Scan this QRCode with your mobile application to easily configure the connection","user_home.75":"Search all files...","user_home.76":"Access the %1 through the top-right menu","user_home.77":"admin dashboard","user_home.78":"Pick a target workspace","sql.1":"Crear Tabla","sql.2":"Escriba sy consulta SQL aqu\u00ed","sql.3":"Consultar","sql.4":"Limpiar","jsapi.1":"Classes and Interfaces","jsapi.2":"Properties and Methods","jsapi.3":"Source File","httpdownloader.1":"Descarrga remota","httpdownloader.2":"Descargar fichero(s) desde servidor remoto","httpdownloader.3":"m","httpdownloader.4":"Introduzca al menos una URL apuntando a un fichero que quiera descargar directamente a esta carpeta. Esta acci\u00f3n se ejecutar\u00e1 en segundo plano y podr\u00e1 seguir usando la aplicaci\u00f3n durante la descarga.","httpdownloader.5":"URL","httpdownloader.6":"Descargando","httpdownloader.7":"al servidor","httpdownloader.8":"Fichero descargado, actualizando el cliente!","httpdownloader.9":"Generando marcador","httpdownloader.10":"Descargar a la aplicaci\u00f3n","httpdownloader.10a":"Descargar a %s","httpdownloader.10b":"Descargar a %s","httpdownloader.10c":"Descargar a %s","httpdownloader.10d":"Descarga (%s)","httpdownloader.11":"Arrastre y suelte uno de los siguientes enlaces a su barra de marcadores : ","httpdownloader.12":"Trigger remote file download","httpdownloader.13":"Desde el ordenador","httpdownloader.14":"Desde un servidor remoto","httpdownloader.15":"O cree un marcador manualmente y ese el c\u00f3digo siguiente como la URL de enlace : ","httpdownloader.16":"Arr\u00e1streme sobre su barra de marcadores!","httpdownloader.17":"Descargarfichero","httpdownloader.18":"Fichero parcial","html_uploader.1":"%s files queued for upload","html_uploader.2":"Uploading %s files","html_uploader.3":"You are not allowed to upload this file here","html_uploader.4":"Pick File","html_uploader.5":"Pick Folder","html_uploader.6":"Cannot abort folder creation","html_uploader.7":"Uploading files to server...","html_uploader.8":"It seems that your browser does not support dropping folders","html_uploader.9":"","html_uploader.10":"","html_uploader.11":"Start","html_uploader.12":"Clear list","html_uploader.13":"Folder created","html_uploader.14":"Processing","html_uploader.15":"Pending","html_uploader.16":"Processed","html_uploader.17":"Show\/hide processed files","html_uploader.18":"If a file with the same name exists:","html_uploader.19":"Stop upload and alert me","html_uploader.20":"Rename file automatically","html_uploader.21":"Overwrite existing file silently","ajxp_repository_editor.1":"Workspace Editor","ajxp_repository_editor.2":"Workspace editor","ajxp_repository_editor.3":"Driver Options","ajxp_repository_editor.4":"Workspace Features","ajxp_repository_editor.5":"Select feature","ajxp_repository_editor.6":"Edit parameters","ajxp_repository_editor.7":"Use the selector below to activate plugins that will add more functionnalities to the workspace. Don't forget to click on the Add a Source button to apply your changes.","ajxp_repository_editor.8":"Click on a plugin to edit its parameters, or simply remove the feature","ajxp_repository_editor.9":"%s Plugins","ajxp_repository_editor.10":"Meta Sources","ajxp_repository_editor.11":"Add a source","ajxp_repository_editor.12":"Meta Plugin","ajxp_repository_editor.13":"Are you sure you want to delete this source?","ajxp_repository_editor.14":"Please choose a driver!","ajxp_repository_editor.15":"This workspace is defined in the config file (see conf\/bootstrap_repositories.php), you cannot edit its features via the GUI.","ajxp_repository_editor.16":"Shares","ajxp_repository_editor.17":"Workspace additional features","ajxp_repository_editor.18":"Shared Files and Folders from this workspace","ajxp_repository_editor.19":"No parameters","ajxp_repository_editor.20":"No parameters for this plugin","ajxp_repository_editor.21":"Add a feature to this workspace","code_mirror.1":"Source Editor","code_mirror.2":"CodeMirror Syntax Highlighter","code_mirror.3":"Wrapping","code_mirror.3b":"Toggle lines wrapping","code_mirror.4":"Numbers","code_mirror.5":"Toggle lines numbers","code_mirror.6":"Jump to line","code_mirror.7":"Undo","code_mirror.8":"Redo","code_mirror.9":"Text Search","code_mirror.10":"Indent size","webodf.2":"Open Documents Viewer","webodf.3":"Open Documents Viewer","sm_editor.1":"Sound Volume","sm_editor.2":"Sound Player","openlayer.1":"Mapa OpenLayers","openlayer.2":"Filro","openlayer.3":"Posici\u00f3n","openlayer.4":"Capas","openlayer.5":"Antialias","openlayer.6":"Formato","openlayer.7":"Estilos","openlayer.8":"Filtrar","openlayer.9":"Buscar","openlayer.10":"Limpiar","openother.1":"Elegir otro...","openother.2":"Elegir otro editor","openother.3":"Elija otro editor para abrir este fichero","openother.4":"Atenci\u00f3n, estos editores no parecen soportar este tipo de archivos, su comportamiento puede ser impredecible!","openother.5":"Borrar las asociaciones existentes","etherpad.1":"Collaboration board","etherpad.1b":"Create or join an empty collaboration pad","etherpad.2":"Collaborative Editor","etherpad.3":"Real-time collaborative edition","etherpad.4":"Join an existing board or create a new one: ","etherpad.5":"Free boards","etherpad.6":"Files","etherpad.7":"Join","etherpad.8":"Board name","etherpad.9":"You can also create <a>new discussion board<\/a>","etherpad.10":"Export","video_editor.1":"Media Player","graphs_viewer.1":"Analytics","graphs_viewer.2":"Analytics Graphs Viewer","ajxp_datagrid.1":"Data Grid","ajxp_datagrid.2":"Spreadsheet-like visualizer","ajxp_plugin_editor.1":"Plugin Editor","ajxp_plugin_editor.2":"Plugin editor","ajxp_plugin_editor.3":"Options","ajxp_plugin_editor.4":"Documentation","ajxp_plugin_editor.5":"Select feature","ajxp_plugin_editor.6":"Edit parameters","ajxp_plugin_editor.7":"Use the selector below to activate plugins that will add more functionnalities to the workspace.","ajxp_plugin_editor.8":"Click on a plugin to edit its parameters, or simply remove the feature","ajxp_plugin_editor.9":"%s Plugins","ajxp_plugin_editor.10":"Meta Sources","ajxp_plugin_editor.11":"Add a source","ajxp_plugin_editor.12":"Meta Plugin","ajxp_plugin_editor.13":"Are you sure you want to delete this source?","ajxp_plugin_editor.14":"Please choose a driver!","ajxp_plugin_editor.15":"This workspace is defined in the config file (see conf\/bootstrap_repositories.php), you cannot edit its features via the GUI.","openbrowser.1":"Nueva ventana","openbrowser.2":"Navegador en nueva ventana","openbrowser.3":"Abriendo el fichero en una ventana externa, espere por favor, esta ventana se cerrar\u00e1 autom\u00e1ticamente.","openbrowser.4":"Nuevo marcador URL","openbrowser.5":"De manera alternativa, puede <a>crear un nuevo marcador a una URL<\/a>","openbrowser.6":"Introduzca una URL empezando por http\/https","openbrowser.7":"Marcador URL","openbrowser.8":"Introduzca una etiqueta para este marcador","editor.exif.1":"Lector Exif","editor.exif.2":"Visualizar datos Exif","pdf_viewer.1":"PDF Viewer","pdf_viewer.2":"JavaScript PDF viewer","editor.eml.name":"Email Viewer","editor.eml.title":"Email Viewer","editor.eml.1":"From","editor.eml.2":"To","editor.eml.3":"Subject","editor.eml.4":"Date","editor.eml.5":"Attachments","editor.eml.6":"Download EML","editor.eml.7":"Attachment %s was successfully copied to %s","editor.eml.8":"Could not open destination file!","editor.eml.9":"Could not find attachment!","editor.eml.10":"Download ","editor.eml.11":"Copy attachment on the server","editor.eml.12":"Cc","libreoffice.1":"Libre Office Documents","libreoffice.2":"Libre Office External browser window","libreoffice.10":"Create an empty document","libreoffice.11":"Document Format","libreoffice.12":"You can also <a>create an empty document<\/a>","libreoffice.13":"Untitled Document","libreoffice.14":"The document was created, you can now edit it","libreoffice.15":"Unknown document format","libreoffice.ext.doc":"Microsoft Word 97\/2000\/XP\/2003","libreoffice.ext.docx":"Microsoft Word 2007\/2010\/2013 XML","libreoffice.ext.odt":"ODF Text Document","libreoffice.ext.rtf":"Rich Text","libreoffice.ext.odg":"ODF Drawing","libreoffice.ext.ppt":"Microsoft PowerPoint 97\/2000\/XP\/2003","libreoffice.ext.pptx":"Microsoft PowerPoint 2007\/2010\/2013 XML","libreoffice.ext.odp":"ODF Presentation","libreoffice.ext.xls":"Microsoft Excel 97\/2000\/XP\/2003","libreoffice.ext.ods":"ODF Spreadsheet","libreoffice.ext.xlsx":"Microsoft Excel 2007\/2010\/2013 XML","ajxp_role_editor.1":"Role Editor","ajxp_role_editor.2":"Role editor","ajxp_role_editor.3":"Account Info","ajxp_role_editor.4":"ACL","ajxp_role_editor.5":"Actions","ajxp_role_editor.6":"Parameters","ajxp_role_editor.7":"Internal Data","ajxp_role_editor.8":"Personal information","ajxp_role_editor.9":"Select the workspaces to which the use with this role will have access. Use the 'Deny' value to either override a value set by a previous role, or definitely deny the access to this workspace even to inherited roles.","ajxp_role_editor.10":"Use the selectors below to select the actions you want to disabled for the users of this role. You can choose to disable the action for all repositories, or for a given workspace only.","ajxp_role_editor.11":"Plugin Identifier","ajxp_role_editor.12":"Select a plugin...","ajxp_role_editor.12a":"Select an action...","ajxp_role_editor.12b":"Select a parameter...","ajxp_role_editor.12c":"Pick one or all workspaces...","ajxp_role_editor.12d":"All Workspaces","ajxp_role_editor.12e":"Shared Workspaces","ajxp_role_editor.13":"Action name","ajxp_role_editor.14":"Repository Scope","ajxp_role_editor.15":"Add Action","ajxp_role_editor.16":"Use the selectors below to select the parameters you want to refine for the users of this role. Can be applied to all or one given workspace only, although this may depend on the plugin context.","ajxp_role_editor.17":"Parameter name","ajxp_role_editor.18":"Add parameter","ajxp_role_editor.19":"There are unsaved changes, are you sure you want to close?","ajxp_role_editor.20":"Role updated successfully","ajxp_role_editor.21":"User ID","ajxp_role_editor.22":"Special Profile","ajxp_role_editor.23":"Default Repository","ajxp_role_editor.24":"User Roles","ajxp_role_editor.25":"Change Password","ajxp_role_editor.26":"Lock out user","ajxp_role_editor.27":"Reactivate user","ajxp_role_editor.28":"Force password change","ajxp_role_editor.28b":"Cancel password change","ajxp_role_editor.29":"Enter new password for this user","ajxp_role_editor.30":"Confirm","ajxp_role_editor.31":"Role ID","ajxp_role_editor.32":"Role Label","ajxp_role_editor.33":"Apply automatically to users with profile...","ajxp_role_editor.34":"Group ID","ajxp_role_editor.35":"Group Label","ajxp_role_editor.36":"locked","ajxp_role_editor.37":"Deny","ajxp_role_editor.38":"inherited","ajxp_role_editor.39":"Disable","ajxp_role_editor.40":"Enable","ajxp_role_editor.41":"Remove","ajxp_role_editor.42":"Role custom data","ajxp_role_editor.43":"Select one or more","ajxp_role_editor.44":"Plugins Parameters Fine-tuning","ajxp_role_editor.45":"Access Control List","ajxp_role_editor.46":"Disabled Actions","zoho_editor.1":"Office Documents","zoho_editor.2":"Preview and edit office documents online","zoho_editor.3":"Word Document","zoho_editor.4":"Presentation Document","zoho_editor.5":"Spreadsheet Document","action.quicksend.1":"Quick Send","action.quicksend.2":"Send a file, share it and email the link at once","action.quicksend.3":"Select a file","action.quicksend.4":"Click to select a file, or drop it in the zone below","disclaimer.1":"Excenci\u00f3n de responsabilidad","disclaimer.2":"Aceptar excenci\u00f3n de responsabilidad","disclaimer.3":"Debe aceptar las condiciones de uso generales indicadas a continuaci\u00f3n. Por favor, lea y utilice la casilla para aceptar.","disclaimer.4":"Acepto las condiciones de uso","skeleton.1":"External Link","skeleton.2":"Link added by the action.skeleton plugin","skeleton.3":"Are you sure that you want to open %s in a new window?","skeleton.4":"Modal Link","skeleton.5":"Open the link in a modal dialog","skeleton.6":"Dynamic content","skeleton.7":"Loading content, please wait...","compression.1":"Compress","compression.2":"Compress Selection","compression.3":"Select the format of the archive:","compression.4":"Archive's name :","compression.5":"Starting compression...","compression.6":"Adding files in the archive... %s ","compression.7":"During compression in %s ...","compression.8":"Your archive finished successfully !!","compression.9":"Extract","compression.10":"Extract selected archives","compression.11":"Path of the extracted files ","compression.12":"Starting extraction...","compression.13":"Extracting files ... %s ","compression.14":"Extraction finished successfullly in the folder '%s'.","compression.15":"The selected file is neither a TAR  or a TAR.GZ or a TAR.BZ2 archive.","compression.16":"You can only compress in TAR, TAR.GZ or TAR.BZ2.","compression.17":"You can't compress empty folders.","download_deps.1":"Download with deps","download_deps.2":"Download file with all dependencies","updater.1":"Upgrade","updater.2":"Automatic Software Upgrade","updater.3":"Click on the button to start upgrading. Please make sure that the software folder is installed before starting. If you have a 'Linux Package' warning, it means that update cannot be performed in-app but that you must use your server yum\/apt-get command.","updater.4":"Start update","updater.5":"From 3.2.4","updater.6":"Import configuration data from 3.2.4","updater.7":"Simulate the data import","updater.8":"Enter full path (from server root) to the previous location, then run the simulation","updater.9":"Run real import now","updater.10":"This is a 'dry-run'. Please review the logs of all actions that will be performed, and if it's ok for you press 'Run real import now'","updater.11":"Migrate meta.serial","updater.12":"Old meta.serial plugin was removed and split into metastore.serial and meta.user","updater.13":"Simulate migration","updater.14":"Run migration now","updater.15":"Are you sure that you want to perform the upgrade?","updater.16":"The following packages will be downloaded and installed.","updater.17":"Checking for available upgrades...","updater.18":"No necessary upgrade detected: click to perform a new check.","updater.19":"Click to check for new upgrade","updater.20":"Check now","updater.21":"Currently in development mode.","updater.22":"Current version is %1 (%2).","share_center.1":"%s Descarga P\u00fablica","share_center.2":"Haz clic en la imagen para descargar %s a tu disco duro","share_center.3":"Contrase\u00f1a incorrecta","share_center.4":"Introduce la contrase\u00f1a correcta y haz clic en la imagen para descargar %s a tu disco duro","share_center.5":"contrase\u00f1a","share_center.6":"Dejar de compartir","share_center.7":"Dejar de compartir no eliminar\u00e1 el fichero. Si quieres cambiar los par\u00e1metros, recomparte el fichero.","share_center.8":"Fichero compartido","share_center.9":"Usa este bot\u00f3n para dejar de compartir esta carpeta","share_center.10":"Carpeta compartida","share_center.11":"Expiraci\u00f3n","share_center.12":"Contrase\u00f1a","share_center.13":"S\u00ed","share_center.14":"No","share_center.15":"El fichero fue descargado %s veces","share_center.16":"reiniciar","share_center.17":"Clic para reiniciar contador de descargas","share_center.18":"Carpeta compartida como un nuevo repositorio","share_center.19":"Las opciones del repositorio compartido fueron modificadas","share_center.20":"Ooops, el fichero requerido no fue encontrado. Tal vez fue eliminado o ya no est\u00e1 compartido.","share_center.21":"Caducidad (en d\u00edas): ","share_center.22":"Descargas permitidas: ","share_center.21b":"Expired on","share_center.22b":"No more downloads","share_center.23":"Contrase\u00f1a opcional: ","share_center.24":"Establezca l\u00edmite de descargas y expiraci\u00f3n para el acceso al fichero.","share_center.25":"Sin l\u00edmites","share_center.26":"Elija usuarios o grupos y ajuste sus derechos de acceso. 'Escribir' crear\u00e1 un repositorio \u00fanicamente para cargas.","share_center.27":"Compartir fichero","share_center.28":"Compartir carpeta","share_center.29":"Enlace p\u00fablico","share_center.30":"Accesos de usuario","share_center.31":"Leer","share_center.32":"Escribir","share_center.33":"Ver","share_center.34":"Existente o nuevo usuarios","share_center.35":"Nombre","share_center.36":"Los usuarios con los que ha compartido ver\u00e1n la carpeta como un nuevo repositorio con el siguiente nombre.","share_center.37":"Confirmar","share_center.38":"Ver el contenido de esta carpeta","share_center.39":"Ver la actividad de este fichero","share_center.40":"Invitaciones","share_center.41":"Env\u00eda invitaciones por correo electr\u00f3nico a los usuarios con los que ha compartido este elemento.","share_center.42":"Un usuario de %s est\u00e1 compartiendo este enlace contigo","share_center.43":"Un usuario de %s est\u00e1 compartiendo esta carpeta contigo","share_center.44":"%s Compartir","share_center.45":"Enviar invitaci\u00f3n","share_center.46":"Abrir el repositorio %s1 directamente en %s2","share_center.47":"Estado de visualizaci\u00f3n actualizado correctamente","share_center.48":"No se le permite acceder a estos datos","share_center.49":"crear usario","share_center.50":"Elemento compartido","share_center.51":"Descargado","share_center.52":"Configuraci\u00f3n","share_center.53":"ninguno","share_center.54":"Con...","share_center.55":"Compartido...","share_center.56":"Configure intercambio...","share_center.57":"veces","share_center.58":"Por favor seleccione al menos un permiso!","share_center.59":"P\u00e1gina de descargas","share_center.60":"Enlace de Descarga Directa","share_center.61":"C\u00f3digo HTML incrustado","share_center.62":"Direcci\u00f3n de minisitio","share_center.63":"Nueva carpeta","share_center.64":"Para usuarios internos y externos, la carpeta aparecer\u00e1 como una nueva en la lista de carpetas del usuario.","share_center.65":"Minisitio p\u00fablico (no se requiere identificaci\u00f3n)","share_center.66":"Para usuarios externos la carpeta aparecer\u00e1 como una nueva direcci\u00f3n p\u00fablica en su lista de carpetas.","share_center.67":"Minisitio privado (se requiere identificaci\u00f3n)","share_center.68":"Para usuarios internos o externos la carpeta aparecer\u00e1 como una nueva direcci\u00f3n en su lista de carpetas, pero se requerir\u00e1 identificaci\u00f3n de usuario","share_center.69":"Configure el Minisitio","share_center.70":"Use las casillas de verificaci\u00f3n para conceder permisos a esta carpeta para el p\u00fablico. Si selecciona solamente 'Cargar' esta carpeta aparecer\u00e1 vac\u00eda para que los usuarios puedan dejar ficheros en ella.","share_center.69r":"Configure el Minisitio","share_center.70r":"Etiquetas y permisos asginados a usuarios que acceden al minisitio","share_center.71":"Permisos","share_center.72":"Previsualizar","share_center.73":"Descargar","share_center.74":"Cargar","share_center.74b":"Edit","share_center.75":"Por favor use un n\u00famero positivo para Caducidad y L\u00edmite de Descargas.","share_center.76":"Por favor, habilite las cookies para acceder a esta aplicaci\u00f3n","share_center.77":"Por favor, habilite JavaScript para acceder a esta aplicaci\u00f3n","share_center.78":"Atenci\u00f3n, s\u00f3lo se pueden usar car\u00e1cteres alfanum\u00e9ricos est\u00e1ndar para los nombres de usuario. El identificador '%CURRENT%' ser\u00e1 reemplazado por '%NEW%'","share_center.79":"invitar","share_center.80":"Enviar enlace por correo electr\u00f3nico a una selecci\u00f3n de usuarios o direcciones","share_center.81":"visto","share_center.82":"no visto","share_center.83":"Conmuta el estado de visto para recibir o no notificaciones cuando el fichero se haya descargado","share_center.84":"contrase\u00f1a","share_center.85":"Se ha establecido una contrase\u00f1a de protecci\u00f3n en este enlace","share_center.86":"expira","share_center.87":"Este enlace expirar\u00e1 autom\u00e1ticamente en ...","share_center.88":"descargas","share_center.89":"N\u00famero de descarags \/ descargas autorizadas. Click para restablecer el contador de descargas.","share_center.90":"Enlace URL","share_center.91":"Etiquetas (Pulsar ENTER para guardar)","share_center.92":"Nuevo enlace","share_center.93":"Enlaces existentes","share_center.94":"C\u00f3digo QR","share_center.95":"c\u00f3digo QR","share_center.96":"Dejar de compartir","share_center.97":"Dejar de compartir esta carpeta con otros usuarios","share_center.98":"Mis comparticiones","share_center.99":"Todos los elementos compartidos","share_center.100":"Ficheros compartidos","share_center.101":"Todos los ficheros compartidos como enlaces p\u00fablicos","share_center.102":"Carpetas compartidas","share_center.103":"Todas las carpetas compartidas como repositorios o minisitios.","share_center.104":"Mostrando primer enlace, hay %s m\u00e1s","share_center.105":"Mostrando primer enlace, hay otro m\u00e1s","share_center.106":"\u00bfDesea reiniciar el contador de descargas?","share_center.107":"El l\u00edmite de descarga debe estar entre 1 y %s","share_center.108":"Use un lector de c\u00f3digos QR para escanear la imagen ","share_center.80b":"Invitar a visitar este repositorio a los usuarios seleccionados v\u00eda correo electr\u00f3nico","share_center.83b":"Conmuta el estado de visto para recibir o no notificaciones cuando el repositorio es consultado","share_center.109":"Minisitio de usario","share_center.110":"Compartir esto","share_center.110b":"Compartir","share_center.111":"Compartir esta p\u00e1gina con otras personas","share_center.112":"Compartir esta p\u00e1gina","share_center.113":"Como repositorio","share_center.114":"Compartir carpeta como nuevo repositorio","share_center.115":"Como minisitio","share_center.116":"Publicar contenido de carpeta","share_center.117":"Como minisitio privado","share_center.118":"Minisitio protegido con contrase\u00f1a","share_center.119":"Enlace de descarga","share_center.120":"P\u00e1gina de descarga simple","share_center.121":"Enlace publico","share_center.122":"Crear un enlace publico","share_center.123":"Selecci\u00f3n como minisitio","share_center.124":"Publicar selecci\u00f3n actual","share_center.125":"Editar compartici\u00f3n","share_center.126":"Editar\/detener compartici\u00f3n ya realizada","share_center.127":"Migrar antiguas comparticiones","share_center.128":"Migrar antiguas comparticiones","share_center.129":"Copiar URL","share_center.130":"Copiar URL a su portapapeles","share_center.131":"A\u00fan no existen ficheros o carpetas compartidas.","share_center.132":"Repositorio","share_center.133":"Como enlace p\u00fablico","share_center.134":"Como repositorio","share_center.135":"La carpeta aparecer\u00e1 como un minisitio en el navegador del usuario","share_center.136":"El contenido de la carpeta aparecer\u00e1 como un nuevo repositorio para los usuarios de la aplicaci\u00f3n","share_center.137":"Compartir el fichero seleccionado via enlace p\u00fablico","share_center.138":"Ha compartido esta carpeta como enlace p\u00fablico (minisitio)","share_center.139":"Ha compartido esta carpeta como un repositorio con usuarios de la aplicaci\u00f3n","share_center.140":"Ha compartido este fichero como enlace p\u00fablico","share_center.141":"Cambiar par\u00e1metros","share_center.142":"Ocultar par\u00e1metros","share_center.143":"Use <kbd>Ctrl<\/kbd>+<kbd>C<\/kbd> para copiar el enlace","share_center.144":"Use <kbd>&#8984;<\/kbd>+<kbd>C<\/kbd> para copiar el enlace","share_center.145":"Descripci\u00f3n","share_center.146":"Se mostrar\u00e1 a los usuarios compartidos","share_center.147":"Seguridad","share_center.148":"(Opcional)","share_center.149":"Dejar 0 para no definir l\u00edmite","share_center.150":"Derechos de acceso","share_center.151":"Dise\u00f1o","share_center.152":"Actualizar","share_center.153":"Est\u00e1ndar (listado de archivos con cabecera de aplicaci\u00f3n)","share_center.154":"Tira de pel\u00edcula (ideal para galer\u00eda de im\u00e1genes)","share_center.155":"Incrustado (peque\u00f1a cabecera, para widgets)","share_center.156":"Enlace publicado con \u00e9xito %s","share_center.46_mini":"Abrir mini %s1","share_center.46_file":"Abrir fichero %s1","share_center.157":"Esta carpeta est\u00e1 actualmente compartida. Si la elimina, las comparticiones asociadas se deshabilitar\u00e1n.","share_center.158":"Este archivo est\u00e1 actualmente compartido. Si lo elimina, las comparticiones asociadas se deshabilitar\u00e1n.","share_center.159":"Propietario","share_center.160":"No se le permite eliminar este elemento compartido","share_center.161":"Enlace obsoleto","share_center.162":"Tiene uno o mas enlaces antiguos en este fichero. Por favor, reemplacelo con un nuevo enlace deteniendo esta compartici\u00f3n y recreando una nueva. Copie el 'hash' de la compartici\u00f3n(la \u00fatima parte del enlace, p.e. http:\/\/yourpydio.com\/data\/public\/<em style='color:red;'>206a51<\/em>.php) y \u00faselo en el nuevo di\u00e1golo de compartici\u00f3n para estar seguro de que el enlace seguir\u00e1 activo tras la migraci\u00f3n.","share_center.163":"Arrastre ficheros aqu\u00ed (para minisitios con carga de archivos habilitada)","share_center.138b":"Ha compartido esta carpeta como enlace p\u00fablico, pero est\u00e1 actualmente inactivo (expirado).","share_center.139b":"Ha compartido esta carpeta como repositorio con usuarios de la aplicaci\u00f3n, pero est\u00e1 actualmente inactivo (expirado).","share_center.140b":"Ha compartido esta carpeta como enlace p\u00fablico, pero est\u00e1 actualmente inactivo (expirado).","share_center.164":"\u00a1No permitido: el script fue modificado!","share_center.165":"\u00a1Lo sentimos, este enlace ha expirado!","share_center.166":"\u00a1No se puede encontrar el enlace especificado!","share_center.167":"\u00a1El enlace ha expirado!","share_center.168":"El n\u00famero de descargas autorizadas ha sido alcanzado. Haga click para reiniciar el contador y reactivar el enlace.","share_center.169":"Se ha alcanzado la fecha de expiraci\u00f3n. Cambie los par\u00e1metros con una nueva fecha si desea reactivar el enlace.","share_center.170":"Este enlace se ha protegido con una contrase\u00f1a.","share_center.171":"Manipulaci\u00f3n del enlace","share_center.172":"Lo sentimos pero este enlace ya est\u00e1 en uso, por favor seleccione otro nombre.","share_center.173":"Si desea un enlace bonito y duradero (al estilo https:\/\/...\/mi-enlace), puede usar este campo. Si no lo establece \u00e9ste se generar\u00e1 autom\u00e1ticamente.","share_center.174":"Deshabilitar contrase\u00f1a","share_center.175":"\u00a1Por favor establezca una contrase\u00f1a y aseg\u00farese de que es suficientemente larga!","share_center.176":"(Obligatorio)","share_center.177":"Ver par\u00e1metros","share_center.178":"enabled","share_center.179":"Revert","share_center.180":"Clear list","share_center.181":"Modify","share_center.182":"Use the field above to pick a user from the internal directory or from your personal address book. If you want to create a new user, just type in a new identifier and hit Enter.","share_center.183":"Notify on content change","share_center.184":"Notify me when content is accessed or changed","share_center.185":"Notify me when content is accessed","share_center.186":"Notify me when content is changed","share_center.187":"Do not notify me","share_center.188":"Receive alerts whenever a user accesses or modifies the content of this share.","share_center.189":"Enable Public Link","share_center.190":"This file is not currently publicly accessible. Enabling a public link will create a unique access that you can send to anyone. If you want to share with existing Pydio users, use the \"Users\" tab.","share_center.191":"Copy link to clipboard","share_center.192":"Link has been copied to clipboard","share_center.193":"Customize Link","share_center.194":"For a prettier link, you can customize the last part","share_center.195":"Warning, there is no embedded viewer for this file, except opening in a new tab of your browser: this may trigger a download automatically when user opens the link.","share_center.196":"Secure Access","share_center.197":"Use this field to send optional comments","share_center.198":"You can select the appearance of the link as it will appear in the browser.","share_center.199":"Share Visibility","share_center.200":"Visible to other users","share_center.201":"Other users who access to the current workspace can update the links parameters, but they cannot delete it. Only you can stop this share or toggle its visibility","share_center.202":"Other users who access to the current workspace can update the links parameters. You are not the owner of the share so you cannot delete it or toggle its visibility","share_center.203":"Transfer Ownership","share_center.203b":"Transfer","share_center.204":"If the share is publicly visible and you want another user to manage this share, you can transfer its ownership.","share_center.205":"Transfer to ... (user identifier)","share_center.206":"Shares are 'private' by default: you only can see them. If you want other users who access the current workspace to see and edit this share, toggle the visibility.","share_center.207":"Remote Users","share_center.208":"Share with users from other filesharing platforms (compatible with Federated Sharing API).","share_center.209":"Remote Address","share_center.210":"User Identifier","share_center.211":"pending","share_center.212":"accepted","share_center.213":"rejected","share_center.214":"not sent","share_center.215":"To enable a public link on a file or a folder, you first need to set up a password.","share_center.216":"Successfully unshared element","share_center.217":"Local Users","share_center.218":"Notification","share_center.219":"Error while loading share. Error was (%s).","share_center.220":"You are not allowed to create users","share_center.221":"You are not allowed to share with other users, only your own external users","share_center.222":"User %s already exists, please choose another identifier","share_center.223":"Custom link is too short, please use at least %s characters","share_center.224":"You are not allowed to manage this share, please ask its owner to perform the changes, or to transfer you the ownership.","share_center.225":"You are not allowed to create public links on files","share_center.226":"You are not allowed to create public links on folders","share_center.227":"You are not allowed to share files internally","share_center.228":"You are not allowed to share folders internally","share_center.229":"Insert a preview of the file by pasting this code inside an HTML page.","share_center.230":"Please save before sending an invitation","share_center.231":"Click to start downloading","share_center.232":"No entries found for share, did you maybe delete some users?","share_center.233":"Reset this share","share_center.234":"It has been added to your %s workspace.","timestamp.1":"Warning, a timestamp token is already attached to this file. Delete the token manually to be able to add a new one","timestamp.2":"Warning, you can't add a timestamp to a token","timestamp.3":"Timestamp token has already been created for the file ","timestamp.4":"WARNING : Configuration problem, please contact the system administrator as soon as possible.","action.cart.1":"To selection cart","action.cart.2":"Add selected items to current cart","action.cart.3":"Empty","action.cart.4":"Empty current cart","action.cart.5":"New","action.cart.6":"New selection cart","action.cart.7":"Download","action.cart.8":"Download whole cart at once","action.cart.9":"Default cart","action.cart.10":"Carts","action.cart.11":"Compress and Share","action.cart.12":"Create archive from selection and share this archive","action.cart.13":"Provide a label for this selection cart","action.cart.14":"This will create an archive with all files and share it. Please select enter a name for this archive:","action.cart.15":"Drop elements in selection carts to download them or share them later","powerfs.1":"Launching archive creation in background, please wait.","powerfs.2":"Reload current folder","powerfs.3":"Archive download should start automatically","powerfs.4":"Creating archive - %s% done","powerfs.5":"Cannot find corresponding archive for download! Did you make sure to install the Zip binary on your server?","action.scheduler.1":"Action","action.scheduler.1d":"Action to be performed by this task","action.scheduler.2":"Schedule","action.scheduler.2d":"Crontab like expression under the following format : minutes hours days dayWeeks monthes. You can use wildcards, steps and ranges.","action.scheduler.3":"Next Execution","action.scheduler.4":"Repository ID","action.scheduler.4s":"Repository","action.scheduler.4d":"Id of the target workspace","action.scheduler.5":"Parameters","action.scheduler.5d":"Replicable action parameters","action.scheduler.6":"Param Name","action.scheduler.6d":"Action specific parameter name","action.scheduler.7":"Param Value","action.scheduler.7d":"Action specific parameter value","action.scheduler.8":"New task","action.scheduler.9":"Schedule a task to be executed on a regular basis","action.scheduler.10":"Edit task","action.scheduler.11":"Edit scheduled task parameters","action.scheduler.12":"Label","action.scheduler.12d":"Human readable label for this task","action.scheduler.13":"Status","action.scheduler.14":"Last Execution","action.scheduler.15":"Run all tasks","action.scheduler.15d":"Trigger selected task now","action.scheduler.16":"Run task","action.scheduler.16d":"Trigger scheduler and run scheduled tasks","action.scheduler.17":"User(s)","action.scheduler.17d":"Enter a comma separated list of users, or wildcard * to recurse the task on all users.","action.scheduler.18":"Scheduler","action.scheduler.18d":"Cron-like scheduler actions","action.scheduler.18e":"Scheduler (disabled)","action.scheduler.19":"Delete Task","action.scheduler.19d":"Unschedule and remove the selected task","action.scheduler.20":"Cron Expression","action.scheduler.20d":"Generate Crontab expression","action.scheduler.21":"Add the following line to your CRONTAB, replacing your password real value, and the scheduling you want (here configured to run every five minutes).","action.scheduler.22":"Generic scheduler to perform tasks on a regular basis. Requires CLI activation and a CRONTAB or similar system.","action.scheduler.23":"Execution Context","action.scheduler.24":"Parameters","action.scheduler.25":"Stop Job","action.scheduler.26":"Stop running job","meta.quota.1":"Uso de la cuota (cargando...)","meta.quota.2":"Click para recargar el uso de la cuota","meta.quota.3":"Est\u00e1 excediendo su cuota","meta.quota.4":"Uso de la cuota","meta.simple_lock.1":"Lock","meta.simple_lock.2":"Lock selected item","meta.simple_lock.3":"Unlock","meta.simple_lock.4":"Remove lock","meta.simple_lock.5":"This file is locked by another user, it is probably currently being edited, you are not allowed to modify it.","meta.svn.1":"Versiones","meta.svn.11":"Registro SVN de la carpeta actual","meta.svn.2":"Registro de selecci\u00f3n","meta.svn.21":"Registro SVN del archivo o carpeta seleccionada","meta.svn.3":"Cambiar a revisi\u00f3n","meta.svn.31":"Compare","meta.svn.32":"Revert","meta.svn.33":"This will create a new version of the file with the content of this previous version. Are you sure?","meta.svn.4":"Versioning","meta.svn.41":"Last Revision","meta.svn.42":"Revision Date","meta.svn.43":"Revision Author","meta.svn.5":"The selected files\/folders have been copied\/moved (by SVN)","meta.svn.51":"The selected files\/folders have been deleted (by SVN)","meta.svn.61":"Actions","meta.exif.1":"GeoUbicaci\u00f3n","meta.exif.2":"Ubicar","meta.exif.3":"Meta Data (EXIF)","meta.watch.1":"Monitorizar...","meta.watch.2":"Notificar cuando se accede a esta carpeta","meta.watch.3":"Detener monitorizaci\u00f3n","meta.watch.4":"Detener monitorizaci\u00f3n de accesos a esta carpeta","meta.watch.5":"Monitorizar...","meta.watch.6":"Monitorizar cambios en este fichero","meta.watch.7":"Detener monitorizaci\u00f3n","meta.watch.8":"Detener monitorizaci\u00f3n de cambios en este fichero","meta.watch.9":"Consulta","meta.watch.10":"Alguien abra el fichero","meta.watch.10b":"Alguien explore la carpeta","meta.watch.11":"Modificaci\u00f3n","meta.watch.12":"Alguien modifique el fichero","meta.watch.12b":"Alguien modifique un fichero dentro de esta carpeta","meta.watch.13":"Ambos","meta.watch.14":"Alguien abra o escriba en el fichero","meta.watch.14b":"Alguien explore o modifique el contenido de la carpeta","meta.git.1":"Versions","meta.git.2":"Document previous versions","meta.git.3":"Download","meta.git.4":"Download selected version to your computer","meta.git.5":"Preview (browser)","meta.git.6":"Open the selected version in a browser window","meta.git.7":"Revert to...","meta.git.8":"Revert the file to the selected revision on the server","meta.git.9":"#","meta.git.10":"Date","meta.git.11":"Author","meta.git.12":"Modification","meta.git.13":"Are you sure you want to do this? Reverting to an old version will now create a new version of the document with the selected revision.","meta.git.RENAME":"File renamed","meta.git.MOVE":"File moved","meta.git.MODIFICATION":"Content modified","meta.git.DELETION":"File deleted","meta.git.CREATION":"File created","meta.comments.1":"Users Comments","meta.comments.2":"Enter your comment here","meta.comments.3":"Post","meta.comments.4":"Go to %s","meta.user.1":"Etiquetas","meta.user.2":"Sin etiqueta","meta.user.3":"Sin valorar","meta.user.4":"Poca importancia","meta.user.5":"Pendiente","meta.user.6":"A revisar","meta.user.7":"Importante","meta.user.8":"Urgente","meta.user.9":"No Value","ftp_auth.1":"Enter connection data","ftp_auth.2":"Host","ftp_auth.3":"Optional data","ftp_auth.4":"Start","ftp_auth.5":"Protocol","ftp_auth.6":"Charset","ftp_auth.7":"Active","ftp_auth.8":"Port","ios_gui.1.ios":"There is a native application available for accessing %s through iPhone\/iPad!","ios_gui.2.ios":"I have it already, open it and add this server to my remote servers","ios_gui.3.ios":"I don't have it, send me to the App Store now!","ios_gui.4.ios":"I don't care, let me use the web version of %s.","ios_gui.1.android":"There is a native Pydio client available for accessing %s on Android OS.","ios_gui.2.android":"I have it already, open it and add this server to my preconfigured remote servers","ios_gui.3.android":"I don't have it, send me to the Play Store now!","ios_gui.4.android":"I don't care, let me use the web version of %s.","gui.user.1":"Password Reset","gui.user.2":"Set your new password","gui.user.3":"Please enter your login, a reset password will be sent to you by email.","gui.user.4":"Your identifier","gui.user.5":"A reset password request has been sent to the email registered with your account. Click on the link in the email to recreate a password.","gui.user.6":"Thank you, you can now log in!","gui.user.7":"A password reset has been requested on the account associated to this email address. If you are not the author of this request, you can safely ignore this email. Otherwise click on the following link to reset your password:","gui.user.8":"Use the form below to reset your password. Please enter your login and the new password twice.","core.index.1":"Indexar contenido","core.index.2":"Indexar el contenido de la carpeta","core.index.3":"Ejecutando indexaci\u00f3n en segundo plano","core.index.4":"El \u00edndice parece estar bloqueado, puede que un proceso de indexaci\u00f3n se est\u00e9 realizando en este momento. En caso contrario borre el fichero  .ajxp_lock localizado en la carpeta cache\/indexes.","core.index.5":"Indexaci\u00f3n finalizada","core.index.6":"Atenci\u00f3n, la carpeta actual est\u00e1 index\u00e1ndose, int\u00e9ntelo m\u00e1s tarde.","core.index.7":"Primera indexaci\u00f3n de esta carpeta, por favor espere y reintente m\u00e1s tarde su b\u00fasqueda","core.index.8":"Indexando %s en segundo plano","core.index.9":"No puedo encontrar el \u00edndice de la carpeta actual! Deber\u00eda ejecutar la indexaci\u00f3n de los datos primero!","core.index.10":"Indexing subfolders in background","core.mailer.1":"Email successfully sent to %s user(s)","core.mailer.2":"No address found to send the email!","core.mailer.3":"No mailer configured to send emails, contact your administrator","core.mailer.4":"From","core.mailer.5":"To","core.mailer.6":"Subject","core.mailer.7":"Message","core.mailer.8":"Pick a user or type an address","core.mailer.9":"Notifications Digest","languageLabel":"Espa\u00f1ol","date_format":"d\/m\/Y H:i","byte_unit_symbol":"B","date_intl_locale":"es-ES","0":"\u00daltima ver.","1":"Nombre","2":"Tama\u00f1o","3":"Tipo","4":"Modificado","5":"Acciones","6":"Renombrar","7":"Suprimir","8":"Directorio","9":"Archivo Midi","10":"Archivo de Texto","11":"Javascript","12":"Imagen GIF","13":"Imagen JPG","14":"P\u00e1gina HTML","15":"P\u00e1gina HTML","16":"Archivo REAL","17":"Archivo REAL","18":"Script PERL","19":"Archivo ZIP","20":"Archivo WAV","21":"Script PHP","22":"Script PHP","23":"Archivo","24":"Carpeta superior","25":"Subir uno m\u00e1s archivos (max ) a la carpeta: ","26":"Crear nueva carpeta en: ","27":"Subir","28":"Crear nuevo archivo en: ","29":"Crear","30":"Escribe un nombre para la carpeta y despu\u00e9s haz click en &quot;Crear&quot;","31":"Debes seleccionar un archivo","32":"Explorar","33":"\u00a1Error al enviar el archivo!","34":"El archivo","35":"ha sido correctamente creado en la carpeta","36":"Su tama\u00f1o es","37":"Debes introducir un nombre v\u00e1lido","38":"La carpeta","39":"ha sido creada en","40":"Esta carpeta ya existe (no se distinguen may\u00fasculas\/min\u00fasculas)","41":"ha sido renombrado a","42":"a","43":"ya existe (no se distinguen may\u00fasculas\/min\u00fasculas)","44":"ha sido borrado","45":"carpeta","46":"archivo","47":"\u00bfQuieres realmente borrar el","48":"Aceptar","49":"Cancelar","50":"Archivo Exe","51":"Editar","52":"Editando archivo","53":"Guardar","54":"Cancelar","55":"ha sido modificado","56":"Imagen BMP","57":"Imagen PNG","58":"Archivo CSS","59":"Archivo MP3","60":"Archivo RAR","61":"Archivo GZ","62":"Directorio ra\u00edz","63":"Salir","64":"Archivo XLS","65":"Archivo Word","66":"Copiar","67":"Archivo seleccionado","68":"Copiar en","69":"O seleccionar otra carpeta","70":"Mover","71":"Este archivo ya existe (no se distinguen may\u00fasculas\/min\u00fasculas)","72":"La carpeta ra\u00edz no es correctao. Compru\u00e9balo en el archivo conf\/conf.php","73":"ha sido copiado a la carpeta","74":"ha sido movido a la carpeta","75":"El archivo users.txt no est\u00e1 en la carpeta privada","76":"Este archivo ha sido borrado","77":"Enviar","78":"Pass","79":"Archivo PDF","80":"Archivo MOV","81":"Archivo AVI","82":"Archivo MPG","83":"Archivo MPEG","84":"Ayuda","85":"Actualizar","86":"Cerrar","87":"Buscar","88":"Descargar","89":"Imposible abrir archivo","90":"Imprimir","91":"Archivo FLASH","92":"Idioma","93":"Para escoger un idioma, tu navegador debe aceptar cookies.","94":"Conectar","95":"Escoge tu idioma:","96":"Escoge la carpeta de destino en el \u00e1rbol de carpetas: ","97":"Enviar Archivo","98":"Haz en cualquier punto del di\u00e1logo para cerrarlo.","99":"no es escribible. Puede que haya un problema de permisos, compru\u00e9balo con tu administrador.","100":"Imposible encontrar el archivo ","101":"\u00a1La carpeta de origen y destino son las misma!","102":"Error al crear el archivo:","103":"Imposible encontrar la carpeta ","104":"Ir a la ubicaci\u00f3n introducida","105":"Enviar un enlace para acceder directamente a esta ubicaci\u00f3n.","106":"Enviar Correo","107":"Tu nombre y\/o correo","108":"Correo de destino","109":"Link clickable","110":"A\u00f1adir comentario","111":"Ha sido enviado el correo siguiente:","112":"Error al enviar el correo: ","113":"\u00a1La selecci\u00f3n est\u00e1 vac\u00eda!","114":"\u00a1Error desconocido al copiar!","115":"El archivo ha sido correctamente guardado","116":"archivos","117":"La carpeta","118":"Descargar varios archivos","119":"Haz click en cada archivo para descargarlo.","120":"\u00a1No puedes borrar todo el \u00e1rbol!","121":"Archivo de Imagen ","122":"Papelera","123":"ha sido movido a ","124":"\u00bfSobreescribir archivos existentes?","125":"Ya existe un archivo\/carpeta con ese nombre (no se distinguen may\u00fasculas\/min\u00fasculas). \u00a1Elige otro!","126":"Miniaturas","127":"Tama\u00f1o","128":"archivos selecionados.","129":"Ver","130":"Carpetas","131":"Detalles","132":"Ning\u00fan archivo","133":"Nombre","134":"Tipo","135":"Dimensiones","136":"Ver Imagen Mayor","138":"\u00daltima Modificaci\u00f3n","139":"Editar en l\u00ednea","140":"Reproducir carpeta completa","141":"Leyendo carpeta","142":"Conectado como ","143":"Modo de Invitado. Ingresa.","144":"No conectado.","145":"Mis Favoritos","146":"Borrar Favorito","147":"Favoritos","148":"Superior","149":"Actualizar","150":"Vista","151":"Cambiar vista...","152":"Favorito","153":"A\u00f1adir ubicaci\u00f3n actual a Mis favoritos","154":"Nueva Carpeta","155":"Crear nueva carpeta","156":"Nuevo Archivo","157":"Crear nuevo archivo vac\u00edo","158":"Renombrar archivo o carpeta seleccionada","159":"Copiar selecci\u00f3n a...","160":"Mover archivos seleccionados a...","161":"Borrar archivos seleccionados.","162":"Editar archivos de texto en l\u00ednea.","163":"Acceder","164":"Desconectar","165":"Configurar","166":"Acerca de Pydio","167":"Acerca de Pydio","168":"Acceder a Pydio","169":"Desconectar de ","170":"Carpeta Actual","parent_access_key":"u","refresh_access_key":"z","list_access_key":"L","thumbs_access_key":"i","bookmarks_access_key":"F","upload_access_key":"b","folder_access_key":"p","file_access_key":"A","rename_access_key":"n","copy_access_key":"C","move_access_key":"M","delete_access_key":"S","edit_access_key":"t","view_access_key":"V","download_access_key":"g","settings_access_key":"o","about_access_key":"r","empty_recycle_access_key":"V","restore_access_key":"R","171":"Examinar","172":"Tu Selecci\u00f3n","173":"Nombre de la nueva carpeta","174":"Nombre del nuevo archivo","175":"Seleccionar carpeta de destino","176":"Los archivos seleccionados se mover\u00e1n a la Papelera.","177":"\u00bfEst\u00e1s seguro de querer borrar permanentemente los archivos seleccionados?","178":"Anterior","179":"Siguiente","180":"Introducir usuario\/clave","181":"Usuario","182":"Clave","183":"\u00a1Selecciona una carpeta de destino distinta a la de origen!","184":"Buscar en la carpeta actual y en las subcarpetas","185":"Parar la b\u00fasqueda","186":"Previsualizaci\u00f3n de Imagen","187":"Edici\u00f3n en l\u00ednea - ","189":"Editar Mis Preferencias","190":"Idioma","191":"Vista por Defecto","192":"Detalles","193":"Miniaturas","194":"Cambiar Clave","195":"Preferencias de Usuario","196":"\u00a1Tu idioma difiere del idioma actual!\\n \u00bfQuieres recargar la p\u00e1gina para cambiar el idioma?","197":"\u00a1Preferencias de usuario correctamente modificadas! \\n\\nSi has cambiado tu clave, tendr\u00e1 efecto tras la desconexi\u00f3n","198":"Nuevo","199":"Confirmar","200":"Cambiar repositorio a...","201":"\u00a1Cuidado, algunos cambios no se han guardado!\\n \u00bfEst\u00e1s seguro de querer cerrar?","202":"\u00a1Cuidado, copia recursiva!","203":"La carpeta de destino y la carpeta original son la misma!","204":"El archivo \"","205":"\" excede el l\u00edmite de tama\u00f1o (","206":"Mb).\\nNo ser\u00e1 enviado.","207":"No tienes permisos de escritura en esta carpeta","208":"No tienes permisos de lectura en esta carpeta","209":"\u00a1Error interno del servidor, contacta con el Administrador!","210":"Fall\u00f3 el env\u00edo","211":"\u00a1El archivo es demasiado grande!","212":"\u00a1Ning\u00fan archivo encontrado en el servidor!","213":"Error mientr\u00e1s se copiaba el archivo en la carpeta actual","214":"Examinar archivos","215":"Iniciar Env\u00edo","216":"Limpiar Cola","217":"Limpieza Completada","218":"Quitar de la cola","219":"Completado","220":"Vaciar","221":"Vaciar Papelera","222":"Restaurar","223":"Restaurar archivo a su ubicaci\u00f3n original","224":"Ir a","225":"Renombrar favorito","226":"Lista","227":"Detalles Lista","228":"Miniaturas","229":"Vista de Miniaturas","230":"Reproducir","231":"Reproducir presentaci\u00f3n","232":"Detener","233":"Detener presentaci\u00f3n","234":"Ver las imagenes seleccionadas","235":"Pantalla completa","236":"Restore","237":"Contrase\u00f1a anterior","238":"Las contrase\u00f1as no son iguales!","239":"Escribe tu contrase\u00f1a actual","240":"\u00a1Contrase\u00f1a incorrecta!","241":"Se han guardado tus preferencias","242":"Svn Log","svn_log_access_key":"L","243":"Revisi\u00f3n","244":"Autor","245":"Fecha","246":"Mensaje","247":"Extrae","248":"Extrae la selecci\u00f3n desde el zip a...","249":"Usuarios","250":"Repositorios","251":"Logs","252":"Tama\u00f1o m\u00e1ximo de env\u00edo alcanzado.","253":"Error HTTP:","254":"Error E\/S:","255":"Error de seguridad:","256":"Transferido","257":"Eliminar","258":"N\u00famero de archivos: ","259":"Tama\u00f1o combinado: ","260":"bytes","261":"Recordarme","262":"Alguno de los archivos parece que ya existen\\n en la carpeta elegida\\n \u00bfQu\u00e9 quieres hacer?","263":"Sobreescribir","264":"Saltar","265":"Archivos","266":"B","267":"Crear","268":"Crear una tabla nueva","269":"Estructura","270":"Editar la estructura de la tabla","271":"Borrar","272":"Borrar la tabla abierta","273":"Insert","274":"Crear un nuevo registro","275":"\u00bfEstas seguro que quieres borrar las tablas seleccionadas?","276":"Edita el registro seleccionado","277":"Borra los registros seleccionados","278":"\u00bfEstas seguro que quieres borrar los registros seleccionados?","279":"Tablas","280":"Registros","281":"Limites","282":"Tama\u00f1o por archivo","283":"Tama\u00f1o total","284":"N\u00famero de archivos","285":"No se encuentra ese usuario. Int\u00e9ntalo de nuevo.\\n Comprueba que las may\u00fasculas no est\u00e9n activadas","286":"Este usuario est\u00e1 caducado con la versi\u00f3n actual, utiliza el procedimiento de actualizaci\u00f3n.","287":"Permisos de archivo","288":"Usuario","289":"Grupo","290":"Todo","291":"\u00bfAplicar a niveles inferiores?","292":"Enlace p\u00fablico","293":"Crear un enlace p\u00fablico a este archivo","294":"Tiempo de caducidad del enlace (en d\u00edas)","295":"Contrase\u00f1a (Deja en blanco si quieres)","296":"Copia la direcci\u00f3n que aparece debajo:","297":"Nuevo usuario","298":"Crea un nuevo usuario","299":"Nuevo Repositorio","300":"Crea un nuevo repositorio","create_repo_accesskey":"R","create_user_accesskey":"N","301":"Edita la configuraci\u00f3n","302":"Copia como texto","303":"Copia lo seleccionado como texto con tabulaciones.","304":"Atr\u00e1s","305":"Vuelve a la p\u00e1gina principal","306":"Demasiadas carpetas","307":"Rellena los campos opcionales","308":"Genera el enlace","309":"Crear","310":"Opciones","311":"Sube autom\u00e1ticamente en cuanto se a\u00f1ade un archivo.","312":"Opciones de subida","313":"Comprimir...","314":"Comprimir selecci\u00f3n en un zip...","315":"Comprimir selecci\u00f3n  en","316":"Abrir con...","open_with_access":"c","317":"Visor c\u00f3digo fuente","318":"CodePress visor de c\u00f3digo fuente","319":" Editor HTML","320":"editor visual para archivos HTML","321":"Selecciona","322":"Selecciona el archivo actual","323":"Env\u00eda este enlace por e-mail","324":"No hay editor disponible","325":"M\u00e1s adecuado","326":"No adecuado","327":"100%","328":"Visor PDF","329":"Para ver PDF en l\u00ednea","330":"Por favor espera mientras se crean las p\u00e1ginas...","331":"P\u00e1gina","332":"de","333":"Pixlr editor de imagenes","334":"m\u00e1s","335":"Escribe un n\u00famero de p\u00e1gina entre 1 y ","336":"Lo siento, pero no puedes arrastrar carpetas, s\u00f3lamente archivos.","337":"Iniciar subida autom\u00e1ticamente","338":"Cerrar al finalizar","339":"Archivos existentes","340":"Alerta","341":"Informaci\u00f3n de archivo","342":"Informaci\u00f3n de carpeta","343":"Informaci\u00f3n de im\u00e1gen","344":"Buscar en","345":"No se pudo obtener informaci\u00f3n de versi\u00f3n","346":"Tu versi\u00f3n es la m\u00e1s nueva","347":"Tienes una versi\u00f3n mas nueva(%s). Visita %s","348":"Has compartido una nueva carpeta.","349":"Cuidado, faltan argumentos","350":"Ya existe un usuario con el mismo nombre. Elige otro nombre de usuario.","351":"No tienes permisos para compartir elementos p\u00fablicamente.","352":"Ya existe un repositorio con el mismo nombre. Elige otro nombre de repositorio.","353":"Usuario Destino","354":"Crea un nuevo usuario o elige uno de los ya incluidos en la lista.","355":"Nombre de usuario","356":"Contrase\u00f1a de usuario","357":"Repositorio Destino","358":"Elige un nombre para el elemento compartido y asigna permisos de acceso a tu usuario","359":"Etiqueta","360":"Permisos","361":"Leer","362":"Escribir","363":"Elementos compartidos","364":"No tienes permisos para efectuar esta operaci\u00f3n","365":"No est\u00e1s autorizado a subir m\u00e1 de %s archivos de una vez.","366":"Este usuario no tiene ninguna carpeta activa.","367":"No est\u00e1s autorizado a subir este tipo de archivos. Elige entre estas extensiones: ","368":"Se ha extraido lo seleccionado del archivo %s a la carpeta %s","369":"Enlace directo","370":"Descarga p\u00fablica","371":"Se requiere una contrase\u00f1a para descargar","372":"Repositorio Actual","373":"Destino","374":"No puedes copiar carpetas entre repositorios","375":"Advertencia, has estado inactivo desde hace m\u00e1s de __IDLE__, ser\u00e1s desconectado en __LOGOUT__","376":"Clickea en cualquier lado para reactivar","378":"Aviso, la contrase\u00f1a est\u00e1 vac\u00eda o es demasiado corta.","379":"Palabra no segura","380":"Demasiado corta","381":"Muy d\u00e9bil","382":"D\u00e9bil","383":"Aceptable","384":"Fuerte","385":"Muy fuerte","386":"Es la tercera vez que no logra iniciar su sesi\u00f3n.\\nPor su seguridad, rellene el c\u00f3digo que aparece en la imagen.","389":"Lea el c\u00f3digo que aparece a continuaci\u00f3n:","390":"C\u00f3digo","391":"No hay dep\u00f3sito","392":"Aviso, la versi\u00f3n de Pydio ha cambiado (ahora es %s), borre el cach\u00e9 del explorador y actualice la p\u00e1gina para asegurarse de que todo funciona.","393":"Aviso, la longitud de los nombres debe ser inferior a %s, se truncar\u00e1 este nombre de archivo.","394":"Lo sentimos, no es posible compartir carpetas en este momento utilizando el controlador de autenticaci\u00f3n actual (los usuarios no se pueden editar). No obstante, sigue siendo posible compartir archivos.","395":"El elemento que ha soltado parece una carpeta y las carpetas no se pueden cargar en el servidor. \u00bfSeguro que desea cargar?","396":"M\u00e9todo de autenticaci\u00f3n","397":"Descargar por partes","398":"Descargar archivos seleccionados por piezas","399":"Introduzca el n\u00famero de piezas que desea descargar y, a continuaci\u00f3n, haga clic en el bot\u00f3n y en cada uno de los archivos para descargarlos.","400":"N\u00famero de piezas:","401":"Puede descargar e instalar el software siguiente para unir las piezas cuando est\u00e9n en su ordenador: ","402":"http:\/\/www.hjsplit.org\/","403":"Preferencias de WebDAV","404":"Puede usar el protocolo WebDAV para montar sus repositorios de Pydio como 'unidad en red' en varios clientes, incluyendo Windows, Mac, iPhone, etc.","405":"Use las siguientes URLs para acceder a sus repositorios usando su cuenta de usuario y contrase\u00f1a. Advertencia, esto no funcionar\u00e1 a menos que defina esta caracter\u00edstica como 'activa' e ingrese su contrase\u00f1a.","406":"Activar compartir con WebDAV","407":"Ingrese su contrase\u00f1a si es la primera vez que activa compartir con webDAV, o si quiere tipear una nueva contrase\u00f1a:","408":"Se ha activado exitosamente compartir con WebDav, \u00a1recuerde actualizar su contrase\u00f1a si esta es su primera vez!","409":"Se ha desactivado exitosamente compartir con WebDav","410":"Se ha actualizado con \u00e9xito la contrase\u00f1a webDav","411":"Abrir","412":"Subir solamente","413":"Compartido por","414":"Use las flechas para navegar y +\/- para cambiar el zoom","415":"Cambiar la visibilidad del panel izquierdo","416":"Panel Izquierdo","leftpane_accesskey":"I","417":"Agregar repositorio...","418":"Crear su propio repositorio","419":"Cargando plantillas...","420":"Plantillas","421":"Nuevo %s","422":"Por favor complete los par\u00e1metros requeridos. Navegue por los t\u00edtulos de campos con su mouse para m\u00e1s informaci\u00f3n.","423":"Borrar repositorio","424":"\u00bfEst\u00e1 seguro que desea eliminar este repositorio? La operaci\u00f3n es irreversible.","425":"El repositorio se ha creado y est\u00e1 en su lista de repositorios, si quiere removerlo, aseg\u00farese de cambiar a otro repositorio, luego clickee la cruz roja al lado del nombre de repositorio.","426":"Ocurri\u00f3 un error al crear el repositorio","427":"Ocurri\u00f3 un error al borrar el repositorio","428":"El repositorio ha sido eliminado","429":"As\u00ed aparecer\u00e1 el repositorio en su lista.","430":"Archivos por Defecto","431":"Plantilla de ejemplo","432":"Mis Archivos","433":"listo","434":"enviando","435":"hecho","436":"error","437":"\u00a1Ups!, parece que su token de seguridad ha expirado, por favor %s refrescando su navegador!","438":"recargar la p\u00e1gina","439":"Opciones Principales","440":"Si","441":"No","442":"Mi Cuenta","443":"Actualice su informaci\u00f3n personal","444":"Por favor actualice su contrase\u00f1a, no podr\u00e1 acceder hasta que lo haga.","445":"Ahora su sesi\u00f3n se cerrar\u00e1, por favor inicie sesi\u00f3n de nuevo usando su nueva contrase\u00f1a, gracias!","446":"Presentaci\u00f3n","447":"Mi grupo","448":"crear usario","449":"Creando %s, elija una contrase\u00f1a","450":"Ordenar por ...","451":"Ordenar miniaturas por ...","452":"Tama\u00f1o de miniaturas","453":"Elija tama\u00f1o de miniaturas","454":"Seleccione ficheros en su ordenador","455":"Mis Carpetas","456":"M\u00e1s","457":"actualizar","458":"eliminar","459":"Carpeta principal","460":"Detalles","461":"Cambiar a vista detallada","detail_access_key":"D","date_relative_date":"el DATE","date_relative_time":"TIME","date_relative_date_format":"Y\/m\/d","date_relative_time_format":"H:i","date_relative_today":"hoy a las TIME","date_relative_yesterday":"ayer a las TIME","date_relative_tomorrow":"ma\u00f1ana a las TIME","date_relative_days_ago":"hace %s d\u00edas","date_relative_days_ahead":"en %s d\u00edass","462":"Previsualizar","preview_access_key":"e","463":"Descargar todo","464":"Descargar la carpeta completa en un solo archivo (zip)","465":"Mostrar URLs alternativas (montar carpetas por separado)","466":"Cargando...","467":"Todos los Elementos Compartidos","468":"Mis Carpetas","469":"Compartido conmigo","470":"Creado %date","471":"Creado por %user %date","472":"Compartido por %user","473":"Compartido por %user %date","474":"No hay descripci\u00f3n disponible","475":"Ficheros compartidos con todos los usuarios","476":"Su espacio de trabajo personal","477":"Seleccione un fichero o carpeta para ver aqu\u00ed sus detalles","478":"No se han encontrado resultados","479":"\u00bfHa olvidado su contrase\u00f1a?","480":"Explorar todas las carpetas del repositorio actual.","481":"Todos sus archivos y carpetas compartidas","482":"Acceso r\u00e1pido a sus elementos marcados","483":"\u00a1Usted no est\u00e1 autorizado a crear m\u00e1s usuarios!","484":"Crear usuario","485":"Crear un usuario compartido","486":"Avanzado","487":"B\u00e1sico","488":"Filtro avanzado","489":"Metadatos","490":"Rango de fechas","491":"Despu\u00e9s","492":"hasta","493":"Hoy","494":"Ayer","495":"La \u00fatima semana","496":"El \u00faltimo mes","497":"El \u00faltimo a\u00f1o","498":"Propiedad de documento","499":"Archivo","500":"extensi\u00f3n","501":"o","502":"Carpeta","503":"Tama\u00f1o","504":"1k,1M,1G","505":"a","506":"Par\u00e1metros de la aplicaci\u00f3n (usuarios, repositorios, configuraciones)","507":"Bienvenido a %s","508":"Acabo de crear una cuenta para usted en %s. Para conectar, por favor haga click en el siguiente enlace %link y use estas credenciales:  <br><br> Usuario: %user <br><br> Contrase\u00f1a: %pass","509":"Guardar la lista actual de usuarios como un equipo personal","510":"Por favor, introduzca el nombre del equipo","511":"Mi %s","512":"Escritorio a pantalla completa","513":"mostrar","514":"ocultar","515":"Sin marcadores - Arrastre carpetas o ficheros aqu\u00ed para acceso r\u00e1pido.","516":"expandir","517":"colapsar","518":"De manera alternativa, puede <a class='create_file_alt_link'>crear un nuevo archivo vacio<\/a>.","519":"Actualizar usuario","520":"Actualizar datos de usuario y contrase\u00f1a","521":"El usuario ha sido actualizado correctamente","522":"Identificador de usuario","523":"Contrase\u00f1a","524":"Actualizar contrase\u00f1a","525":"Mostrar imagen original","526":"Versi\u00f3n en baja resoluci\u00f3n","527":"Compartido con","528":"Usuarios internos","530":"Usuarios externos","531":"Users","532":"Groups","533":"Identificador usado para acceder, por favor utilice caracteres alfanum\u00e9ricos en min\u00fasculas o correo electr\u00f3nico.","534":"Contrase\u00f1a usada para acceder","535":"Enviar contrase\u00f1a por correo electr\u00f3nico","536":"Enviar un correo electr\u00f3nico de bienvenida incluyendo la contrase\u00f1a para el nuevo usuario","plugtype.title.access":"Drivers de repositorio","plugtype.desc.access":"Plugins que definen c\u00f3mo un repositorio acceder\u00e1 tanto a su back-end (sistema de archivos o similar) y a los principales acciones y dise\u00f1os.","plugtype.title.action":"Plugins de acci\u00f3n","plugtype.desc.action":"Plugins orientados a caracter\u00edsticas para varios aspectos","plugtype.title.authfront":"Frontends de autenticacion","plugtype.desc.authfront":"M\u00e9todos para reunir credenciales de identificaci\u00f3n(web form, api key, etc)","plugtype.title.cypher":"Herramientas de encriptaci\u00f3n","plugtype.desc.cypher":"Plugins de encriptaci\u00f3n de datos","plugtype.title.editor":"Editores","plugtype.title.gui":"Interficie gr\u00e1fica del usuario","plugtype.desc.editor":"Visores o editores para una amplia gama de tipos MIME","plugtype.desc.gui":"Interfaz web principal y sus declinaciones","plugtype.title.index":"Indexaci\u00f3n","plugtype.desc.index":"Herramientas para indexaci\u00f3n de datos que proporciona la opci\u00f3n de b\u00fasqueda r\u00e1pida","plugtype.title.meta":"Meta aspectos del repositorio","plugtype.desc.meta":"Caracter\u00edsticas adicionales para ser a\u00f1adidas a los repositorios","plugtype.title.metastore":"Almacenamiento de metadatos","plugtype.desc.metastore":"Implementaciones varias para el almacenamiento de metadatos junto con archivos y carpetas","plugtype.title.shorten":"Abreviadores URL","plugtype.desc.shorten":"Servicios web para la abreviaci\u00f3n de enlaces p\u00fablicos","plugtype.title.uploader":"Uploaders","plugtype.desc.uploader":"Implementaci\u00f3n de uploaders usando varias tecnolog\u00edas (html, js, java...)","plugtype.title.auth":"Backends de autenticaci\u00f3n","plugtype.desc.auth":"Como la informaci\u00f3n de los usuarios es almacenada en el backend","plugtype.title.boot":"Cargador","plugtype.desc.boot":"Plugin \u00fanico para la carga del framework.","plugtype.title.conf":"Almacenamiento de la configuraci\u00f3n","plugtype.desc.conf":"C\u00f3mo los datos de almacenamiento son guardados en el backend","plugtype.title.cache":"Cache server","plugtype.desc.cache":"Unique plugin to set up the cache server used by the application","plugtype.title.feed":"Almacenamiento del notificador de eventos","plugtype.desc.feed":"Implementaciones para almacenamiento de datos de eventos (de momento \u00fanicamente SQL)","plugtype.title.log":"Registradores","plugtype.desc.log":"Envia los registros de aplicaci\u00f3n a varios canales","plugtype.title.mailer":"Enviadores de correo","plugtype.desc.mailer":"Herramientas que permiten a la aplicaci\u00f3n enviar correos electr\u00f3nicos","plugtype.title.mq":"Mensajer\u00eda instantanea","plugtype.desc.mq":"Implementaciones de un simple servidor PUB\/SUB","plugtype.title.sec":"Security","plugtype.desc.sec":"Advanced Security Features","plugtype.title.helper":"Helper","plugtype.desc.helper":"Helpers tools for administrative tasks","537":"\u00a1El fichero es demasiado grande! El tama\u00f1o m\u00e1ximo autorizado es %i","538":"Error al subir: ning\u00fan archivo encontrado en el servidor!","539":"Error al subir: archivo parcialmente subido","540":"Error al subir: no puede encontrar el directorio temporal","541":"Error al subir: no se puede escribir en el directorio temporal","542":"Error al subir: una extensi\u00f3n de PHP se detuvo el proceso de carga.","543":"Resultados limitados a %s.","544":"Mostrar todo","545":"Remote Share Dialog","546":"This item has been shared with you by %%OWNER%% from a remote location. Do you want to continue ?","547":"Accept","548":"Decline","549":"You have previously accepted this item that was shared with you by %%OWNER%% from a remote location. Do you want to reject it now?","550":"Reject this share","551":"Reject","552":"Please provide password.","553":"Invalid password, please try again. \\n Make sure your Caps Lock is not engaged!","554":"%s result(s) in Recycle Bin","556":"Launching task %s in background","557":"Credentials required","558":"Please provide a password to enter this workspace.","559":"Authentication failed for this workspace.","560":"Authentication required","561":"We will redirect you to the Authentication page of the provider. If you are not redirected automatically, press OK to retry...","notification.tpl.short.file.add":"Fichero AJXP_NODE_LABEL creado en AJXP_PARENT_PATH","notification.tpl.short.file.delete":"Fichero AJXP_NODE_LABEL eliminado de AJXP_PARENT_PATH","notification.tpl.short.file.change":"Fichero AJXP_NODE_LABEL modificado por AJXP_USER","notification.tpl.short.file.view":"Fichero AJXP_NODE_LABEL consultado por AJXP_USER","notification.tpl.short.file.copy_to":"AJXP_NODE_LABEL copiado a AJXP_TARGET_FOLDER","notification.tpl.short.file.copy_from":"AJXP_NODE_LABEL copiado desde AJXP_SOURCE_FOLDER","notification.tpl.short.file.move_to":"AJXP_NODE_LABEL movido a AJXP_TARGET_FOLDER","notification.tpl.short.file.move_from":"AJXP_NODE_LABEL movido desde AJXP_SOURCE_FOLDER","notification.tpl.short.folder.add":"Carpeta AJXP_NODE_LABEL creada en AJXP_PARENT_PATH","notification.tpl.short.folder.delete":"Carpeta AJXP_NODE_LABEL eliminada de AJXP_PARENT_PATH","notification.tpl.short.folder.change":"Contenido de la carpeta AJXP_NODE_LABEL actualizado por AJXP_USER","notification.tpl.short.folder.view":"Carpeta AJXP_NODE_LABEL abierta por AJXP_USER","notification.tpl.short.folder.copy_to":"Carpeta AJXP_NODE_LABEL copiada a AJXP_TARGET_FOLDER","notification.tpl.short.folder.copy_from":"Carpeta AJXP_NODE_LABEL copiada desde AJXP_SOURCE_FOLDER","notification.tpl.short.folder.move_to":"Carpeta AJXP_NODE_LABEL movida a AJXP_TARGET_FOLDER","notification.tpl.short.folder.move_from":"Carpeta AJXP_NODE_LABEL movida desde AJXP_SOURCE_FOLDER","notification.tpl.short.file.rename":"AJXP_SOURCE_LABEL fue renombrado a AJXP_NODE_LABEL","notification.tpl.short.folder.rename":"AJXP_SOURCE_LABEL fue renombrada a AJXP_NODE_LABEL","notification.tpl.short.share.file":"User AJXP_USER has shared the file AJXP_NODE_LABEL with you","notification.tpl.short.share.folder":"User AJXP_USER has shared the folder AJXP_NODE_LABEL with you","notification.tpl.long.file.add":"El fichero AJXP_NODE_LABEL fue creado en AJXP_PARENT_PATH el AJXP_DATE por AJXP_USER.","notification.tpl.long.file.delete":"El fichero AJXP_NODE_LABEL fue eliminado de AJXP_PARENT_PATH el AJXP_DATE, por AJXP_USER.","notification.tpl.long.file.change":"El fichero AJXP_NODE_LABEL fue modificado el AJXP_DATE, por AJXP_USER.","notification.tpl.long.file.rename":"El fichero AJXP_SOURCE_LABEL fue renombrado a AJXP_NODE_LABEL el AJXP_DATE, por AJXP_USER.","notification.tpl.long.file.view":"El fichero AJXP_NODE_LABEL fue consultado por AJXP_USER el AJXP_DATE.","notification.tpl.long.file.copy":"El fichero AJXP_NODE_LABEL fue copiado desde AJXP_SOURCE_FOLDER a AJXP_PARENT_PATH el AJXP_DATE, por AJXP_USER.","notification.tpl.long.file.copy_to":"El fichero AJXP_NODE_LABEL fue copiado a AJXP_TARGET_FOLDER el AJXP_DATE, por AJXP_USER.","notification.tpl.long.file.copy_from":"El fichero AJXP_NODE_LABEL fue copiado desde AJXP_SOURCE_FOLDER el AJXP_DATE, por AJXP_USER.","notification.tpl.long.file.move":"El fichero AJXP_NODE_LABEL fue movido desde AJXP_SOURCE_FOLDER a AJXP_PARENT_PATH el AJXP_DATE, por AJXP_USER.","notification.tpl.long.file.move_to":"El fichero AJXP_NODE_LABEL fue movido a AJXP_TARGET_FOLDER el AJXP_DATE, por AJXP_USER.","notification.tpl.long.file.move_from":"El fichero AJXP_NODE_LABEL fue movido desde AJXP_SOURCE_FOLDER el AJXP_DATE, por AJXP_USER.","notification.tpl.long.folder.add":"La carpeta AJXP_NODE_LABEL fue creada en AJXP_PARENT_PATH el AJXP_DATE, por AJXP_USER.","notification.tpl.long.folder.delete":"La carpeta AJXP_NODE_LABEL fue eliminada de AJXP_PARENT_PATH el AJXP_DATE, por AJXP_USER.","notification.tpl.long.folder.rename":"La carpeta AJXP_SOURCE_LABEL fue renombrada a AJXP_NODE_LABEL el AJXP_DATE, por AJXP_USER.","notification.tpl.long.folder.change":"El contenido de la carpeta AJXP_NODE_LABEL fue modificado el AJXP_DATE por AJXP_USER.","notification.tpl.long.folder.view":"La carpeta AJXP_NODE_LABEL fue abierta por AJXP_USER el AJXP_DATE, por AJXP_USER","notification.tpl.long.folder.copy":"La carpeta AJXP_NODE_LABEL fue copiada desde AJXP_SOURCE_FOLDER a AJXP_PARENT_PATH el AJXP_DATE, por AJXP_USER.","notification.tpl.long.folder.copy_to":"La carpeta AJXP_NODE_LABEL fue copiada a AJXP_TARGET_FOLDER el AJXP_DATE, por AJXP_USER.","notification.tpl.long.folder.copy_from":"La carpeta AJXP_NODE_LABEL fue copiada desde AJXP_SOURCE_FOLDER el AJXP_DATE, por AJXP_USER.","notification.tpl.long.folder.move":"La carpeta AJXP_NODE_LABEL fue movida desde AJXP_SOURCE_FOLDER a AJXP_PARENT_PATH el AJXP_DATE, por AJXP_USER.","notification.tpl.long.folder.move_to":"La carpeta AJXP_NODE_LABEL fue movida a AJXP_TARGET_FOLDER el AJXP_DATE, por AJXP_USER.","notification.tpl.long.folder.move_from":"La carpeta AJXP_NODE_LABEL fue movida desde AJXP_SOURCE_FOLDER el AJXP_DATE, por AJXP_USER.","notification.tpl.long.ajxp_link":"Hacer click aqu\u00ed para ir directamente a <a href='AJXP_LINK'>AJXP_NODE_LABEL<\/a>","notification.tpl.long.file.share":"User AJXP_USER has shared the file AJXP_NODE_LABEL with you","notification.tpl.long.folder.share":"User AJXP_USER has shared the folder AJXP_NODE_LABEL with you","notification.tpl.group.file.add":"Fichero AJXP_NODE_LABEL a\u00f1adido a AJXP_PARENT_PATH","notification.tpl.group.file.delete":"Fichero AJXP_NODE_LABEL eliminado de AJXP_PARENT_PATH","notification.tpl.group.file.change":"Fichero AJXP_NODE_LABEL modificado por AJXP_USER","notification.tpl.group.file.view":"Fichero AJXP_NODE_LABEL fue consultado por AJXP_USER","notification.tpl.group.file.copy_to":"AJXP_NODE_LABEL copiado a AJXP_TARGET_FOLDER","notification.tpl.group.file.copy_from":"AJXP_NODE_LABEL copiado desde AJXP_SOURCE_FOLDER","notification.tpl.group.file.move_to":"AJXP_NODE_LABEL movido a AJXP_TARGET_FOLDER","notification.tpl.group.file.move_from":"AJXP_NODE_LABEL movido desde AJXP_SOURCE_FOLDER","notification.tpl.group.folder.add":"Carpeta AJXP_NODE_LABEL creada","notification.tpl.group.folder.delete":"Carpeta AJXP_NODE_LABEL eliminada","notification.tpl.group.folder.change":"El contenido de AJXP_NODE_LABEL ha cambiado","notification.tpl.group.folder.view":"La carpeta AJXP_NODE_LABEL fue abierta","notification.tpl.group.folder.copy_to":"Carpeta AJXP_NODE_LABEL copiada a AJXP_TARGET_FOLDER","notification.tpl.group.folder.copy_from":"Carpeta AJXP_NODE_LABEL copiada desde AJXP_SOURCE_FOLDER","notification.tpl.group.folder.move_to":"Carpeta AJXP_NODE_LABEL movida a AJXP_TARGET_FOLDER","notification.tpl.group.folder.move_from":"Carpeta AJXP_NODE_LABEL movida desde AJXP_SOURCE_FOLDER","notification.tpl.group.file.share":"User AJXP_USER shared AJXP_NODE_LABEL with you","notification.tpl.group.folder.share":"User AJXP_USER shared AJXP_NODE_LABEL with you","notification.tpl.block.user_link":"por","notification.tpl.block.file.add":"creado","notification.tpl.block.file.delete":"eliminado","notification.tpl.block.file.change":"modificado","notification.tpl.block.file.rename":"renombrado a AJXP_NODE_LABEL","notification.tpl.block.file.view":"consultado","notification.tpl.block.file.copy":"copiado a AJXP_PARENT_PATH","notification.tpl.block.file.copy_to":"copiado a AJXP_TARGET_FOLDER","notification.tpl.block.file.copy_from":"copiado desde AJXP_SOURCE_FOLDER","notification.tpl.block.file.move":"movido a AJXP_PARENT_PATH","notification.tpl.block.file.move_to":"movido a AJXP_TARGET_FOLDER","notification.tpl.block.file.move_from":"movido desde AJXP_SOURCE_FOLDER","notification.tpl.block.folder.add":"creada","notification.tpl.block.folder.delete":"eliminada","notification.tpl.block.folder.rename":"renombrada a AJXP_NODE_LABEL","notification.tpl.block.folder.change":"contenido modificado","notification.tpl.block.folder.view":"abierta","notification.tpl.block.folder.copy":"copiada desde AJXP_SOURCE_FOLDER","notification.tpl.block.folder.copy_to":"copiada a AJXP_TARGET_FOLDER","notification.tpl.block.folder.copy_from":"copiada desde AJXP_SOURCE_FOLDER","notification.tpl.block.folder.move":"movida desde AJXP_SOURCE_FOLDER","notification.tpl.block.folder.move_to":"movida a AJXP_TARGET_FOLDER","notification.tpl.block.folder.move_from":"movida desde AJXP_SOURCE_FOLDER","notification.tpl.block.ajxp_link":"Haga click aqu\u00ed para ir directamente a <a href='AJXP_LINK'>AJXP_NODE_LABEL<\/a>","notification.tpl.block.file.share":"User AJXP_USER shared AJXP_NODE_LABEL with you","notification.tpl.block.folder.share":"User AJXP_USER shared AJXP_NODE_LABEL with you","notification.tpl.location.workspace.normal":"Repositorio AJXP_REPOSITORY_LABEL","notification.tpl.location.workspace.shared.folder":"Carpeta compartida AJXP_REPOSITORY_LABEL","notification.tpl.location.workspace.shared.file":"Fichero compartido AJXP_REPOSITORY_LABEL","notification.tpl.location.minisite.file":"Fichero p\u00fablico AJXP_REPOSITORY_LABEL","notification.tpl.location.minisite.folder":"Carpeta p\u00fablica AJXP_REPOSITORY_LABEL","notification.tpl.location.public_user":"Usuario p\u00fablico (conexi\u00f3n desde '%s')","notification_center.1":"Notificaciones","notification_center.2":"Fuente de Notificaciones","notification_center.3":"Alertas","notification_center.4":"Notificaciones","notification_center.5":"Todos los eventos","notification_center.6":"Ir a ...","notification_center.7":"Omitir","notification_center.8":"No hay alertas","notification_center.9":"Actividad del repositorio","notification_center.10":"Actividad de la carpeta","notification_center.11":"Actividad del archivo","notification_center.12":"Dependiendo de su navegador, esto va a pedir un permiso espec\u00edfico. Para desactivar, ir a trav\u00e9s de las preferencias del navegador y excepciones. Si ya ha activado esta funci\u00f3n, probablemente no pasar\u00e1 nada.","notification_center.13":"Su navegador parece no soportar de momento las notificaciones de escritorio.","duosecurity.1":"Dual-Form Authentication","duosecurity.2":"Dual-Form Authentication","authfront.cas.1":"Order","authfront.keystore.1":"API Keys","authfront.keystore.2":"Manage API keys created by client devices like phone, sync clients, etc...","authfront.keystore.3":"Generate a key","authfront.keystore.4":"Generate an API key pair","authfront.keystore.5":"Revoke all accesses","authfront.keystore.6":"Invalidate existing API keys","authfront.keystore.7":"Are you sure you want to revoke this\/these key(s)?","authfront.keystore.8":"Key(s) removed successfully!","authfront.keystore.9":"Devices connected to your account:","keystore.1":"API Keys","keystore.2":"Manage API keys created by client devices like phone, sync clients, etc...","keystore.3":"Generate a key","keystore.4":"Generate an API key pair","keystore.5":"Revoke all accesses","keystore.6":"Invalidate existing API keys","keystore.7":"Are you sure you want to revoke this\/these key(s)?","keystore.8":"Key(s) removed successfully!","keystore.9":"Devices connected to your account:","authfront.otp.1":"Google Authenticator Configuration","authfront.otp.2":"Your account is configured to use 2-factors authentication using Google Authenticator. ","authfront.otp.3":"<span class='step'>Step 1<\/span> - If not already done, please install the Google Authenticator application on your mobile device. Application is available in the stores for iOS and Android.","authfront.otp.4":"<span class='step'>Step 2<\/span> - Once the application is installed, you can directly scan the QRCode below or manually create an account and enter the API key.","authfront.otp.5":"<span class='step'>Step 3<\/span> - Finally to verify that your GA account is properly configured, please enter the one-time-password provided.","authfront.otp.6":"Your google key is already configured. Please contact your administrator to reset it.","authfront.otp.7":"Cannot validate code, did you properly set up your Google Authenticator application?","authfront.otp.8":"Something went wrong, your key should not be empty.","encfs.1":"Cypher Folder","encfs.2":"Encrypt folder data","encfs.3":"Uncypher folder","encfs.4":"Decrypt folder data","encfs.5":"Cypher folder","encfs.6":"Encrypt folder data","index.lucene.1":"Indexar contenido","index.lucene.2":"Indexar el contenido de la carpeta","index.lucene.3":"Ejecutando indexaci\u00f3n en segundo plano","index.lucene.4":"El \u00edndice parece estar bloqueado, puede que un proceso de indexaci\u00f3n se est\u00e9 realizando en este momento. En caso contrario borre el fichero  .ajxp_lock localizado en la carpeta cache\/indexes.","index.lucene.5":"Indexaci\u00f3n finalizada","index.lucene.6":"Atenci\u00f3n, la carpeta actual est\u00e1 index\u00e1ndose, int\u00e9ntelo m\u00e1s tarde.","index.lucene.7":"Primera indexaci\u00f3n de esta carpeta, por favor espere y reintente m\u00e1s tarde su b\u00fasqueda","index.lucene.8":"Indexando %s en segundo plano","index.lucene.9":"\u00a1No puedo encontrar el \u00edndice de la carpeta actual! \u00a1Deber\u00eda primero ejecutar la indexaci\u00f3n de los datos!","index.lucene.10":"Indexando subcarpetas en segundo plano","index.lucene.11":"El repositorio parece ser que est\u00e1 realizando la indexaci\u00f3n, por favor espere 3 minutos y reintente su b\u00fasqueda.","index.lucene.12":"\u00a1El repositorio no est\u00e1 indexado, por favor lance la indexaci\u00f3n manualmente!","index.elasticsearch.1":"Indexar contenido","index.elasticsearch.2":"Indexar el contenido de la carpeta","index.elasticsearch.3":"Ejecutando indexaci\u00f3n en segundo plano","index.elasticsearch.4":"El \u00edndice parece estar bloqueado, puede que un proceso de indexaci\u00f3n se est\u00e9 realizando en este momento. En caso contrario borre el fichero  .ajxp_lock localizado en la carpeta cache\/indexes.","index.elasticsearch.5":"Indexaci\u00f3n finalizada","index.elasticsearch.6":"Atenci\u00f3n, la carpeta actual est\u00e1 index\u00e1ndose, int\u00e9ntelo m\u00e1s tarde.","index.elasticsearch.7":"Primera indexaci\u00f3n de esta carpeta, por favor espere y reintente m\u00e1s tarde su b\u00fasqueda","index.elasticsearch.8":"Indexando %s en segundo plano","index.elasticsearch.9":"No puedo encontrar el \u00edndice de la carpeta actual! Deber\u00eda ejecutar la indexaci\u00f3n de los datos primero!","index.elasticsearch.10":"Indexing subfolders in background","installer.1":"Pydio Setup Wizard","installer.2":"Welcome in the Pydio Setup Wizard","installer.3":"Thank you for installing Pydio. <br\/> Please follow this installation wizard to start sharing and syncing files across all of your devices in no time.  Make sure to create a database and prepare your SQL credentials before starting.  You can hover over the field labels for more information. <br\/> Press start when you are ready","installer.4":"Start Wizard","installer.5":"Please wait while Pydio is being configured! It will be up and running in a couple of seconds...","installer.6":"Install Pydio","installer.7":"Language","installer.8":"Click on each section to edit parameters"},"SECURE_TOKEN":"Ft4ctODPByI8urHIKNoUCmxAtwab2eWb","streaming_supported":"true","theme":"orbit"},"PRELOADED_REGISTRY":"<?xml version=\"1.0\"?>\n<ajxp_registry><actions><action name=\"get_xml_registry\">\n            <processing>\n                \n            <\/processing>\n        <\/action><action name=\"state\">\n            <processing>\n                \n            <\/processing>\n        <\/action><action name=\"user_state\">\n            <!-- Alias to \"state\" for API V2 -->\n            <processing>\n                \n            <\/processing>\n        <\/action><action name=\"switch_repository\">\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"load_repository_info\">\n            <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"get_user_templates_definition\">\n            <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"get_user_template_logo\">\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"user_delete_user\">\n            <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"get_bookmarks\">\n            <gui text=\"145\" title=\"145\" src=\"edit_user.png\" iconClass=\"icon-bookmark\" accessKey=\"\" hasAccessKey=\"false\">\n                <context selection=\"false\" dir=\"\" recycle=\"true\" actionBar=\"false\" actionBarGroup=\"filter\" contextMenu=\"false\" infoPanel=\"false\"\/>\n            <\/gui>\n            <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n            <processing>\n                <clientCallback><![CDATA[\n\n                ]]><\/clientCallback>\n                <clientListener name=\"init\"><![CDATA[\n                window.setTimeout(function(){\n                    if(!$('get_bookmarks_button')) {\n                        if(!pydio.bookmarkBar) pydio.bookmarkBar = new BookmarksBar(null, {});\n                        return;\n                    }\n                    if(!window.BookmarksBar) return;\n                    var bmBar = new BookmarksBar($('get_bookmarks_button'), {bookmarksMenuOptions:{\n                        className: 'menu desktop toolbarmenu panelHeaderMenu bmbarMenu',\n                        mouseClick:'over',\n                        topOffset:2,\n                        leftOffset:0,\n                        position:'bottom right'\n                    }});\n                    var bmAction = pydio.getController().actions.get('bookmark');\n                    bmBar.addBookmarkObject = {\n                        name:bmAction.getKeyedText(),\n                        alt:bmAction.options.title,\n                        image:ajxpResourcesFolder+'\/images\/actions\/16\/bookmark_add.png',\n                        icon_class:'icon-plus-sign',\n                        callback:function(e){\n                            var node = pydio.getContextNode();\n                            node.getMetadata().set('ajxp_bookmarked', 'true');\n                            node.getMetadata().set('overlay_icon', 'bookmark.png');\n                            node.getMetadata().set('overlay_class', 'icon-bookmark');\n                            bmBar.addBookmark(node.getPath(), node.getLabel());\n                        }.bind(this)\n                    };\n                    bmBar.load($H(), true);\n                }, 500);\n                ]]><\/clientListener>\n                \n\t\t\t<\/processing>\n\t\t<\/action><action name=\"get_permissions_mask\">\n            <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n            <processing>\n                \n            <\/processing>\n        <\/action><action name=\"save_user_pref\">\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"get_binary_param\" skipSecureToken=\"true\">\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"get_global_binary_param\" skipSecureToken=\"true\">\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"store_binary_temp\">\n            <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"user_list_authorized_users\">\n            <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n            <processing>\n                \n            <\/processing>\n        <\/action><action name=\"custom_data_edit\">\n            <gui text=\"442\" title=\"443\" src=\"edit_user.png\" iconClass=\"icon-reorder\" accessKey=\"\" hasAccessKey=\"false\">\n                <context selection=\"false\" dir=\"\" recycle=\"true\" actionBar=\"false\" actionBarGroup=\"utils\" contextMenu=\"false\" infoPanel=\"false\"\/>\n            <\/gui>\n            <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n            <processing>\n                <clientCallback prepareModal=\"true\" dialogOpenForm=\"custom_data_edit\" dialogOkButtonOnly=\"false\" dialogSkipButtons=\"false\">\n                    <dialogOnOpen><![CDATA[\n                        var f = new FormManager();\n                          var definitions = f.parseParameters(pydio.getXmlRegistry(), \"user\/preferences\/pref[@exposed]|\/\/param[contains(@scope,'user')]\");\n                          f.createParametersInputs(oForm.down('#custom_data_edit'), definitions, true, pydio.user.preferences, false, true);\n                          modal.refreshDialogPosition();\n                    ]]><\/dialogOnOpen>\n                    <dialogOnComplete hideDialog=\"true\"><![CDATA[\n                        var params = $H();\n                        var f = new FormManager();\n                          f.serializeParametersInputs(oForm.down('#custom_data_edit'), params, 'PREFERENCES_');\n                          var conn = new Connexion();\n                          params.set(\"get_action\", \"custom_data_edit\");\n                          conn.setParameters(params);\n                          conn.setMethod(\"POST\");\n                          conn.onComplete = function(transport){\n                              PydioApi.getClient().parseXmlMessage(transport.responseXML);\n                              document.observeOnce(\"ajaxplorer:registry_part_loaded\", function(event){\n                                  if(event.memo != \"user\/preferences\") return;\n                                  pydio.Registry.logXmlUser();\n                              });\n                              pydio.loadXmlRegistry(false, \"user\/preferences\");\n                          };\n                          conn.sendAsync();\n                    ]]><\/dialogOnComplete>\n                    <dialogOnCancel><![CDATA[]]><\/dialogOnCancel>\n                <\/clientCallback>\n                <clientForm id=\"custom_data_edit\"><![CDATA[\n                    <div id=\"custom_data_edit\" action=\"custom_data_edit\" box_width=\"320\">\n                    <\/div>\n                ]]><\/clientForm>\n                \n            <\/processing>\n        <\/action><action name=\"user_update_user\">\n            <gui text=\"519\" title=\"520\" src=\"edit_user.png\" iconClass=\"icon-user\" accessKey=\"\" hasAccessKey=\"false\">\n                <context selection=\"true\" dir=\"\" recycle=\"true\" actionBar=\"true\" actionBarGroup=\"address_book\" contextMenu=\"false\" infoPanel=\"false\"\/>\n                <selectionContext dir=\"false\" file=\"true\" recycle=\"false\" unique=\"true\" allowedMimes=\"shared_user\"\/>\n            <\/gui>\n            <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n            <processing>\n                <clientCallback prepareModal=\"true\" dialogOpenForm=\"user_create_user\" dialogOkButtonOnly=\"false\" dialogSkipButtons=\"false\">\n                    <dialogOnOpen><![CDATA[\n\n                        var user = window.actionManager.getDataModel().getUniqueNode();\n                        if(user && user.getAjxpMime() == \"shared_user\"){\n                            var user_id = getBaseName(user.getPath());\n                            var conn = new Connexion();\n                            conn.setParameters({\n                                get_action:'user_update_user',\n                                user_id:user_id\n                            });\n                            conn.onComplete = function(transport){\n                                var values = $H(transport.responseJSON);\n                                values.set(\"existing_user_id\", user_id);\n\n                                var f = new FormManager();\n                                var parameters = [];\n                                PydioUsers.Client.getCreateUserParameters().map(function(obj){\n                                    if(obj.type === 'valid-password') {\n                                        obj.type = 'password-create';\n                                    }\n                                    if(obj.name === 'new_user_id'){\n                                        obj.name = 'existing_user_id';\n                                        obj.type = 'hidden';\n                                    }\n                                    if(obj.name === 'send_email'){\n                                        return;\n                                    }\n                                    parameters.push($H(obj));\n                                });\n\n                                f.createParametersInputs(oForm.down('#user_create_user'), parameters, true, values, false, true);\n                                modal.refreshDialogPosition();\n\n                            };\n                            conn.sendAsync();\n                        }\n                    ]]><\/dialogOnOpen>\n                    <dialogOnComplete hideDialog=\"true\"><![CDATA[\n                        var params = $H();\n                        var f = new FormManager();\n                          f.serializeParametersInputs(oForm.down('#user_create_user'), params, 'NEW_');\n                          var conn = new Connexion();\n                          params.set(\"get_action\", \"user_create_user\");\n                          conn.setParameters(params);\n                          conn.setMethod(\"POST\");\n                          conn.onComplete = function(transport){\n                                if(transport.responseText == \"SUCCESS\"){\n                                   if($(\"address_book\")){\n                                        $(\"address_book\").ajxpPaneObject.reloadDataModel();\n                                  }\n                                  pydio.displayMessage(\"SUCCESS\", MessageHash[521]);\n                                }\n                          };\n                          conn.sendAsync();\n                    ]]><\/dialogOnComplete>\n                    <dialogOnCancel><![CDATA[]]><\/dialogOnCancel>\n                <\/clientCallback>\n                \n            <\/processing>\n        <\/action><action name=\"user_create_user\">\n      \t\t\t<gui text=\"484\" title=\"485\" src=\"edit_user.png\" iconClass=\"icon-user\" accessKey=\"\" hasAccessKey=\"false\">\n      \t\t\t\t<context selection=\"false\" dir=\"\" recycle=\"true\" actionBar=\"true\" actionBarGroup=\"address_book\" contextMenu=\"false\" infoPanel=\"false\"\/>\n      \t\t\t<\/gui>\n                <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n            <processing>\n                <clientCallback prepareModal=\"true\" dialogOpenForm=\"user_create_user\" dialogOkButtonOnly=\"false\" dialogSkipButtons=\"false\">\n                    <dialogOnOpen><![CDATA[\n                        var parameters = PydioUsers.Client.getCreateUserParameters().map(function(obj){\n                            if(obj.type === 'valid-password') obj.type = 'password-create';\n                            return $H(obj)\n                        });\n                        var f = new FormManager();\n                        f.createParametersInputs(oForm.down('#user_create_user'), parameters, true, $H(), false, true);\n                        modal.refreshDialogPosition();\n                    ]]><\/dialogOnOpen>\n                    <dialogOnComplete hideDialog=\"true\"><![CDATA[\n                        var params = $H();\n                        var f = new FormManager();\n                        f.serializeParametersInputs(oForm.down('#user_create_user'), params, 'NEW_');\n                        var conn = new Connexion();\n                        params.set(\"get_action\", \"user_create_user\");\n                        conn.setParameters(params);\n                        conn.setMethod(\"POST\");\n                        conn.onComplete = function(transport){\n                           if($(\"address_book\")){\n                                $(\"address_book\").ajxpPaneObject.reloadDataModel();\n                          }\n                        };\n                        conn.sendAsync();\n                    ]]><\/dialogOnComplete>\n                    <dialogOnCancel><![CDATA[]]><\/dialogOnCancel>\n                <\/clientCallback>\n                <clientForm id=\"user_create_user\"><![CDATA[\n                    <div id=\"user_create_user\" action=\"custom_data_edit\" box_width=\"320\">\n                    <\/div>\n                ]]><\/clientForm>\n                \n            <\/processing>\n        <\/action><action name=\"switch_language\">\n\t\t\t<gui text=\"190\" title=\"190\" src=\"flag.png\" accessKey=\"\" hasAccessKey=\"false\" iconClass=\"icon-flag\">\n\t\t\t\t<context selection=\"false\" dir=\"\" recycle=\"true\" actionBar=\"false\" actionBarGroup=\"utils\" contextMenu=\"false\" infoPanel=\"false\"\/>\n\t\t\t<\/gui>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"true\" dialogOpenForm=\"switch_language_form\" dialogOkButtonOnly=\"false\" dialogSkipButtons=\"false\">\n\t\t\t\t\t<dialogOnOpen><![CDATA[\n\t\t\t\t\t    if(pydio.user) var userLang = pydio.user.getPreference(\"lang\");\n\t\t\t\t\t\tif(!userLang) userLang = window.ajxpBootstrap.parameters.get(\"currentLanguage\");\n\t\t\t\t\t\tvar selector = $(oForm).select('select[id=\"language_selector\"]')[0];\n\t\t\t\t\t\tpydio.listLanguagesWithCallback(function(key, label){\n\t\t\t\t\t\t\tvar option = new Element('option', {value:key,id:'lang_'+key});\n\t\t\t\t\t\t\toption.update(label);\n\t\t\t\t\t\t\tselector.insert(option);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tselector.setValue(userLang);\n\t\t\t\t\t\tselector.observe(\"change\", function(){\n\t\t\t\t\t\t\tvar value = selector.getValue();\n\t\t\t\t\t\t\tif(pydio.user){\n    \t\t\t\t\t\t\tpydio.user.setPreference(\"lang\", selector.getValue());\n\t    \t\t\t\t\t\tpydio.user.savePreference(\"lang\");\n\t    \t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$(oForm).up('.dialogContent').previous('.dialogTitle').select('span').invoke('remove');\n\t\t\t\t\t]]><\/dialogOnOpen>\n\t\t\t\t\t<dialogOnComplete hideDialog=\"true\"><![CDATA[\n                        if(pydio.user){\n                            var oUser = pydio.user;\n                            if(oUser.getPreference('lang') != null\n                                && oUser.getPreference('lang') != \"\"\n                                && oUser.getPreference('lang') != pydio.currentLanguage)\n                            {\n                                pydio.loadI18NMessages(oUser.getPreference('lang'));\n                                pydio.displayMessage('SUCCESS', MessageHash[241]);\n                            }\n                        }else{\n                            var selector = $(oForm).select('select[id=\"language_selector\"]')[0];\n                            var value = selector.getValue();\n                            pydio.loadI18NMessages(value);\n                            window.ajxpBootstrap.parameters.set(\"currentLanguage\", value);\n                        }\n\t\t\t\t\t]]><\/dialogOnComplete>\n                    <dialogOnCancel><![CDATA[\n                        pydio.Controller.fireAction(\"login\");\n                    ]]><\/dialogOnCancel>\n\t\t\t\t\t<dialogOnCancel><![CDATA[]]><\/dialogOnCancel>\n\t\t\t\t<\/clientCallback>\n\t\t\t\t<clientForm id=\"switch_language_form\"><![CDATA[\n\t\t\t\t\t<div id=\"switch_language_form\" action=\"switch_language_form\" box_width=\"320\">\n\t\t\t\t\t    <div class=\"dialogLegend\"  style=\"margin-left:50px; font-size: 15px;\">Idioma<\/div>\n\t\t\t\t\t\t<select id=\"language_selector\" style=\"margin-left:50px; margin-bottom: 20px;\"><\/select>\n\t\t\t\t\t<\/div>\n\t\t\t\t]]><\/clientForm>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"switch_to_user_dashboard\">\n            <gui src=\"drive_remote.png\" text=\"user_dash.title\" title=\"user_dash.desc\" hasAccessKey=\"false\" iconClass=\"icon-dashboard\">\n                <context dir=\"false\" recycle=\"true\" selection=\"false\" actionBar=\"false\" actionBarGroup=\"utils\" ajxpWidgets=\"UserWidget::logging_string\"\/>\n            <\/gui>\n            <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n            <processing>\n                <clientCallback><![CDATA[\n                    if(!pydio.repositoryId || pydio.repositoryId != \"ajxp_user\"){\n                        pydio.triggerRepositoryChange('ajxp_user');\n                    }\n                ]]><\/clientCallback>\n            <\/processing>\n        <\/action><action name=\"switch_to_settings\">\n            <gui src=\"drive_remote.png\" text=\"165\" title=\"506\" accessKey=\"settings_access_key\" hasAccessKey=\"true\" iconClass=\"icon-cogs\">\n                <context dir=\"false\" recycle=\"true\" selection=\"false\" actionBar=\"true\" actionBarGroup=\"utils\" ajxpWidgets=\"UserWidget::logging_string\"\/>\n            <\/gui>\n            <rightsContext adminOnly=\"true\" noUser=\"true\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n            <processing>\n                <clientCallback><![CDATA[\n                    if(!pydio.repositoryId || pydio.repositoryId != \"ajxp_conf\"){\n                        pydio.triggerRepositoryChange('ajxp_conf');\n                    }\n                ]]><\/clientCallback>\n            <\/processing>\n        <\/action><action name=\"user_team_create\">\n                <gui src=\"delete.png\" iconClass=\"icon-plus\" text=\"user_dash.57\" title=\"user_dash.57\">\n                    <context dir=\"false\" recycle=\"false\" selection=\"false\" actionBar=\"true\" actionBarGroup=\"team_address_book\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback dialogOpenForm=\"team_edit_form\" prepareModal=\"true\">\n                        <dialogOnOpen><![CDATA[\n                            var oForm = modal.getForm();\n                            ResourcesManager.loadClassesAndApply([\"TeamEditor\"], function(){\n                                TeamEditor.prototype.getInstance().open(oForm);\n                            });\n                        ]]><\/dialogOnOpen>\n                        <dialogOnComplete><![CDATA[\n                            TeamEditor.prototype.getInstance().complete(oForm);\n                        ]]><\/dialogOnComplete>\n                        <dialogOnCancel><![CDATA[\n                            TeamEditor.prototype.getInstance().close(oForm);\n                        ]]><\/dialogOnCancel>\n                    <\/clientCallback>\n                    \n                <\/processing>\n            <\/action><action name=\"user_team_add_user\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"user_team_edit_users\">\n                <gui src=\"delete.png\" iconClass=\"icon-edit\" text=\"user_dash.54\" title=\"user_dash.55\">\n                    <context dir=\"false\" recycle=\"false\" selection=\"true\" actionBar=\"true\" actionBarGroup=\"team_address_book\"\/>\n                    <selectionContext dir=\"false\" file=\"true\" recycle=\"false\" unique=\"true\" allowedMimes=\"ajxp_team\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback dialogOpenForm=\"team_edit_form\" prepareModal=\"true\">\n                        <dialogOnOpen><![CDATA[\n                            var contextHolder = window.actionManager.getDataModel();\n                            var oForm = modal.getForm();\n                            ResourcesManager.loadClassesAndApply([\"TeamEditor\"], function(){\n                                TeamEditor.prototype.getInstance().open(oForm, contextHolder);\n                            });\n                        ]]><\/dialogOnOpen>\n                        <dialogOnComplete><![CDATA[\n                            TeamEditor.prototype.getInstance().complete(oForm);\n                        ]]><\/dialogOnComplete>\n                        <dialogOnCancel><![CDATA[\n                            TeamEditor.prototype.getInstance().close(oForm);\n                        ]]><\/dialogOnCancel>\n                    <\/clientCallback>\n                    <clientForm id=\"team_edit_form\"><![CDATA[\n                         <div id=\"team_edit_form\" box_width=\"420\">\n                            <div class=\"dialogContentMainTitle\" ajxp_message_id=\"user_dash.59\">Etiqueta del equipo<\/div>\n                            <input type=\"text\" style=\"width:367px;margin-bottom:30px;\" id=\"team_edit_label\"\/>\n\n                            <div class=\"dialogContentMainTitle\" ajxp_message_id=\"user_dash.60\">Usuarios del equipo<\/div>\n                            <div class=\"dialogLegend\" ajxp_message_id=\"user_dash.56\">Agregar un usuario por linea, escriba en el \u00e1rea de texto para ver aparecer la lista de autocompletado.<\/div>\n                            <div style=\"position: relative;\">\n                                <div id=\"team_loader\" style=\"position: absolute;top: 2px;right: 3px;font-size: 17px;display: none;\"><span class=\"icon-spinner\"><\/span><\/div>\n                                <input type=\"text\" style=\"width:367px;\" id=\"team_edit_input\"\/>\n                                <div type=\"text\" class=\"editable_users_list\" id=\"team_edit_entries\"><\/div>\n                                <div id=\"team_edit_container\"><\/div>\n                            <\/div>\n                         <\/div>\n                    ]]><\/clientForm>\n                    \n                <\/processing>\n            <\/action><action name=\"user_team_delete\">\n                <gui src=\"delete.png\" iconClass=\"icon-trash\" text=\"7\" title=\"7\">\n                    <context dir=\"false\" recycle=\"false\" selection=\"true\" actionBar=\"true\" actionBarGroup=\"team_address_book\"\/>\n                    <selectionContext dir=\"false\" file=\"true\" recycle=\"false\" unique=\"true\" allowedMimes=\"ajxp_team\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback><![CDATA[\n                    if(window.confirm(MessageHash[\"user_dash.52\"])){\n                        var sel = window.actionManager.getDataModel().getUniqueNode();\n                        var conn = new Connexion();\n                        conn.setParameters($H({\n                            get_action: \"user_team_delete\",\n                            team_id: getBaseName(sel.getPath())\n                        }));\n                        conn.onComplete = function(){\n                            $(\"team_panel\").ajxpPaneObject.reloadDataModel();\n                        };\n                        conn.sendAsync();\n                    }\n                    ]]><\/clientCallback>\n                    \n                <\/processing>\n            <\/action><action name=\"user_team_delete_user\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"ajxp_table_exists\">\n                <rightsContext adminOnly=\"true\" noUser=\"false\" read=\"true\" userLogged=\"only\" write=\"true\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"get_secure_token\">\n            <processing>\n                \n            <\/processing>\n        <\/action><action name=\"pass_change\">\n            <gui text=\"194\" title=\"194\" src=\"yast_security.png\" iconClass=\"icon-key\" accessKey=\"\" hasAccessKey=\"false\">\n                <context selection=\"false\" dir=\"\" recycle=\"true\" actionBarGroup=\"utils\"\/>\n            <\/gui>\n            <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n            <processing>\n                <clientCallback prepareModal=\"true\" dialogOpenForm=\"pass_change_form\" dialogOkButtonOnly=\"false\" dialogSkipButtons=\"false\">\n                    <dialogOnOpen><![CDATA[\n\t\t\t\t\t    if(pydio.user.lock){\n\t\t\t\t\t        modal.getForm().insert({top:new Element(\"div\", {className:\"dialogLegend\"}).update(MessageHash[444])});\n\t\t\t\t\t    }\n\t\t\t\t\t\t$('user_change_ownpass_old').value = $('user_change_ownpass1').value = $('user_change_ownpass2').value = '';\n\t\t\t\t\t\t\/\/ Update pass_seed\n\t\t\t\t\t\tvar connexion = new Connexion();\n\t\t\t\t\t\tconnexion.addParameter(\"get_action\", \"get_seed\");\n\t\t\t\t\t\tconnexion.onComplete = function(transport){\n\t\t\t\t\t\t\t$('pass_seed').value = transport.responseText;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconnexion.sendSync();\n\t\t\t\t\t\tnew Protopass($('user_change_ownpass1'), {\n\t\t\t\t\t\t\tbarContainer:$('pwd_strength_container'),\n\t\t\t\t\t\t\tbarPosition:'bottom'\n\t\t\t\t\t\t});\n\t\t\t\t\t]]><\/dialogOnOpen>\n                    <dialogOnComplete hideDialog=\"false\"><![CDATA[\n\t\t\t\t\t\tvar userOldPass = null;\n\t\t\t\t\t\tvar userPass = null;\n\t\t\t\t\t\tvar passSeed = null;\n\t\t\t\t\t\tif($('user_change_ownpass1') && $('user_change_ownpass1').value && $('user_change_ownpass2').value)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif($('user_change_ownpass1').value.length < parseInt(window.pydio.getPluginConfigs(\"core.auth\").get(\"PASSWORD_MINLENGTH\"))){\n\t\t\t\t\t\t\t\talert(MessageHash[378]);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif($('user_change_ownpass1').value != $('user_change_ownpass2').value){\n\t\t\t\t\t\t\t\talert(MessageHash[238]);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif($('user_change_ownpass_old').value == ''){\n\t\t\t\t\t\t\t\talert(MessageHash[239]);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpassSeed = $('pass_seed').value;\n\t\t\t\t\t\t\tif(passSeed == '-1'){\n\t\t\t\t\t\t\t\tuserPass = $('user_change_ownpass1').value;\n\t\t\t\t\t\t\t\tuserOldPass = $('user_change_ownpass_old').value;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tuserPass = HasherUtils.hex_md5($('user_change_ownpass1').value);\n\t\t\t\t\t\t\t\tuserOldPass = HasherUtils.hex_md5( HasherUtils.hex_md5($('user_change_ownpass_old').value)+$('pass_seed').value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvar onComplete = function(transport){\n\t\t\t\t\t\t\t\tvar addition = '';\n\t\t\t\t\t\t\t\tvar logout = false;\n\t\t\t\t\t\t\t\tif(pydio.user.lock){\n\t\t\t\t\t\t\t\t    addition = '\\n ' + MessageHash[445];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(userPass != null){\n\t\t\t\t\t\t\t\t\tif(transport.responseText == 'PASS_ERROR'){\n\t\t\t\t\t\t\t\t\t\talert(MessageHash[240]);\n\t\t\t\t\t\t\t\t\t}else if(transport.responseText == 'SUCCESS'){\n\t\t\t\t\t\t\t\t\t\tpydio.displayMessage('SUCCESS', MessageHash[197] + addition);\n\t\t\t\t\t\t\t\t\t\tif(addition) logout = true;\n\t\t\t\t\t\t\t\t\t\thideLightBox(true);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\tpydio.displayMessage('SUCCESS', MessageHash[241] + addition);\n\t\t\t\t\t\t\t\t\tif(addition) logout = true;\n\t\t\t\t\t\t\t\t\thideLightBox(true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(logout){\n\t\t\t\t\t\t\t\t    pydio.getController().fireAction(\"logout\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tvar conn = new Connexion();\n\t\t\t\t\t\t\tconn.setMethod('POST');\n\t\t\t\t\t\t\tconn.addParameter(\"get_action\", \"pass_change\");\n\t\t\t\t\t\t\tconn.addParameter(\"old_pass\", userOldPass);\n\t\t\t\t\t\t\tconn.addParameter(\"new_pass\", userPass);\n\t\t\t\t\t\t\tconn.addParameter(\"pass_seed\", passSeed);\n\t\t\t\t\t\t\tconn.onComplete = onComplete;\n\t\t\t\t\t\t\tconn.sendAsync();\n\t\t\t\t\t\t}\n\t\t\t\t\t]]><\/dialogOnComplete>\n                    <dialogOnCancel><![CDATA[\n                        if(pydio.user.lock){\n                            throw new Error();\n                        }\n                    ]]><\/dialogOnCancel>\n                <\/clientCallback>\n                <clientForm id=\"pass_change_form\"><![CDATA[\n\t\t\t\t\t<div id=\"pass_change_form\" action=\"pass_change_form\" box_width=\"260\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"pass_seed\" id=\"pass_seed\" value=\"\">\n\t\t\t\t\t\t<div class=\"SF_element\">\n\t\t\t\t\t\t\t<div class=\"SF_label\" ajxp_message_id=\"237\">Contrase\u00f1a anterior : <\/div><input id=\"user_change_ownpass_old\" type=\"password\" class=\"dialogFocus SF_input\"\/>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"SF_element\">\n\t\t\t\t\t\t\t<div class=\"SF_label\" ajxp_message_id=\"198\">Nuevo : <\/div><input id=\"user_change_ownpass1\" value=\"\" type=\"password\" class=\"SF_input\"\/>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"SF_element\">\n\t\t\t\t\t\t\t<div class=\"SF_label\" ajxp_message_id=\"199\">Confirmar : <\/div><input id=\"user_change_ownpass2\" value=\"\" type=\"password\" class=\"SF_input\"\/>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"SF_element\" id=\"pwd_strength_container\"><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t]]><\/clientForm>\n                \n            <\/processing>\n        <\/action><action name=\"ls\" dirDefault=\"true\">\n\t\t\t<gui text=\"32\" title=\"32\" src=\"fileopen.png\" iconClass=\"icon-folder-open-alt\" accessKey=\"folder_access_key\">\n\t\t\t\t<context selection=\"true\" dir=\"\" recycle=\"false\" actionBar=\"true\" actionBarGroup=\"put\" contextMenu=\"true\" infoPanel=\"true\"\/>\n\t\t\t\t<selectionContext dir=\"true\" file=\"true\" recycle=\"false\" enableRoot=\"true\" unique=\"true\" allowedMimes=\"ajxp_folder,zip,ajxp_browsable_archive\" behaviour=\"hidden\">\n\t\t\t\t<\/selectionContext>\n\t\t\t<\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"false\">\n\t\t\t<\/rightsContext>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"false\"><![CDATA[\n\t\t\t\t\tvar path;\n\t\t\t\t\tif(window.actionArguments && window.actionArguments.length>0){\n\t\t\t\t\t\tpath = window.actionArguments[0];\n\t\t\t\t\t\tif(Object.isString(path)){path = new AjxpNode(path,false,getBaseName(path));}\n\t\t\t\t\t}else{\n\t\t\t\t\t\tvar userSelection = ajaxplorer.getUserSelection();\n\t\t\t\t\t\tif(userSelection && userSelection.isUnique() && (userSelection.hasDir() || userSelection.hasMime(\"zip,ajxp_browsable_archive\".split(\",\")))){\n\t\t\t\t\t\t\tpath = userSelection.getUniqueNode();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(path){\n\t\t\t\t\t\tajaxplorer.updateContextData(path);\n\t\t\t\t\t}\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<pre_processing>\n\t\t\t\t\t\n\t\t\t\t<\/pre_processing><post_processing>\n\t\t\t\t\t\n\t\t\t\t<\/post_processing><\/action><action name=\"fs_create_resource\">\n            <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"true\" userLogged=\"true\" write=\"true\"\/>\n            <processing>\n                \n            <\/processing>\n        <\/action><action name=\"mkdir\">\n            <gui text=\"154\" title=\"155\" src=\"folder_new.png\" iconClass=\"mdi mdi-folder-plus\" accessKey=\"folder_access_key\" hasAccessKey=\"true\">\n                <context selection=\"false\" dir=\"true\" recycle=\"hidden\" actionBar=\"true\" contextMenu=\"true\" infoPanel=\"false\" actionBarGroup=\"put,minisite\" inZip=\"false\"\/>\n            <\/gui>\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"false\" write=\"true\" adminOnly=\"\"\/>\n            <processing>\n                <clientCallback prepareModal=\"true\"><![CDATA[\n                    modal.showDialogForm('Create', 'mkdir_form', function(form){\n                        if(form.down('a.create_file_alt_link')){\n                            form.down('a.create_file_alt_link').observe('click', function(){\n                                pydio.getController().fireAction('mkfile');\n                            });\n                        }\n                    }, function(){\n                        var oForm = $(modal.getForm());\n                        var elementToCheck=(oForm['dirname']);\n                        if(ajaxplorer.getContextHolder().fileNameExists($(elementToCheck).getValue()))\n                        {\n                            alert(MessageHash[125]);\n                            return false;\n                        }\n                        PydioApi.getClient().submitForm(oForm);\n                        hideLightBox(true);\n                        return false;\n                    });\n                    ]]><\/clientCallback>\n                <clientForm id=\"mkdir_form\"><![CDATA[\n                <div id=\"mkdir_form\" action=\"mkdir\" box_width=\"200\">\n                    <div class=\"dialogLegend\" ajxp_message_id=\"173\">Nombre de la nueva carpeta<\/div>\n                    <input type=\"text\" name=\"dirname\" size=\"30\" class=\"dialogFocus\" is=\"core-input\">\n                    <div class=\"dialogLegend\" style=\"padding-top:20px;\" id=\"alt_mkfile\"><span class=\"icon-chevron-right\"><\/span> De manera alternativa, puede <a class='create_file_alt_link'>crear un nuevo archivo vacio<\/a>.<\/div>\n                <\/div>\n                ]]><\/clientForm>\n                \n            <\/processing>\n        <\/action><action name=\"mkfile\">\n            <gui text=\"156\" title=\"157\" src=\"filenew.png\" accessKey=\"file_access_key\" iconClass=\"icon-file-alt\" hasAccessKey=\"false\">\n                <context selection=\"false\" dir=\"true\" recycle=\"hidden\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"create\" inZip=\"false\"\/>\n            <\/gui>\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"false\" write=\"true\" adminOnly=\"\"\/>\n            <processing>\n                <clientCallback prepareModal=\"true\"><![CDATA[\n                    modal.showDialogForm('Create', 'mkfile_form', null, function(){\n                        var oForm = $(modal.getForm());\n                        var elementToCheck=(oForm['filename']);\n                        if(ajaxplorer.getContextHolder().fileNameExists($(elementToCheck).getValue()))\n                        {\n                            alert(MessageHash[125]);\n                            return false;\n                        }\n                        PydioApi.getClient().submitForm(oForm);\n                        hideLightBox(true);\n                        return false;\n                    });\n                    ]]><\/clientCallback>\n                <clientForm id=\"mkfile_form\"><![CDATA[\n                <div id=\"mkfile_form\" action=\"mkfile\" box_width=\"200\">\n                <div class=\"dialogLegend\" ajxp_message_id=\"174\">Nombre del nuevo archivo<\/div>\n                <input type=\"text\" name=\"filename\" size=\"30\" class=\"dialogFocus\">\n                <\/div>\n                ]]><\/clientForm>\n                \n            <\/processing>\n        <\/action><action name=\"empty_recycle\">\n\t\t\t<gui text=\"220\" title=\"221\" src=\"trashcan_empty.png\" iconClass=\"icon-ban-circle\" accessKey=\"empty_recycle_access_key\" hasAccessKey=\"true\">\n\t\t\t\t<context selection=\"true\" dir=\"true\" recycle=\"only\" actionBar=\"true\" contextMenu=\"true\" infoPanel=\"false\" actionBarGroup=\"change_main\"\/>\n                <selectionContext dir=\"false\" file=\"false\" recycle=\"true\" unique=\"true\"\/>\n\t\t\t<\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"\" read=\"true\" write=\"true\" adminOnly=\"\"\/>\n\t\t\t<processing>\n                \n\t\t\t\t<clientCallback prepareModal=\"false\"><![CDATA[\n\t\t\t\t\tmodal.showDialogForm('EmptyRecycle', 'empty_recycle_form', null, function(){\n\t\t\t\t\t\tPydioApi.getClient().request({get_action:'empty_recycle'}, function(transport){\n\t\t\t\t\t\t    PydioApi.getClient().parseXmlMessage(transport.responseXML);\n\t\t\t\t\t\t});\n\t\t\t\t\t\thideLightBox(true);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n                ]]><\/clientCallback>\n                <clientForm id=\"empty_recycle_form\"><![CDATA[\n                    <div id=\"empty_recycle_form\" action=\"empty_recycle\" box_width=\"200\">\n                        <span ajxp_message_id=\"177\">\u00bfEst\u00e1s seguro de querer borrar permanentemente los archivos seleccionados?<\/span>\n                    <\/div>\n\t\t\t\t]]><\/clientForm>\n            <\/processing>\n\t\t<\/action><action name=\"download\" fileDefault=\"false\">\n\t\t\t<gui text=\"88\" title=\"88\" src=\"download_manager.png\" iconClass=\"mdi mdi-download\" accessKey=\"download_access_key\" hasAccessKey=\"true\">\n\t\t\t\t<context selection=\"true\" dir=\"\" recycle=\"false\" actionBar=\"true\" contextMenu=\"true\" infoPanel=\"true\" actionBarGroup=\"get,inline,info_panel\">\n\t\t\t\t<\/context>\n\t\t\t\t<selectionContext dir=\"true\" file=\"true\" recycle=\"false\" unique=\"false\" enableRoot=\"true\"\/><\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"\"\/>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"true\"><![CDATA[\n\t\t\t\t\tvar userSelection = ajaxplorer.getUserSelection();\n\t\t\t\t\tif(( userSelection.isUnique() && !userSelection.hasDir() ) || pydio.Parameters.get('multipleFilesDownloadEnabled'))\n\t\t\t\t\t{\n\t\t\t\t\t\tif(window.gaTrackEvent){\n\t\t\t\t\t\t\tvar fileNames = userSelection.getFileNames();\n\t\t\t\t\t\t\tfor(var i=0; i<fileNames.length;i++){\n\t\t\t\t\t\t\t\twindow.gaTrackEvent(\"Data\", \"Download\", fileNames[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tPydioApi.getClient().downloadSelection(userSelection, $('download_form'), 'download');\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tvar loadFunc = function(oForm){\n\t\t\t\t\t\t\tvar dObject = oForm.getElementsBySelector('div[id=\"multiple_download_container\"]')[0];\n\t\t\t\t\t\t\tvar downloader = new MultiDownloader(dObject, ajxpServerAccessPath+'&action=download&file=');\n\t\t\t\t\t\t\tdownloader.triggerEnd = function(){hideLightBox()};\n\t\t\t\t\t\t\tvar fileNames = userSelection.getFileNames();\n\t\t\t\t\t\t\tfor(var i=0; i<fileNames.length;i++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdownloader.addListRow(fileNames[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tvar closeFunc = function(){\n\t\t\t\t\t\t\thideLightBox();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmodal.showDialogForm('Download Multiple', 'multi_download_form', loadFunc, closeFunc, null, true);\n\t\t\t\t\t}\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t\t\t<clientForm id=\"multi_download_form\"><![CDATA[\n\t\t\t\t\t<div id=\"multi_download_form\" title=\"Descargar varios archivos\"  box_width=\"345\">\n\t\t\t\t\t<div class=\"dialogLegend\">Haz click en cada archivo para descargarlo.<\/div><br\/>\n\t\t\t\t\t<div id=\"multiple_download_container\"><\/div>\n\t\t\t\t\t<form style=\"display:inline;\" action=\"index.php\" method=\"POST\" id=\"download_form\" target=\"download_iframe\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"get_action\" value=\"download\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"secure_token\" value=\"\">\n\t\t\t\t\t<\/form>\n\t\t\t\t\t<iframe id=\"download_iframe\" name=\"download_iframe\" style=\"display:none\"><\/iframe>\n\t\t\t\t\t<\/div>]]>\n\t\t\t\t\t<\/clientForm>\n\t\t\t\t\t<clientListener name=\"selectionChange\"><![CDATA[\n\t\t\t\t\tif(ajaxplorer){\n\t\t\t\t\t\tvar userSelection = ajaxplorer.getUserSelection();\n\t\t\t\t\t\tvar action = pydio.getController().getActionByName(\"download\");\n\t\t\t\t\t\tif(window.zipEnabled && window.multipleFilesDownloadEnabled){\n\t\t\t\t\t\t\tif(action){\n\t\t\t\t\t\t\t\tif((userSelection.isUnique() && !userSelection.hasDir()) || userSelection.isEmpty()){\n\t\t\t\t\t\t\t\t\taction.setIconSrc('download_manager.png');\n\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\taction.setIconSrc('accessories-archiver.png');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tif(userSelection.hasDir() && action){\n\t\t\t\t\t\t\t\taction.selectionContext.dir = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t]]><\/clientListener>\n\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t<pre_processing>\n                    \n                <\/pre_processing><\/action><action name=\"download_all\">\n            <gui text=\"463\" title=\"464\" src=\"download_manager.png\" iconClass=\"icon-archive\" hasAccessKey=\"false\">\n                <context selection=\"false\" dir=\"true\" recycle=\"false\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"minisite\">\n                <\/context>\n            <\/gui>\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"\"\/>\n            <processing>\n                <clientCallback prepareModal=\"true\"><![CDATA[\n                        var dm = pydio.getContextHolder();\n                        dm._selectedNodes = $A([dm.getRootNode()]);\n                        dm._bEmpty = dm._bDir = true; dm._bFile = false;\n                        dm.publish(\"selection_changed\", dm);\n                        window.setTimeout(function(){\n                            pydio.getController().fireAction(\"download\");\n                        }, 200);\n                ]]><\/clientCallback>\n                <clientListener name=\"init\"><![CDATA[\n                    if(!pydio.Parameters.get('zipEnabled') || !pydio.Parameters.get('multipleFilesDownloadEnabled')){\n                        pydio.Controller.getActionByName(\"download_all\").hide();\n                        pydio.Controller.actions[\"delete\"](\"download_all\");\n                    }\n                ]]><\/clientListener>\n            <\/processing>\n        <\/action><action name=\"compress\">\n\t\t\t<processing>\n                \n\t\t\t\t<\/processing>\n\t\t<\/action><action name=\"compress_ui\">\n\t\t\t<gui text=\"313\" title=\"314\" src=\"archive_insert.png\" iconClass=\"icon-briefcase\" accessKey=\"\" hasAccessKey=\"false\">\n\t\t\t\t<context selection=\"true\" dir=\"\" recycle=\"hidden\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"true\" actionBarGroup=\"change\" inZip=\"false\">\n\t\t\t\t<\/context>\n\t\t\t\t<selectionContext dir=\"true\" file=\"file\" recycle=\"false\" unique=\"false\"\/><\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"\"\/>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"true\"><![CDATA[\n                        var crtDir = pydio.getContextHolder().getContextNode().getPath();\n                        var userSelection = pydio.getUserSelection();\n                        if (!userSelection.isEmpty()) {\n                            var loadFunc = function (oForm) {\n                                if (userSelection.isEmpty()) {\n                                    return;\n                                }\n                                var archive_nameInput = oForm.down('input[id=\"archive_name\"]');\n                                var changeDuplicateArchiveName = function (name, extension) {\n                                    var nameLastIndexOf = name.lastIndexOf(\"-\");\n                                    var tmpFileName = name.substr(0, nameLastIndexOf);\n                                    var compteurFileName = name.substr(nameLastIndexOf + 1);\n                                    if (nameLastIndexOf == -1) {\n                                        tmpFileName = name;\n                                        compteurFileName = 1;\n                                    }\n                                    while(userSelection.fileNameExists(name + extension)){\n                                        name = tmpFileName + \"-\" + compteurFileName;\n                                        compteurFileName ++;\n                                        if(compteurFileName > 20){\n                                            break;\n                                        }\n                                    }\n                                    archive_nameInput.setValue(name + extension);\n                                    return name;\n                                };\n                                var archive_name = archive_nameInput.getValue();\n                                var archiveTypeSelect = oForm.down('select[id=\"type_archive\"]');\n                                if(window.multipleFilesDownloadEnabled){\n                                    archiveTypeSelect.insert({top:'<option value=\".zip\">ZIP<\/option>'});\n                                }\n                                var archiveExtension = archiveTypeSelect.getValue();\n                                if (userSelection.isUnique()) {\n                                    if (userSelection.getUniqueNode().isLeaf() == true) {\n                                        archive_name = getBaseName(userSelection.getUniqueFileName()).split(\".\").shift();\n                                    } else {\n                                        archive_name = getBaseName(userSelection.getUniqueFileName());\n                                    }\n                                } else if (crtDir.length == 1) {\n                                    archive_name = \"Archive\";\n                                } else {\n                                    archive_name = getBaseName(crtDir);\n                                }\n                                var updateFormAndArchiveName = function (){\n                                    var archiveExtension = archiveTypeSelect.getValue();\n                                    if(archiveExtension == \".zip\"){\n                                        oForm.setAttribute(\"action\", \"compress\");\n                                        oForm.down(\"#compression_form\").setAttribute(\"action\", \"compress\");\n                                        oForm.down('input[name=\"get_action\"]').value = \"compress\";\n                                    }else{\n                                        oForm.setAttribute(\"action\", \"compression\");\n                                        oForm.down(\"#compression_form\").setAttribute(\"action\", \"compression\");\n                                        oForm.down('input[name=\"get_action\"]').value = \"compression\";\n                                    }\n                                    changeDuplicateArchiveName(archive_name, archiveExtension);\n                                };\n                                updateFormAndArchiveName();\n                                archiveTypeSelect.observe(\"change\", updateFormAndArchiveName);\n                                archive_nameInput.observe(\"change\", function () {\n                                    archive_name = archive_nameInput.getValue().slice(0, -archiveTypeSelect.getValue().length);\n                                    changeDuplicateArchiveName(archive_name, archiveTypeSelect.getValue());\n                                });\n                            };\n                            var closeFunc = function(){\n                                userSelection.updateFormOrUrl(modal.getForm());\n                                PydioApi.getClient().submitForm(modal.getForm(), true);\n                                hideLightBox();\n                            };\n                            modal.showDialogForm('Compress selection to ...', 'compression_form', loadFunc, closeFunc);\n                        }\n                    ]]><\/clientCallback>\n\t\t\t\t<clientForm id=\"compression_form\"><![CDATA[\n                        <div id=\"compression_form\" action=\"compression\" box_width=\"272\">\n                            <label class=\"dialogLegend\" id=\"type_archive\" style=\"display: inline-block;margin-top: 11px;\">Select the format of the archive:<\/label>\n                            <select style=\"width:100px;\"  name=\"type_archive\" id=\"type_archive\" class=\"dialogFocus initFicName\">\n                                <option value=\".tar\">TAR<\/option>\n                                <option value=\".tar.gz\">TAR.GZ<\/option>\n                                <option value=\".tar.bz2\">TAR.BZ2<\/option>\n                            <\/select>\n                            <br\/>\n                            <label class=\"dialogLegend\" for=\"archive_name\"  style=\"display: inline-block;margin-top: 11px;\">Archive's name :<\/label>\n                            <br\/>\n                            <input style=\"width: 93%;margin-left: 9px;margin-top: 7px; margin-bottom:12px;\" type=\"text\" name=\"archive_name\" id=\"archive_name\" class=\"dialogFocus initFicName\" \/>\n                        <\/div>\n\t\t\t\t]]><\/clientForm>\n\t\t\t\t<clientListener name=\"selectionChange\"><![CDATA[\n\t\t\t\tif(ajaxplorer){\n\t\t\t\t\tvar userSelection = ajaxplorer.getUserSelection();\n\t\t\t\t\tvar action = pydio.getController().getActionByName(\"compress_ui\");\n\t\t\t\t\tif(!window.zipEnabled || !window.multipleFilesDownloadEnabled){\n\t\t\t\t\t\tif(action){\n\t\t\t\t\t\t\tif(userSelection.isUnique()) action.selectionContext.multipleOnly = true;\n\t\t\t\t\t\t\telse action.selectionContext.unique = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t]]><\/clientListener>\n            <\/processing>\n\t\t<\/action><action name=\"open_with_unique\">\n            <gui text=\"462\" title=\"462\" src=\"fileopen.png\" iconClass=\"icon-eye-close\" accessKey=\"preview_access_key\" hasAccessKey=\"true\">\n                <context selection=\"true\" dir=\"\" recycle=\"hidden\" behaviour=\"hidden\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"inline,info_panel\" inZip=\"false\">\n                <\/context>\n                <selectionContext dir=\"false\" file=\"true\" recycle=\"false\" unique=\"true\" allowedMimes=\"repository,repository_editable,xml,html,htm,js,json,css,php,phtml,sparql,txt,py,c#,java,jsp,sql,cgi,pl,inc,xsl,,odt,ods,odp,jpg,jpeg,png,bmp,pxd,mp3,wav,wms_layer,ol_layer,*,pad,none,flv,mov,mp4,m4v,m4a,aac,ogv,webm,ajxp_graphs,datagrid,ajxp_plugin,gif,mime_folder,ai,avi,blend,cdr,cel,dcm,dds,dicom,eps,fit,fits,flc,fli,g3,ico,kra,mpg,ora,pbm,pcc,pcl,pcx,pdf,pgm,pnm,ppm,ps,psd,psp,sif,sifz,svg,svgz,tiff,vsd,wmf,xbm,xcf,xjt,xwd,eml,docx,pptx,xlsx,dotx,xltx,ppsx,doc,ppt,xls,dot,xlt,pps,ots,ott,otp,rtf,csv,role,group,user,user_editable,tif,cr2,sxc,tsv,sxi,sxw,^ajxp_browsable_archive,^zip\" behaviour=\"hidden\"\/><\/gui>\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"\"\/>\n            <processing>\n                <clientCallback prepareModal=\"false\"><![CDATA[\n                    var editorData = window.actionArguments[0];\n                    pydio.UI.openCurrentSelectionInEditor(editorData);\n                ]]><\/clientCallback>\n            <\/processing>\n        <\/action><action name=\"open_with\" fileDefault=\"true\">\n            <gui text=\"316\" title=\"316\" src=\"fileopen.png\" iconClass=\"icon-eye-close\" accessKey=\"open_with_access\" hasAccessKey=\"true\">\n                <context selection=\"true\" dir=\"\" recycle=\"hidden\" behaviour=\"hidden\" actionBar=\"true\" contextMenu=\"true\" infoPanel=\"false\" actionBarGroup=\"get,info_panel\" inZip=\"false\">\n                <\/context>\n                <selectionContext dir=\"false\" file=\"true\" recycle=\"false\" unique=\"true\" allowedMimes=\"repository,repository_editable,xml,html,htm,js,json,css,php,phtml,sparql,txt,py,c#,java,jsp,sql,cgi,pl,inc,xsl,,odt,ods,odp,jpg,jpeg,png,bmp,pxd,mp3,wav,wms_layer,ol_layer,*,pad,none,flv,mov,mp4,m4v,m4a,aac,ogv,webm,ajxp_graphs,datagrid,ajxp_plugin,gif,mime_folder,ai,avi,blend,cdr,cel,dcm,dds,dicom,eps,fit,fits,flc,fli,g3,ico,kra,mpg,ora,pbm,pcc,pcl,pcx,pdf,pgm,pnm,ppm,ps,psd,psp,sif,sifz,svg,svgz,tiff,vsd,wmf,xbm,xcf,xjt,xwd,eml,docx,pptx,xlsx,dotx,xltx,ppsx,doc,ppt,xls,dot,xlt,pps,ots,ott,otp,rtf,csv,role,group,user,user_editable,tif,cr2,sxc,tsv,sxi,sxw,^ajxp_browsable_archive,^zip\" behaviour=\"hidden\"\/><\/gui>\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"\"\/>\n            <subMenu>\n                <dynamicBuilder><![CDATA[\n                    var context = window.builderContext;\n                    context.builderMenuItems = $A([]);\n                    var node = pydio.getUserSelection().getUniqueNode();\n                    var selectedMime = getAjxpMimeType(node);\n                    var nodeHasReadonly = node.getMetadata().get(\"ajxp_readonly\") === \"true\";\n                    var editors = pydio.Registry.findEditorsForMime(selectedMime);\n                    if(editors.length){\n                        var index = 0;\n                        var sepAdded = false;\n                        editors.each(function(el){\n                            if(!el.openable) return;\n                            if(el.write && nodeHasReadonly) return;\n                            if(el.mimes.include('*')){\n                                if(!sepAdded && index > 0){\n                                    context.builderMenuItems.push({separator:true});\n                                }\n                                sepAdded = true;\n                            }\n                            context.builderMenuItems.push({\n                                name:el.text,\n                                alt:el.title,\n                                isDefault : (index == 0),\n                                image:resolveImageSource(el.icon, '\/images\/actions\/ICON_SIZE', 22),\n                                icon_class: el.icon_class,\n                                callback:function(e){this.apply([el]);}.bind(context)\n                            } );\n                            index++;\n                        } );\n                    }\n                    if(!index){\n                        context.builderMenuItems.push({\n                            name:MessageHash[324],\n                            alt:MessageHash[324],\n                            image:resolveImageSource('button_cancel.png', '\/images\/actions\/ICON_SIZE', 22),\n                            callback:function(e){}\n                        } );\n                    }\n                ]]><\/dynamicBuilder>\n            <\/subMenu>\n            <processing>\n                <clientCallback prepareModal=\"false\"><![CDATA[\n                    var editorData = window.actionArguments[0];\n                    pydio.UI.openCurrentSelectionInEditor(editorData);\n                ]]><\/clientCallback>\n                <\/processing>\n        <\/action><action name=\"stat\">\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"false\"\/>\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"lsync\">\n            <rightsContext noUser=\"false\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"false\"\/>\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"apply_check_hook\">\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"false\" write=\"true\" adminOnly=\"false\"\/>\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"get_content\">\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"false\"\/>\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"put_content\">\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"false\"\/>\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"restore\">\n\t\t\t<gui text=\"222\" title=\"223\" src=\"folder1_important.png\" iconClass=\"icon-undo\" accessKey=\"restore_access_key\" hasAccessKey=\"true\">\n\t\t\t\t<context selection=\"true\" dir=\"\" recycle=\"only\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"change_main\">\n\t\t\t\t<\/context>\n\t\t\t\t<selectionContext dir=\"true\" file=\"true\" recycle=\"false\" unique=\"true\" image=\"false\" editable=\"false\"\/><\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"\"\/>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"true\"><![CDATA[\n\t\t\t\t   var userSelection = ajaxplorer.getUserSelection();\n\t\t\t\t   var fileNames = $A(userSelection.getFileNames());\n\t\t\t\t   var connexion = new Connexion();\n\t\t\t\t   connexion.addParameter('get_action', 'restore');\n\t\t\t\t   connexion.addParameter('dir', userSelection.getContextNode().getPath());\n\t\t\t\t   connexion.onComplete = function(transport){\n\t\t\t\t   \t\tPydioApi.getClient().parseXmlMessage(transport.responseXML);\n\t\t\t\t   };\n\t\t\t\t   fileNames.each(function(filename){\n\t\t\t\t   \t\tconnexion.addParameter('file', filename);\n\t\t\t\t   \t\tconnexion.sendAsync();\n\t\t\t\t   });\n\t\t\t\t\t]]><\/clientCallback>\n                    \n\t\t\t\t<\/processing>\n\t\t<\/action><action name=\"rename\">\n\t\t\t<gui text=\"6\" title=\"158\" src=\"applix.png\" accessKey=\"rename_access_key\" iconClass=\"icon-pencil\" hasAccessKey=\"true\">\n\t\t\t\t<context selection=\"true\" dir=\"\" recycle=\"hidden\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"change_main\" inZip=\"false\">\n\t\t\t\t<\/context>\n\t\t\t\t<selectionContext dir=\"true\" file=\"true\" recycle=\"false\" unique=\"true\" image=\"false\" editable=\"false\"\/><\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"\"\/>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"true\"><![CDATA[\n\t\t\t\t    if(pydio.getUserSelection()){\n\t\t\t\t        var orig = pydio.getUserSelection().getSelectionSource();\n\t\t\t\t    }\n\t\t\t\t\tvar callback = function(node, newValue){\n\t\t\t\t\t    if(!node) node = pydio.getUserSelection().getUniqueNode();\n\t\t\t\t\t\tvar filename = node.getPath();\n\t\t\t\t\t\tvar conn = new Connexion();\n\t\t\t\t\t\tconn.addParameter('get_action', 'rename');\n\t\t\t\t\t\tconn.addParameter('file', filename);\n\t\t\t\t\t\tconn.addParameter('filename_new', newValue);\n\t\t\t\t\t\tconn.onComplete = function(transport){\n\t\t\t\t\t\t\tPydioApi.getClient().parseXmlMessage(transport.responseXML);\n\t\t\t\t\t\t\tif(orig && pydio.getUserSelection()){\n\t\t\t\t\t\t\t\tpydio.getUserSelection().setSelectionSource(orig);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconn.sendAsync();\n\t\t\t\t\t};\n\t\t\t\t\tif(pydio.getUserSelection() && pydio.getUserSelection().getSelectionSource() && pydio.getUserSelection().getSelectionSource().switchCurrentLabelToEdition) {\n\t\t\t\t\t    pydio.getUserSelection().getSelectionSource().switchCurrentLabelToEdition(callback);\n                    }else{\n                        var test = pydio.UI._focusables.detect(function(obj){return obj.hasFocus;});\n                        if (test && test.switchCurrentLabelToEdition){\n                            test.switchCurrentLabelToEdition(callback);\n                        }\n                    }\n\t\t\t\t]]><\/clientCallback>\n\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t<\/action><action name=\"cross_copy\">\n            <processing>\n                \n            <\/processing>\n        <\/action><action name=\"move\" dragndropDefault=\"true\">\n\t\t\t<gui text=\"70\" title=\"160\" src=\"editpaste.png\" iconClass=\"icon-paste\" accessKey=\"move_access_key\" hasAccessKey=\"true\">\n\t\t\t\t<context selection=\"true\" dir=\"\" recycle=\"hidden\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"change_main\" inZip=\"false\">\n\t\t\t\t<\/context>\n\t\t\t\t<selectionContext dir=\"true\" file=\"true\" recycle=\"false\" unique=\"false\" image=\"false\" editable=\"false\"\/><\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"\"\/>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"true\"><![CDATA[\n\t\t\t\t\tvar context = pydio.getController();\n\t\t\t\t\tif(ajaxplorer.user){\n\t\t\t\t\t\tvar user = ajaxplorer.user;\n\t\t\t\t\t\tvar activeRepository = user.getActiveRepository();\n\t\t\t\t\t}\n\t\t\t\t\tvar context = pydio.getController();\n\t\t\t\t\tvar onLoad = function(oForm){\n\t\t\t\t\t\tvar getAction = oForm.select('input[name=\"get_action\"]')[0];\n\t\t\t\t\t\tgetAction.value = 'move';\n\t\t\t\t\t\tthis.treeSelector = new TreeSelector(oForm, {\n\t\t\t\t\t\t    nodeFilter : function(ajxpNode){\n                                return (!ajxpNode.isLeaf() && !ajxpNode.hasMetadataInBranch(\"ajxp_readonly\", \"true\"));\n                            }\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.treeSelector.load();\n\t\t\t\t\t\tif(!ajaxplorer.getUserSelection().hasDir() && user && user.canCrossRepositoryCopy() && user.hasCrossRepositories()){\n\t\t\t\t\t\t\tthis.treeSelector.setFilterShow(true);\n\t\t\t\t\t\t\tProtoCompat.map2hash(user.getCrossRepositories()).each(function(pair){\n\t\t\t\t\t\t\t\tthis.treeSelector.appendFilterValue(pair.key, pair.value.getLabel());\n\t\t\t\t\t\t\t}.bind(this));\n\t\t\t\t\t\t\tthis.treeSelector.appendFilterValue(activeRepository, \"&lt;\"+MessageHash[372]+\"&gt;\", 'top');\n\t\t\t\t\t\t\tthis.treeSelector.setFilterSelectedIndex(0);\n\t\t\t\t\t\t\tthis.treeSelector.setFilterChangeCallback(function(e){\n\t\t\t\t\t\t\t\tvar externalRepo = this.filterSelector.getValue();\n\t\t\t\t\t\t\t\tvar nodeProvider = new RemoteNodeProvider();\n\t\t\t\t\t\t\t\tnodeProvider.initProvider({tmp_repository_id:externalRepo});\n\t\t\t\t\t\t\t\tthis.resetAjxpRootNode(new AjxpNode(\"\/\", false, MessageHash[373], \"folder.png\", nodeProvider));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}.bind(context);\n\t\t\t\t\tvar onCancel = function(){\n\t\t\t\t\t\tthis.treeSelector.unload();\n\t\t\t\t\t\thideLightBox();\n\t\t\t\t\t}.bind(context);\n\t\t\t\t\tvar onSubmit = function(){\n\t\t\t\t\t\tvar oForm = modal.getForm();\n\t\t\t\t\t\tvar getAction = oForm.down('input[name=\"get_action\"]');\n\t\t\t\t\t\tvar selectedNode = this.treeSelector.getSelectedNode();\n\t\t\t\t\t\tif(!this.treeSelector.getFilterActive(activeRepository) && selectedNode == ajaxplorer.getContextNode().getPath()){\n\t\t\t\t\t\t\talert(MessageHash[183]);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tajaxplorer.getUserSelection().updateFormOrUrl(oForm);\n\t\t\t\t\t\tif(activeRepository && this.treeSelector.getFilterActive(activeRepository)){\n\t\t\t\t\t\t\tgetAction.value = \"cross_copy\" ;\n\t\t\t\t\t\t\tvar subAction = new Element('input', {type:'hidden',name:'moving_files',value:'true'});\n\t\t\t\t\t\t\toForm.insert(subAction);\n\t\t\t\t\t\t\tthis.submitForm(oForm, false, function(transport){\n\t\t\t\t\t\t\t    var res = this.parseXmlMessage(transport.responseXML);\n\t\t\t\t\t\t\t    if(!res) return;\n\n\t\t\t\t\t\t\t\tpydio.fireContextRefresh();\n\t\t\t\t\t\t\t}.bind(this));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tthis.submitForm(oForm);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.treeSelector.unload();\n\t\t\t\t\t\thideLightBox();\n\t\t\t\t\t}.bind(context);\n\t\t\t\t\tmodal.showDialogForm('Move\/Copy', 'copymove_form', onLoad, onSubmit, onCancel);\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t<\/action><action name=\"delete\">\n\t\t\t<gui text=\"7\" title=\"161\" src=\"editdelete.png\" iconClass=\"icon-trash\" accessKey=\"delete_access_key\" hasAccessKey=\"true\" specialAccessKey=\"delete\">\n\t\t\t\t<context selection=\"true\" dir=\"\" recycle=\"false\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"change_main,minisite\" inZip=\"false\">\n\t\t\t\t<\/context>\n\t\t\t\t<selectionContext dir=\"true\" file=\"true\" recycle=\"false\" unique=\"false\" image=\"false\" editable=\"false\"\/>\n            <\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"\"\/>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"true\"><![CDATA[\n\t\t\t\t\tvar onLoad = function(oForm){\n\t\t\t\t    \tvar message = MessageHash[177];\n\t\t\t\t    \tvar repoHasRecycle = pydio.getContextHolder().getRootNode().getMetadata().get(\"repo_has_recycle\");\n\t\t\t\t    \tif(repoHasRecycle && pydio.getContextNode().getAjxpMime() != \"ajxp_recycle\"){\n\t\t\t\t    \t\tmessage = MessageHash[176];\n\t\t\t\t    \t}\n\t\t   \t\t    \t$(oForm).getElementsBySelector('span[id=\"delete_message\"]')[0].innerHTML = message;\n\t\t\t\t\t};\n\t\t\t\t\tmodal.showDialogForm('Delete', 'delete_form', onLoad, function(){\n\t\t\t\t\t\tvar oForm = modal.getForm();\n\t\t\t\t\t\tajaxplorer.getUserSelection().updateFormOrUrl(oForm);\n\t\t\t\t\t\tPydioApi.getClient().submitForm(oForm, true, function(transport){\n\t\t\t\t\t\t    var result = PydioApi.getClient().parseXmlMessage(transport.responseXML);\n\t\t\t\t\t\t}.bind(pydio.getController()));\n\t\t\t\t\t\thideLightBox(true);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t});\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t\t<clientForm id=\"delete_form\"><![CDATA[\n\t\t\t\t<div id=\"delete_form\" action=\"delete\" box_width=\"200\">\n\t\t\t\t<span id=\"delete_message\"><\/span>\n\t\t\t\t<\/div>\t\t\t\t]]><\/clientForm>\n\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t<\/action><action name=\"chmod\">\n            <gui text=\"287\" title=\"287\" src=\"ksysv.png\" iconClass=\"icon-th\" accessKey=\"\" hasAccessKey=\"false\">\n                <context selection=\"true\" dir=\"true\" recycle=\"hidden\" behaviour=\"hidden\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"true\" actionBarGroup=\"change\" inZip=\"false\">\n                <\/context>\n                <selectionContext dir=\"true\" file=\"true\" recycle=\"false\" unique=\"false\" allowedMimes=\"\" behaviour=\"hidden\"\/>\n            <\/gui>\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"\"\/>\n            <processing>\n                <clientCallback prepareModal=\"true\"><![CDATA[\n                    var userSelection =  ajaxplorer.getUserSelection();\n                    var loadFunc = function(oForm){\n                        pydio.getController().propertyPane = new PropertyPanel(userSelection, oForm);\n                    };\n                    var completeFunc = function(){\n                        if(!pydio.getController().propertyPane.valueChanged()){\n                            hideLightBox();\n                            return false;\n                        }\n                        userSelection.updateFormOrUrl(modal.getForm());\n                        PydioApi.getClient().submitForm(modal.getForm());\n                        hideLightBox();\n                        return false;\n                    };\n                    modal.showDialogForm('Edit Online', 'properties_box', loadFunc, completeFunc);\n                    ]]><\/clientCallback>\n                <clientForm id=\"properties_box\"><![CDATA[\n                    <div id=\"properties_box\" action=\"chmod\" box_width=\"180\"><\/div>\n                ]]><\/clientForm>\n                \n                <\/processing>\n        <\/action><action name=\"prepare_chunk_dl\">\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"false\"\/>\n            <processing>\n                \n            <\/processing>\n        <\/action><action name=\"download_chunk\">\n            <gui text=\"397\" title=\"398\" src=\"download_manager.png\" iconClass=\"icon-cloud-download\" hasAccessKey=\"false\">\n                <context selection=\"true\" dir=\"\" recycle=\"false\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"true\" actionBarGroup=\"change\">\n                <\/context>\n                <selectionContext dir=\"false\" file=\"true\" recycle=\"false\" unique=\"true\"\/>\n            <\/gui>\n            <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"\"\/>\n            <processing>\n                <clientCallback prepareModal=\"true\"><![CDATA[\n\t\t\t\t\tvar userSelection = ajaxplorer.getUserSelection();\n\n\t\t\t\t\tvar loadFunc = function(oForm){\n\t\t\t\t\t\tvar dObject = oForm.down('div[id=\"multiple_download_container\"]');\n\t\t\t\t\t\tvar legendDiv = oForm.down('div.dialogLegend');\n\t\t\t\t\t\tlegendDiv.next(\"br\").remove();\n\t\t\t\t\t\tlegendDiv.update(MessageHash[399]+'<br>'+MessageHash[401]+'<a href=\"'+MessageHash[402]+'\" target=\"_blank\">'+MessageHash[402]+'<\/a>');\n\t\t\t\t\t\tdObject.insert({before:'\\\n\t\t\t\t\t\t\t<div id=\"chunk_dl_form\" style=\"height:36px;\"> \\\n\t\t\t\t\t\t\t\t<span style=\"display:inline-block;float:left;margin-top: 11px;margin-left: 4px;margin-right: 4px;\">'+MessageHash[400]+'<\/span> <input type=\"text\" style=\"float:left;margin-top:5px; text-align:right; width:30px;height:24px;\" name=\"chunk_count\" id=\"chunk_count\" value=\"4\"> \\\n\t\t\t\t\t\t\t\t<a id=\"dl_form_submit\" class=\"dialogButton dialogFocus\">OK<\/a>\\\n\t\t\t\t\t\t\t<\/div> \\\n\t\t\t\t\t\t'});\n\t\t\t\t\t\t$(\"dl_form_submit\").observe(\"click\", function(e){\n\t\t\t\t\t\t\tEvent.stop(e);\n\t\t\t\t\t\t\tvar conn = new Connexion();\n\t\t\t\t\t\t\tconn.addParameter(\"get_action\", \"prepare_chunk_dl\");\n\t\t\t\t\t\t\tconn.addParameter(\"chunk_count\", $(\"chunk_count\").value );\n\t\t\t\t\t\t\tconn.addParameter(\"file\", userSelection.getUniqueNode().getPath());\n\t\t\t\t\t\t\tvar downloader = new MultiDownloader(dObject, '');\n\t\t\t\t\t\t\tconn.onComplete = function(transp){\n\t\t\t\t\t\t\t\tvar chunkData = transp.responseJSON;\n\t\t\t\t\t\t\t\tdownloader.setDownloadUrl(ajxpServerAccessPath+'&action=download_chunk&file_id='+chunkData.file_id);\n\t\t\t\t\t\t\t\tdownloader.triggerEnd = function(){hideLightBox();};\n\t\t\t\t\t\t\t\tfor(var i=0; i<chunkData.chunk_count;i++){\n\t\t\t\t\t\t\t\t\tdownloader.addListRow(\"&chunk_index=\" + i, chunkData.localname + \" (part \" + (i + 1) + \")\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdownloader.removeOnLoad();\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tdownloader.setOnLoad();\n\t\t\t\t\t\t\tconn.sendAsync();\n\t\t\t\t\t\t});\n\t\t\t\t\t};\n\t\t\t\t\tvar closeFunc = function(){\n\t\t\t\t\t\thideLightBox();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t};\n\t\t\t\t\tmodal.showDialogForm('Download Multiple', 'multi_download_form', loadFunc, closeFunc, null, true);\n\n\t\t\t\t\t]]><\/clientCallback>\n                <clientForm id=\"multi_download_form\"><![CDATA[\n\t\t\t\t\t<div id=\"multi_download_form\" title=\"Descargar varios archivos\"  box_width=\"345\">\n\t\t\t\t\t<div class=\"dialogLegend\">Haz click en cada archivo para descargarlo.<\/div><br\/>\n\t\t\t\t\t<div id=\"multiple_download_container\"><\/div>\n\t\t\t\t\t<form style=\"display:inline;\" action=\"index.php\" method=\"GET\" id=\"download_form\" target=\"download_iframe\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"get_action\" value=\"download\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"secure_token\" value=\"\">\n\t\t\t\t\t<\/form>\n\t\t\t\t\t<iframe id=\"download_iframe\" name=\"download_iframe\" style=\"display:none\"><\/iframe>\n\t\t\t\t\t<\/div>]]>\n                <\/clientForm>\n                \n            <\/processing>\n        <\/action><action name=\"changes\">\n                   <processing>\n                       \n                   <\/processing>\n               <\/action><action name=\"resync_storage\">\n                   <processing>\n                       \n                   <\/processing>\n               <\/action><action name=\"stat_hash\">\n                   <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"true\" userLogged=\"true\" write=\"false\"\/>\n                   <processing>\n                       \n                   <\/processing>\n               <\/action><action name=\"search\">\n\t\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"false\">\n\t\t\t\t<\/rightsContext>\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"search_by_keyword\">\n\t\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"false\">\n\t\t\t\t<\/rightsContext>\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"renderchan_get_thumbnail\" contentTypedProvider=\"true\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"renderchan_get_preview\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"download-deps\">\n                <gui src=\"\" text=\"download_deps.1\" title=\"download_deps.2\" iconClass=\"icon-download-alt\">\n                    <context dir=\"true\" recycle=\"false\" selection=\"true\" actionBar=\"false\" contextMenu=\"true\" actionBarGroup=\"more\"\/>\n                    <selectionContext dir=\"false\" file=\"true\" recycle=\"false\" unique=\"true\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback><![CDATA[\n                        var selection = ajaxplorer.getContextHolder().getSelectedNodes();\n                        if (selection.size() == 1 && $(\"download_form\")) {\n                            var form = $('download_form');\n                            form.action = window.ajxpServerAccessPath;\n                            form.secure_token.value = Connexion.SECURE_TOKEN;\n                            form.select(\"input\").each( function(input) {\n                                if (input.name == 'get_action') input.value = 'download-deps'; else\n                                    if (input.name != 'secure_token') input.remove();\n                            });\n                            form.insert(new Element('input', {type:'hidden', name:\"file\", value:selection[0].getPath()}));\n                            try { form.submit(); } catch(e) { }\n                        }\n                    ]]><\/clientCallback>\n                    \n                <\/processing>\n            <\/action><action name=\"migrate_legacy_shares\">\n                <rightsContext adminOnly=\"true\" noUser=\"false\" read=\"true\" userLogged=\"true\" write=\"true\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"load_shared_element_data\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"unshare\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"reset_counter\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"update_shared_element_data\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"forward_change_event\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"sharelist-edit\">\n                <gui src=\"share.png\" iconClass=\"mdi mdi-share-variant\" text=\"share_center.125\" title=\"share_center.126\">\n                    <context dir=\"true\" recycle=\"false\" selection=\"true\" actionBar=\"true\" actionBarGroup=\"share_list_toolbar-selection\" behaviour=\"hidden\"\/>\n                    <selectionContext dir=\"true\" file=\"true\" evalMetadata=\"metadata.get('ajxp_shared')\" recycle=\"false\" unique=\"true\" behaviour=\"hidden\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback prepareModal=\"true\"><![CDATA[\n                        var dataModel;\n                        if(window.actionArguments && window.actionArguments.length){\n                            dataModel = window.actionArguments[0];\n                        }else\u00a0if(window.actionManager){\n                            dataModel = window.actionManager.getDataModel();\n                        }\n                        var dialog = new AjxpReactDialogLoader('ShareDialog', 'MainPanel', {selection:dataModel, readonly:true});\n                        dialog.openDialog('react_share_form', true);\n                    ]]><\/clientCallback>\n                    <clientForm id=\"react_share_form\"><![CDATA[\n                        <div id=\"react_share_form\" box_padding=\"0\" class=\"react-mui-context SF_material\"><\/div>\n                    ]]><\/clientForm>\n                <\/processing>\n            <\/action><action name=\"sharelist-load\">\n                <gui src=\"share.png\" iconClass=\"icon-refresh\" text=\"149\" title=\"149\">\n                    <context dir=\"true\" recycle=\"false\" selection=\"false\" actionBar=\"true\" actionBarGroup=\"share_list_toolbar\" behaviour=\"hidden\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback prepareModal=\"true\"><![CDATA[\n                        if(window.actionManager){\n                            window.actionManager.getDataModel().requireContextChange(window.actionManager.getDataModel().getRootNode(), true);\n                        }\n                    ]]><\/clientCallback>\n                <\/processing>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"sharelist-clearExpired\">\n                <gui text=\"user_dash.25\" title=\"user_dash.26\" iconClass=\"icon-time\" src=\"edit_clear_history.png\" accessKey=\"\" hasAccessKey=\"false\">\n                    <context dir=\"true\" selection=\"false\" recycle=\"false\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"share_list_toolbar\" inZip=\"false\"\/>\n                <\/gui>\n                <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"\"\/>\n                <processing>\n                    <clientCallback prepareModal=\"true\"><![CDATA[\n\t\t\t\t\t\tvar conn = new Connexion();\n\t\t\t\t\t\tconn.addParameter(\"get_action\", \"sharelist-clearExpired\");\n\t\t\t\t\t\tvar dm = window.actionManager.getDataModel();\n\t\t\t\t\t\tconn.onComplete = function(transport){\n\t\t\t\t\t\t\tPydioApi.getClient().parseXmlMessage(transport.responseXML);\n                            if(window.actionManager){\n                                dm.requireContextChange(dm.getRootNode(), true);\n                            }\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconn.sendAsync();\n\t\t\t\t\t]]><\/clientCallback>\n                    \n                <\/processing>\n            <\/action><action name=\"share_current_page\">\n                <gui src=\"\" iconClass=\"mdi mdi-share-variant\" text=\"share_center.110\" title=\"share_center.110\">\n                    <context dir=\"true\" recycle=\"false\" selection=\"false\" actionBarGroup=\"minisite-share-actions\" actionBar=\"true\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback dialogOpenForm=\"share_current_url\" dialogSkipButtons=\"true\" prepareModal=\"true\">\n                        <dialogOnOpen><![CDATA[\n                            modal.getForm().down(\"#crt-page-url\").setValue(document.location.href);\n                            if(ajxpBootstrap.parameters.get('PRESET_LOGIN') === 'ajxp_preloged_user' && !ajaxplorer.getContextHolder().isEmpty() && pydio.getController().getActionByName(\"download\")){\n                                var tpl = new Template('<div style=\"font-size: 16px; padding-top:15px; text-align:left;\">#{title} <a href=\"#{link}\" target=\"_blank\" class=\"icon-link\" style=\"font-size: 0.8em;\"><\/a><\/div><input type=\"text\" value=\"#{link}\" style=\"width: 98%;\">');\n                                var node = ajaxplorer.getContextHolder().getUniqueNode();\n                                var editors = pydio.Registry.findEditorsForMime(node.getAjxpMime(), true);\n                                if(editors.length && Class.getByName(editors[0].editorClass)){\n                                    var staticClass = Class.getByName(editors[0].editorClass).prototype;\n                                    if(staticClass.getRESTPreviewLinks){\n                                        var links = staticClass.getRESTPreviewLinks(node);\n                                        $H(links).each(function(pair){\n                                            modal.getForm().down(\"#additional_links\").insert(tpl.evaluate({title:pair.key,link:document.location.href.split('?').shift() + \"\/dl\"+node.getPath()+\"?ct=true\"+pair.value}));\n                                        });\n                                    }\n                                }\n                                var dlLink = document.location.href.split('?').shift() + \"\/dl\" + node.getPath();\n                                modal.getForm().down(\"#additional_links\").insert(tpl.evaluate({title:MessageHash['share_center.60'],link:dlLink}));\n                            }\n                        ]]><\/dialogOnOpen>\n                        <dialogOnComplete><![CDATA[\n                            hideLightBox();\n                        ]]><\/dialogOnComplete>\n                        <dialogOnCancel><![CDATA[]]><\/dialogOnCancel>\n                    <\/clientCallback>\n                    <clientForm id=\"share_current_url\"><![CDATA[\n                        <div id=\"share_current_url\" box_width=\"300\" style=\"text-align:center;\">\n                            <input type=\"text\" id=\"crt-page-url\" onclick=\"$(this).select();\" value=\"\" style=\"width: 387px;text-align: center;font-size: 19px;margin: 10px 0;padding: 5px;\">\n                            <div class=\"non_macos\">Use <kbd>Ctrl<\/kbd>+<kbd>C<\/kbd> para copiar el enlace<\/div>\n                            <div class=\"macos_only\" style=\"display:none;\">Use <kbd>&#8984;<\/kbd>+<kbd>C<\/kbd> para copiar el enlace<\/div>\n                            <br>\n                            <div id=\"additional_links\" style=\"padding-bottom:10px;\"><\/div>\n                        <\/div>\n                    ]]><\/clientForm>\n                <\/processing>\n            <\/action><action name=\"get_boot_gui\" skipSecureToken=\"true\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"get_boot_conf\" skipSecureToken=\"true\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"get_i18n_messages\">\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"serve_favicon\" skipSecureToken=\"true\">\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"display_doc\">\n\t\t\t<processing>\n\t\t\t\t\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"up_dir\">\n\t\t\t<gui text=\"148\" title=\"24\" src=\"up.png\" iconClass=\"icon-chevron-left\" hasAccessKey=\"true\" accessKey=\"parent_access_key\">\n\t\t\t\t<context selection=\"false\" dir=\"false\" recycle=\"false\" actionBar=\"true\" contextMenu=\"true\" infoPanel=\"false\" actionBarGroup=\"navigation\">\n\t\t\t\t<\/context>\n\t\t\t<\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"\"\/>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"false\"><![CDATA[\n\t\t\t\t\tajaxplorer.fireContextUp();\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"refresh\">\n\t\t\t<gui text=\"149\" title=\"149\" iconClass=\"icon-refresh\" src=\"reload.png\" hasAccessKey=\"true\" accessKey=\"refresh_access_key\">\n\t\t\t\t<context selection=\"false\" dir=\"true\" recycle=\"false\" actionBar=\"false\" actionBarGroup=\"navigation\" contextMenu=\"true\" infoPanel=\"false\">\n\t\t\t\t<\/context>\n\t\t\t<\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"\"\/>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"false\"><![CDATA[\n\t\t\t\t\tajaxplorer.fireContextRefresh();\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"ext_select\">\n\t\t\t<gui text=\"321\" title=\"322\" src=\"download_manager.png\" accessKey=\"\" hasAccessKey=\"false\">\n\t\t\t\t<context selection=\"true\" dir=\"\" recycle=\"false\" actionBar=\"true\" contextMenu=\"true\" infoPanel=\"true\" actionBarGroup=\"put\" inZip=\"false\">\n\t\t\t\t<\/context>\n\t\t\t\t<selectionContext dir=\"true\" file=\"true\" recycle=\"false\" unique=\"false\"\/><\/gui>\n\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"\"\/>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"false\"><![CDATA[\n\t\t\t\t\tvar userSelection = ajaxplorer.getUserSelection();\n\t\t\t\t\tif((userSelection.isUnique() && !userSelection.hasDir()))\n\t\t\t\t\t{\n\t\t\t\t\t\tvar fileName = userSelection.getUniqueFileName();\n\t\t\t\t\t\tvar selectorData = pydio.getController().selectorData;\n\t\t\t\t\t\tif(selectorData.get('type') == \"ckeditor\"){\n\t\t\t\t\t\t\tvar ckData = selectorData.get('data');\n\t\t\t\t\t\t\tif (ckData['CKEditorFuncNum']) {\n\t\t\t\t\t\t\t\tvar imagePath = fileName;\n\t\t\t\t\t\t\t\tif(ckData['relative_path']){\n\t\t\t\t\t\t\t\t\timagePath = ckData['relative_path'] + fileName;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.opener.CKEDITOR.tools.callFunction(ckData['CKEditorFuncNum'], imagePath);\n\t\t\t\t\t\t\t\twindow.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t\t<\/processing>\n\t\t<\/action><action name=\"delete_bookmark\">\n\t\t\t<gui text=\"154\" title=\"155\" src=\"folder_new.png\" accessKey=\"folder_access_key\">\n\t\t\t\t<context selection=\"false\" dir=\"\" recycle=\"false\" actionBar=\"false\" contextMenu=\"false\" infoPanel=\"false\">\n\t\t\t\t<\/context>\n\t\t\t<\/gui>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"false\"><![CDATA[\n\t\t\t\t\t\/\/ TO DO\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"rename_bookmark\">\n\t\t\t<gui text=\"154\" title=\"155\" src=\"folder_new.png\" accessKey=\"folder_access_key\">\n\t\t\t\t<context selection=\"false\" dir=\"\" recycle=\"false\" actionBar=\"false\" contextMenu=\"false\" infoPanel=\"false\">\n\t\t\t\t<\/context>\n\t\t\t<\/gui>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"false\"><![CDATA[]]><\/clientCallback>\n\t\t\t\t<clientForm id=\"rename_bookmark\"><![CDATA[\n\t\t\t\t<div id=\"rename_bookmark\" action=\"get_bookmarks\" box_width=\"200\">\n\t\t\t\t<input type=\"text\" name=\"bm_title\" value=\"\" id=\"bm_title\" class=\"dialogFocus\">\n\t\t\t\t<input type=\"hidden\" name=\"bm_path\" value=\"\">\n\t\t\t\t<\/div>\n\t\t\t\t]]><\/clientForm>\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"splash\">\n\t\t\t<gui text=\"166\" title=\"167\" src=\"info.png\" iconClass=\"icon-question-sign\" hasAccessKey=\"true\" accessKey=\"about_access_key\">\n\t\t\t\t<context selection=\"false\" dir=\"\" recycle=\"false\" actionBar=\"false\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"utils\" ajxpWidgets=\"UserWidget::logging_string\">\n\t\t\t\t<\/context>\n\t\t\t<\/gui>\n\t\t\t<processing>\n\t\t\t\t<clientCallback prepareModal=\"true\"><![CDATA[\n\t\t\t\tmodal.showDialogForm(\n\t\t\t\t\t'Pydio',\n\t\t\t\t\t'splash_form',\n\t\t\t\t\tfunction(oForm){\n\t\t\t\t\t\tvar docDiv = $(oForm).down('#docDiv');\n\t\t\t\t\t\tif(!docDiv.isLoaded){\n\t\t\t\t\t\t\tvar conn = new Connexion(window.ajxpServerAccessPath + '&get_action=display_doc&doc_file=CREDITS');\n\t\t\t\t\t\t\tconn.onComplete = function(transport){\n\t\t\t\t\t\t\t\tdocDiv.insert({top:transport.responseText});\n\t\t\t\t\t\t\t\tdocDiv.isLoaded = true;\n\t\t\t\t\t\t\t\tvar updateLink = docDiv.down('#software_update');\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconn.sendAsync();\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tfunction(){hideLightBox();return false;},\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue, true);\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t\t<clientForm id=\"splash_form\"><![CDATA[\n\t\t\t\t\t<div id=\"splash_form\" box_width=\"600\" box_padding=\"0\">\n\t\t\t\t\t\t<div id=\"docDiv\" style=\"padding: 5px;overflow: auto;height: 410px;font-size: 12px;line-height: 16px; padding-bottom:52px;\">\n\t\t\t\t\t\t\t<div class=\"dialogButtons\" style=\"text-align:right;padding-right:10px;\"><input type=\"submit\" value=\"Close\" width=\"16\" height=\"16\" class=\"dialogButton\"\/><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t]]><\/clientForm>\n\t\t\t<\/processing>\n\t\t<\/action><action name=\"user_access_point\" skipSecureToken=\"true\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"reset-password-ask\">\n                <gui src=\"reset.png\" iconClass=\"icon-terminal\" text=\"gui.user.1\" title=\"gui.user.2\">\n                    <context dir=\"true\" recycle=\"true\" selection=\"false\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback prepareModal=\"false\" dialogOpenForm=\"reset-password-ask\" dialogOkButtonOnly=\"false\">\n                        <dialogOnOpen><![CDATA[\n                            $(oForm).up('.dialogContent').previous('.dialogTitle').select('span').invoke('remove');\n                            $(oForm).down('.dialogButtons').insert({bottom:$(oForm).down('.dialogButtons').down('input')});\n                        ]]><\/dialogOnOpen>\n                        <dialogOnCancel><![CDATA[\n                                pydio.getController().fireAction('login');\n                        ]]><\/dialogOnCancel>\n                        <dialogOnComplete><![CDATA[\n                            if(!oForm.BUTTON_CLICKED){\n                                var conn = new Connexion();\n                                conn.addParameter('email', oForm.down('#reset-by-email').getValue());\n                                conn.addParameter('get_action', 'reset-password-ask');\n                                conn.onComplete = function(){\n                                    oForm.BUTTON_CLICKED = true;\n                                    Effect.Fade(oForm.down('#reset-by-email'), {\n                                        duration:0.5,\n                                        afterFinish: function(){\n                                            oForm.down('#reset-password-ask').update(MessageHash['gui.user.5']);\n                                            $(oForm).down('.dialogButtons').down('input[name=\"ok\"]').remove();\n                                        }\n                                    });\n                                };\n                                conn.sendAsync();\n                            }\n                        ]]><\/dialogOnComplete>\n                    <\/clientCallback>\n                    <clientForm id=\"reset-password-ask\"><![CDATA[\n    \t\t\t\t    <div id=\"reset-password-ask\" box_width=\"320\" style=\"padding:5px 12px;font-size:15px;\">Please enter your login, a reset password will be sent to you by email. <input type=\"text\" style=\"font-size: 17px; width: 97%;margin: 10px 0;\" id=\"reset-by-email\" placeholder=\"Your identifier\"><\/div>\n                    ]]><\/clientForm>\n                    \n                <\/processing>\n            <\/action><action name=\"reset-password\">\n                <gui src=\"reset.png\" iconClass=\"icon-terminal\" text=\"gui.user.1\" title=\"gui.user.2\">\n                    <context dir=\"true\" recycle=\"true\" selection=\"false\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback prepareModal=\"false\" dialogOpenForm=\"reset-password\" dialogOkButtonOnly=\"false\">\n                        <dialogOnOpen><![CDATA[\n                            new Protopass($('user_change_ownpass1'), {\n                                barContainer:$('pwd_strength_container'),\n                                barPosition:'bottom'\n                            });\n                        ]]><\/dialogOnOpen>\n                        <dialogOnCancel><![CDATA[\n                                pydio.getController().fireAction('login');\n                        ]]><\/dialogOnCancel>\n                        <dialogOnComplete><![CDATA[\n\t\t\t\t\t\tvar userPass = null;\n\t\t\t\t\t\tvar passSeed = null;\n\t\t\t\t\t\tif($('user_change_ownpass1') && $('user_change_ownpass1').value && $('user_change_ownpass2').value)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif($('user_change_ownpass1').value.length < parseInt(window.ajaxplorer.getPluginConfigs(\"core.auth\").get(\"PASSWORD_MINLENGTH\"))){\n\t\t\t\t\t\t\t\talert(MessageHash[378]);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif($('user_change_ownpass1').value != $('user_change_ownpass2').value){\n\t\t\t\t\t\t\t\talert(MessageHash[238]);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n                            userPass = $('user_change_ownpass1').value;\n\t\t\t\t\t\t\tvar onComplete = function(transport){\n\t\t\t\t\t\t\t\tif(userPass != null){\n\t\t\t\t\t\t\t\t\tif(transport.responseText == 'PASS_ERROR'){\n\t\t\t\t\t\t\t\t\t\talert(MessageHash[240]);\n\t\t\t\t\t\t\t\t\t}else if(transport.responseText == 'SUCCESS'){\n\t\t\t\t\t\t\t\t\t\tajaxplorer.displayMessage('SUCCESS', MessageHash['gui.user.6']);\n\t\t\t\t\t\t\t\t\t\toForm.down('#reset-password').update(MessageHash['gui.user.6']);\n                                        $(oForm).down('.dialogButtons').down('input[name=\"ok\"]').remove();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tvar conn = new Connexion();\n\t\t\t\t\t\t\tconn.addParameter(\"get_action\", \"reset-password\");\n\t\t\t\t\t\t\tconn.addParameter(\"new_pass\", userPass);\n\t\t\t\t\t\t\tconn.addParameter(\"user_id\", oForm.down('#user_id').getValue());\n\t\t\t\t\t\t\tconn.addParameter(\"key\", pydioBootstrap.parameters.get('USER_ACTION_KEY'));\n\t\t\t\t\t\t\tconn.onComplete = onComplete;\n\t\t\t\t\t\t\tconn.sendAsync();\n\t\t\t\t\t\t}\n\n                        ]]><\/dialogOnComplete>\n                    <\/clientCallback>\n                    <clientForm id=\"reset-password\"><![CDATA[\n    \t\t\t\t    <div id=\"reset-password\" box_width=\"320\" style=\"font-size: 15px;\">\n    \t\t\t\t        <div class=\"dialogLegend\" ajxp_message_id=\"gui.user.8\">Use the form below to reset your password. Please enter your login and the new password twice.<\/div>\n                            <div class=\"SF_element\">\n                                <div class=\"SF_label\" ajxp_message_id=\"gui.user.4\">Your identifier : <\/div><input style=\"width:90%;\" id=\"user_id\" value=\"\" type=\"text\" class=\"SF_input\"\/>\n                            <\/div>\n                            <div class=\"SF_element\">\n                                <div class=\"SF_label\" ajxp_message_id=\"198\">Nuevo : <\/div><input style=\"width:90%;\" id=\"user_change_ownpass1\" value=\"\" type=\"password\" class=\"SF_input\"\/>\n                            <\/div>\n                            <div class=\"SF_element\">\n                                <div class=\"SF_label\" ajxp_message_id=\"199\">Confirmar : <\/div><input style=\"width:90%;\" id=\"user_change_ownpass2\" value=\"\" type=\"password\" class=\"SF_input\"\/>\n                            <\/div>\n                            <div class=\"SF_element\" id=\"pwd_strength_container\"><\/div>\n    \t\t\t\t    <\/div>\n                    ]]><\/clientForm>\n                    \n                <\/processing>\n            <\/action><action name=\"multisearch\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"tasks_list\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"task_info\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"task_create\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"task_update\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"task_toggle_status\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"task_delete\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"client_consume_channel\">\n                <post_processing>\n                    \n                <\/post_processing>\n            <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"true\" write=\"false\"\/><processing>\n                    \n                <\/processing><\/action><action name=\"analytic_query\">\n                <rightsContext adminOnly=\"true\" noUser=\"false\" read=\"true\" userLogged=\"true\" write=\"true\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"analytic_list_queries\">\n                <rightsContext adminOnly=\"true\" noUser=\"false\" read=\"true\" userLogged=\"true\" write=\"true\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"send_mail\">\n                <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"hidden\" write=\"false\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"consume_mail_queue\">\n                <rightsContext adminOnly=\"true\" noUser=\"false\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"keystore_generate_auth_token\" skipSecureToken=\"true\">\n                <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"true\" write=\"false\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"keystore_revoke_tokens\">\n                <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"true\" write=\"false\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"keystore_list_tokens\">\n                <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"true\" write=\"false\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"login\">\n                <gui text=\"163\" title=\"168\" src=\"encrypted.png\" iconClass=\"icon-signin\" accessKey=\"\" hasAccessKey=\"false\">\n                    <context selection=\"false\" dir=\"\" recycle=\"false\" actionBar=\"true\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"user,admin\">\n                    <\/context>\n                <\/gui>\n                <rightsContext noUser=\"false\" userLogged=\"hidden\" guestLogged=\"show\" read=\"false\" write=\"false\" adminOnly=\"\"\/>\n                <processing>\n                    <clientCallback prepareModal=\"true\"><![CDATA[\n\t\t\t\t\tvar loginRedirect = '';\n\t\t\t\t\tif(loginRedirect){\n\t\t\t\t\t\tdocument.location.href=loginRedirect;\n\t\t\t\t\t}else{\n\t\t\t\t\t    modal.setCloseValidation(function(){\n\t\t\t\t\t        return (!!ajaxplorer && !!ajaxplorer.user && ajaxplorer.user.id == \"guest\")\n\t\t\t\t\t    });\n\t\t\t\t\t    if(ajaxplorer.user && ajaxplorer.user.id == 'guest') $$('html')[0].addClassName('ajxp_guest_enabled');\n\t\t\t\t\t\tmodal.showDialogForm('Log In', ($('login_form')?'login_form':'login_form_dynamic'),\n\t\t\t\t\t\tfunction(oForm){\n\t\t\t\t\t\t    $(\"generic_dialog_box\").setStyle({\n\t\t\t\t\t\t        top:$(\"progressBox\").getStyle('top'),\n\t\t\t\t\t\t        left:$(\"progressBox\").getStyle('left')\n\t\t\t\t\t\t    });\n                            var authConfs = ajaxplorer.getPluginConfigs(\"auth\");\n                            if(!authConfs) authConfs = $H();\n\t\t\t\t\t\t    if(!Modernizr.input.placeholder) oForm.addClassName('no_placeholder');\n\t\t\t\t\t\t    if(window.ajxpBootstrap.parameters.get('PRESET_LOGIN')){\n\t\t\t\t\t\t        oForm.addClassName('ajxp_preset_login');\n\t\t\t\t\t\t        oForm.down('input[name=\"userid\"]').setValue(window.ajxpBootstrap.parameters.get('PRESET_LOGIN'));\n\t\t\t\t\t\t    }\n\t\t\t\t\t\t    if(window.ajxpBootstrap.parameters.get('PRESET_PASSWORD')){\n\t\t\t\t\t\t        oForm.addClassName('ajxp_preset_password');\n\t\t\t\t\t\t        oForm.down('input[name=\"password\"]').setValue(window.ajxpBootstrap.parameters.get('PRESET_PASSWORD'));\n\t\t\t\t\t\t    }\n\t\t\t\t\t\t    if(window.ajxpBootstrap.parameters.get('PASSWORD_AUTH_ONLY')){\n\t\t\t\t\t\t        oForm.addClassName('ajxp_password_auth');\n\t\t\t\t\t\t        authConfs.set('SECURE_LOGIN_FORM', true);\n\t\t\t\t\t\t        authConfs.set('ENABLE_FORGOT_PASSWORD', false);\n\t\t\t\t\t\t        oForm.down('.dialogLegend').update(pydio.MessageHash[552]);\n                            }else{\n                                oForm.down('.dialogLegend').update(pydio.MessageHash[180]);\n                            }\n\t\t\t\t\t\t    $(\"generic_dialog_box\").down(\".titleString\").hide();\n\t\t\t\t\t\t    $(\"generic_dialog_box\").down(\"#modalCloseBtn\").hide();\n\t\t\t\t\t\t    $(\"generic_dialog_box\").down(\".dialogTitle\").setAttribute(\"style\", $(\"progressBox\").down(\".dialogTitle\").getAttribute(\"style\"));\n\t\t\t\t\t\t    if(!$(\"generic_dialog_box\").down(\"#progressCustomMessage\")){\n                                if($(\"progressBox\").down(\"#progressCustomMessage\")) $(\"generic_dialog_box\").down(\".dialogContent\").insert({top:$(\"progressBox\").down(\"#progressCustomMessage\").cloneNode(true)});\n\t\t\t\t\t\t    }\n\t\t\t\t\t\t    oForm.setStyle({display:'block'});\n\t\t\t\t\t\t    oForm.up(\".dialogContent\").setStyle({backgroundImage:'none', borderWidth:0});\n\n\t\t\t\t\t\t\tajaxplorer.UI.loadSeedOrCaptcha(oForm.down('#login_seed'), oForm.down('img#captcha_image'), oForm.down('div.dialogLegend'), 'before');\n\t\t\t\t\t\t\tif(Prototype.Browser.IE && !Modernizr.borderradius && !oForm.down('input[type=\"text\"]').key_enter_attached){\n\t\t\t\t\t\t\t\toForm.select('input').invoke(\"observe\", \"keydown\", function(event){\n\t\t\t\t\t\t\t\t\tif(event.keyCode == Event.KEY_RETURN){\n\t\t\t\t\t\t\t\t\t\tvar el = Event.findElement(event);\n\t\t\t\t\t\t\t\t\t\tif(el.hasClassName('dialogButton')){\n\t\t\t\t\t\t\t\t\t\t\tel.click();\n\t\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\t\tel.form.down('input.dialogButton').click();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\toForm.down('input[type=\"text\"]').key_enter_attached = true;\n\t\t\t\t\t\t\t}\n\n                            if(authConfs && authConfs.get(\"SECURE_LOGIN_FORM\")){\n                                try{\n                                    oForm.down('input[name=\"remember_me\"]').up(\"div.SF_element\").remove();\n                                    oForm.down('input[name=\"userid\"]').setAttribute(\"autocomplete\", \"off\");\n                                    oForm.down('input[name=\"password\"]').setAttribute(\"autocomplete\", \"off\");\n                                    oForm.setAttribute(\"autocomplete\", \"off\");\n                                }catch(e){}\n                            }\n                            if(authConfs && authConfs.get(\"ENABLE_FORGOT_PASSWORD\") && !oForm.down('a.forgot-password-link')){\n                                try{\n                                    var after = oForm.down('input[name=\"remember_me\"]') ? oForm.down('input[name=\"remember_me\"]').up(\"div.SF_element\") : oForm.down('input[name=\"password\"]').up(\"div.SF_element\");\n                                    after.insert({after:'<div class=\"SF_element\" id=\"forgot_element\"><span class=\"icon-question-sign\"><\/span><a href=\"#\" class=\"forgot-password-link\" ajxp_message_id=\"479\">\u00bfHa olvidado su contrase\u00f1a?<\/a><\/div>'});\n                                    oForm.down('a.forgot-password-link').observe(\"click\", function(e){\n                                        Event.stop(e);\n                                        pydio.getController().fireAction(authConfs.get(\"FORGOT_PASSWORD_ACTION\"));\n                                    });\n                                }catch(e){ if(console) console.log(e); }\n                            }\n                            modal.refreshDialogPosition();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction(){\n\t\t\t\t\t\t\tvar oForm = modal.getForm();\n\t\t\t\t\t\t\tvar connexion = new Connexion();\n\t\t\t\t\t\t\tconnexion.addParameter('get_action', 'login');\n\t\t\t\t\t\t\tconnexion.addParameter('userid', window.ajxpBootstrap.parameters.get('PRESET_LOGIN')?window.ajxpBootstrap.parameters.get('PRESET_LOGIN'):oForm.userid.value);\n\t\t\t\t\t\t\tconnexion.addParameter('login_seed', oForm.login_seed.value);\n\t\t\t\t\t\t\tconnexion.addParameter('remember_me', (oForm.remember_me && oForm.remember_me.checked?\"true\":\"false\"));\n\t\t\t\t\t\t\tif(oForm.login_seed.value != '-1'){\n\t\t\t\t\t\t\t\tconnexion.addParameter('password', HasherUtils.hex_md5(HasherUtils.hex_md5(oForm.password.value)+oForm.login_seed.value));\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\tconnexion.addParameter('password', oForm.password.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(oForm.captcha_code){\n\t\t\t\t\t\t\t\tconnexion.addParameter('captcha_code', oForm.captcha_code.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\toForm.select('input[data-ajxpLoginAdditionalParameter]').each(function(i){\n\t\t\t\t\t\t\t    connexion.addParameter(i.name, i.getValue());\n\t\t\t\t\t\t\t});\n                            if(oForm.down(\".ajxp_login_error\")){\n                                oForm.down(\".ajxp_login_error\").remove();\n                            }\n\t\t\t\t\t\t\tconnexion.onComplete = function(transport){\n                                oForm.userid.value = '';\n                                oForm.password.value = '';\n\t\t\t\t\t\t\t\tvar success = PydioApi.getClient().parseXmlMessage(transport.responseXML);\n\t\t\t\t\t\t\t\tif(success){\n        \t\t\t\t\t\t    $(\"generic_dialog_box\").down(\".dialogTitle\").writeAttribute(\"style\", \"\");\n        \t\t\t\t\t\t    oForm.up('.dialogContent').writeAttribute(\"style\", \"\");\n    \t\t\t\t\t\t        $(\"generic_dialog_box\").select(\"#progressCustomMessage\").invoke(\"remove\");\n                                    modal.setCloseValidation(null);\n                                    hideLightBox(true);\n        \t\t\t\t\t\t}else{\n        \t\t\t\t\t\t    var errorId = PydioApi.getClient().LAST_ERROR_ID;\n        \t\t\t\t\t\t    if(errorId == '285' && window.ajxpBootstrap.parameters.get('PASSWORD_AUTH_ONLY')){\n        \t\t\t\t\t\t        errorId = '553';\n        \t\t\t\t\t\t    }\n                                    if(transport.responseXML && XPathGetSingleNodeText(transport.responseXML.documentElement, \"logging_result\/@value\") == \"-4\"){\n                                        ajaxplorer.UI.loadSeedOrCaptcha(oForm.down('#login_seed'), oForm.down('img#captcha_image'), oForm.down('div.dialogLegend'), 'before');\n                                    }\n                                    if(errorId && oForm.visible() && oForm.down(\"div.dialogLegend\")){\n                                        oForm.down(\"div.dialogLegend\").insert({bottom:'<div class=\"ajxp_login_error\" style=\"background-color: #D33131;display: block;font-size: 9px;color: white;border-radius: 3px;padding: 2px 6px;\">'+MessageHash[errorId]+'<\/div>'});\n                                        Effect.ErrorShake(oForm.down('.ajxp_login_error'));\n                                    }else{\n                                        alert(MessageHash[errorId]);\n                                    }\n        \t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tconnexion.setMethod('put');\n\t\t\t\t\t\t\tconnexion.sendAsync();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}, function(){}, true);\n\t\t\t\t\t}\n\t\t\t\t\t]]><\/clientCallback>\n                    <clientForm id=\"login_form_dynamic\"><![CDATA[\n                        <form id=\"login_form_dynamic\" action=\"login\" style=\"display:none;\" box_width=\"320\" box_padding=\"0\" overlayStyle='{\"backgroundColor\":\"white\",\"opacity\":10,\"backgroundImage\":\"url(\\\"plugins\/gui.ajax\/res\/themes\/orbit\/images\/grid_t.png\\\")\"}'>\n                            <input type=\"hidden\" name=\"get_action\" value=\"login\">\n                            <input type=\"hidden\" name=\"login_seed\" id=\"login_seed\" value=\"\">\n                            <a style=\"float:right;font-size: 16px;\" href=\"javascript:pydio.getController().fireAction('switch_language');\" title=\"Idioma\" alt=\"Idioma\" class=\"icon-flag\">&nbsp;<\/a>\n                            <div class=\"dialogLegend\" style=\"margin-bottom: 3px;margin-top: 4px;\" ajxp_message_id=\"180\">Introducir usuario\/clave<\/div>\n                            <div style=\"width:100%;\">\n                                <div class=\"SF_element\">\n                                    <div class=\"SF_label\"><ajxp:message ajxp_message_id=\"181\">Usuario<\/ajxp:message><\/div>\n                                    <div class=\"SF_input\"><input type=\"text\" name=\"userid\" style=\"width: 100px; padding:0px;\" class=\"dialogFocus\" placeholder=\"Usuario\"><\/div>\n                                <\/div>\n                                <div class=\"SF_element\">\n                                    <div class=\"SF_label\"><ajxp:message ajxp_message_id=\"182\">Clave<\/ajxp:message><\/div>\n                                    <div class=\"SF_input\"><input type=\"password\" name=\"password\"  style=\"width: 100px; padding:0px;\" placeholder=\"Clave\"><\/div>\n                                <\/div>\n                                <div class=\"SF_element\" id=\"remember_element\">\n                                    <input type=\"checkbox\" class=\"radio\" name=\"remember_me\" style=\"border: none; width:20px !important;\"\/><ajxp:message ajxp_message_id=\"261\">Recordarme<\/ajxp:message>\n                                <\/div>\n                            <\/div>\n                        <\/form>\n\t\t\t\t\t]]><\/clientForm>\n                    \n                <\/processing>\n            <\/action><action name=\"logout\" expireDefault=\"true\">\n                <gui text=\"164\" title=\"169\" src=\"decrypted.png\" iconClass=\"icon-signout\" accessKey=\"\" hasAccessKey=\"false\">\n                    <context selection=\"false\" dir=\"\" recycle=\"false\" contextMenu=\"false\" actionBar=\"true\" actionBarGroup=\"minisite\" ajxpWidgets=\"UserWidget::logging_string\">\n                    <\/context>\n                <\/gui>\n                <rightsContext noUser=\"false\" userLogged=\"only\" guestLogged=\"hidden\" read=\"false\" write=\"false\" adminOnly=\"\"\/>\n                <processing>\n                    <clientCallback prepareModal=\"false\"><![CDATA[\n\t\t\t\t\tclearRememberData();\n\t\t\t\t\tvar connexion = new Connexion();\n\t\t\t\t\tconnexion.addParameter('get_action', 'logout');\n\t\t\t\t\tconnexion.onComplete = function(transport){\n\t\t\t\t\t\tPydioApi.getClient().parseXmlMessage(transport.responseXML);\n\t\t\t\t\t\t};\n\t\t\t\t\tconnexion.sendAsync();\n\t\t\t\t\t]]><\/clientCallback>\n                    \n                <\/processing>\n            <\/action><action name=\"back\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"get_seed\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"get_captcha\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"accept_invitation\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"reject_invitation\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"feed\">\n                <rightsContext adminOnly=\"false\" noUser=\"false\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"clear_feed\">\n                <processing\/>\n            <\/action><action name=\"dismiss_user_alert\">\n                <gui text=\"notification_center.7\" title=\"notification_center.7\" iconClass=\"mdi mdi-close-circle\" src=\"notification_center\/ICON_SIZE\/feed.png\" accessKey=\"\" hasAccessKey=\"false\">\n                    <context selection=\"true\" dir=\"\" recycle=\"true\" actionBar=\"true\" actionBarGroup=\"inline-notifications\" contextMenu=\"false\" infoPanel=\"false\"\/>\n                    <selectionContext dir=\"true\" file=\"true\" recycle=\"false\" unique=\"true\"\/>\n                <\/gui>\n                <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"only\" write=\"false\"\/>\n                <processing>\n                    <clientCallback><![CDATA[\n                    var selection = window.actionArguments[0];\n                    if(selection.getUniqueNode) selection = selection.getUniqueNode();\n                    if(selection && selection.getMetadata && selection.getMetadata().get(\"alert_id\")){\n                        var elMeta = selection.getMetadata();\n                        var params = {\n                            get_action:'dismiss_user_alert',\n                            alert_id:elMeta.get('alert_id')\n                        };\n                        if(elMeta.get(\"event_occurence\")){\n                            params['occurrences'] = elMeta.get(\"event_occurence\");\n                        }\n                        PydioApi.getClient().request(params, function(){\n                            ajaxplorer.notify(\"server_message:tree\/reload_user_feed\");\n                        });\n                    }\n                    ]]><\/clientCallback>\n                    \n                <\/processing>\n            <\/action><action name=\"activateDesktopNotifications\">\n                <gui src=\"\" iconClass=\"icon-rss\" text=\"notification_center.1\" title=\"notification_title.2\">\n                    <context dir=\"true\" recycle=\"true\" selection=\"false\"\/>\n                <\/gui>\n                <processing>\n                    <clientCallback><![CDATA[\n                        if(window.Notification){\n                            alert(pydio.MessageHash[\"notification_center.12\"]);\n                            window.Notification.requestPermission(function(grant) {\n                                ['default', 'granted', 'denied'].indexOf(grant) === true\n                            });\n                        }else{\n                            alert(pydio.MessageHash[\"notification_center.13\"]);\n                        }\n                    ]]><\/clientCallback>\n                <\/processing>\n            <\/action><action name=\"consume_notification_queue\">\n                <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"true\" write=\"false\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"client_register_channel\">\n                <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"true\" write=\"false\"\/>\n                <processing>\n                    <clientListener name=\"init\"><![CDATA[\n                        if(!pydio.mqObserver && !pydio.mqObserverLoading){\n                            pydio.mqObserverLoading = true;\n                            ResourcesManager.prototype.loadJSResource('plugins\/core.mq\/class.PydioInstantMessenger.js', 'PydioInstantMessenger', function(){\n                                pydio.mqObserver = new PydioInstantMessenger();\n                            }, true);\n                        }\n                    ]]><\/clientListener>\n                    \n                <\/processing>\n            <\/action><action name=\"client_unregister_channel\">\n                <rightsContext adminOnly=\"false\" noUser=\"true\" read=\"false\" userLogged=\"true\" write=\"false\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"ws_authenticate\" skipSecureToken=\"true\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"cache_service_expose_stats\">\n                <rightsContext adminOnly=\"true\" noUser=\"false\" read=\"true\" userLogged=\"only\" write=\"true\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"cache_service_clear_cache\">\n                <rightsContext adminOnly=\"true\" noUser=\"false\" read=\"true\" userLogged=\"only\" write=\"true\"\/>\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"clear_cache_key\" skipSecureToken=\"true\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"external_download\">\n\t\t\t\t<gui text=\"httpdownloader.1\" title=\"httpdownloader.2\" src=\"httpdownloader_images\/ICON_SIZE\/external_download.png\" accessKey=\"httpdownloader.3\" hasAccessKey=\"true\">\n\t\t\t\t\t<context selection=\"false\" dir=\"true\" recycle=\"hidden\" actionBar=\"false\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"put\" inZip=\"false\">\n\t\t\t\t\t<\/context>\n\t\t\t\t<\/gui>\n\t\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"false\" write=\"true\" adminOnly=\"\"\/>\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"generate_dl_bookmarklet\">\n\t\t\t\t<gui text=\"httpdownloader.9\" title=\"httpdownloader.9\" iconClass=\"icon-bookmark\" src=\"httpdownloader_images\/ICON_SIZE\/add_bookmarklet.png\" accessKey=\"httpdownloader.3\" hasAccessKey=\"false\">\n\t\t\t\t\t<context selection=\"false\" dir=\"true\" recycle=\"hidden\" actionBar=\"false\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"remote\" inZip=\"false\">\n\t\t\t\t\t<\/context>\n\t\t\t\t<\/gui>\n\t\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"false\" write=\"true\" adminOnly=\"\"\/>\n\t\t\t\t<processing>\n\t\t\t\t\t<clientCallback prepareModal=\"true\" dialogOpenForm=\"dynamic_bookmarklet\">\n\t\t\t\t\t\t<dialogOnOpen><![CDATA[\n\t\t\t\t\t\t    var rm =new ResourcesManager();\n\t\t\t\t\t\t    rm.loadCSSResource('plugins\/uploader.http\/resources\/downloader.css');\n\t\t\t\t\t\t\tvar root = document.location.href;\n\t\t\t\t\t\t\troot = root.substring(0,root.lastIndexOf(\"\/\") + 1);\n\t\t\t\t\t\t\tvar repository = ajaxplorer.user.getActiveRepository();\n\t\t\t\t\t\t\tvar folder = ajaxplorer.getContextNode().getPath();\n\t\t\t\t\t\t\tvar bmletValue = \"javascript:(function(){window.ajxp_bm_target='\"+root+\"',window.ajxp_bm_repository_id='\"+repository+\"', window.ajxp_bm_folder='\"+folder+\"'; var d=document,s=d.createElement('scr'+'ipt'),b=d.body,l=d.location;s.setAttribute('src','\"+root+\"plugins\/uploader.http\/bookmarklet\/ajxp.js?t='+(new Date().getTime()));b.appendChild(s)})();\";\n\t\t\t\t\t\t\t$('bookmarklet_link').setAttribute(\"href\", bmletValue);\n\t\t\t\t\t\t\tvar basename = getBaseName(folder);\n\t\t\t\t\t\t\tif(basename == \"\"){\n                                $('bookmarklet_link_a').hide();\n                                $('bookmarklet_link_d').hide();\n                                $('bookmarklet_link_c').hide();\n\t\t\t\t\t\t\t}else{\n                                $('bookmarklet_link_a').setAttribute(\"href\", bmletValue);\n                                $('bookmarklet_link_a').insert(MessageHash['httpdownloader.10a'].replace(\"%s\", basename));\n\n                                $('bookmarklet_link_c').setAttribute(\"href\", bmletValue);\n                                $('bookmarklet_link_c').insert(MessageHash['httpdownloader.10c'].replace(\"%s\", basename));\n\n                                $('bookmarklet_link_d').setAttribute(\"href\", bmletValue);\n                                $('bookmarklet_link_d').insert(MessageHash['httpdownloader.10d'].replace(\"%s\", basename));\n                            }\n\n                            $('bookmarklet_link_b').setAttribute(\"href\", bmletValue);\n                            $('bookmarklet_link_b').insert(MessageHash['httpdownloader.10b'].replace(\"%s\", ajaxplorer.user.repositories.get(repository).getLabel()));\n                            $('bookmarklet_links_container').select('a').each(function(link){\n                                link.observe('click', function(e){Event.stop(e);alert(MessageHash['httpdownloader.16']);});\n                            });\n\n\t\t\t\t\t\t\t$('bookmarklet_textarea').setValue(bmletValue);\n\t\t\t\t\t\t\t$('bookmarklet_textarea').observe(\"focus\", function(){$('bookmarklet_textarea').select();});\n\n\t\t\t\t\t\t]]><\/dialogOnOpen>\n\t\t\t\t\t<\/clientCallback>\n\t\t\t\t\t<clientForm id=\"dynamic_bookmarklet\"><![CDATA[\n\t\t\t\t\t<div id=\"dynamic_bookmarklet\" box_width=\"400\">\n\t\t\t\t\t    <div>Arrastre y suelte uno de los siguientes enlaces a su barra de marcadores : <\/div>\n\t\t\t\t\t    <div id=\"bookmarklet_links_container\" style=\"width:400px;\">\n                            <a href=\"\" id=\"bookmarklet_link\" title=\"Descargar a la aplicaci\u00f3n\"  alt=\"Descargar a la aplicaci\u00f3n\">Descargar a la aplicaci\u00f3n<\/a>\n                            <a href=\"\" id=\"bookmarklet_link_a\" title=\"Descargar a la aplicaci\u00f3n\"  alt=\"Descargar a la aplicaci\u00f3n\"><\/a>\n                            <a href=\"\" id=\"bookmarklet_link_b\" title=\"Descargar a la aplicaci\u00f3n\"  alt=\"Descargar a la aplicaci\u00f3n\"><\/a>\n                            <a href=\"\" id=\"bookmarklet_link_c\" title=\"Descargar a la aplicaci\u00f3n\"  alt=\"Descargar a la aplicaci\u00f3n\"><\/a>\n                            <a href=\"\" id=\"bookmarklet_link_d\" title=\"Descargar a la aplicaci\u00f3n\"  alt=\"Descargar a la aplicaci\u00f3n\"><\/a>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div style=\"clear:left;\">O cree un marcador manualmente y ese el c\u00f3digo siguiente como la URL de enlace : <\/div>\n\t\t\t\t\t\t<textarea id=\"bookmarklet_textarea\" style=\"width: 100%;margin-top: 4px;height: 140px;\"><\/textarea>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t]]><\/clientForm>\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"update_dl_data\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"stop_dl\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"flex_tpl\">\n                <processing>\n                    \n                <\/processing>\n            <\/action><action name=\"get_drop_bg\" skipSecureToken=\"true\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"upload_chunks_unify\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"audio_proxy\" contentTypedProvider=\"true\" skipSecureToken=\"true\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"play_whole_folder\">\n\t\t\t\t<gui text=\"140\" title=\"140\" src=\"player_play.png\" accessKey=\"\">\n                    <context selection=\"true\" dir=\"\" recycle=\"false\" actionBar=\"false\" contextMenu=\"false\" infoPanel=\"true\"\/>\n                    <selectionContext dir=\"false\" file=\"true\" recycle=\"false\" unique=\"true\" allowedMimes=\"mp3\"\/>\n                <\/gui>\n\t\t\t\t<rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"false\" adminOnly=\"\"\/>\n\t\t\t\t<processing>\n\t\t\t\t\t<clientCallback><![CDATA[\n\t\t\t\t\tvar editor = pydio.Registry.findEditorById('editor.audio');\n\t\t\t\t\tif(editor){\n\t\t\t\t\t\tpydio.Registry.loadEditorResources(editor.resourcesManager);\n\t\t\t\t\t\tvar editorClass = Class.getByName(editor.editorClass);\n\t\t\t\t\t\tif(editorClass){\n\t\t\t\t\t\t\teditorClass.prototype.createFolderPlayer(ajaxplorer.getContextNode());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t]]><\/clientCallback>\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"read_video_data\" contentTypedProvider=\"true\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"get_sess_id\">\n\t\t\t\t<processing>\n\t\t\t\t\t\n\t\t\t\t<\/processing>\n\t\t\t<\/action><action name=\"open_file\" skipSecureToken=\"true\">\n    \t\t\t<processing>\n    \t\t\t\t\n    \t\t\t<\/processing>\n    \t\t<\/action><action name=\"mklink\">\n                <gui text=\"openbrowser.4\" title=\"openbrowser.4\" src=\"filenew.png\" accessKey=\"file_access_key\" iconClass=\"icon-file-alt\" hasAccessKey=\"false\">\n                    <context selection=\"false\" dir=\"true\" recycle=\"hidden\" actionBar=\"false\" contextMenu=\"false\" infoPanel=\"false\" actionBarGroup=\"create\" inZip=\"false\"\/>\n                <\/gui>\n                <rightsContext noUser=\"true\" userLogged=\"only\" read=\"true\" write=\"true\" adminOnly=\"\"\/>\n                <processing>\n                    <clientCallback prepareModal=\"true\"><![CDATA[\n                    modal.showDialogForm('Create', 'mklink_form', null, function(){\n\n                        var oForm = modal.getForm();\n                        oForm.down(\"#filename\").setValue(oForm.down(\"#filename\").getValue()+ '.url');\n                        PydioApi.getClient().submitForm(oForm);\n                        hideLightBox(true);\n                        return false;\n\n                    });\n                ]]><\/clientCallback>\n                <clientForm id=\"mklink_form\"><![CDATA[\n                    <div id=\"mklink_form\" action=\"mkfile\">\n                        <div class=\"dialogLegend\" ajxp_message_id=\"openbrowser.6\">Introduzca una URL empezando por http\/https<\/div>\n                        <input type=\"text\" id=\"content\" style=\"width:390px;\" name=\"content\" placeholder=\"http[s]:\/\/\" class=\

Reference:
AppImage/appimage.github.io#15

Python 3 Port

I've created a first version of a port to python3 and phoenix http://wiki.wxpython.org/ProjectPhoenix
It works mostly, but is a bit hacky and seems to be not as smooth.
If anyone wants to test this then you can find it here: https://github.com/steveway/papagayo-1/tree/py3phoenix
Not sure if I personally want to muck around with the python 3 / phoenix port, spent the whole day on it today and I currently don't want to see it, glad I got it to mostly work.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/32786978-python-3-port?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github).

Cannot drag a .wav file to interface

unable to drag and drop an audio file to the interface. i must use the menu/icon options to open an audio file. I do not know if this is by design, or an oversight.

advanced tutorial in the help menu

It is necessary to add a detailed tutorial in text form with pictures for different schemes of Lip-Sync and indicating the exact names of the layers.
for example https://photos.app.goo.gl/rQbn9XoL6oYSsHRh1
for example https://photos.app.goo.gl/HaEbRRouJwx6iuB12
If possible, indicate in the tutorial the correspondence of the sounds of speech with the mandatory names of the mouth phases for different languages.
for example:
(Russian language)
"AA = А
EHSZ = Е Х С З
O = О
MBP = М Б П
FV = Ф В
GK = Г К
IY = И
NLTDR = Н Л Т Д Р
SH = Ш Щ
TH = in Russian is not used в русском не используется
rest = be silent молчим"

Breakdown + small dictionary

I was wondering if it would be possible to have an auxiliary dictionary of words, a file (by user) to put the CMU with a list of words and it works together with breakdown.

If we check about english have this configuration, it's covered by big dictionary of words (CMU) https://github.com/morevnaproject/papagayo-ng/blob/master/rsrc/languages/default/language.ini

Many languages have some exceptions with a bunch of words. So the ideia here: the user can create a small list with all words where the rule of breakdown not cover.

It's possible use both of them? What do you think about it?


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Reading wav file in macos causes error: "unknown format"

I'm running from source in Python 3.6.8 on MacOS. When I load a wav file using the toolbar, the UI never changes and the file never loads. Here are the logs near the end:

objc[86846]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff980761d0) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x11d96adc8). One of the two will be used. Which one is undefined.
/Users/MouthMovementTest1.wav
/Users/MouthMovementTest1
Traceback (most recent call last):
  File "/Users/james/papagayo/papagayo-ng/SoundPlayer.py", line 51, in __init__
    self.wave_reference = wave.open(self.soundfile)
  File "/Users/james/.pyenv/versions/3.6.8/lib/python3.6/wave.py", line 499, in open
    return Wave_read(f)
  File "/Users/james/.pyenv/versions/3.6.8/lib/python3.6/wave.py", line 163, in __init__
    self.initfp(f)
  File "/Users/james/.pyenv/versions/3.6.8/lib/python3.6/wave.py", line 143, in initfp
    self._read_fmt_chunk(chunk)
  File "/Users/james/.pyenv/versions/3.6.8/lib/python3.6/wave.py", line 260, in _read_fmt_chunk
    raise Error('unknown format: %r' % (wFormatTag,))
wave.Error: unknown format: 3
Traceback (most recent call last):
  File "/Users/james/papagayo/papagayo-ng/LipsyncFrameQT.py", line 210, in on_open
    self.open(file_path)
  File "/Users/james/papagayo/papagayo-ng/LipsyncFrameQT.py", line 236, in open
    self.doc.open_audio(path)
  File "/Users/james/papagayo/papagayo-ng/LipsyncDoc.py", line 518, in open_audio
    self.sound = SoundPlayer.SoundPlayer(self.soundPath, self.parent)
  File "/Users/james/papagayo/papagayo-ng/SoundPlayer.py", line 62, in __init__
    self.audio.default.samplerate = self.wave_reference.getframerate()
AttributeError: 'NoneType' object has no attribute 'getframerate'

Here are the attributes from the wave file using mediainfo:

General
Complete name                            : /Users/MouthMovementTest1.wav
Format                                   : Wave
File size                                : 11.0 MiB
Duration                                 : 30s 165ms
Overall bit rate mode                    : Constant
Overall bit rate                         : 3 072 Kbps

Audio
Format                                   : PCM
Format profile                           : Float
Codec ID                                 : 3
Codec ID/Hint                            : IEEE 
Duration                                 : 30s 165ms
Bit rate mode                            : Constant
Bit rate                                 : 3 072 Kbps
Channel(s)                               : 2 channels
Sampling rate                            : 48.0 KHz
Bit depth                                : 32 bits
Stream size                              : 11.0 MiB (100%)

Thanks :-)

Release for OS X?

Hi! I'm really hoping that you will be able to expand Papagayo-NG to include a build for OS X. The original Papagayo from Lost Marble is no longer fully functional in OS X 10.13.1. Lip-syncing for a single voice works fine but not for multiple voices. Anyways, I'd really prefer not to have to find a different program. Thanks!

Position marker doesn't update on newer wxPython versions

So, I thought this was a problem wit my port to wxPython_Phoenix, but this also happens on python 2 with regular wxPython 3.0.2.0.
On Playback, as soon as the current reaches the end of the current screen and the view scrolls the cursor stays at the left.
I would appreciate if someone can verify if this isn't a local problem for me or if this is a general problem.
I have a hacky fix for this in my python 3 port.
You might wan't to take a look into this file between line 432 and 450:
https://github.com/steveway/papagayo-1/blob/py3phoenix/WaveformView.py
I would really like it if someone came up with a better solution, especially one he understands.

Feature request - volume control

It might be in the program somewhere, but I can't seem to adjust the volume of the wav?

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/37682563-feature-request-volume-control?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github).

Rename to "Papagayo-NG"

Our version of Papagayo gets pretty different from the one provided by Lost Marble (https://github.com/LostMoho/Papagayo).
Would be nice to let our users to distinguish the versions to avoid confusions. For that purpose we can rename to "Papagayo-NG" ("NG" stands for "next generation"). ^__^

Some work needs to be done on that matter, i.e. replace "Papagayo" to "Papagayo-NG" everywhere in the code, add mention about original version of Lost Marble in About dialog, etc.

Anyone? ^__^

Unable to move phonemes (Appimage)

Papagayo-NG appimage on Ubuntu 16.04: it is impossible to move individual phonemes (words and phrases moved OK).

The same version works fine when started natively on Ubuntu 16.04 (uses python-wxgtk3.0 3.0.2.0+dfsg-1build1).

help, help problem in importing mp3 files

hi everyone,
nice to meet you all. my issue is the strangest one ever because it occurs at my very first action on the software
so, when i click on open file to load an mp3 file into papagayo, nothing happens and the software stats idle. i use the app image of papagayo ng from morevna project since i do run ubuntu 18.04 as my main os. please what can i do .
Your help will really be useful
THANKS.

Suggestions for Phoneme/Word/Sentence dragging

Hi, so I'm experimenting currently with rendering and interacting with our Phonemes, Words and Sentences in the WaveformView.
Currently I have it set so that you can resize the box by left-clicking inside the last few Pixels to the right of it and dragging the mouse.
If you left-click anywhere else inside such a widget then you can move it.
Both currently not restricted by the grid.
And a right-click in it an alternate function is executed. (Currently only a print to the console)
This does feel quite nice, we might change moving so the widget does not position it's left side at the mouse.
For testing it offers currently two independent widgets, test and test2.
What I would like to know is, how would you prefer these to interact on move and resize operations?
The way we have it in the current wx version feels slightly restricted and buggy.
This is one of the main interactions the user does with our program, so making this feel at least usable should be a goal.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Not running correctly Win10 x86_64 #40

Hallo, I have the same problem as Bang Droid. I'm getting unusual UI display running papagayo-ng on my machine.
The file I downloaded (PapagayoNG-testing-2017.07.31-65704-win-32bit.exe) came from https://gumroad.com/l/papagayo-ng directed from https://morevnaproject.org/papagayo-ng.
image.
And here the bat file output:
C:\Program Files (x86)\Papagayo-NG>C:

C:\Program Files (x86)\Papagayo-NG>cd "C:\Program Files (x86)\Papagayo-NG"

C:\Program Files (x86)\Papagayo-NG>python.exe papagayo-ng\papagayo-ng.py
C:\Program Files (x86)\Papagayo-NG\papagayo-ng\rsrc\mouths
('C:\Program Files (x86)\Papagayo-NG\papagayo-ng\rsrc\mouths\1 - Mouth 1', ['AI.png', 'E.png', 'etc.png', 'FV.png', 'L.png', 'MBP.png', 'O.png', 'rest.png', 'U.png', 'WQ.png'])
('C:\Program Files (x86)\Papagayo-NG\papagayo-ng\rsrc\mouths\2 - Mouth 2', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
('C:\Program Files (x86)\Papagayo-NG\papagayo-ng\rsrc\mouths\3 - Gary C Martin', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
('C:\Program Files (x86)\Papagayo-NG\papagayo-ng\rsrc\mouths\4 - Preston Blair', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
('C:\Program Files (x86)\Papagayo-NG\papagayo-ng\rsrc\mouths\5 - Fleming and Dobbs', ['AA.jpg', 'EHSZ.jpg', 'FV.jpg', 'GK.jpg', 'IY.jpg', 'MBP.jpg', 'NLTDR.jpg', 'O.jpg', 'rest.jpg', 'SH.jpg', 'source.sif', 'TH.jpg'])
('C:\Program Files (x86)\Papagayo-NG\papagayo-ng\rsrc\mouths\6 - Azia Comics 1 (preston_blair)', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
('C:\Program Files (x86)\Papagayo-NG\papagayo-ng\rsrc\mouths\7 - Azia Comics 2 (preston_blair)', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
['1 - Mouth 1', '2 - Mouth 2', '3 - Gary C Martin', '4 - Preston Blair', '5 - Fleming and Dobbs', '6 - Azia Comics 1 (preston_blair)', '7 - Azia Comics 2 (preston_blair)']
import phonemes_preston_blair as phonemeset

The program remains in this status. I changed the screen resolution but didn't help. Do you have any idea what else I can do?

Add selected "Image to export" to Mouthview

Should be pretty easy to implement.
Also, why exactly is ProcessMouthDir not part of the MouthView class?
It isn't used anywhere else as far as I can see.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/33062019-add-selected-image-to-export-to-mouthview?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github).

Papagayo on Arch Linux

I had some problems during the execution both local installation and portable.
Here some notes and how I solved them.

Dependencies (on site/appimage):
wxphython python-pyaudio libjpeg-turbo lidselinux(AUR)

wxphython is on
/usr/lib/python2.7/site-packages/wx-3.0-gtk2/wx/
need to bind it manually to
/usr/lib/python3.6/site-packages/wx/
or Install equivalent .from PIP ( *sorry I'm not sure which is the recommended).

Currently Arch Linux repos provides libjpeg=8.1.2
need to install manually too
/usr/lib/libjpeg.so.9.2.0
/usr/lib/libjpeg.so.9

This is what I did to run in Antergos, may be some other discrepancies but this should be enough to run the app without problems.

Unable to process common words, is an external dictionary required?

During breakdown, i am required to manually breakdown Way to may words., example the word 'Once' also, it does not ignore quotes ""
I would imagine there is an external dictionary i am supposed to load, or the contained ones are not working properly. I have pressed reload dictionary.
please advise. for reference, i do not have these problems with the original papagayo.

also the U.I. problem mentioned in Issue #19 is still present

Be well

Convert SoundPlayer to use QT functions

So, there seem to be a few problems with the current handling of Audio Files.

  • Some files play slow (half speed?)
  • OSX seems to have some issues loading stereo wave files

Also the current implementation is a bit hacky.
Currently we load the audio file, if possible with pydub, and get some information and the "raw" audio data from that.
We then throw that data at the sounddevice library and tell it to play it, hoping it does that right and it stays in sync.

It would make sense to switch the audio stuff also to QT, that should likely fix these issues.
I was thinking of using QMediaPlayer, but there is the problem that we also need to get the sample information to create our waveform, that's rather important.
So that has to be figured out too.
Input?

Not running correctly Win10 x86_64

I'm getting unusual UI display running papagayo-ng on my machine.
The file I downloaded (PapagayoNG-testing-2017.07.31-65704-win-32bit.exe) came from https://gumroad.com/l/papagayo-ng directed from https://morevnaproject.org/papagayo-ng.

The testing in the filename is interesting.

Here's a screenshot of what it looks like:
pap

And here the bat file output:

C:\Program Files (x86)\Papagayo-NG>C:

C:\Program Files (x86)\Papagayo-NG>cd "C:\Program Files (x86)\Papagayo-NG\"

C:\Program Files (x86)\Papagayo-NG>python.exe papagayo-ng\papagayo-ng.py
C:\Program Files (x86)\Papagayo-NG\papagayo-ng\rsrc\mouths
('C:\\Program Files (x86)\\Papagayo-NG\\papagayo-ng\\rsrc\\mouths\\1 - Mouth 1', ['AI.png', 'E.png', 'etc.png', 'FV.png', 'L.png', 'MBP.png', 'O.png', 'rest.png', 'U.png', 'WQ.png'])
('C:\\Program Files (x86)\\Papagayo-NG\\papagayo-ng\\rsrc\\mouths\\2 - Mouth 2', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
('C:\\Program Files (x86)\\Papagayo-NG\\papagayo-ng\\rsrc\\mouths\\3 - Gary C Martin', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
('C:\\Program Files (x86)\\Papagayo-NG\\papagayo-ng\\rsrc\\mouths\\4 - Preston Blair', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
('C:\\Program Files (x86)\\Papagayo-NG\\papagayo-ng\\rsrc\\mouths\\5 - Fleming and Dobbs', ['AA.jpg', 'EHSZ.jpg', 'FV.jpg', 'GK.jpg', 'IY.jpg', 'MBP.jpg', 'NLTDR.jpg', 'O.jpg', 'rest.jpg', 'SH.jpg', 'source.sif', 'TH.jpg'])
('C:\\Program Files (x86)\\Papagayo-NG\\papagayo-ng\\rsrc\\mouths\\6 - Azia Comics 1 (preston_blair)', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
('C:\\Program Files (x86)\\Papagayo-NG\\papagayo-ng\\rsrc\\mouths\\7 - Azia Comics 2 (preston_blair)', ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg'])
['1 - Mouth 1', '2 - Mouth 2', '3 - Gary C Martin', '4 - Preston Blair', '5 - Fleming and Dobbs', '6 - Azia Comics 1 (preston_blair)', '7 - Azia Comics 2 (preston_blair)']
import phonemes_preston_blair as phonemeset

Limits of current visemes. Requesting end user ability to add more

I was hoping to add more visemes to increase the accuracy of the lip sync representation on my characters. looking through the code it seemed to suggest that adding more would not be that difficult. Please keep in mind i am Not a programmer, i just hack through things. I noticed the file with the breakdown of aa = ai, and similar. i assume it is not simply a matter of changing these references, since the actual action of these references is hard coded. all of this is assumption on my part. prehaps you can point me in the right direction.

Thank you and be well

Port to QT

So, since I've made some nice progress in my branch, I thought I'd open this "Issue" here to get some exposure on this.
https://github.com/steveway/papagayo-ng/tree/papagayo-ng-qt
So, what do I have planned with this?
First I obviously want to port Papagayo-ng to QT because this should allow us to more easily fix our performance issues.
Next while I'm converting everything manually, I'm also fixing the CamelCase mess with the better snake_case.
We can also now change the design/layout more easily by only changing the ui file, either by hand or using QT-Designer.
And of course the short term end goal is feature parity with the current WX version.

What does currently work?
Not a lot, but it's starting to get interesting now.
We can open the program, which shows a familiar window, we can also open a sound file or a papagayo project file.
(Actually I just tested and Project files are broken at the moment.)
The background grid and the Waveform get drawn.
The About Box is working and the Help Topics Button opens the Github currently.
Text can be entered most places.
Config settings are saved and recalled using QTs config options.
The Comboboxes and Listviews get populated and the Mouthview currently shows the default mouth.

There might also be more things that currently work and more that don't.

Feel free to take a look at it (use papagayo-ng-qt-direct.py) and maybe fix/add more functionality to it.
If there are comments or questions I'll try to answer them here.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Feature Request - Speech / Phonetics automatic generation/ alignment

I've been wondering why the file text had to be used. Couldn't you separate the sound via phonetics?
This would be better as it would help translate things more accurate than the text alone.
take the following example:

I do like

This could be said as:

adɪ̈ lik (IPA)

vs. someone being using pronunciation:

ai dɵ lik (IPA)

Both of these end up using different mouth movements and because of this can make some of the mouth movements off.

Support for more than .wav files

If I haven't missed anything then papagayo only supports .wav files at the moment.
We might use something like this to convert other audio files on the fly:
http://pymedia.org/tut/src/dump_wav.py.html
Or, I would prefer pydub, maybe scrap using the wave library directly and instead use pydub:
http://pydub.com/
BTW.: Hope I don't annoy with these "Issues", I'm trying to organize this a bit and mark some hopefully interesting workloads so we can make this thing great.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/32859605-support-for-more-than-wav-files?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github).

Layout problem in latest sources

Hello guys,
I used stable release version of Papagayo-NG (the one that available under "release" section of this repo) and everything was fine. Than I noticed that this version is a bit outdated due to latest sources and I have downloaded sources from last commit 24aaaac, built it and got some weird picture (Win10):

image

It seems like layout broken and I can't fix it because I don't know Python. Can somebody check it and help me with this?

Thanks

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/35715997-layout-problem-in-latest-sources?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github).

When saving file no extension added

Steps to reproduce:

  1. Open Wav file
  2. Choose "File" - "Save" from menu
  3. In saving dialog enter filename "test" (without extension)
  4. Click save.

Result: files is saved as "test", without any extension.

Expected result: it should be saved as "test.pgo".

Improve the drawing speed of the Waveform

We have already improved the speed of resizing the Window by updating the Waveform when we get an wx.EVT_IDLE event.
But this is only applies a band-aid over the problem.
The Draw method of the WaveformView class has a few bottlenecks.
In my speed_improvements branch I have begun doing some simple timing to find out the cause.
A big slowdown seem to be the SetPen commands, I shaved of about a third by moving a part of the drawing out of the main drawing loop to it's own in my first test:
f4d138c
But there is more that needs to be done, a complete rewrite/replacement of this widget might be best.

Edit: Removed Bountysource stuff. I'm not subscribed to the Bountysource thing, so no clue how it got here.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/41635071-improve-the-drawing-speed-of-the-waveform?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F418652&utm_medium=issues&utm_source=github).

On maximizing the app window, the app crash with segmentation fault.

On maximizing the app window, the app crash with segmentation fault.
Papagayo version: Tested the version with the latest commits.

Terminal output here:


dadoprom@185E0F1298C9:~/Stiahnuté/papagayo-ng-master$ python3 papagayo-ng.py
LoadedWaveFormView
/home/dadoprom/Stiahnuté/papagayo-ng-master/rsrc/mouths/1 - Mouth 1 ['FV.png', 'WQ.png', 'O.png', 'etc.png', 'rest.png', 'U.png', 'AI.png', 'L.png', 'MBP.png', 'E.png']
/home/dadoprom/Stiahnuté/papagayo-ng-master/rsrc/mouths/5 - Fleming and Dobbs ['NLTDR.jpg', 'GK.jpg', 'MBP.jpg', 'IY.jpg', 'EHSZ.jpg', 'AA.jpg', 'source.sif', 'SH.jpg', 'O.jpg', 'TH.jpg', 'rest.jpg', 'FV.jpg']
/home/dadoprom/Stiahnuté/papagayo-ng-master/rsrc/mouths/2 - Mouth 2 ['U.jpg', 'MBP.jpg', 'WQ.jpg', 'O.jpg', 'AI.jpg', 'rest.jpg', 'etc.jpg', 'L.jpg', 'FV.jpg', 'E.jpg']
/home/dadoprom/Stiahnuté/papagayo-ng-master/rsrc/mouths/3 - Gary C Martin ['U.jpg', 'MBP.jpg', 'WQ.jpg', 'O.jpg', 'AI.jpg', 'rest.jpg', 'etc.jpg', 'L.jpg', 'FV.jpg', 'E.jpg']
/home/dadoprom/Stiahnuté/papagayo-ng-master/rsrc/mouths/6 - Azia Comics 1 (preston_blair) ['U.jpg', 'MBP.jpg', 'WQ.jpg', 'O.jpg', 'AI.jpg', 'rest.jpg', 'etc.jpg', 'L.jpg', 'FV.jpg', 'E.jpg']
/home/dadoprom/Stiahnuté/papagayo-ng-master/rsrc/mouths/4 - Preston Blair ['U.jpg', 'MBP.jpg', 'WQ.jpg', 'O.jpg', 'AI.jpg', 'rest.jpg', 'etc.jpg', 'L.jpg', 'FV.jpg', 'E.jpg']
/home/dadoprom/Stiahnuté/papagayo-ng-master/rsrc/mouths/7 - Azia Comics 2 (preston_blair) ['U.jpg', 'MBP.jpg', 'WQ.jpg', 'O.jpg', 'AI.jpg', 'rest.jpg', 'etc.jpg', 'L.jpg', 'FV.jpg', 'E.jpg']
/home/dadoprom/Stiahnuté/papagayo-ng-master/rsrc/mouths/8 - Rhubarb ['H.png', 'A.png', 'rest.png', 'F.png', 'B.png', 'C.png', 'E.png', 'D.png', 'G.png']
['AllowNestedDocks', 'AllowTabbedDocks', 'AnimatedDocks', 'DockOption', 'DockOptions', 'DrawChildren', 'DrawWindowBackground', 'ForceTabbedDocks', 'GroupedDragging', 'IgnoreMask', 'PaintDeviceMetric', 'PdmDepth', 'PdmDevicePixelRatio', 'PdmDevicePixelRatioScaled', 'PdmDpiX', 'PdmDpiY', 'PdmHeight', 'PdmHeightMM', 'PdmNumColors', 'PdmPhysicalDpiX', 'PdmPhysicalDpiY', 'PdmWidth', 'PdmWidthMM', 'RenderFlag', 'RenderFlags', 'VerticalTabs', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'acceptDrops', 'accessibleDescription', 'accessibleName', 'actionEvent', 'action_about_papagayo_ng', 'action_copy', 'action_cut', 'action_exit', 'action_help_topics', 'action_open', 'action_paste', 'action_play', 'action_reset_zoom', 'action_save', 'action_save_as', 'action_stop', 'action_undo', 'action_zoom_in', 'action_zoom_out', 'actions', 'activateWindow', 'addAction', 'addActions', 'addDockWidget', 'addToolBar', 'addToolBarBreak', 'add_tag', 'adjustSize', 'apply_fps', 'autoFillBackground', 'backgroundRole', 'backingStore', 'baseSize', 'blockSignals', 'breakdown_button', 'centralWidget', 'central_widget', 'changeEvent', 'childAt', 'childEvent', 'children', 'childrenRect', 'childrenRegion', 'choose_imageset_button', 'clearFocus', 'clearMask', 'close', 'closeEvent', 'colorCount', 'connect', 'connectNotify', 'contentsMargins', 'contentsRect', 'contextMenuEvent', 'contextMenuPolicy', 'corner', 'create', 'createPopupMenu', 'createWinId', 'createWindowContainer', 'current_voice', 'current_voice_page', 'current_voice_page_layout', 'cursor', 'customContextMenuRequested', 'customEvent', 'deleteLater', 'depth', 'destroy', 'destroyed', 'devType', 'devicePixelRatio', 'devicePixelRatioF', 'devicePixelRatioFScale', 'disconnect', 'disconnectNotify', 'dockOptions', 'dockWidgetArea', 'documentMode', 'dragEnterEvent', 'dragLeaveEvent', 'dragMoveEvent', 'dropEvent', 'dumpObjectInfo', 'dumpObjectTree', 'dynamicPropertyNames', 'effectiveWinId', 'emit', 'ensurePolished', 'enterEvent', 'event', 'eventFilter', 'export_button', 'export_combo', 'export_group', 'export_layout', 'find', 'findChild', 'findChildren', 'focusInEvent', 'focusNextChild', 'focusNextPrevChild', 'focusOutEvent', 'focusPolicy', 'focusPreviousChild', 'focusProxy', 'focusWidget', 'font', 'fontInfo', 'fontMetrics', 'foregroundRole', 'fps', 'fps_controls', 'fps_input', 'fps_layout', 'frameGeometry', 'frameSize', 'geometry', 'getContentsMargins', 'grab', 'grabGesture', 'grabKeyboard', 'grabMouse', 'grabShortcut', 'graphicsEffect', 'graphicsProxyWidget', 'hasFocus', 'hasHeightForWidth', 'hasMouseTracking', 'hasTabletTracking', 'height', 'heightForWidth', 'heightMM', 'hide', 'hideEvent', 'horizontalLayout_4', 'horizontal_layout', 'iconSize', 'iconSizeChanged', 'inherits', 'initPainter', 'inputMethodEvent', 'inputMethodHints', 'inputMethodQuery', 'insertAction', 'insertActions', 'insertToolBar', 'insertToolBarBreak', 'installEventFilter', 'internalWinId', 'isActiveWindow', 'isAncestorOf', 'isAnimated', 'isDockNestingEnabled', 'isEnabled', 'isEnabledTo', 'isEnabledToTLW', 'isFullScreen', 'isHidden', 'isLeftToRight', 'isMaximized', 'isMinimized', 'isModal', 'isRightToLeft', 'isSeparator', 'isSignalConnected', 'isTopLevel', 'isVisible', 'isVisibleTo', 'isWidgetType', 'isWindow', 'isWindowModified', 'isWindowType', 'keyPressEvent', 'keyReleaseEvent', 'keyboardGrabber', 'killTimer', 'language_choice', 'layout', 'layoutDirection', 'leaveEvent', 'list_of_tags', 'locale', 'logicalDpiX', 'logicalDpiY', 'lower', 'mapFrom', 'mapFromGlobal', 'mapFromParent', 'mapTo', 'mapToGlobal', 'mapToParent', 'mask', 'maximumHeight', 'maximumSize', 'maximumWidth', 'menuBar', 'menuWidget', 'menu_edit', 'menu_file', 'menu_help', 'menubar', 'metaObject', 'metric', 'minimumHeight', 'minimumSize', 'minimumSizeHint', 'minimumWidth', 'mouseDoubleClickEvent', 'mouseGrabber', 'mouseMoveEvent', 'mousePressEvent', 'mouseReleaseEvent', 'mouth_choice', 'mouth_view', 'mouth_view_layout', 'move', 'moveEvent', 'moveToThread', 'nativeEvent', 'nativeParentWidget', 'nextInFocusChain', 'normalGeometry', 'objectName', 'objectNameChanged', 'overrideWindowFlags', 'overrideWindowState', 'paintEngine', 'paintEvent', 'painters', 'paintingActive', 'palette', 'parent', 'parentWidget', 'parent_tags', 'phoneme_group', 'phoneme_layout', 'phoneme_set', 'physicalDpiX', 'physicalDpiY', 'pos', 'previousInFocusChain', 'property', 'raise_', 'receivers', 'rect', 'redirected', 'registerUserData', 'releaseKeyboard', 'releaseMouse', 'releaseShortcut', 'reload_dict_button', 'removeAction', 'removeDockWidget', 'removeEventFilter', 'removeToolBar', 'removeToolBarBreak', 'remove_tag', 'render', 'repaint', 'resize', 'resizeDocks', 'resizeEvent', 'restoreDockWidget', 'restoreGeometry', 'restoreState', 'saveGeometry', 'saveState', 'screen', 'scroll', 'sender', 'senderSignalIndex', 'setAcceptDrops', 'setAccessibleDescription', 'setAccessibleName', 'setAnimated', 'setAttribute', 'setAutoFillBackground', 'setBackgroundRole', 'setBaseSize', 'setCentralWidget', 'setContentsMargins', 'setContextMenuPolicy', 'setCorner', 'setCursor', 'setDisabled', 'setDockNestingEnabled', 'setDockOptions', 'setDocumentMode', 'setEnabled', 'setFixedHeight', 'setFixedSize', 'setFixedWidth', 'setFocus', 'setFocusPolicy', 'setFocusProxy', 'setFont', 'setForegroundRole', 'setGeometry', 'setGraphicsEffect', 'setHidden', 'setIconSize', 'setInputMethodHints', 'setLayout', 'setLayoutDirection', 'setLocale', 'setMask', 'setMaximumHeight', 'setMaximumSize', 'setMaximumWidth', 'setMenuBar', 'setMenuWidget', 'setMinimumHeight', 'setMinimumSize', 'setMinimumWidth', 'setMouseTracking', 'setObjectName', 'setPalette', 'setParent', 'setProperty', 'setShortcutAutoRepeat', 'setShortcutEnabled', 'setSizeIncrement', 'setSizePolicy', 'setStatusBar', 'setStatusTip', 'setStyle', 'setStyleSheet', 'setTabOrder', 'setTabPosition', 'setTabShape', 'setTabletTracking', 'setToolButtonStyle', 'setToolTip', 'setToolTipDuration', 'setUnifiedTitleAndToolBarOnMac', 'setUpdatesEnabled', 'setVisible', 'setWhatsThis', 'setWindowFilePath', 'setWindowFlag', 'setWindowFlags', 'setWindowIcon', 'setWindowIconText', 'setWindowModality', 'setWindowModified', 'setWindowOpacity', 'setWindowRole', 'setWindowState', 'setWindowTitle', 'sharedPainter', 'show', 'showEvent', 'showFullScreen', 'showMaximized', 'showMinimized', 'showNormal', 'signalsBlocked', 'size', 'sizeHint', 'sizeIncrement', 'sizePolicy', 'splitDockWidget', 'spread_out', 'stackUnder', 'startTimer', 'staticMetaObject', 'statusBar', 'statusTip', 'statusbar', 'style', 'styleSheet', 'tabPosition', 'tabShape', 'tabifiedDockWidgetActivated', 'tabifiedDockWidgets', 'tabifyDockWidget', 'tabletEvent', 'tag_entry', 'tag_list_buttons', 'tag_list_group', 'tag_splitter', 'takeCentralWidget', 'testAttribute', 'text_edit', 'text_input_group', 'thread', 'timerEvent', 'toolBarArea', 'toolBarBreak', 'toolButtonStyle', 'toolButtonStyleChanged', 'toolTip', 'toolTipDuration', 'toolbar', 'topLevelWidget', 'tr', 'underMouse', 'ungrabGesture', 'unifiedTitleAndToolBarOnMac', 'unsetCursor', 'unsetLayoutDirection', 'unsetLocale', 'update', 'updateGeometry', 'updateMicroFocus', 'updatesEnabled', 'verticalLayout', 'verticalLayout_2', 'verticalLayout_3', 'verticalLayout_5', 'vertical_layout_left', 'vertical_layout_left_1', 'vertical_layout_right', 'visibleRegion', 'voice_name', 'voice_name_input', 'voice_name_layout', 'volume_slider', 'waveform_view', 'whatsThis', 'wheelEvent', 'width', 'widthMM', 'winId', 'window', 'windowFilePath', 'windowFlags', 'windowHandle', 'windowIcon', 'windowIconChanged', 'windowIconText', 'windowIconTextChanged', 'windowModality', 'windowOpacity', 'windowRole', 'windowState', 'windowTitle', 'windowTitleChanged', 'windowType', 'x', 'y']
['1 - Mouth 1', '2 - Mouth 2', '3 - Gary C Martin', '4 - Preston Blair', '5 - Fleming and Dobbs', '6 - Azia Comics 1 (preston_blair)', '7 - Azia Comics 2 (preston_blair)', '8 - Rhubarb']
import phonemes_preston_blair as phonemeset
QPropertyAnimation::updateState (geometry, QWidget, central_widget): starting an animation without end value
Segmentation fault

Operating System: KDE neon 5.19
KDE Plasma Version: 5.19.4
KDE Frameworks Version: 5.72.0
Qt Version: 5.14.2
Kernel Version: 5.3.0-28-generic
OS Type: 64-bit
Processors: 4 × Intel® Core™ i3-5010U CPU @ 2.10GHz
Memory: 15.3 GiB of RAM
Graphics Processor: Mesa DRI Intel® HD Graphics 5500

And I have compositor effects turned to off.

Appimage: Deprecation warnings

We have a lot of deprecation warnings when application starts from appimage.

Appimage uses wxPhoenix 4.0.0a2.
Those warning do not appear when running from source with native ptyhon-wxgtk3.0 package v3.0.2.0 (Ubuntu).

/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:132: wxPyDeprecationWarning: Call to deprecated item. Use :meth:`AddTool` instead.
  wx.ITEM_NORMAL, _("Open"), _("Open a sound file or Papagayo-NG project"))
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:135: wxPyDeprecationWarning: Call to deprecated item. Use :meth:`AddTool` instead.
  wx.ITEM_NORMAL, _("Save"), _("Save this Papagayo-NG project"))
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:139: wxPyDeprecationWarning: Call to deprecated item. Use :meth:`AddTool` instead.
  wx.ITEM_NORMAL, _("Play"), _("Play the sound clip"))
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:142: wxPyDeprecationWarning: Call to deprecated item. Use :meth:`AddTool` instead.
  wx.ITEM_NORMAL, _("Stop"), _("Stop playing audio"))
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:146: wxPyDeprecationWarning: Call to deprecated item. Use :meth:`AddTool` instead.
  wx.ITEM_NORMAL, _("Zoom In"), _("Zoom in on the waveform"))
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:149: wxPyDeprecationWarning: Call to deprecated item. Use :meth:`AddTool` instead.
  wx.ITEM_NORMAL, _("Zoom Out"), _("Zoom out of the waveform"))
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:152: wxPyDeprecationWarning: Call to deprecated item. Use :meth:`AddTool` instead.
  wx.ITEM_NORMAL, _("Reset Zoom"), _("Reset the zoomed view of the waveform"))
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:87: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_PAINT(self, self.OnPaint)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:88: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_SIZE(self, self.OnSize)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:89: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_IDLE(self, self.OnIdle)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:91: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_LEFT_DOWN(self, self.OnMouseDown)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:92: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_RIGHT_DOWN(self, self.OnMouseDown)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:93: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_LEFT_DCLICK(self, self.OnMouseDown)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:94: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_LEFT_UP(self, self.OnMouseUp)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:95: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_RIGHT_UP(self, self.OnMouseUp)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:96: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_MOTION(self, self.OnMouseMove)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:97: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel)
/tmp/.mount_1A9bvo/usr/opt/papagayong/rsrc/mouths
/tmp/.mount_1A9bvo/usr/opt/papagayong/rsrc/mouths/1 - Mouth 1 ['AI.png', 'E.png', 'etc.png', 'FV.png', 'L.png', 'MBP.png', 'O.png', 'rest.png', 'U.png', 'WQ.png']
/tmp/.mount_1A9bvo/usr/opt/papagayong/rsrc/mouths/2 - Mouth 2 ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg']
/tmp/.mount_1A9bvo/usr/opt/papagayong/rsrc/mouths/3 - Gary C Martin ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg']
/tmp/.mount_1A9bvo/usr/opt/papagayong/rsrc/mouths/4 - Preston Blair ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg']
/tmp/.mount_1A9bvo/usr/opt/papagayong/rsrc/mouths/5 - Fleming and Dobbs ['AA.jpg', 'EHSZ.jpg', 'FV.jpg', 'GK.jpg', 'IY.jpg', 'MBP.jpg', 'NLTDR.jpg', 'O.jpg', 'rest.jpg', 'SH.jpg', 'source.sif', 'TH.jpg']
/tmp/.mount_1A9bvo/usr/opt/papagayong/rsrc/mouths/6 - Azia Comics 1 (preston_blair) ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg']
/tmp/.mount_1A9bvo/usr/opt/papagayong/rsrc/mouths/7 - Azia Comics 2 (preston_blair) ['AI.jpg', 'E.jpg', 'etc.jpg', 'FV.jpg', 'L.jpg', 'MBP.jpg', 'O.jpg', 'rest.jpg', 'U.jpg', 'WQ.jpg']
/tmp/.mount_1A9bvo/usr/opt/papagayong/MouthView.py:53: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_PAINT(self, self.OnPaint)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:308: wxPyDeprecationWarning: Call to deprecated item EmptyIcon. Use :class:`Icon` instead
  _icon = wx.EmptyIcon()
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:54: wxPyDeprecationWarning: Using deprecated class. Use Validator instead.
  wx.PyValidator.__init__(self)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:459: wxPyDeprecationWarning: Call to deprecated item EmptyBitmap. Use :class:`wx.Bitmap` instead
  self.buffer = wx.EmptyBitmap(self.maxWidth, self.maxHeight)
['1 - Mouth 1', '2 - Mouth 2', '3 - Gary C Martin', '4 - Preston Blair', '5 - Fleming and Dobbs', '6 - Azia Comics 1 (preston_blair)', '7 - Azia Comics 2 (preston_blair)']
import phonemes_preston_blair as phonemeset
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:268: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_CLOSE(self, self.CloseOK)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:272: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_MENU(self, wx.ID_OPEN, self.OnOpen)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:273: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_MENU(self, wx.ID_SAVE, self.OnSave)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:274: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_MENU(self, wx.ID_SAVEAS, self.OnSaveAs)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:275: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_MENU(self, wx.ID_EXIT, self.OnQuit)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:276: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_MENU(self, wx.ID_HELP, self.OnHelp)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:277: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_MENU(self, wx.ID_ABOUT, self.OnAbout)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:279: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_TOOL(self, ID_PLAY, self.OnPlay)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:280: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_TOOL(self, ID_STOP, self.OnStop)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:281: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_TOOL(self, ID_ZOOMIN, self.waveformView.OnZoomIn)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:282: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_TOOL(self, ID_ZOOMOUT, self.waveformView.OnZoomOut)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:283: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_TOOL(self, ID_ZOOM1, self.waveformView.OnZoom1)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:285: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_CHOICE(self, ID_MOUTHCHOICE, self.OnMouthChoice)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:286: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_CHOICE(self, ID_EXPORTCHOICE, self.OnExportChoice)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:287: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_TEXT(self, ID_VOICENAME, self.OnVoiceName)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:288: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_TEXT(self, ID_VOICETEXT, self.OnVoiceText)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:289: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_BUTTON(self, ID_BREAKDOWN, self.OnVoiceBreakdown)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:290: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_BUTTON(self, ID_RELOADDICT, self.OnReloadDictionary)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:291: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_BUTTON(self, ID_EXPORT, self.OnVoiceExport)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:292: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_BUTTON(self, ID_VOICEIMAGE, self.OnVoiceimagechoose)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:293: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_TEXT(self, ID_FPS, self.OnFps)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:294: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_LISTBOX(self, ID_VOICELIST, self.OnSelVoice)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:295: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_BUTTON(self, ID_NEWVOICE, self.OnNewVoice)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:296: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_BUTTON(self, ID_DELVOICE, self.OnDelVoice)
/tmp/.mount_1A9bvo/usr/opt/papagayong/LipsyncFrame.py:297: wxPyDeprecationWarning: Call to deprecated item __call__. Use :meth:`EvtHandler.Bind` instead.
  wx.EVT_SLIDER(self, ID_VOLSLIDER, self.ChangeVolume)
/tmp/.mount_1A9bvo/usr/opt/papagayong/WaveformViewFast.py:119: wxPyDeprecationWarning: Call to deprecated item EmptyBitmap. Use :class:`wx.Bitmap` instead
  self.buffer = wx.EmptyBitmap(self.maxWidth, self.maxHeight)

Testrequest of Revision

Hi, could someone test my latest commit?
44296d2
This fixes a crash for me when using wxphoenix and trying to play a single segment.
These are mostly changes regarding the Waveformview.
There is still visual artifacting when scrobbling in wxphoenix, seems to work correctly in wxpython version 3. -EDIT: Seems to be mostly fixed with the newer commit.
I had some crashes for which I added the locking, but these seemed to have been caused by pyvmmonitor, without that everything worked as before, so I removed the locking but kept this in a separate commit, in case we might want to re-add locking.
-EDIT2: So I rechecked the original Papagayo 1.2 and resizing was always bad, so we are currently better in that regard. I thought for quite some time we broke something along the line.


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.