summaryrefslogtreecommitdiffstats
path: root/apps/files/lib/helper.php
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2013-08-17 13:07:18 +0200
committerVincent Petry <pvince81@owncloud.com>2013-09-13 19:59:14 +0200
commit1304b511e9533dee4cf1125e625568c8a74719a1 (patch)
tree2430ff5abeeb0f378547e49cb4b311b41c035421 /apps/files/lib/helper.php
parentc149b57d3b4020c65d33966d5dc8395b8b821fc9 (diff)
downloadnextcloud-server-1304b511e9533dee4cf1125e625568c8a74719a1.tar.gz
nextcloud-server-1304b511e9533dee4cf1125e625568c8a74719a1.zip
Ajax calls for "files" and "files_trashbin" apps
Frontend: - The files app list now uses ajax calls to refresh the list. - Added support the browser back button (history API). - Added mask + spinner while loading file list Backend: - Added utility function in core JS for parsing query strings. - Moved file list + breadcrumb template data code to helper functions - Fixed some file paths in trashbin app to be similar to the files app
Diffstat (limited to 'apps/files/lib/helper.php')
-rw-r--r--apps/files/lib/helper.php65
1 files changed, 65 insertions, 0 deletions
diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php
index 9170c6e3fc0..282f0678a9a 100644
--- a/apps/files/lib/helper.php
+++ b/apps/files/lib/helper.php
@@ -45,5 +45,70 @@ class Helper
return \OC_Helper::mimetypeIcon($file['mimetype']);
}
+ /**
+ * Comparator function to sort files alphabetically and have
+ * the directories appear first
+ * @param array $a file
+ * @param array $b file
+ * @return -1 if $a must come before $b, 1 otherwise
+ */
+ public static function fileCmp($a, $b) {
+ if ($a['type'] === 'dir' and $b['type'] !== 'dir') {
+ return -1;
+ } elseif ($a['type'] !== 'dir' and $b['type'] === 'dir') {
+ return 1;
+ } else {
+ return strnatcasecmp($a['name'], $b['name']);
+ }
+ }
+
+ /**
+ * Retrieves the contents of the given directory and
+ * returns it as a sorted array.
+ * @param string $dir path to the directory
+ * @return array of files
+ */
+ public static function getFiles($dir) {
+ $content = \OC\Files\Filesystem::getDirectoryContent($dir);
+ $files = array();
+
+ foreach ($content as $i) {
+ $i['date'] = \OCP\Util::formatDate($i['mtime']);
+ if ($i['type'] === 'file') {
+ $fileinfo = pathinfo($i['name']);
+ $i['basename'] = $fileinfo['filename'];
+ if (!empty($fileinfo['extension'])) {
+ $i['extension'] = '.' . $fileinfo['extension'];
+ } else {
+ $i['extension'] = '';
+ }
+ }
+ $i['directory'] = $dir;
+ $i['isPreviewAvailable'] = \OCP\Preview::isMimeSupported($i['mimetype']);
+ $i['icon'] = \OCA\files\lib\Helper::determineIcon($i);
+ $files[] = $i;
+ }
+ usort($files, array('\OCA\files\lib\Helper', 'fileCmp'));
+
+ return $files;
+ }
+
+ /**
+ * Splits the given path into a breadcrumb structure.
+ * @param string $dir path to process
+ * @return array where each entry is a hash of the absolute
+ * directory path and its name
+ */
+ public static function makeBreadcrumb($dir){
+ $breadcrumb = array();
+ $pathtohere = '';
+ foreach (explode('/', $dir) as $i) {
+ if ($i !== '') {
+ $pathtohere .= '/' . $i;
+ $breadcrumb[] = array('dir' => $pathtohere, 'name' => $i);
+ }
+ }
+ return $breadcrumb;
+ }
}