Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/files/lib/Collaboration/Resources/ResourceProvider.php12
-rw-r--r--apps/files_sharing/src/components/CollectionListItem.vue2
-rw-r--r--core/Controller/CollaborationResourcesController.php5
-rw-r--r--lib/private/Collaboration/Resources/Manager.php16
-rw-r--r--lib/private/Collaboration/Resources/Resource.php15
-rw-r--r--lib/public/Collaboration/Resources/IProvider.php9
-rw-r--r--lib/public/Collaboration/Resources/IResource.php6
7 files changed, 62 insertions, 3 deletions
diff --git a/apps/files/lib/Collaboration/Resources/ResourceProvider.php b/apps/files/lib/Collaboration/Resources/ResourceProvider.php
index 6d9b1b59784..62dcbe19c1d 100644
--- a/apps/files/lib/Collaboration/Resources/ResourceProvider.php
+++ b/apps/files/lib/Collaboration/Resources/ResourceProvider.php
@@ -25,6 +25,7 @@ namespace OCA\Files\Collaboration\Resources;
use OCP\Collaboration\Resources\IProvider;
use OCP\Collaboration\Resources\IResource;
use OCP\Files\IRootFolder;
+use OCP\Files\Node;
use OCP\IUser;
class ResourceProvider implements IProvider {
@@ -80,4 +81,15 @@ class ResourceProvider implements IProvider {
return false;
}
+
+ /**
+ * Get the icon class of a resource
+ *
+ * @param IResource $resource
+ * @return string
+ * @since 15.0.0
+ */
+ public function getIconClass(IResource $resource): string {
+ return 'icon-folder';
+ }
}
diff --git a/apps/files_sharing/src/components/CollectionListItem.vue b/apps/files_sharing/src/components/CollectionListItem.vue
index aebab670ac2..f22d5238d6c 100644
--- a/apps/files_sharing/src/components/CollectionListItem.vue
+++ b/apps/files_sharing/src/components/CollectionListItem.vue
@@ -92,7 +92,7 @@
]
},
getIcon() {
- return (resource) => [window.OCP.Collaboration.getIcon(resource.type)]
+ return (resource) => [window.OCP.Collaboration.getIcon(resource.type), resource.iconClass]
},
getLink() {
return (resource) => window.OCP.Collaboration.getLink(resource.type, resource.id)
diff --git a/core/Controller/CollaborationResourcesController.php b/core/Controller/CollaborationResourcesController.php
index a5a40145fb7..565e0ba4739 100644
--- a/core/Controller/CollaborationResourcesController.php
+++ b/core/Controller/CollaborationResourcesController.php
@@ -197,15 +197,16 @@ class CollaborationResourcesController extends OCSController {
];
}
- protected function prepareResources(IResource $resource): array {
+ protected function prepareResources(IResource $resource): ?array {
if (!$resource->canAccess($this->userSession->getUser())) {
- return [];
+ return null;
}
return [
'type' => $resource->getType(),
'id' => $resource->getId(),
'name' => $resource->getName(),
+ 'iconClass' => $resource->getIconClass()
];
}
}
diff --git a/lib/private/Collaboration/Resources/Manager.php b/lib/private/Collaboration/Resources/Manager.php
index 82a14f47d9e..cc09089c711 100644
--- a/lib/private/Collaboration/Resources/Manager.php
+++ b/lib/private/Collaboration/Resources/Manager.php
@@ -120,6 +120,22 @@ class Manager implements IManager {
}
/**
+ *
+ * @param IResource $resource
+ * @return string
+ */
+ public function getIconClass(IResource $resource): string {
+ foreach ($this->getProviders() as $provider) {
+ try {
+ return $provider->getIconClass($resource);
+ } catch (ResourceException $e) {
+ }
+ }
+
+ return '';
+ }
+
+ /**
* Can a user/guest access the collection
*
* @param IResource $resource
diff --git a/lib/private/Collaboration/Resources/Resource.php b/lib/private/Collaboration/Resources/Resource.php
index 3013f1f5c48..2f491663a88 100644
--- a/lib/private/Collaboration/Resources/Resource.php
+++ b/lib/private/Collaboration/Resources/Resource.php
@@ -47,6 +47,9 @@ class Resource implements IResource {
/** @var string|null */
protected $name;
+ /** @var string|null */
+ protected $iconClass;
+
public function __construct(
IManager $manager,
IDBConnection $connection,
@@ -88,6 +91,18 @@ class Resource implements IResource {
}
/**
+ * @return string
+ * @since 15.0.0
+ */
+ public function getIconClass(): string {
+ if ($this->iconClass === null) {
+ $this->iconClass = $this->manager->getIconClass($this);
+ }
+
+ return $this->iconClass;
+ }
+
+ /**
* Can a user/guest access the resource
*
* @param IUser $user
diff --git a/lib/public/Collaboration/Resources/IProvider.php b/lib/public/Collaboration/Resources/IProvider.php
index bf338113005..c5f6f7ed560 100644
--- a/lib/public/Collaboration/Resources/IProvider.php
+++ b/lib/public/Collaboration/Resources/IProvider.php
@@ -36,6 +36,15 @@ interface IProvider {
public function getName(IResource $resource): string;
/**
+ * Get the icon class of a resource
+ *
+ * @param IResource $resource
+ * @return string
+ * @since 15.0.0
+ */
+ public function getIconClass(IResource $resource): string;
+
+ /**
* Can a user/guest access the collection
*
* @param IResource $resource
diff --git a/lib/public/Collaboration/Resources/IResource.php b/lib/public/Collaboration/Resources/IResource.php
index 242ad9432d0..9a4b2b30d10 100644
--- a/lib/public/Collaboration/Resources/IResource.php
+++ b/lib/public/Collaboration/Resources/IResource.php
@@ -48,6 +48,12 @@ interface IResource {
public function getName(): string;
/**
+ * @return string
+ * @since 15.0.0
+ */
+ public function getIconClass(): string;
+
+ /**
* Can a user/guest access the resource
*
* @param IUser $user