diff --git a/Classes/Backend/InlineControlContainer.php b/Classes/Backend/InlineControlContainer.php index e5b69a5..a3f5a93 100644 --- a/Classes/Backend/InlineControlContainer.php +++ b/Classes/Backend/InlineControlContainer.php @@ -28,16 +28,18 @@ protected function renderPossibleRecordsSelectorTypeGroupDB(array $inlineConfigu { $selector = parent::renderPossibleRecordsSelectorTypeGroupDB($inlineConfiguration); - $button = $this->renderBynderButton($inlineConfiguration); - - // Inject button before help-block - if (strpos($selector, '
') > 0) { - $selector = str_replace('
', $button . '
', $selector); - // Try to inject it into the form-control container - } elseif (preg_match('/<\/div><\/div>$/i', $selector)) { - $selector = preg_replace('/<\/div><\/div>$/i', $button . '
', $selector); - } else { - $selector .= $button; + if ($this->displayBynderButton()) { + $button = $this->renderBynderButton($inlineConfiguration); + + // Inject button before help-block + if (strpos($selector, '
') > 0) { + $selector = str_replace('
', $button . '
', $selector); + // Try to inject it into the form-control container + } elseif (preg_match('/<\/div><\/div>$/i', $selector)) { + $selector = preg_replace('/<\/div><\/div>$/i', $button . '
', $selector); + } else { + $selector .= $button; + } } return $selector; @@ -105,4 +107,20 @@ protected function bynderStorageAvailable(): bool } return false; } -} \ No newline at end of file + + /** + * Check if the BE user has access to the Bynder compact view + * + * Admin has access when there is a resource storage with driver type bynder + * Editors need to have access to a mount of that storage + * + * @return bool + */ + protected function displayBynderButton(): bool + { + $backendUser = $this->getBackendUserAuthentication(); + $filePermissions = $backendUser->getFilePermissions(); + + return $backendUser->isAdmin() || (bool)$filePermissions['addFileViaBynder']; + } +} diff --git a/Configuration/TCA/Overrides/be_groups.php b/Configuration/TCA/Overrides/be_groups.php new file mode 100644 index 0000000..503e99e --- /dev/null +++ b/Configuration/TCA/Overrides/be_groups.php @@ -0,0 +1,12 @@ + Please make sure you have access to the Bynder file mount. This is needed to use the Bynder file picker + + Files: Add via Bynder + + + Files: Add via Bynder + - \ No newline at end of file + diff --git a/Resources/Public/Icons/actions-bynder-compact-view.svg b/Resources/Public/Icons/actions-bynder-compact-view.svg new file mode 100644 index 0000000..bddbcfd --- /dev/null +++ b/Resources/Public/Icons/actions-bynder-compact-view.svg @@ -0,0 +1 @@ + diff --git a/Resources/Public/Icons/permissions-bynder-compact-view.svg b/Resources/Public/Icons/permissions-bynder-compact-view.svg new file mode 100644 index 0000000..1ad3795 --- /dev/null +++ b/Resources/Public/Icons/permissions-bynder-compact-view.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/ext_localconf.php b/ext_localconf.php index 2e5e6c7..258c84f 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -59,7 +59,12 @@ $iconRegistry->registerIcon( 'actions-bynder-compact-view', \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class, - ['source' => 'EXT:bynder/Resources/Public/Icons/Extension.svg'] + ['source' => 'EXT:bynder/Resources/Public/Icons/actions-bynder-compact-view.svg'] +); +$iconRegistry->registerIcon( + 'permissions-bynder-compact-view', + \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class, + ['source' => 'EXT:bynder/Resources/Public/Icons/permissions-bynder-compact-view.svg'] ); unset($iconRegistry);