From 992b59f70bec5dcc6681db14c3a97036b4961403 Mon Sep 17 00:00:00 2001 From: kondou Date: Thu, 5 Sep 2013 16:54:12 +0200 Subject: [PATCH] Make it possible to pass rawlist.php an JSON array, to filter by more than one mimetype --- apps/files/ajax/rawlist.php | 22 +++++++++++++++++----- core/js/oc-dialogs.js | 15 +++++++++++---- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/apps/files/ajax/rawlist.php b/apps/files/ajax/rawlist.php index f568afad4da..37fd12f71d0 100644 --- a/apps/files/ajax/rawlist.php +++ b/apps/files/ajax/rawlist.php @@ -12,21 +12,33 @@ OCP\JSON::checkLoggedIn(); // Load the files $dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; $mimetype = isset($_GET['mimetype']) ? $_GET['mimetype'] : ''; +$mimetypeList = isset($_GET['mimetype_list']) ? json_decode($_GET['mimetype_list'], true) : ''; // make filelist $files = array(); // If a type other than directory is requested first load them. -if($mimetype && strpos($mimetype, 'httpd/unix-directory') === false) { +if( ($mimetype || $mimetypeList) && strpos($mimetype, 'httpd/unix-directory') === false) { foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, 'httpd/unix-directory' ) as $i ) { $i["date"] = OCP\Util::formatDate($i["mtime"] ); $i['mimetype_icon'] = $i['type'] == 'dir' ? \mimetype_icon('dir'): \mimetype_icon($i['mimetype']); $files[] = $i; } } -foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, $mimetype ) as $i ) { - $i["date"] = OCP\Util::formatDate($i["mtime"] ); - $i['mimetype_icon'] = $i['type'] == 'dir' ? \mimetype_icon('dir'): \mimetype_icon($i['mimetype']); - $files[] = $i; + +if (is_array($mimetypeList)) { + foreach ($mimetypeList as $mimetype) { + foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, $mimetype ) as $i ) { + $i["date"] = OCP\Util::formatDate($i["mtime"]); + $i['mimetype_icon'] = $i['type'] == 'dir' ? \mimetype_icon('dir'): \mimetype_icon($i['mimetype']); + $files[] = $i; + } + } +} else { + foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, $mimetype ) as $i ) { + $i["date"] = OCP\Util::formatDate($i["mtime"] ); + $i['mimetype_icon'] = $i['type'] == 'dir' ? \mimetype_icon('dir'): \mimetype_icon($i['mimetype']); + $files[] = $i; + } } OCP\JSON::success(array('data' => $files)); diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index f184a1022bc..f4c339702e1 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -244,10 +244,17 @@ var OCdialogs = { return defer.promise(); }, _getFileList: function(dir, mimeType) { - return $.getJSON( - OC.filePath('files', 'ajax', 'rawlist.php'), - {dir: dir, mimetype: mimeType} - ); + if (typeof(mimeType) === "object") { + return $.getJSON( + OC.filePath('files', 'ajax', 'rawlist.php'), + {dir: dir, "mimetype_list": JSON.stringify(mimeType)} + ); + } else { + return $.getJSON( + OC.filePath('files', 'ajax', 'rawlist.php'), + {dir: dir, mimetype: mimeType} + ); + } }, _determineValue: function(element) { if ( $(element).attr('type') === 'checkbox' ) { -- 2.39.5