diff options
author | Morris Jobke <hey@morrisjobke.de> | 2015-04-13 10:35:45 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-04-13 10:38:08 +0200 |
commit | 59efcb63a334b70b3f392a4eea18c67e79ac4a21 (patch) | |
tree | b2c1403859e1d85963d60335628bcbaf4d2bc680 /apps/files | |
parent | 0a72e66e9feaf555c485f312de1cd3377aeb6a9f (diff) | |
download | nextcloud-server-59efcb63a334b70b3f392a4eea18c67e79ac4a21.tar.gz nextcloud-server-59efcb63a334b70b3f392a4eea18c67e79ac4a21.zip |
fix filepicker
* add ability to filter for mimetype
* fixes #15526
* fixes #11563
Diffstat (limited to 'apps/files')
-rw-r--r-- | apps/files/ajax/list.php | 26 | ||||
-rw-r--r-- | apps/files/lib/helper.php | 5 |
2 files changed, 27 insertions, 4 deletions
diff --git a/apps/files/ajax/list.php b/apps/files/ajax/list.php index 8daea6ca3fe..19129e9de11 100644 --- a/apps/files/ajax/list.php +++ b/apps/files/ajax/list.php @@ -45,10 +45,32 @@ try { $sortAttribute = isset($_GET['sort']) ? (string)$_GET['sort'] : 'name'; $sortDirection = isset($_GET['sortdirection']) ? ($_GET['sortdirection'] === 'desc') : false; + $mimetypeFilters = isset($_GET['mimetypes']) ? json_decode($_GET['mimetypes']) : ''; - // make filelist + $files = []; + // Clean up duplicates from array + if (is_array($mimetypeFilters) && count($mimetypeFilters)) { + $mimetypeFilters = array_unique($mimetypeFilters); + + if (!in_array('httpd/unix-directory', $mimetypeFilters)) { + // append folder filter to be able to browse folders + $mimetypeFilters[] = 'httpd/unix-directory'; + } + + // create filelist with mimetype filter - as getFiles only supports on + // mimetype filter at once we will filter this folder for each + // mimetypeFilter + foreach ($mimetypeFilters as $mimetypeFilter) { + $files = array_merge($files, \OCA\Files\Helper::getFiles($dir, $sortAttribute, $sortDirection, $mimetypeFilter)); + } + + // sort the files accordingly + $files = \OCA\Files\Helper::sortFiles($files, $sortAttribute, $sortDirection); + } else { + // create file list without mimetype filter + $files = \OCA\Files\Helper::getFiles($dir, $sortAttribute, $sortDirection); + } - $files = \OCA\Files\Helper::getFiles($dir, $sortAttribute, $sortDirection); $files = \OCA\Files\Helper::populateTags($files); $data['directory'] = $dir; $data['files'] = \OCA\Files\Helper::formatFileInfos($files); diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php index cc1b2d3cfbe..e966e60d00a 100644 --- a/apps/files/lib/helper.php +++ b/apps/files/lib/helper.php @@ -196,10 +196,11 @@ class Helper { * @param string $dir path to the directory * @param string $sortAttribute attribute to sort on * @param bool $sortDescending true for descending sort, false otherwise + * @param string $mimetypeFilter limit returned content to this mimetype or mimepart * @return \OCP\Files\FileInfo[] files */ - public static function getFiles($dir, $sortAttribute = 'name', $sortDescending = false) { - $content = \OC\Files\Filesystem::getDirectoryContent($dir); + public static function getFiles($dir, $sortAttribute = 'name', $sortDescending = false, $mimetypeFilter = '') { + $content = \OC\Files\Filesystem::getDirectoryContent($dir, $mimetypeFilter); return self::sortFiles($content, $sortAttribute, $sortDescending); } |