]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix filepicker
authorMorris Jobke <hey@morrisjobke.de>
Mon, 13 Apr 2015 08:35:45 +0000 (10:35 +0200)
committerMorris Jobke <hey@morrisjobke.de>
Mon, 13 Apr 2015 08:38:08 +0000 (10:38 +0200)
* add ability to filter for mimetype
* fixes #15526
* fixes #11563

apps/files/ajax/list.php
apps/files/lib/helper.php
core/js/oc-dialogs.js

index 8daea6ca3fe8373f72b946ea08a92c625e553f13..19129e9de1112f345fa2c12cae93242e0686cca5 100644 (file)
@@ -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);
index cc1b2d3cfbe8e851724c529810816d86c89a27d1..e966e60d00a24a1a2fac79aaba226468949405fa 100644 (file)
@@ -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);
        }
index df139ed979729a6db7cb37cd2d3cece8669e6d67..afd7debb6958fb85034867dda29b6e9fc33643ad 100644 (file)
@@ -138,7 +138,7 @@ var OCdialogs = {
         * @param title dialog title
         * @param callback which will be triggered when user presses Choose
         * @param multiselect whether it should be possible to select multiple files
-        * @param mimetypeFilter mimetype to filter by
+        * @param mimetypeFilter mimetype to filter by - directories will always be included
         * @param modal make the dialog modal
        */
        filepicker:function(title, callback, multiselect, mimetypeFilter, modal) {