diff options
author | root <roger.szabo@web.de> | 2016-07-27 15:17:29 +0800 |
---|---|---|
committer | root <roger.szabo@web.de> | 2016-07-27 15:17:29 +0800 |
commit | 2719dcabed16954c7c01114e7a6357089556ad78 (patch) | |
tree | be77987507ad9a51afd10a2c1a14bd92c5b17ad0 /apps | |
parent | 1c64ee67afb41f3d3872f1ad59d5c3c900394bbb (diff) | |
parent | 95a0714973b4b6b95658c2904a0de7ba93c8eab9 (diff) | |
download | nextcloud-server-2719dcabed16954c7c01114e7a6357089556ad78.tar.gz nextcloud-server-2719dcabed16954c7c01114e7a6357089556ad78.zip |
Merge branch 'master' of https://github.com/nextcloud/server
Diffstat (limited to 'apps')
48 files changed, 493 insertions, 71 deletions
diff --git a/apps/comments/img/comments.svg b/apps/comments/img/comments.svg new file mode 100644 index 00000000000..5cdc84a25d7 --- /dev/null +++ b/apps/comments/img/comments.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.1"> + <path fill="#fff" d="m16 3c-8.8366 0-16 4.9248-16 11s7.1634 11 16 11c0.49926 0 0.98116-0.03174 1.4688-0.0625l8.5312 7.062v-9.406c3.658-2.016 6-5.1198 6-8.594 0-6.0752-7.164-11-16-11z"/> +</svg> diff --git a/apps/federatedfilesharing/l10n/cs_CZ.js b/apps/federatedfilesharing/l10n/cs_CZ.js index 351fed8ad3d..0a6ba02eeac 100644 --- a/apps/federatedfilesharing/l10n/cs_CZ.js +++ b/apps/federatedfilesharing/l10n/cs_CZ.js @@ -2,11 +2,28 @@ OC.L10N.register( "federatedfilesharing", { "Federated sharing" : "Propojené sdílení", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Chcete přidat vzdálené sdílení {name} od {owner}@{remote}?", + "Remote share" : "Vzdálené sdílení", + "Remote share password" : "Heslo vzdáleného sdílení", + "Cancel" : "Zrušit", + "Add remote share" : "Přidat propojené sdílení", "Invalid Federated Cloud ID" : "Neplatné sdružené cloud ID", + "Server to server sharing is not enabled on this server" : "Sdílení ze serveru na server není na tomto serveru povoleno", + "Couldn't establish a federated share." : "Nepodařilo se ustavit spojené sdílení.", + "Couldn't establish a federated share, maybe the password was wrong." : "Nepodařilo se ustavit propojené sdílení, heslo může být nesprávné.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Požadavek na spojené sdílení uspěl, obdržíte pozvánku. Zkontrolujte vaše upozornění.", + "The mountpoint name contains invalid characters." : "Jméno přípojného bodu obsahuje neplatné znaky.", + "Not allowed to create a federated share with the owner." : "ONení povoleno s autorem vytvořit propojené sdílení.", + "Invalid or untrusted SSL certificate" : "Neplatný nebo nedůvěryhodný SSL certifikát", + "Could not authenticate to remote share, password might be wrong" : "Autentizace ke vzdálenému sdílení selhala, heslo může být nesprávné", + "Storage not valid" : "Úložiště není platné", + "Federated Share successfully added" : "Propojené sdílení úspěšně přidáno", + "Couldn't add remote share" : "Nepodařilo se přidat propojené sdílení", "Sharing %s failed, because this item is already shared with %s" : "Sdílení položky %s selhalo, protože položka již je s uživatelem %s sdílena", "Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem", "File is already shared with %s" : "Soubor je již sdílen s %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Sdílení %s selhalo, %s se nepodařilo nalézt, server pravděpodobně právě není dostupný.", + "Could not find share" : "Nelze nalézt sdílení", "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Obdrželi jste \"/%3$s\" jako vzdálené sdílení od %1$s (zastupuje %2$s)", "You received \"/%3$s\" as a remote share from %1$s" : "Obdrželi jste \"/%3$s\" jako vzdálené sdílení od %1$s", "Accept" : "Přijmout", diff --git a/apps/federatedfilesharing/l10n/cs_CZ.json b/apps/federatedfilesharing/l10n/cs_CZ.json index 379ab76a5a3..26c8dd38be7 100644 --- a/apps/federatedfilesharing/l10n/cs_CZ.json +++ b/apps/federatedfilesharing/l10n/cs_CZ.json @@ -1,10 +1,27 @@ { "translations": { "Federated sharing" : "Propojené sdílení", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Chcete přidat vzdálené sdílení {name} od {owner}@{remote}?", + "Remote share" : "Vzdálené sdílení", + "Remote share password" : "Heslo vzdáleného sdílení", + "Cancel" : "Zrušit", + "Add remote share" : "Přidat propojené sdílení", "Invalid Federated Cloud ID" : "Neplatné sdružené cloud ID", + "Server to server sharing is not enabled on this server" : "Sdílení ze serveru na server není na tomto serveru povoleno", + "Couldn't establish a federated share." : "Nepodařilo se ustavit spojené sdílení.", + "Couldn't establish a federated share, maybe the password was wrong." : "Nepodařilo se ustavit propojené sdílení, heslo může být nesprávné.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Požadavek na spojené sdílení uspěl, obdržíte pozvánku. Zkontrolujte vaše upozornění.", + "The mountpoint name contains invalid characters." : "Jméno přípojného bodu obsahuje neplatné znaky.", + "Not allowed to create a federated share with the owner." : "ONení povoleno s autorem vytvořit propojené sdílení.", + "Invalid or untrusted SSL certificate" : "Neplatný nebo nedůvěryhodný SSL certifikát", + "Could not authenticate to remote share, password might be wrong" : "Autentizace ke vzdálenému sdílení selhala, heslo může být nesprávné", + "Storage not valid" : "Úložiště není platné", + "Federated Share successfully added" : "Propojené sdílení úspěšně přidáno", + "Couldn't add remote share" : "Nepodařilo se přidat propojené sdílení", "Sharing %s failed, because this item is already shared with %s" : "Sdílení položky %s selhalo, protože položka již je s uživatelem %s sdílena", "Not allowed to create a federated share with the same user" : "Není povoleno vytvořit propojené sdílení s tím samým uživatelem", "File is already shared with %s" : "Soubor je již sdílen s %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Sdílení %s selhalo, %s se nepodařilo nalézt, server pravděpodobně právě není dostupný.", + "Could not find share" : "Nelze nalézt sdílení", "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Obdrželi jste \"/%3$s\" jako vzdálené sdílení od %1$s (zastupuje %2$s)", "You received \"/%3$s\" as a remote share from %1$s" : "Obdrželi jste \"/%3$s\" jako vzdálené sdílení od %1$s", "Accept" : "Přijmout", diff --git a/apps/federation/l10n/cs_CZ.js b/apps/federation/l10n/cs_CZ.js index f59d0987dc2..1aa8b18aea7 100644 --- a/apps/federation/l10n/cs_CZ.js +++ b/apps/federation/l10n/cs_CZ.js @@ -8,6 +8,8 @@ OC.L10N.register( "Federation" : "Sdružování", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Sdružování vám umožňuje se připojit k dalším důvěryhodným serverům za účelem výměny uživatelských adresářů. Používá se to např. pro automatické doplňování uživatelů při sdruženém sdílení.", "Add server automatically once a federated share was created successfully" : "Přidat server automaticky jakmile je úspěšně vytvořeno sdružené sdílení", - "Trusted Servers" : "Důvěryhodné servery" + "Trusted Servers" : "Důvěryhodné servery", + "+ Add Nextcloud server" : "+ Přidat Nextcloud server", + "Nextcloud Server" : "Server Nextcloud" }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/federation/l10n/cs_CZ.json b/apps/federation/l10n/cs_CZ.json index 21f4243824d..36d7726e0e6 100644 --- a/apps/federation/l10n/cs_CZ.json +++ b/apps/federation/l10n/cs_CZ.json @@ -6,6 +6,8 @@ "Federation" : "Sdružování", "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Sdružování vám umožňuje se připojit k dalším důvěryhodným serverům za účelem výměny uživatelských adresářů. Používá se to např. pro automatické doplňování uživatelů při sdruženém sdílení.", "Add server automatically once a federated share was created successfully" : "Přidat server automaticky jakmile je úspěšně vytvořeno sdružené sdílení", - "Trusted Servers" : "Důvěryhodné servery" + "Trusted Servers" : "Důvěryhodné servery", + "+ Add Nextcloud server" : "+ Přidat Nextcloud server", + "Nextcloud Server" : "Server Nextcloud" },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/files/appinfo/app.php b/apps/files/appinfo/app.php index cc86e9bf270..850c335c27d 100644 --- a/apps/files/appinfo/app.php +++ b/apps/files/appinfo/app.php @@ -28,6 +28,7 @@ */ \OCP\App::registerAdmin('files', 'admin'); +$l = \OC::$server->getL10N('files'); \OC::$server->getNavigationManager()->add(function () { $urlGenerator = \OC::$server->getURLGenerator(); @@ -49,8 +50,7 @@ $templateManager->registerTemplate('application/vnd.oasis.opendocument.presentat $templateManager->registerTemplate('application/vnd.oasis.opendocument.text', 'core/templates/filetemplates/template.odt'); $templateManager->registerTemplate('application/vnd.oasis.opendocument.spreadsheet', 'core/templates/filetemplates/template.ods'); -\OCA\Files\App::getNavigationManager()->add(function () { - $l = \OC::$server->getL10N('files'); +\OCA\Files\App::getNavigationManager()->add(function () use ($l) { return [ 'id' => 'files', 'appname' => 'files', @@ -60,6 +60,16 @@ $templateManager->registerTemplate('application/vnd.oasis.opendocument.spreadshe ]; }); +\OCA\Files\App::getNavigationManager()->add(function () use ($l) { + return [ + 'id' => 'recent', + 'appname' => 'files', + 'script' => 'recentlist.php', + 'order' => 2, + 'name' => $l->t('Recent'), + ]; +}); + \OC::$server->getActivityManager()->registerExtension(function() { return new \OCA\Files\Activity( \OC::$server->query('L10NFactory'), diff --git a/apps/files/appinfo/routes.php b/apps/files/appinfo/routes.php index 34bb1011773..7b5ac63a160 100644 --- a/apps/files/appinfo/routes.php +++ b/apps/files/appinfo/routes.php @@ -51,6 +51,11 @@ $application->registerRoutes( 'requirements' => array('tagName' => '.+'), ), array( + 'name' => 'API#getRecentFiles', + 'url' => '/api/v1/recent/', + 'verb' => 'GET' + ), + array( 'name' => 'API#updateFileSorting', 'url' => '/api/v1/sorting', 'verb' => 'POST' diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index f0b16a57886..24cccb3a5c8 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -175,6 +175,11 @@ _clientSideSort: true, /** + * Whether or not users can change the sort attribute or direction + */ + _allowSorting: true, + + /** * Current directory * @type String */ @@ -718,7 +723,7 @@ $target = $target.closest('a'); } sort = $target.attr('data-sort'); - if (sort) { + if (sort && this._allowSorting) { if (this._sort === sort) { this.setSort(sort, (this._sortDirection === 'desc')?'asc':'desc', true, true); } diff --git a/apps/files/js/recentfilelist.js b/apps/files/js/recentfilelist.js new file mode 100644 index 00000000000..e8c61cbfe2d --- /dev/null +++ b/apps/files/js/recentfilelist.js @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com> + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +// HACK: this piece needs to be loaded AFTER the files app (for unit tests) +$(document).ready(function () { + (function (OCA) { + /** + * @class OCA.Files.RecentFileList + * @augments OCA.Files.RecentFileList + * + * @classdesc Recent file list. + * Displays the list of recently modified files + * + * @param $el container element with existing markup for the #controls + * and a table + * @param [options] map of options, see other parameters + */ + var RecentFileList = function ($el, options) { + options.sorting = { + mode: 'mtime', + direction: 'desc' + }; + this.initialize($el, options); + this._allowSorting = false; + }; + RecentFileList.prototype = _.extend({}, OCA.Files.FileList.prototype, + /** @lends OCA.Files.RecentFileList.prototype */ { + id: 'recent', + appName: t('files', 'Recent'), + + _clientSideSort: true, + _allowSelection: false, + + /** + * @private + */ + initialize: function () { + OCA.Files.FileList.prototype.initialize.apply(this, arguments); + if (this.initialized) { + return; + } + OC.Plugins.attach('OCA.Files.RecentFileList', this); + }, + + updateEmptyContent: function () { + var dir = this.getCurrentDirectory(); + if (dir === '/') { + // root has special permissions + this.$el.find('#emptycontent').toggleClass('hidden', !this.isEmpty); + this.$el.find('#filestable thead th').toggleClass('hidden', this.isEmpty); + } + else { + OCA.Files.FileList.prototype.updateEmptyContent.apply(this, arguments); + } + }, + + getDirectoryPermissions: function () { + return OC.PERMISSION_READ | OC.PERMISSION_DELETE; + }, + + updateStorageStatistics: function () { + // no op because it doesn't have + // storage info like free space / used space + }, + + reload: function () { + this.showMask(); + if (this._reloadCall) { + this._reloadCall.abort(); + } + + // there is only root + this._setCurrentDir('/', false); + + this._reloadCall = $.ajax({ + url: OC.generateUrl('/apps/files/api/v1/recent'), + type: 'GET', + dataType: 'json' + }); + var callBack = this.reloadCallback.bind(this); + return this._reloadCall.then(callBack, callBack); + }, + + reloadCallback: function (result) { + delete this._reloadCall; + this.hideMask(); + + if (result.files) { + this.setFiles(result.files.sort(this._sortComparator)); + return true; + } + return false; + } + }); + + OCA.Files.RecentFileList = RecentFileList; + })(OCA); +}); + diff --git a/apps/files/js/recentplugin.js b/apps/files/js/recentplugin.js new file mode 100644 index 00000000000..fcd427b18a2 --- /dev/null +++ b/apps/files/js/recentplugin.js @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com> + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +(function (OCA) { + /** + * @namespace OCA.Files.RecentPlugin + * + * Registers the recent file list from the files app sidebar. + */ + OCA.Files.RecentPlugin = { + name: 'Recent', + + /** + * @type OCA.Files.RecentFileList + */ + recentFileList: null, + + attach: function () { + var self = this; + $('#app-content-recent').on('show.plugin-recent', function (e) { + self.showFileList($(e.target)); + }); + $('#app-content-recent').on('hide.plugin-recent', function () { + self.hideFileList(); + }); + }, + + detach: function () { + if (this.recentFileList) { + this.recentFileList.destroy(); + OCA.Files.fileActions.off('setDefault.plugin-recent', this._onActionsUpdated); + OCA.Files.fileActions.off('registerAction.plugin-recent', this._onActionsUpdated); + $('#app-content-recent').off('.plugin-recent'); + this.recentFileList = null; + } + }, + + showFileList: function ($el) { + if (!this.recentFileList) { + this.recentFileList = this._createRecentFileList($el); + } + return this.recentFileList; + }, + + hideFileList: function () { + if (this.recentFileList) { + this.recentFileList.$fileList.empty(); + } + }, + + /** + * Creates the recent file list. + * + * @param $el container for the file list + * @return {OCA.Files.RecentFileList} file list + */ + _createRecentFileList: function ($el) { + var fileActions = this._createFileActions(); + // register recent list for sidebar section + return new OCA.Files.RecentFileList( + $el, { + fileActions: fileActions, + scrollContainer: $('#app-content') + } + ); + }, + + _createFileActions: function () { + // inherit file actions from the files app + var fileActions = new OCA.Files.FileActions(); + // note: not merging the legacy actions because legacy apps are not + // compatible with the sharing overview and need to be adapted first + fileActions.registerDefaultActions(); + fileActions.merge(OCA.Files.fileActions); + + if (!this._globalActionsInitialized) { + // in case actions are registered later + this._onActionsUpdated = _.bind(this._onActionsUpdated, this); + OCA.Files.fileActions.on('setDefault.plugin-recent', this._onActionsUpdated); + OCA.Files.fileActions.on('registerAction.plugin-recent', this._onActionsUpdated); + this._globalActionsInitialized = true; + } + + // when the user clicks on a folder, redirect to the corresponding + // folder in the files app instead of opening it directly + fileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename, context) { + OCA.Files.App.setActiveView('files', {silent: true}); + var path = OC.joinPaths(context.$file.attr('data-path'), filename); + OCA.Files.App.fileList.changeDirectory(path, true, true); + }); + fileActions.setDefault('dir', 'Open'); + return fileActions; + }, + + _onActionsUpdated: function (ev) { + if (ev.action) { + this.recentFileList.fileActions.registerAction(ev.action); + } else if (ev.defaultAction) { + this.recentFileList.fileActions.setDefault( + ev.defaultAction.mime, + ev.defaultAction.name + ); + } + } + }; + +})(OCA); + +OC.Plugins.register('OCA.Files.App', OCA.Files.RecentPlugin); + diff --git a/apps/files/l10n/cs_CZ.js b/apps/files/l10n/cs_CZ.js index 54789e62b10..53123735bd7 100644 --- a/apps/files/l10n/cs_CZ.js +++ b/apps/files/l10n/cs_CZ.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Neplatný adresář", "Files" : "Soubory", "All files" : "Všechny soubory", + "Recent" : "Nedávné", "File could not be found" : "Soubor nelze nalézt", "Home" : "Domů", "Close" : "Zavřít", diff --git a/apps/files/l10n/cs_CZ.json b/apps/files/l10n/cs_CZ.json index 7758fc3b539..cdee6637638 100644 --- a/apps/files/l10n/cs_CZ.json +++ b/apps/files/l10n/cs_CZ.json @@ -19,6 +19,7 @@ "Invalid directory." : "Neplatný adresář", "Files" : "Soubory", "All files" : "Všechny soubory", + "Recent" : "Nedávné", "File could not be found" : "Soubor nelze nalézt", "Home" : "Domů", "Close" : "Zavřít", diff --git a/apps/files/l10n/de.js b/apps/files/l10n/de.js index 8ef62cbc126..5e9c8cff6a7 100644 --- a/apps/files/l10n/de.js +++ b/apps/files/l10n/de.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Ungültiges Verzeichnis.", "Files" : "Dateien", "All files" : "Alle Dateien", + "Recent" : "Akuelle", "File could not be found" : "Datei konnte nicht gefunden werden", "Home" : "Home", "Close" : "Schließen", @@ -33,7 +34,7 @@ OC.L10N.register( "Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.", "Uploading..." : "Hochladen…", "..." : "...", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde{plural_s} übrig", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig", "{hours}:{minutes}h" : "{hours}:{minutes}h", "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minute{plural_s} übrig", "{minutes}:{seconds}m" : "{minutes}:{seconds}m", diff --git a/apps/files/l10n/de.json b/apps/files/l10n/de.json index 532aced68dc..12f845fabae 100644 --- a/apps/files/l10n/de.json +++ b/apps/files/l10n/de.json @@ -19,6 +19,7 @@ "Invalid directory." : "Ungültiges Verzeichnis.", "Files" : "Dateien", "All files" : "Alle Dateien", + "Recent" : "Akuelle", "File could not be found" : "Datei konnte nicht gefunden werden", "Home" : "Home", "Close" : "Schließen", @@ -31,7 +32,7 @@ "Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.", "Uploading..." : "Hochladen…", "..." : "...", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde{plural_s} übrig", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig", "{hours}:{minutes}h" : "{hours}:{minutes}h", "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minute{plural_s} übrig", "{minutes}:{seconds}m" : "{minutes}:{seconds}m", diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index 8be185156f8..c707e1f84e6 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Ungültiges Verzeichnis.", "Files" : "Dateien", "All files" : "Alle Dateien", + "Recent" : "Aktuelle", "File could not be found" : "Datei konnte nicht gefunden werden", "Home" : "Home", "Close" : "Schließen", @@ -33,7 +34,7 @@ OC.L10N.register( "Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.", "Uploading..." : "Hochladen…", "..." : "...", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde{plural_s} übrig", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig", "{hours}:{minutes}h" : "{hours}:{minutes}h", "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minute{plural_s} übrig", "{minutes}:{seconds}m" : "{minutes}:{seconds}m", diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index d96cbf265db..8fcd141ac8d 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -19,6 +19,7 @@ "Invalid directory." : "Ungültiges Verzeichnis.", "Files" : "Dateien", "All files" : "Alle Dateien", + "Recent" : "Aktuelle", "File could not be found" : "Datei konnte nicht gefunden werden", "Home" : "Home", "Close" : "Schließen", @@ -31,7 +32,7 @@ "Could not get result from server." : "Ergebnis konnte nicht vom Server abgerufen werden.", "Uploading..." : "Hochladen…", "..." : "...", - "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde{plural_s} übrig", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} Stunde(n) übrig", "{hours}:{minutes}h" : "{hours}:{minutes}h", "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} Minute{plural_s} übrig", "{minutes}:{seconds}m" : "{minutes}:{seconds}m", diff --git a/apps/files/l10n/it.js b/apps/files/l10n/it.js index 0d0bacf0d5d..363419c3643 100644 --- a/apps/files/l10n/it.js +++ b/apps/files/l10n/it.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Cartella non valida.", "Files" : "File", "All files" : "Tutti i file", + "Recent" : "Recenti", "File could not be found" : "Il file non può essere trovato", "Home" : "Home", "Close" : "Chiudi", diff --git a/apps/files/l10n/it.json b/apps/files/l10n/it.json index e82b31e5e77..16571b6bd98 100644 --- a/apps/files/l10n/it.json +++ b/apps/files/l10n/it.json @@ -19,6 +19,7 @@ "Invalid directory." : "Cartella non valida.", "Files" : "File", "All files" : "Tutti i file", + "Recent" : "Recenti", "File could not be found" : "Il file non può essere trovato", "Home" : "Home", "Close" : "Chiudi", diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js index 364cf47b83b..afe80ac40ef 100644 --- a/apps/files/l10n/nl.js +++ b/apps/files/l10n/nl.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Ongeldige directory.", "Files" : "Bestanden", "All files" : "Alle bestanden", + "Recent" : "Recent", "File could not be found" : "Bestand kon niet worden gevonden", "Home" : "Thuis", "Close" : "Sluiten", diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json index 0d9d311199c..b66089f59d1 100644 --- a/apps/files/l10n/nl.json +++ b/apps/files/l10n/nl.json @@ -19,6 +19,7 @@ "Invalid directory." : "Ongeldige directory.", "Files" : "Bestanden", "All files" : "Alle bestanden", + "Recent" : "Recent", "File could not be found" : "Bestand kon niet worden gevonden", "Home" : "Thuis", "Close" : "Sluiten", diff --git a/apps/files/lib/AppInfo/Application.php b/apps/files/lib/AppInfo/Application.php index fac8e3a3a4b..fc91e05ba7e 100644 --- a/apps/files/lib/AppInfo/Application.php +++ b/apps/files/lib/AppInfo/Application.php @@ -47,7 +47,8 @@ class Application extends App { $c->query('TagService'), $server->getPreviewManager(), $server->getShareManager(), - $server->getConfig() + $server->getConfig(), + $server->getUserFolder() ); }); diff --git a/apps/files/lib/Controller/ApiController.php b/apps/files/lib/Controller/ApiController.php index 57eb43bbe9c..7ce83bfca15 100644 --- a/apps/files/lib/Controller/ApiController.php +++ b/apps/files/lib/Controller/ApiController.php @@ -31,6 +31,7 @@ namespace OCA\Files\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Controller; +use OCP\Files\Folder; use OCP\IConfig; use OCP\IRequest; use OCP\AppFramework\Http\DataResponse; @@ -39,7 +40,7 @@ use OCP\AppFramework\Http\Response; use OCA\Files\Service\TagService; use OCP\IPreview; use OCP\Share\IManager; -use OCP\Files\Node; +use OC\Files\Node\Node; use OCP\IUserSession; /** @@ -58,12 +59,18 @@ class ApiController extends Controller { private $userSession; /** IConfig */ private $config; + /** @var Folder */ + private $userFolder; /** * @param string $appName * @param IRequest $request + * @param IUserSession $userSession * @param TagService $tagService * @param IPreview $previewManager + * @param IManager $shareManager + * @param IConfig $config + * @param Folder $userFolder */ public function __construct($appName, IRequest $request, @@ -71,13 +78,15 @@ class ApiController extends Controller { TagService $tagService, IPreview $previewManager, IManager $shareManager, - IConfig $config) { + IConfig $config, + Folder $userFolder) { parent::__construct($appName, $request); $this->userSession = $userSession; $this->tagService = $tagService; $this->previewManager = $previewManager; $this->shareManager = $shareManager; $this->config = $config; + $this->userFolder = $userFolder; } /** @@ -143,6 +152,28 @@ class ApiController extends Controller { } /** + * @param \OCP\Files\Node[] $nodes + * @return array + */ + private function formatNodes(array $nodes) { + return array_values(array_map(function (Node $node) { + /** @var \OC\Files\Node\Node $shareTypes */ + $shareTypes = $this->getShareTypes($node); + $file = \OCA\Files\Helper::formatFileInfo($node->getFileInfo()); + $parts = explode('/', dirname($node->getPath()), 4); + if (isset($parts[3])) { + $file['path'] = '/' . $parts[3]; + } else { + $file['path'] = '/'; + } + if (!empty($shareTypes)) { + $file['shareTypes'] = $shareTypes; + } + return $file; + }, $nodes)); + } + + /** * Returns a list of all files tagged with the given tag. * * @NoAdminRequired @@ -151,28 +182,28 @@ class ApiController extends Controller { * @return DataResponse */ public function getFilesByTag($tagName) { - $files = array(); $nodes = $this->tagService->getFilesByTag($tagName); - foreach ($nodes as &$node) { - $shareTypes = $this->getShareTypes($node); - $fileInfo = $node->getFileInfo(); - $file = \OCA\Files\Helper::formatFileInfo($fileInfo); - $parts = explode('/', dirname($fileInfo->getPath()), 4); - if(isset($parts[3])) { - $file['path'] = '/' . $parts[3]; - } else { - $file['path'] = '/'; - } + $files = $this->formatNodes($nodes); + foreach ($files as &$file) { $file['tags'] = [$tagName]; - if (!empty($shareTypes)) { - $file['shareTypes'] = $shareTypes; - } - $files[] = $file; } return new DataResponse(['files' => $files]); } /** + * Returns a list of recently modifed files. + * + * @NoAdminRequired + * + * @return DataResponse + */ + public function getRecentFiles() { + $nodes = $this->userFolder->getRecent(100); + $files = $this->formatNodes($nodes); + return new DataResponse(['files' => $files]); + } + + /** * Return a list of share types for outgoing shares * * @param Node $node file node diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index 5e342e6589b..9dbe06ff789 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -173,9 +173,11 @@ class ViewController extends Controller { \OCP\Util::addscript('files', 'search'); \OCP\Util::addScript('files', 'favoritesfilelist'); + \OCP\Util::addScript('files', 'recentfilelist'); \OCP\Util::addScript('files', 'tagsplugin'); \OCP\Util::addScript('files', 'gotoplugin'); \OCP\Util::addScript('files', 'favoritesplugin'); + \OCP\Util::addScript('files', 'recentplugin'); \OCP\Util::addScript('files', 'detailfileinfoview'); \OCP\Util::addScript('files', 'sidebarpreviewmanager'); diff --git a/apps/files/recentlist.php b/apps/files/recentlist.php new file mode 100644 index 00000000000..1976be4894a --- /dev/null +++ b/apps/files/recentlist.php @@ -0,0 +1,7 @@ +<?php +// Check if we are a user +OCP\User::checkLoggedIn(); + +$tmpl = new OCP\Template('files', 'recentlist', ''); + +$tmpl->printPage(); diff --git a/apps/files/templates/recentlist.php b/apps/files/templates/recentlist.php new file mode 100644 index 00000000000..1667eb4cc8d --- /dev/null +++ b/apps/files/templates/recentlist.php @@ -0,0 +1,42 @@ +<?php /** @var $l OC_L10N */ ?> +<div id='notification'></div> + +<div id="emptycontent" class="hidden"></div> + +<input type="hidden" name="dir" value="" id="dir"> + +<div class="nofilterresults hidden"> + <div class="icon-search"></div> + <h2><?php p($l->t('No entries found in this folder')); ?></h2> + <p></p> +</div> + +<table id="filestable"> + <thead> + <tr> + <th id='headerName' class="hidden column-name"> + <div id="headerName-container"> + <a class="name sort columntitle" + data-sort="name"><span><?php p($l->t('Name')); ?></span></a> + </div> + </th> + <th id="headerSize" class="hidden column-size"> + <a class="size sort columntitle" + data-sort="size"><span><?php p($l->t('Size')); ?></span></a> + </th> + <th id="headerDate" class="hidden column-mtime"> + <a id="modified" class="columntitle" + data-sort="mtime"><span><?php p($l->t('Modified')); ?></span><span + class="sort-indicator"></span></a> + <span class="selectedActions"><a href="" class="delete-selected"> + <span><?php p($l->t('Delete')) ?></span> + <span class="icon icon-delete"></span> + </a></span> + </th> + </tr> + </thead> + <tbody id="fileList"> + </tbody> + <tfoot> + </tfoot> +</table> diff --git a/apps/files/tests/Controller/ApiControllerTest.php b/apps/files/tests/Controller/ApiControllerTest.php index 1d39c88021b..348150e0e08 100644 --- a/apps/files/tests/Controller/ApiControllerTest.php +++ b/apps/files/tests/Controller/ApiControllerTest.php @@ -59,6 +59,8 @@ class ApiControllerTest extends TestCase { private $shareManager; /** @var \OCP\IConfig */ private $config; + /** @var \OC\Files\Node\Folder */ + private $userFolder; public function setUp() { $this->request = $this->getMockBuilder('\OCP\IRequest') @@ -82,6 +84,9 @@ class ApiControllerTest extends TestCase { ->disableOriginalConstructor() ->getMock(); $this->config = $this->getMock('\OCP\IConfig'); + $this->userFolder = $this->getMockBuilder('\OC\Files\Node\Folder') + ->disableOriginalConstructor() + ->getMock(); $this->apiController = new ApiController( $this->appName, @@ -90,7 +95,8 @@ class ApiControllerTest extends TestCase { $this->tagService, $this->preview, $this->shareManager, - $this->config + $this->config, + $this->userFolder ); } diff --git a/apps/files/tests/Controller/ViewControllerTest.php b/apps/files/tests/Controller/ViewControllerTest.php index ceb48a2241f..373f8c25152 100644 --- a/apps/files/tests/Controller/ViewControllerTest.php +++ b/apps/files/tests/Controller/ViewControllerTest.php @@ -191,7 +191,16 @@ class ViewControllerTest extends TestCase { 'appname' => 'files', 'script' => 'list.php', 'order' => 0, - 'name' => new \OC_L10N_String(new \OC_L10N('files'), 'All files', []), + 'name' => (string)new \OC_L10N_String(new \OC_L10N('files'), 'All files', []), + 'active' => false, + 'icon' => '', + ], + [ + 'id' => 'recent', + 'appname' => 'files', + 'script' => 'recentlist.php', + 'order' => 2, + 'name' => (string)new \OC_L10N_String(new \OC_L10N('files'), 'Recent', []), 'active' => false, 'icon' => '', ], @@ -209,7 +218,7 @@ class ViewControllerTest extends TestCase { 'appname' => 'files_sharing', 'script' => 'list.php', 'order' => 10, - 'name' => new \OC_L10N_String(new \OC_L10N('files_sharing'), 'Shared with you', []), + 'name' => (string)new \OC_L10N_String(new \OC_L10N('files_sharing'), 'Shared with you', []), 'active' => false, 'icon' => '', ], @@ -218,7 +227,7 @@ class ViewControllerTest extends TestCase { 'appname' => 'files_sharing', 'script' => 'list.php', 'order' => 15, - 'name' => new \OC_L10N_String(new \OC_L10N('files_sharing'), 'Shared with others', []), + 'name' => (string)new \OC_L10N_String(new \OC_L10N('files_sharing'), 'Shared with others', []), 'active' => false, 'icon' => '', ], @@ -227,7 +236,7 @@ class ViewControllerTest extends TestCase { 'appname' => 'files_sharing', 'script' => 'list.php', 'order' => 20, - 'name' => new \OC_L10N_String(new \OC_L10N('files_sharing'), 'Shared by link', []), + 'name' => (string)new \OC_L10N_String(new \OC_L10N('files_sharing'), 'Shared by link', []), 'active' => false, 'icon' => '', ], @@ -236,7 +245,7 @@ class ViewControllerTest extends TestCase { 'appname' => 'systemtags', 'script' => 'list.php', 'order' => 25, - 'name' => new \OC_L10N_String(new \OC_L10N('systemtags'), 'Tags', []), + 'name' => (string)new \OC_L10N_String(new \OC_L10N('systemtags'), 'Tags', []), 'active' => false, 'icon' => '', ], @@ -245,7 +254,7 @@ class ViewControllerTest extends TestCase { 'appname' => 'files_trashbin', 'script' => 'list.php', 'order' => 50, - 'name' => new \OC_L10N_String(new \OC_L10N('files_trashbin'), 'Deleted files', []), + 'name' => (string)new \OC_L10N_String(new \OC_L10N('files_trashbin'), 'Deleted files', []), 'active' => false, 'icon' => '', ], @@ -273,6 +282,10 @@ class ViewControllerTest extends TestCase { 'content' => null, ], [ + 'id' => 'recent', + 'content' => null, + ], + [ 'id' => 'favorites', 'content' => null, ], diff --git a/apps/files_external/css/settings.css b/apps/files_external/css/settings.css index 6dfb012b15e..4d5dc69a4e7 100644 --- a/apps/files_external/css/settings.css +++ b/apps/files_external/css/settings.css @@ -68,23 +68,23 @@ td.mountPoint, td.backend { width:160px; } padding-left: 25px; } -#body-settings .select2-results .select2-result-label { +.files-external-select2 .select2-results .select2-result-label { height: 32px; padding: 3px; } -.select2-results .select2-result-label > span { +.files-external-select2 .select2-results .select2-result-label > span { display: block; position: relative; } -.select2-results .select2-result-label .avatardiv { +.files-external-select2 .select2-results .select2-result-label .avatardiv { display:inline-block; } -.select2-results .select2-result-label .avatardiv + span { +.files-external-select2 .select2-results .select2-result-label .avatardiv + span { position: absolute; top: 5px; margin-left: 10px; } -.select2-results .select2-result-label .avatardiv[data-type="group"] + span { +.files-external-select2 .select2-results .select2-result-label .avatardiv[data-type="group"] + span { vertical-align: top; top: 6px; position: absolute; diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 921bf92e775..fc6edefc648 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -93,6 +93,7 @@ function addSelect2 ($elements, userListLimit) { placeholder: t('files_external', 'All users. Type to select user or group.'), allowClear: true, multiple: true, + dropdownCssClass: 'files-external-select2', //minimumInputLength: 1, ajax: { url: OC.generateUrl('apps/files_external/applicable'), diff --git a/apps/files_trashbin/ajax/undelete.php b/apps/files_trashbin/ajax/undelete.php index 9095c551b4f..ba671325372 100644 --- a/apps/files_trashbin/ajax/undelete.php +++ b/apps/files_trashbin/ajax/undelete.php @@ -29,7 +29,6 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); \OC::$server->getSession()->close(); -$files = $_POST['files']; $dir = '/'; if (isset($_POST['dir'])) { $dir = rtrim((string)$_POST['dir'], '/'). '/'; @@ -50,7 +49,7 @@ if (isset($_POST['allfiles']) && (string)$_POST['allfiles'] === 'true') { $list[] = $fileName; } } else { - $list = json_decode($files); + $list = json_decode($_POST['files']); } $error = array(); diff --git a/apps/systemtags/img/app.svg b/apps/systemtags/img/app.svg new file mode 100644 index 00000000000..8bfd246078e --- /dev/null +++ b/apps/systemtags/img/app.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" height="32" width="32" version="1.0"> + <path fill="#fff" d="m12.372 1.9224-9.614 0.02632c-0.54322 0-0.69312 0.41974-0.69406 0.69208l-0.030264 9.6034 17.446 17.444c0.39376 0.39658 1.0247 0.39394 1.4184 0l8.9138-8.9138c0.39344-0.39376 0.3979-1.0265 0.004-1.4205l-0.0022 0.01752-16.734-16.734-0.7082-0.70834zm-4.3336 3.7044a2.2876 2.2876 0 0 1 2.2876 2.288 2.2876 2.2876 0 0 1 -2.2876 2.2882 2.2876 2.2876 0 0 1 -2.288 -2.2882 2.2876 2.2876 0 0 1 2.288 -2.288z"/> +</svg> diff --git a/apps/theming/js/settings-admin.js b/apps/theming/js/settings-admin.js index 85e781411ed..941ec5c711b 100644 --- a/apps/theming/js/settings-admin.js +++ b/apps/theming/js/settings-admin.js @@ -75,11 +75,11 @@ function preview(setting, value) { var logos = document.getElementsByClassName('logo-icon'); var timestamp = new Date().getTime(); if (value !== '') { - logos[0].style.background = "url('" + OC.generateUrl('/apps/theming/logo') + "?v" + timestamp + "')"; - logos[0].style.backgroundSize = "62px 34px"; + logos[0].style.backgroundImage = "url('" + OC.generateUrl('/apps/theming/logo') + "?v" + timestamp + "')"; + logos[0].style.backgroundSize = "contain"; } else { - logos[0].style.background = "url('" + OC.getRootPath() + '/core/img/logo-icon.svg?v' + timestamp +"')"; - logos[0].style.backgroundSize = "62px 34px"; + logos[0].style.backgroundImage = "url('" + OC.getRootPath() + '/core/img/logo-icon.svg?v' + timestamp +"')"; + logos[0].style.backgroundSize = "contain"; } } } diff --git a/apps/theming/lib/controller/themingcontroller.php b/apps/theming/lib/controller/themingcontroller.php index 571e0ab79a5..3e5d6f3e0d1 100644 --- a/apps/theming/lib/controller/themingcontroller.php +++ b/apps/theming/lib/controller/themingcontroller.php @@ -224,10 +224,11 @@ class ThemingController extends Controller { if($logo !== '') { $responseCss .= sprintf('#header .logo { background-image: url(\'./logo?v='.$cacheBusterValue.'\'); + background-size: contain; } #header .logo-icon { background-image: url(\'./logo?v='.$cacheBusterValue.'\'); - background-size: 62px 34px; + background-size: contain; }' ); } diff --git a/apps/theming/tests/lib/controller/ThemingControllerTest.php b/apps/theming/tests/lib/controller/ThemingControllerTest.php index 1acfdff020c..24eb0510f99 100644 --- a/apps/theming/tests/lib/controller/ThemingControllerTest.php +++ b/apps/theming/tests/lib/controller/ThemingControllerTest.php @@ -383,10 +383,11 @@ class ThemingControllerTest extends TestCase { $expected = new Http\DataDownloadResponse('#header .logo { background-image: url(\'./logo?v=0\'); + background-size: contain; } #header .logo-icon { background-image: url(\'./logo?v=0\'); - background-size: 62px 34px; + background-size: contain; }', 'style', 'text/css'); $expected->cacheFor(3600); @$this->assertEquals($expected, $this->themingController->getStylesheet()); @@ -445,10 +446,11 @@ class ThemingControllerTest extends TestCase { $expected = new Http\DataDownloadResponse('#body-user #header,#body-settings #header,#body-public #header,#body-login,.searchbox input[type="search"]:focus,.searchbox input[type="search"]:active,.searchbox input[type="search"]:valid {background-color: #000}#header .logo { background-image: url(\'./logo?v=0\'); + background-size: contain; } #header .logo-icon { background-image: url(\'./logo?v=0\'); - background-size: 62px 34px; + background-size: contain; }#body-login { background-image: url(\'./loginbackground?v=0\'); }', 'style', 'text/css'); @@ -479,10 +481,11 @@ class ThemingControllerTest extends TestCase { $expected = new Http\DataDownloadResponse('#body-user #header,#body-settings #header,#body-public #header,#body-login,.searchbox input[type="search"]:focus,.searchbox input[type="search"]:active,.searchbox input[type="search"]:valid {background-color: #fff}#header .logo { background-image: url(\'./logo?v=0\'); + background-size: contain; } #header .logo-icon { background-image: url(\'./logo?v=0\'); - background-size: 62px 34px; + background-size: contain; }#body-login { background-image: url(\'./loginbackground?v=0\'); }#header .header-appname, #expandDisplayName { color: #000000; } #header .icon-caret { background-image: url(\'' . \OC::$WEBROOT . '/core/img/actions/caret-dark.svg\'); } .searchbox input[type="search"] { background: transparent url(\'' . \OC::$WEBROOT . '/core/img/actions/search.svg\') no-repeat 6px center; color: #000; }.searchbox input[type="search"]:focus,.searchbox input[type="search"]:active,.searchbox input[type="search"]:valid { color: #000; border: 1px solid rgba(0, 0, 0, .5); }', 'style', 'text/css'); diff --git a/apps/updatenotification/l10n/cs_CZ.js b/apps/updatenotification/l10n/cs_CZ.js index 37fef1c73f9..56dcfdd7aee 100644 --- a/apps/updatenotification/l10n/cs_CZ.js +++ b/apps/updatenotification/l10n/cs_CZ.js @@ -15,6 +15,7 @@ OC.L10N.register( "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy můžete aktualizovat na novější verzi / experimentální kanál. Poté ale nelze nikdy provést downgrade zpět na nižší stabilní kanál.", "Notify members of the following groups about available updates:" : "Upozorňovat členy následujících skupin na dostupné aktualizace:", "Only notification for app updates are available." : "Je možné pouze upozornění na dostupné aktualizace aplikací.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.", "The selected update channel does not support updates of the server." : "Vybraný kanál aktualizací nepodporuje aktualizace serveru." }, "nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"); diff --git a/apps/updatenotification/l10n/cs_CZ.json b/apps/updatenotification/l10n/cs_CZ.json index 29f2c9a027c..3f93f490446 100644 --- a/apps/updatenotification/l10n/cs_CZ.json +++ b/apps/updatenotification/l10n/cs_CZ.json @@ -13,6 +13,7 @@ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vždy můžete aktualizovat na novější verzi / experimentální kanál. Poté ale nelze nikdy provést downgrade zpět na nižší stabilní kanál.", "Notify members of the following groups about available updates:" : "Upozorňovat členy následujících skupin na dostupné aktualizace:", "Only notification for app updates are available." : "Je možné pouze upozornění na dostupné aktualizace aplikací.", + "The selected update channel makes dedicated notifications for the server obsolete." : "Zvolený kanál aktualizací označuje dedikovaná upozornění pro server za zastaralá.", "The selected update channel does not support updates of the server." : "Vybraný kanál aktualizací nepodporuje aktualizace serveru." },"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/user_ldap/lib/Wizard.php b/apps/user_ldap/lib/Wizard.php index be4d1821ee1..573d30f0005 100644 --- a/apps/user_ldap/lib/Wizard.php +++ b/apps/user_ldap/lib/Wizard.php @@ -498,7 +498,7 @@ class Wizard extends LDAPUtility { throw new \Exception('Could not connect to LDAP'); } - $obclasses = array('groupOfNames', 'group', 'posixGroup', '*'); + $obclasses = array('groupOfNames', 'groupOfUniqueNames', 'group', 'posixGroup', '*'); $this->determineFeature($obclasses, 'objectclass', 'ldap_groupfilter_objectclass', diff --git a/apps/user_ldap/tests/Integration/Bootstrap.php b/apps/user_ldap/tests/Integration/Bootstrap.php new file mode 100644 index 00000000000..f52f1322171 --- /dev/null +++ b/apps/user_ldap/tests/Integration/Bootstrap.php @@ -0,0 +1,26 @@ +<?php + +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program 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, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +define('CLI_TEST_RUN', true); +require_once __DIR__ . '/../../../../lib/base.php'; +require_once __DIR__ . '/setup-scripts/config.php'; diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestAccessGroupsMatchFilter.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAccessGroupsMatchFilter.php index 4fcc8334338..2411a46d8ee 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestAccessGroupsMatchFilter.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestAccessGroupsMatchFilter.php @@ -23,10 +23,9 @@ namespace OCA\User_LDAP\Tests\Integration\Lib; - use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; -require_once __DIR__ . '/../../../../../lib/base.php'; +require_once __DIR__ . '/../Bootstrap.php'; class IntegrationTestAccessGroupsMatchFilter extends AbstractIntegrationTest { @@ -118,7 +117,6 @@ class IntegrationTestAccessGroupsMatchFilter extends AbstractIntegrationTest { } } -require_once(__DIR__ . '/../setup-scripts/config.php'); $test = new IntegrationTestAccessGroupsMatchFilter($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestBackupServer.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestBackupServer.php index 1d4bd05b8a5..f433930bd26 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestBackupServer.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestBackupServer.php @@ -27,7 +27,7 @@ use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\User_LDAP; -require_once __DIR__ . '/../../../../../lib/base.php'; +require_once __DIR__ . '/../Bootstrap.php'; class IntegrationTestBackupServer extends AbstractIntegrationTest { /** @var UserMapping */ @@ -113,7 +113,6 @@ class IntegrationTestBackupServer extends AbstractIntegrationTest { } } -require_once(__DIR__ . '/../setup-scripts/config.php'); $test = new IntegrationTestBackupServer($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestBatchApplyUserAttributes.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestBatchApplyUserAttributes.php index 2574877fca4..89ce764e51a 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestBatchApplyUserAttributes.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestBatchApplyUserAttributes.php @@ -26,7 +26,7 @@ namespace OCA\User_LDAP\Tests\Integration\Lib; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; -require_once __DIR__ . '/../../../../../lib/base.php'; +require_once __DIR__ . '/../Bootstrap.php'; class IntegrationTestBatchApplyUserAttributes extends AbstractIntegrationTest { /** @@ -68,7 +68,6 @@ class IntegrationTestBatchApplyUserAttributes extends AbstractIntegrationTest { } -require_once(__DIR__ . '/../setup-scripts/config.php'); $test = new IntegrationTestBatchApplyUserAttributes($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestConnect.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestConnect.php index 85a185c8ac6..44b16aed6a1 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestConnect.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestConnect.php @@ -27,7 +27,7 @@ use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\User_LDAP; -require_once __DIR__ . '/../../../../../lib/base.php'; +require_once __DIR__ . '/../Bootstrap.php'; class IntegrationTestConnect extends AbstractIntegrationTest { /** @var UserMapping */ @@ -161,7 +161,6 @@ class IntegrationTestConnect extends AbstractIntegrationTest { } } -require_once(__DIR__ . '/../setup-scripts/config.php'); $test = new IntegrationTestConnect($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestCountUsersByLoginName.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestCountUsersByLoginName.php index 4d20d52595e..eb4a0a5c9cf 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestCountUsersByLoginName.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestCountUsersByLoginName.php @@ -25,7 +25,7 @@ namespace OCA\User_LDAP\Tests\Integration\Lib; use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; -require_once __DIR__ . '/../../../../../lib/base.php'; +require_once __DIR__ . '/../Bootstrap.php'; class IntegrationTestCountUsersByLoginName extends AbstractIntegrationTest { @@ -61,7 +61,6 @@ class IntegrationTestCountUsersByLoginName extends AbstractIntegrationTest { } } -require_once(__DIR__ . '/../setup-scripts/config.php'); $test = new IntegrationTestCountUsersByLoginName($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php index 56f44cc58b2..32fc2151a7c 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestFetchUsersByLoginName.php @@ -27,7 +27,7 @@ use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\User_LDAP; -require_once __DIR__ . '/../../../../../lib/base.php'; +require_once __DIR__ . '/../Bootstrap.php'; class IntegrationTestFetchUsersByLoginName extends AbstractIntegrationTest { /** @var UserMapping */ @@ -74,7 +74,6 @@ class IntegrationTestFetchUsersByLoginName extends AbstractIntegrationTest { } -require_once(__DIR__ . '/../setup-scripts/config.php'); $test = new IntegrationTestFetchUsersByLoginName($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php index 7acd49af00a..3826cbdae51 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestPaging.php @@ -27,7 +27,7 @@ use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\User_LDAP; -require_once __DIR__ . '/../../../../../lib/base.php'; +require_once __DIR__ . '/../Bootstrap.php'; class IntegrationTestPaging extends AbstractIntegrationTest { /** @var UserMapping */ @@ -76,7 +76,6 @@ class IntegrationTestPaging extends AbstractIntegrationTest { } } -require_once(__DIR__ . '/../setup-scripts/config.php'); $test = new IntegrationTestPaging($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); diff --git a/apps/user_ldap/tests/Integration/Lib/IntegrationTestUserHome.php b/apps/user_ldap/tests/Integration/Lib/IntegrationTestUserHome.php index a4db8cae681..95c14ca8947 100644 --- a/apps/user_ldap/tests/Integration/Lib/IntegrationTestUserHome.php +++ b/apps/user_ldap/tests/Integration/Lib/IntegrationTestUserHome.php @@ -28,7 +28,7 @@ use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\User_LDAP; -require_once __DIR__ . '/../../../../../lib/base.php'; +require_once __DIR__ . '/../Bootstrap.php'; class IntegrationTestUserHome extends AbstractIntegrationTest { /** @var UserMapping */ @@ -169,7 +169,6 @@ class IntegrationTestUserHome extends AbstractIntegrationTest { } } -require_once(__DIR__ . '/../setup-scripts/config.php'); $test = new IntegrationTestUserHome($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php index bd4da5ea97f..7c8f9475b41 100644 --- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php +++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserAvatar.php @@ -29,7 +29,7 @@ use OCA\User_LDAP\User\User; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; -require_once __DIR__ . '/../../../../../../lib/base.php'; +require_once __DIR__ . '/../../Bootstrap.php'; class IntegrationTestUserAvatar extends AbstractIntegrationTest { /** @var UserMapping */ @@ -148,7 +148,6 @@ class IntegrationTestUserAvatar extends AbstractIntegrationTest { } } -require_once(__DIR__ . '/../../setup-scripts/config.php'); $test = new IntegrationTestUserAvatar($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); diff --git a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php index de86e17d014..ab0d2ffdcce 100644 --- a/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php +++ b/apps/user_ldap/tests/Integration/Lib/User/IntegrationTestUserDisplayName.php @@ -26,7 +26,7 @@ namespace OCA\User_LDAP\Tests\Integration\Lib\User; use OCA\User_LDAP\Mapping\UserMapping; use OCA\User_LDAP\Tests\Integration\AbstractIntegrationTest; -require_once __DIR__ . '/../../../../../../lib/base.php'; +require_once __DIR__ . '/../../Bootstrap.php'; class IntegrationTestUserDisplayName extends AbstractIntegrationTest { /** @var UserMapping */ @@ -100,7 +100,6 @@ class IntegrationTestUserDisplayName extends AbstractIntegrationTest { } } -require_once(__DIR__ . '/../../setup-scripts/config.php'); $test = new IntegrationTestUserDisplayName($host, $port, $adn, $apwd, $bdn); $test->init(); $test->run(); |