diff --git a/core/src/plugins/access.ajxp_user/class.UserDashboardDriver.php b/core/src/plugins/access.ajxp_user/class.UserDashboardDriver.php new file mode 100644 index 0000000000..a419115166 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/class.UserDashboardDriver.php @@ -0,0 +1,340 @@ + + * This file is part of Pydio. + * + * Pydio is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pydio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pydio. If not, see . + * + * The latest code can be found at . + * + */ +defined('AJXP_EXEC') or die( 'Access not allowed'); +/** + * @package AjaXplorer_Plugins + * @subpackage Access + * @class ajxpSharedAccessDriver + * AJXP_Plugin to access the shared elements of the current user + */ +class UserDashboardDriver extends AbstractAccessDriver +{ + + public function initRepository() + { + require_once AJXP_INSTALL_PATH."/".AJXP_PLUGINS_FOLDER."/action.share/class.ShareCenter.php"; + } + + public function switchAction($action, $httpVars, $fileVars) + { + if(!isSet($this->actions[$action])) return; + parent::accessPreprocess($action, $httpVars, $fileVars); + $loggedUser = AuthService::getLoggedUser(); + if(!AuthService::usersEnabled()) return ; + + if ($action == "edit") { + if (isSet($httpVars["sub_action"])) { + $action = $httpVars["sub_action"]; + } + } + $mess = ConfService::getMessages(); + + switch ($action) { + //------------------------------------ + // BASIC LISTING + //------------------------------------ + case "ls": + $rootNodes = array( + "users" => array( + "LABEL" => $mess["user_dash.1"], + "ICON" => "user_shared.png", + "ICON-CLASS" => "icon-book", + "DESCRIPTION" => $mess["user_dash.30"] + ), + "files" => array( + "LABEL" => $mess["user_dash.34"], + "ICON" => "user_shared.png", + "ICON-CLASS" => "icon-share", + "DESCRIPTION" => $mess["user_dash.35"] + ), + "settings" => array( + "LABEL" => $mess["user_dash.36"], + "ICON" => "user_shared.png", + "ICON-CLASS" => "icon-cog", + "DESCRIPTION" => $mess["user_dash.37"] + ), + "repositories" => array( + "LABEL" => $mess["user_dash.36"], + "ICON" => "user_shared.png", + "ICON-CLASS" => "icon-cog", + "DESCRIPTION" => $mess["user_dash.37"] + ) + ); + $dir = (isset($httpVars["dir"])?$httpVars["dir"]:""); + $splits = explode("/", $dir); + if (count($splits)) { + if($splits[0] == "") array_shift($splits); + if(count($splits)) $strippedDir = strtolower(urldecode($splits[0])); + else $strippedDir = ""; + } + if (array_key_exists($strippedDir, $rootNodes)) { + AJXP_XMLWriter::header(); + if ($strippedDir == "users") { + $this->listUsers(); + } else if ($strippedDir == "repositories") { + $this->listRepositories(); + } else if ($strippedDir == "files") { + $this->listSharedFiles(); + } + AJXP_XMLWriter::close(); + } else { + AJXP_XMLWriter::header(); + AJXP_XMLWriter::sendFilesListComponentConfig(''); + foreach ($rootNodes as $key => $data) { + $l = $data["LABEL"]; + print ''; + } + AJXP_XMLWriter::close(); + } + break; + + case "stat" : + + header("Content-type:application/json"); + print '{"mode":true}'; + + break; + + case "delete" : + $mime = $httpVars["ajxp_mime"]; + $selection = new UserSelection(); + $selection->initFromHttpVars($httpVars); + $files = $selection->getFiles(); + AJXP_XMLWriter::header(); + foreach ($files as $index => $element) { + $element = basename($element); + $ar = explode("shared_", $mime); + $mime = array_pop($ar); + ShareCenter::deleteSharedElement($mime, $element, $loggedUser); + if($mime == "repository") $out = $mess["ajxp_conf.59"]; + else if($mime == "user") $out = $mess["ajxp_conf.60"]; + else if($mime == "file") $out = $mess["user_dash.13"]; + } + AJXP_XMLWriter::sendMessage($out, null); + AJXP_XMLWriter::reloadDataNode(); + AJXP_XMLWriter::close(); + break; + + case "clear_expired" : + + $deleted = $this->clearExpiredFiles(); + AJXP_XMLWriter::header(); + if (count($deleted)) { + AJXP_XMLWriter::sendMessage(sprintf($mess["user_dash.23"], count($deleted).""), null); + AJXP_XMLWriter::reloadDataNode(); + } else { + AJXP_XMLWriter::sendMessage($mess["user_dash.24"], null); + } + AJXP_XMLWriter::close(); + + break; + + case "reset_download_counter" : + + $selection = new UserSelection(); + $selection->initFromHttpVars($httpVars); + $elements = $selection->getFiles(); + foreach ($elements as $element) { + PublicletCounter::reset(str_replace(".php", "", basename($element))); + } + AJXP_XMLWriter::header(); + AJXP_XMLWriter::reloadDataNode(); + AJXP_XMLWriter::close(); + + break; + + default: + break; + } + + return; + } + + public function listSharedFiles() + { + AJXP_XMLWriter::sendFilesListComponentConfig(' + + + + + + + '); + $dlFolder = ConfService::getCoreConf("PUBLIC_DOWNLOAD_FOLDER"); + if(!is_dir($dlFolder)) return ; + $files = glob($dlFolder."/*.php"); + if(!is_array($files))return; + $mess = ConfService::getMessages(); + $loggedUser = AuthService::getLoggedUser(); + $userId = $loggedUser->getId(); + $dlURL = ConfService::getCoreConf("PUBLIC_DOWNLOAD_URL"); + if ($dlURL!= "") { + $downloadBase = rtrim($dlURL, "/"); + } else { + $fullUrl = AJXP_Utils::detectServerURL() . dirname($_SERVER['REQUEST_URI']); + $downloadBase = str_replace("\\", "/", $fullUrl.rtrim(str_replace(AJXP_INSTALL_PATH, "", $dlFolder), "/")); + } + + foreach ($files as $file) { + $ar = explode(".", basename($file)); + $id = array_shift($ar); + if($ar[0] != "php") continue; + //if(strlen($id) != 32) continue; + $publicletData = ShareCenter::loadPublicletData($id); + if (isset($publicletData["OWNER_ID"]) && $publicletData["OWNER_ID"] != $userId) { + continue; + } + $expired = ($publicletData["EXPIRE_TIME"]!=0?($publicletData["EXPIRE_TIME"]getDisplay()).":/".SystemTextEncoding::toUTF8($publicletData["FILE_PATH"]), true, array( + "icon" => "html.png", + "password" => ($publicletData["PASSWORD"]!=""?$publicletData["PASSWORD"]:"-"), + "expiration" => ($publicletData["EXPIRE_TIME"]!=0?($expired?"[!]":"").date($mess["date_format"], $publicletData["EXPIRE_TIME"]):"-"), + "download_count" => $publicletData["DOWNLOAD_COUNT"], + "download_limit" => ($publicletData["DOWNLOAD_LIMIT"] == 0 ? "-" : $publicletData["DOWNLOAD_LIMIT"] ), + "integrity" => (!$publicletData["SECURITY_MODIFIED"]?$mess["user_dash.15"]:$mess["user_dash.16"]), + "download_url" => $downloadBase . "/".basename($file), + "ajxp_mime" => "shared_file") + ); + } + } + + public function clearExpiredFiles() + { + $files = glob(ConfService::getCoreConf("PUBLIC_DOWNLOAD_FOLDER")."/*.php"); + $loggedUser = AuthService::getLoggedUser(); + $userId = $loggedUser->getId(); + $deleted = array(); + foreach ($files as $file) { + $ar = explode(".", basename($file)); + $id = array_shift($ar); + if(strlen($id) != 32) continue; + $publicletData = ShareCenter::loadPublicletData($id); + if (!isSet($publicletData["OWNER_ID"]) || $publicletData["OWNER_ID"] != $userId) { + continue; + } + if( (isSet($publicletData["EXPIRE_TIME"]) && is_numeric($publicletData["EXPIRE_TIME"]) && $publicletData["EXPIRE_TIME"] > 0 && $publicletData["EXPIRE_TIME"] < time()) || + (isSet($publicletData["DOWNLOAD_LIMIT"]) && $publicletData["DOWNLOAD_LIMIT"] > 0 && $publicletData["DOWNLOAD_LIMIT"] <= $publicletData["DOWNLOAD_COUNT"]) ) { + unlink($file); + $deleted[] = basename($file); + PublicletCounter::delete(str_replace(".php", "", basename($file))); + } + } + return $deleted; + } + + public function listUsers() + { + AJXP_XMLWriter::sendFilesListComponentConfig(''); + if(!AuthService::usersEnabled()) return ; + $loggedUser = AuthService::getLoggedUser(); + $users = ConfService::getConfStorageImpl()->getUserChildren($loggedUser->getId()); // AuthService::listUsers(); + $mess = ConfService::getMessages(); + $repoList = ConfService::getRepositoriesList("all"); + $userArray = array(); + foreach ($users as $userIndex => $userObject) { + $label = $userObject->getId(); + if(!$userObject->hasParent() || $userObject->getParent() != $loggedUser->getId()) continue; + if ($userObject->hasParent()) { + $label = $userObject->getParent()."000".$label; + } + $userArray[$label] = $userObject; + } + ksort($userArray); + foreach ($userArray as $userObject) { + $isAdmin = $userObject->isAdmin(); + $userId = AJXP_Utils::xmlEntities($userObject->getId()); + $repoAccesses = array(); + foreach ($repoList as $repoObject) { + if ($repoObject->hasOwner() && $repoObject->getOwner() == $loggedUser->getId()) { + $acl = $userObject->mergedRole->getAcl($repoObject->getId()); + if(!empty($acl)) $repoAccesses[] = $repoObject->getDisplay()." ($acl)"; + } + } + print ''; + } + } + + public function listRepositories() + { + $repos = ConfService::getRepositoriesList("all"); + AJXP_XMLWriter::sendFilesListComponentConfig(''); + $repoArray = array(); + $childRepos = array(); + $loggedUser = AuthService::getLoggedUser(); + $users = AuthService::listUsers(); + foreach ($repos as $repoIndex => $repoObject) { + if($repoObject->getAccessType() == "ajxp_conf") continue; + if (!$repoObject->hasOwner() || $repoObject->getOwner() != $loggedUser->getId()) { + continue; + } + if(is_numeric($repoIndex)) $repoIndex = "".$repoIndex; + $name = AJXP_Utils::xmlEntities(SystemTextEncoding::toUTF8($repoObject->getDisplay())); + $repoArray[$name] = $repoIndex; + } + // Sort the list now by name + ksort($repoArray); + // Append child repositories + $sortedArray = array(); + foreach ($repoArray as $name => $repoIndex) { + $sortedArray[$name] = $repoIndex; + if (isSet($childRepos[$repoIndex]) && is_array($childRepos[$repoIndex])) { + foreach ($childRepos[$repoIndex] as $childData) { + $sortedArray[$childData["name"]] = $childData["index"]; + } + } + } + foreach ($sortedArray as $name => $repoIndex) { + $repoObject =& $repos[$repoIndex]; + $repoAccesses = array(); + foreach ($users as $userId => $userObject) { + //if(!$userObject->hasParent()) continue; + if($userObject->getId() == $loggedUser->getId()) continue; + $label = $userObject->personalRole->filterParameterValue("core.conf", "USER_DISPLAY_NAME", AJXP_REPO_SCOPE_ALL, $userId); + $acl = $userObject->mergedRole->getAcl($repoObject->getId()); + if(!empty($acl)) $repoAccesses[] = $label. " (".$acl.")"; + } + + $metaData = array( + "repository_id" => $repoIndex, + "accessType" => $repoObject->getAccessType(), + "icon" => "document_open_remote.png", + "openicon" => "document_open_remote.png", + "parentname" => "/repositories", + "repo_accesses" => implode(", ", $repoAccesses), + "ajxp_mime" => "shared_repository" + ); + AJXP_XMLWriter::renderNode("/repositories/$repoIndex", $name, true, $metaData); + } + } + +} diff --git a/core/src/plugins/access.ajxp_user/class.UserProfileEditor.js b/core/src/plugins/access.ajxp_user/class.UserProfileEditor.js new file mode 100644 index 0000000000..20a93a4a39 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/class.UserProfileEditor.js @@ -0,0 +1,56 @@ +Class.create("UserProfileEditor", AjxpPane, { + + _formManager: null, + + initialize: function($super, oFormObject, editorOptions){ + + $super(oFormObject, editorOptions); + + + + if(ajaxplorer.actionBar.getActionByName('custom_data_edit')){ + + this._formManager = new FormManager(); + var definitions = this._formManager.parseParameters(ajaxplorer.getXmlRegistry(), "user/preferences/pref[@exposed]|//param[contains(@scope,'user')]"); + this._formManager.createParametersInputs(oFormObject, definitions, true, ajaxplorer.user.preferences, false, true); + this._formManager.disableShortcutsOnForm(oFormObject); + + var saveButton = new Element('a', {}).update(' '+MessageHash[53]+''); + oFormObject.down('.toolbarGroup').insert({top: saveButton}); + + + saveButton.observe("click", function(){ + var params = $H(); + this._formManager.serializeParametersInputs(oFormObject, params, 'PREFERENCES_'); + var conn = new Connexion(); + params.set("get_action", "custom_data_edit"); + conn.setParameters(params); + conn.setMethod("POST"); + conn.onComplete = function(transport){ + ajaxplorer.actionBar.parseXmlMessage(transport.responseXML); + document.observeOnce("ajaxplorer:registry_part_loaded", function(event){ + if(event.memo != "user/preferences") return; + ajaxplorer.logXmlUser(ajaxplorer.getXmlRegistry()); + }); + ajaxplorer.loadXmlRegistry(false, "user/preferences"); + }; + conn.sendAsync(); + + }.bind(this)); + + } + + if(ajaxplorer.actionBar.getActionByName('pass_change')){ + + var chPassButton = new Element('a', {className:''}).update(' '+MessageHash[194]+''); + oFormObject.down('.toolbarGroup').insert(chPassButton); + chPassButton.observe("click", function(){ + ajaxplorer.actionBar.getActionByName('pass_change').apply(); + }); + + } + + } + + +}); \ No newline at end of file diff --git a/core/src/plugins/access.ajxp_user/class.WebDAVprefsEditor.js b/core/src/plugins/access.ajxp_user/class.WebDAVprefsEditor.js new file mode 100644 index 0000000000..02e6c5d802 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/class.WebDAVprefsEditor.js @@ -0,0 +1,88 @@ +Class.create("WebDAVprefsEditor", AjxpPane, { + + initialize: function($super, element, options){ + $super(element, options); + + if(!ajaxplorer.user) return; + var cont = element.down('#webdav_repo_list'); + cont.update(''); + var activator = element.down("#webdav_activator"); + + var even = false; + var conn = new Connexion(); + conn.setParameters(new Hash({get_action:'webdav_preferences'})); + conn.onComplete = function(transport){ + ajaxplorer.webdavCurrentPreferences = transport.responseJSON; + activator.checked = ajaxplorer.webdavCurrentPreferences.webdav_active; + if(activator.checked && !ajaxplorer.webdavCurrentPreferences.digest_set + && !ajaxplorer.webdavCurrentPreferences.webdav_force_basic) { + element.down('#webdav_password_form').show(); + } + ajaxplorer.user.getRepositoriesList().each(function(pair){ + if(ajaxplorer.webdavCurrentPreferences.webdav_repositories[pair.key]){ + var div = new Element('div', {className:(even?'even':'')}); + div.update(''+pair.value.label+'' ); + cont.insert(div); + even = !even; + } + }); + element.down('#webdav_main_access').setValue(ajaxplorer.webdavCurrentPreferences.webdav_base_url); + element.down('#webdav_main_access').observe("click", function(){ + element.down('#webdav_main_access').select(); + }); + element.down('#perworkspace-urls-toggle').observe("click", function(event){ + element.down('#webdav_repo_list').toggle(); + var span = element.down('#perworkspace-urls-toggle').down("span"); + var open = span.hasClassName("icon-caret-right"); + span.removeClassName(open ? "icon-caret-right" : "icon-caret-down"); + span.addClassName(!open ? "icon-caret-right" : "icon-caret-down"); + }); + + //element.down('input[name="ok"]').observe("click", hideLightBox); + if(!activator.hasObserver){ + activator.observe("change", function(e){ + var checked = activator.checked; + var conn = new Connexion(); + conn.setParameters(new Hash({ + get_action:'webdav_preferences', + activate:(checked?'true':'false') + })); + conn.onComplete = function(transport){ + ajaxplorer.webdavCurrentPreferences = transport.responseJSON; + if(ajaxplorer.webdavCurrentPreferences.webdav_active){ + if(!ajaxplorer.webdavCurrentPreferences.digest_set + || ajaxplorer.webdavCurrentPreferences.webdav_force_basic) { + element.down('#webdav_password_form').show(); + } + ajaxplorer.displayMessage("SUCCESS", MessageHash[408]); + }else { + element.down('#webdav_password_form').hide(); + ajaxplorer.displayMessage("SUCCESS", MessageHash[409]); + } + }; + conn.sendAsync(); + }); + if(!ajaxplorer.webdavCurrentPreferences.digest_set){ + element.down('#webdav_pass_saver').observe("click", function(){ + var conn = new Connexion(); + conn.setMethod('POST'); + conn.setParameters(new Hash({ + get_action:'webdav_preferences', + webdav_pass: element.down('#webdav_password').value + })); + conn.onComplete = function(transport){ + ajaxplorer.displayMessage("SUCCESS", MessageHash[410]); + }; + conn.sendAsync(); + }); + } + activator.hasObserver = true; + } + }; + conn.sendAsync(); + + + } + + +}); \ No newline at end of file diff --git a/core/src/plugins/access.ajxp_user/i18n/de.php b/core/src/plugins/access.ajxp_user/i18n/de.php new file mode 100644 index 0000000000..379507b111 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/i18n/de.php @@ -0,0 +1,55 @@ + + * This file is part of Pydio. + * + * Pydio is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pydio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pydio. If not, see . + * + * The latest code can be found at . + */ +$mess=array( +"1" => "Gemeinsame Benutzer", +"2" => "Gemeinsame Repositories", +"3" => "Öffentliche Dateien", +"4" => "Dateipfad", +"5" => "Repository", +"6" => "Passwort", +"7" => "Ablauf", +"8" => "Elemente", +"9" => "Verknüpfte Benutzer", +"10"=> "Verknüpfte Repositories", +"11"=> "Sollen die ausgewählten Elemente wirklich gelöscht werden?", +"12"=> "Die Berechtigung zum Löschen dieses Elements fehlt.", +"13"=> "Öffentliche Dateien erfolgreich entfernt.", +"14"=> "Integrität", +"15"=> "OK", +"16"=> "Fehlerhaft", +"17"=> "Download URL", +"18"=> "URL kopieren", +"19"=> "URL zum Senden per E-Mail kopieren.", +"20"=> "Downloads", +"21"=> "Ja", +"22"=> "Nein", +"23"=> "%s Dateien erfolgreich gelöscht.", +"24"=> "Nichts zum Entfernen.", +"25"=> "Entfernen abgelaufen", +"26"=> "Ausgelaufene freigegebene Dateien entfernen.", +"27"=> "Besitzer", +"28"=> "Dateien zum direkten Download mit oder ohne Passwortschutz freigegeben.", +"29"=> "Repositories von Benutzern übertragen.", +"30"=> "Erzeugte Benutzer zum Zugriff auf die übertragenen Repositories.", +"31"=> "Beschreibung", +"32"=> "Zurücksetzen", +"33"=> "Download-Zähler zurücksetzen", +); diff --git a/core/src/plugins/access.ajxp_user/i18n/en.php b/core/src/plugins/access.ajxp_user/i18n/en.php new file mode 100644 index 0000000000..da36524b8d --- /dev/null +++ b/core/src/plugins/access.ajxp_user/i18n/en.php @@ -0,0 +1,61 @@ + + * This file is part of Pydio. + * + * Pydio is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pydio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pydio. If not, see . + * + * The latest code can be found at . + */ +$mess=array( +"title"=> "My Dashboard", +"desc" => "Manage my account preferences, my address book, shared elements, etc.", +"1" => "Address Book", +"2" => "Shared folders", +"3" => "Shared files", +"4" => "File Path", +"5" => "Repository", +"6" => "Password", +"7" => "Expiration", +"8" => "Elements", +"9" => "Associated users", +"10"=> "Associated workspaces", +"11"=> "Are you sure that you want to delete the selected element(s)?", +"12"=> "You don't have the permission to delete this element.", +"13"=> "Successfully deleted public file.", +"14"=> "Integrity", +"15"=> "Ok", +"16"=> "Broken", +"17"=> "Download URL", +"18"=> "Copy URL", +"19"=> "Copy url to send by email.", +"20"=> "Downloads", +"21"=> "Yes", +"22"=> "No", +"23"=> "Successfully deleted %s files.", +"24"=> "Nothing to delete.", +"25"=> "Clear Expired", +"26"=> "Delete expired shared files.", +"27"=> "Owner", +"28"=> "Files shared for direct download, either protected by a password or not.", +"29"=> "Delegates workspaces created by users.", +"30"=> "Users created to access the delegated workspaces.", +"31"=> "Description", +"32"=> "Reset", +"33"=> "Reset download counter", +"34"=> "My Shares", +"35"=> "All my shared items (files and folders)", +"36"=> "Parameters", +"37"=> "My profile and application settings" +); diff --git a/core/src/plugins/access.ajxp_user/i18n/es.php b/core/src/plugins/access.ajxp_user/i18n/es.php new file mode 100644 index 0000000000..d8223620b1 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/i18n/es.php @@ -0,0 +1,57 @@ + + * This file is part of Pydio. + * + * Pydio is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pydio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pydio. If not, see . + * + * The latest code can be found at . + */ + // spanish translation: Ion Rey Bakaikoa , 2010 +// spanish corrections: Cristóbal Sabroe Yde , 2010 +$mess=array( +"1" => "Usuarios compartidos", +"2" => "Repositorios compartidos", +"3" => "Archivos públicos", +"4" => "Camino del archivo", +"5" => "Repositorio", +"6" => "Contraseña", +"7" => "Caduca", +"8" => "Elementos", +"9" => "Usuarios asociados", +"10"=> "Repositorios asociados", +"11"=> "¿Está seguro de que quiere borrar los elemento selecionado?", +"12"=> "No tienes permiso para borrar este elemento.", +"13"=> "Se ha borrado el archivo público.", +"14"=> "Integridad", +"15"=> "Ok", +"16"=> "Roto", +"17"=> "Descargar URL", +"18"=> "Copiar URL", +"19"=> "Copiar url para enviar email.", +"20"=> "Descargas", +"21"=> "Si", +"22"=> "No", +"23"=> "Se han borrado %s archivos.", +"24"=> "Nada para borrar.", +"25"=> "Limpiar caducados", +"26"=> "Borra archivos caducados.", +"27"=> "Dueño", +"28"=> "Archivos compartidos para descargas directas, con o sin contraseñaa.", +"29"=> "Repositorios delegados creados por usuarios.", +"30"=> "Usuarios creados para acceder a repositorios delegados.", +"31"=> "Descripción", +"32"=> "Resetear", +"33"=> "Resetear el contador de descargas", +); diff --git a/core/src/plugins/access.ajxp_user/i18n/fr.php b/core/src/plugins/access.ajxp_user/i18n/fr.php new file mode 100644 index 0000000000..ae7208327e --- /dev/null +++ b/core/src/plugins/access.ajxp_user/i18n/fr.php @@ -0,0 +1,55 @@ + + * This file is part of Pydio. + * + * Pydio is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pydio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pydio. If not, see . + * + * The latest code can be found at . + */ +$mess=array( +"1" => "Utilisateurs partagés", +"2" => "Dépôts délégués", +"3" => "Fichiers publics", +"4" => "Chemin", +"5" => "Dépôt", +"6" => "Pass", +"7" => "Expiration", +"8" => "Eléments", +"9" => "Utilisateurs associés", +"10"=> "Dépôts associés", +"11"=> "Etes vous sûr de vouloir effacer les éléments sélectionnés?", +"12"=> "Vous n'avez pas la permission pour effacer ces élements.", +"13"=> "Les fichiers publics ont été effacés.", +"14"=> "Integrité", +"15"=> "Ok", +"16"=> "Cassée", +"17"=> "Téléchargement", +"18"=> "Copier l'URL", +"19"=> "Copier l'url pour l'envoyer par email.", +"20"=> "Compteur", +"21"=> "Oui", +"22"=> "Non", +"23"=> "%s fichiers ont été effacés.", +"24"=> "Rien à supprimer.", +"25"=> "Nettoyage", +"26"=> "Effacer les fichiers publics expirés.", +"27"=> "Possesseur", +"28"=> "Fichiers partagés pour un téléchargement direct, protégés par mot de passe ou non.", +"29"=> "Dépôts délégués créés par les utilisateurs.", +"30"=> "Utilisateurs associés aux dépôts délégués.", +"31"=> "Description", +"32"=> "RàZ", +"33"=> "Remise à zéro du compteur", +); diff --git a/core/src/plugins/access.ajxp_user/i18n/hu.php b/core/src/plugins/access.ajxp_user/i18n/hu.php new file mode 100644 index 0000000000..1000bffb60 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/i18n/hu.php @@ -0,0 +1,58 @@ + + * This file is part of Pydio. + * + * Pydio is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pydio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pydio. If not, see . + * + * The latest code can be found at . + */ +// hungarian translation: Gyarmati Balázs +// updates: Levente Huszkó +// fixed +$mess=array( +"1" => "Megosztott felhasználók", +"2" => "Megosztott gyűjtemények", +"3" => "Publikus fájlok", +"4" => "Fájl útvonal", +"5" => "Gyűjtemény", +"6" => "Jelszó", +"7" => "Lejárati idő", +"8" => "Elemek", +"9" => "Hozzárendelt felhasználók", +"10"=> "Hozzárendelt gyűjtemények", +"11"=> "Biztos, hogy törölni akarod a kiválasztott eleme(ke)t?", +"12"=> "Nincs jogod törölni ezt az elemet.", +"13"=> "Fájl publikus hozzáférése törölve.", +"14"=> "Épség", +"15"=> "Ok", +"16"=> "Hibás", +"17"=> "Letöltési URL", +"18"=> "URL másolása", +"19"=> "URL másolása emailben küldéshez.", +"20"=> "Letöltve", +"21"=> "Igen", +"22"=> "Nem", +"23"=> "%s fájl sikeresen törölve.", +"24"=> "Nincs mit törölni.", +"25"=> "Lejártak törlése", +"26"=> "Lejárt publikus hozzáférése törlése.", +"27"=> "Tulajdonos", +"28"=> "Publikus hozzáférésű fájlok, jelszóval védve vagy anélkül.", +"29"=> "Felhasználók által megosztott mappák (gyűjtemények).", +"30"=> "A megosztott mappák (gyűjtemények) eléréséhez létrehozott felhasználók.", +"31"=> "Leírás", +"32"=> "Nullázás", +"33"=> "A letöltésszámláló nullázása", +); diff --git a/core/src/plugins/access.ajxp_user/i18n/pt.php b/core/src/plugins/access.ajxp_user/i18n/pt.php new file mode 100644 index 0000000000..9e461c5099 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/i18n/pt.php @@ -0,0 +1,55 @@ + + * This file is part of Pydio. + * + * Pydio is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pydio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pydio. If not, see . + * + * The latest code can be found at . + */ +$mess=array( +"1" => "Utilizadores partilhados", +"2" => "Áreas de Trabalho Partilhadas", +"3" => "Ficheiros Públicos", +"4" => "Caminho do Ficheiro", +"5" => "Repositório", +"6" => "Palavra-Chave", +"7" => "Validade", +"8" => "Elementos", +"9" => "Utilizadores Associados", +"10"=> "Áreas de Trabalho Associadas", +"11"=> "Tem a certeza de que quer apagar os seguintes elementos?", +"12"=> "Não tem permissões para apagar este elemento.", +"13"=> "Apagado com sucesso o ficheiro público.", +"14"=> "Integridade", +"15"=> "Confirmar", +"16"=> "Danificado", +"17"=> "URL de Transferência", +"18"=> "Copiar URL", +"19"=> "Copiar URL para enviar por e-mail.", +"20"=> "Transferências", +"21"=> "Sim", +"22"=> "Não", +"23"=> "Apagados com sucesso %s ficheiros.", +"24"=> "Nada para apagar.", +"25"=> "Limpar Expirados", +"26"=> "Apagar Ficheiros Partilhados Expirados.", +"27"=> "Proprietário", +"28"=> "Ficheiros partilhados para transferência directa, protegidos ou não por uma Palavra-Chave.", +"29"=> "Delega Áreas de Trabalho criados por utilizadores.", +"30"=> "Utilizadores criados para aceder às Áreas de Trabalho Delegadas.", +"31"=> "Descrição", +"32"=> "Repor", +"33"=> "Repor Contador de Transferências", +); diff --git a/core/src/plugins/access.ajxp_user/i18n/si.php b/core/src/plugins/access.ajxp_user/i18n/si.php new file mode 100644 index 0000000000..0ef6fb9b20 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/i18n/si.php @@ -0,0 +1,56 @@ + + * This file is part of Pydio. + * + * Pydio is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Pydio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with Pydio. If not, see . + * + * The latest code can be found at . + */ +// Slovenian translation: April 21 2011 by Vladimir Bohinc (vladimir.bohinc@gmail.com) +$mess=array( +"1" => "Uporabniki skupne rabe", +"2" => "Zbirke v skupni rabi", +"3" => "Datoteke v skupni rabi", +"4" => "Pot datoteke", +"5" => "Zbirka", +"6" => "Geslo", +"7" => "Veljavnost", +"8" => "Elementi", +"9" => "Povezani uporabniki", +"10"=> "Povezane zbirke", +"11"=> "Ali res želite izbrisati izbrane elemente?", +"12"=> "Nimate zadostnih pravic za brisanje tega elementa.", +"13"=> "Brisanje datoteke v skupni rabi je bilo uspešno.", +"14"=> "Celovitost", +"15"=> "Vredu", +"16"=> "Poškodovana", +"17"=> "URL prenosa", +"18"=> "Kopiraj URL", +"19"=> "Kopiraj URL za pošiljanje po e-pošti.", +"20"=> "Prenosi", +"21"=> "Da", +"22"=> "Ne", +"23"=> "Uspešno izbrisanih %s datotek.", +"24"=> "Nič za brisanje.", +"25"=> "Počisti potečene", +"26"=> "Odstrani potečene datoteke v skupni rabi.", +"27"=> "Lastnik", +"28"=> "Datoteke v skupni rabi, pooblaščene za neposreden prenos (javne) in zaščitene z geslom ali pa ne.", +"29"=> "Zbirke, ki jih je ustvaril uporabnik za namene skupne rabe.", +"30"=> "Uporabniki ustvarjeni za dostop do zbirk skupne rabe.", +"31"=> "Opis", +"32"=> "Ponastavi", +"33"=> "Ponastavi števec prenosov", +); diff --git a/core/src/plugins/access.ajxp_user/manifest.xml b/core/src/plugins/access.ajxp_user/manifest.xml new file mode 100644 index 0000000000..d534bc8663 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/manifest.xml @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + ]]> + + + ]]> + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
AJXP_MESSAGE[404]
+
+ +
AJXP_MESSAGE[405]
+ +
+ AJXP_MESSAGE[465]
+ + +
+
+
+ + + ]]>
+
+ + + + + + + + + + + + 0){ + path = window.actionArguments[0]; + if(Object.isString(path)){path = new AjxpNode(path,false,getBaseName(path));} + }else{ + userSelection = ajaxplorer.getUserSelection(); + if(userSelection && userSelection.isUnique() && (userSelection.hasDir() || userSelection.hasMime(["zip"]))){ + path = userSelection.getUniqueNode(); + } + } + if(path){ + ajaxplorer.updateContextData(path); + } + ]]> + + + + + + + + + + + + + + + + + + + + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + +
+ +
diff --git a/core/src/plugins/access.ajxp_user/plugin_doc.html b/core/src/plugins/access.ajxp_user/plugin_doc.html new file mode 100644 index 0000000000..f42db97734 --- /dev/null +++ b/core/src/plugins/access.ajxp_user/plugin_doc.html @@ -0,0 +1 @@ +

The "Shared Elements" repository uses this driver to display, and modify the metadata generated by all the share actions : shared files ("publiclets"), shared folders ("delegated repositories"), and shared users. Like access.ajxp_conf, it's a good demonstration of how Pydio can be used to browse data other than filesystem.

\ No newline at end of file diff --git a/core/src/plugins/access.ajxp_user/share.png b/core/src/plugins/access.ajxp_user/share.png new file mode 100644 index 0000000000..12ff3efe51 Binary files /dev/null and b/core/src/plugins/access.ajxp_user/share.png differ diff --git a/core/src/plugins/core.conf/standard_conf_actions.xml b/core/src/plugins/core.conf/standard_conf_actions.xml index 61d16bab5f..432894dcbd 100644 --- a/core/src/plugins/core.conf/standard_conf_actions.xml +++ b/core/src/plugins/core.conf/standard_conf_actions.xml @@ -216,7 +216,7 @@ - + @@ -367,9 +367,9 @@ - + - + + + + + + + + + + @@ -487,6 +500,7 @@ ]]> +