Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 29 additions & 11 deletions Classes/Backend/InlineControlContainer.php
Original file line number Diff line number Diff line change
Expand Up @@ -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, '</div><div class="help-block">') > 0) {
$selector = str_replace('</div><div class="help-block">', $button . '</div><div class="help-block">', $selector);
// Try to inject it into the form-control container
} elseif (preg_match('/<\/div><\/div>$/i', $selector)) {
$selector = preg_replace('/<\/div><\/div>$/i', $button . '</div></div>', $selector);
} else {
$selector .= $button;
if ($this->displayBynderButton()) {
$button = $this->renderBynderButton($inlineConfiguration);

// Inject button before help-block
if (strpos($selector, '</div><div class="help-block">') > 0) {
$selector = str_replace('</div><div class="help-block">', $button . '</div><div class="help-block">', $selector);
// Try to inject it into the form-control container
} elseif (preg_match('/<\/div><\/div>$/i', $selector)) {
$selector = preg_replace('/<\/div><\/div>$/i', $button . '</div></div>', $selector);
} else {
$selector .= $button;
}
}

return $selector;
Expand Down Expand Up @@ -105,4 +107,20 @@ protected function bynderStorageAvailable(): bool
}
return false;
}
}

/**
* 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'];
}
}
12 changes: 12 additions & 0 deletions Configuration/TCA/Overrides/be_groups.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php
call_user_func(function ($extension, $table) {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
$table,
'file_permissions',
[
'LLL:EXT:' . $extension . '/Resources/Private/Language/locallang_be.xlf:be_groups.file_permissions.folder_add_via_bynder',
'addFileViaBynder',
'permissions-bynder-compact-view'
],
'addFile', 'after');
}, 'bynder', 'be_groups');
12 changes: 12 additions & 0 deletions Configuration/TCA/Overrides/be_users.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php
call_user_func(function ($extension, $table) {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
$table,
'file_permissions',
[
'LLL:EXT:' . $extension . '/Resources/Private/Language/locallang_be.xlf:be_users.file_permissions.folder_add_via_bynder',
'addFileViaBynder',
'permissions-bynder-compact-view'
],
'addFile', 'after');
}, 'bynder', 'be_users');
8 changes: 7 additions & 1 deletion Resources/Private/Language/locallang_be.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@
<trans-unit id="compact_view.error-no-storage-access">
<source>Please make sure you have access to the Bynder file mount. This is needed to use the Bynder file picker</source>
</trans-unit>
<trans-unit id="be_groups.file_permissions.folder_add_via_bynder">
<source>Files: Add via Bynder</source>
</trans-unit>
<trans-unit id="be_users.file_permissions.folder_add_via_bynder">
<source>Files: Add via Bynder</source>
</trans-unit>
</body>
</file>
</xliff>
</xliff>
1 change: 1 addition & 0 deletions Resources/Public/Icons/actions-bynder-compact-view.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions Resources/Public/Icons/permissions-bynder-compact-view.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 6 additions & 1 deletion ext_localconf.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down