From 31340b8be944fbf86237c10bff87b5ca3a2ffa8a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Julius=20H=C3=A4rtl?= <jus@bitgrid.net>
Date: Thu, 31 Jan 2019 11:22:46 +0100
Subject: [PATCH] Add icon for resource type and icons for folder/file
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Julius Härtl <jus@bitgrid.net>
---
 .../Collaboration/Resources/ResourceProvider.php    | 13 ++++++++++++-
 apps/files_sharing/src/files_sharing.js             |  3 ++-
 core/css/icons.scss                                 |  4 ++++
 core/src/OCP/collaboration.js                       |  2 +-
 4 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/apps/files/lib/Collaboration/Resources/ResourceProvider.php b/apps/files/lib/Collaboration/Resources/ResourceProvider.php
index 155dcbd7b14..1a6089b4856 100644
--- a/apps/files/lib/Collaboration/Resources/ResourceProvider.php
+++ b/apps/files/lib/Collaboration/Resources/ResourceProvider.php
@@ -48,6 +48,13 @@ class ResourceProvider implements IProvider {
 		$this->urlGenerator = $urlGenerator;
 	}
 
+	private function getNode(IResource $resource): ?Node {
+		if (isset($this->nodes[(int) $resource->getId()])) {
+			return $this->nodes[(int) $resource->getId()];
+		}
+		return null;
+	}
+
 	/**
 	 * Get the display name of a resource
 	 *
@@ -94,7 +101,11 @@ class ResourceProvider implements IProvider {
 	 * @since 15.0.0
 	 */
 	public function getIconClass(IResource $resource): string {
-		return 'icon-folder';
+		$node = $this->getNode($resource);
+		if ($node && $node->getMimetype() === 'httpd/unix-directory') {
+			return 'icon-files-dark';
+		}
+		return 'icon-filetype-file';
 	}
 
 	/**
diff --git a/apps/files_sharing/src/files_sharing.js b/apps/files_sharing/src/files_sharing.js
index 4e90afaf943..54bf71d8a19 100644
--- a/apps/files_sharing/src/files_sharing.js
+++ b/apps/files_sharing/src/files_sharing.js
@@ -22,7 +22,8 @@ window.OCP.Collaboration.registerType('files', {
 		});
 	},
 	/** used in "Link to a {typeString}" */
-	typeString: t('files_sharing', 'file')
+	typeString: t('files_sharing', 'file'),
+	typeIconClass: 'icon-files-dark'
 });
 
 window.OCA.Sharing = OCA.Sharing;
diff --git a/core/css/icons.scss b/core/css/icons.scss
index 9a950017091..d1d3d91094f 100644
--- a/core/css/icons.scss
+++ b/core/css/icons.scss
@@ -384,6 +384,10 @@ img, object, video, button, textarea, input, select, div[contenteditable='true']
 	@include icon-color('text', 'filetypes', $color-black, 1, true);
 }
 
+.icon-filetype-file {
+	@include icon-color('file', 'filetypes', $color-black, 1, true);
+}
+
 @include icon-black-white('folder', 'filetypes', 1, true);
 .icon-filetype-folder {
 	@include icon-color('folder', 'filetypes', $color-black, 1, true);
diff --git a/core/src/OCP/collaboration.js b/core/src/OCP/collaboration.js
index 54b580406ed..96a20bffc9c 100644
--- a/core/src/OCP/collaboration.js
+++ b/core/src/OCP/collaboration.js
@@ -49,7 +49,7 @@ export default {
 		return Object.keys(types);
 	},
 	getIcon(type) {
-		return types[type].icon || '';
+		return types[type].typeIconClass || '';
 	},
 	getLabel(type) {
 		return t('files_sharing', 'Link to a {label}', { label: types[type].typeString || type }, 1)
-- 
GitLab