Browse Source

Merge branch 'issue-1291' of https://github.com/roblib/islandora into issue-1291

pull/730/head
dannylamb 6 years ago
parent
commit
abf7bc14a7
  1. 22
      src/Controller/ManageMediaController.php
  2. 17
      src/Controller/ManageMembersController.php

22
src/Controller/ManageMediaController.php

@ -22,7 +22,11 @@ class ManageMediaController extends ManageMembersController {
* Array of media types to add.
*/
public function addToNodePage(NodeInterface $node) {
return $this->generateTypeList(
// The role fedoraAdmin is currently hardcoded and
// must be in the user's profile for successful writes to Fedora.
$roles = $this->currentUser->getRoles();
$checked_fields = ['file', 'image'];
$list = $this->generateTypeList(
'media',
'media_type',
'entity.media.add_form',
@ -30,6 +34,22 @@ class ManageMediaController extends ManageMembersController {
$node,
'field_media_of'
);
if (!in_array('fedoraadmin', $roles)) {
$bundles = $list['#bundles'];
foreach ($bundles as $label => $bundle) {
$fields = $this->entityFieldManager->getFieldDefinitions('media', $label);
foreach ($fields as $field) {
$file_type = $field->getType();
if (in_array($file_type, $checked_fields)) {
$scheme = $field->getSetting('uri_scheme');
if ($scheme == 'fedora') {
unset($list['#bundles'][$label]);
}
}
}
}
}
return $list;
}
/**

17
src/Controller/ManageMembersController.php

@ -7,6 +7,7 @@ use Drupal\Core\Render\RendererInterface;
use Drupal\Core\Entity\Controller\EntityController;
use Drupal\Core\Entity\EntityFieldManager;
use Drupal\Core\Link;
use Drupal\Core\Session\AccountProxyInterface;
use Drupal\node\NodeInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
@ -35,6 +36,12 @@ class ManageMembersController extends EntityController {
* @var \Drupal\Core\Render\RendererInterface
*/
protected $renderer;
/**
* The current user.
*
* @var \Drupal\Core\Session\AccountProxyInterface
*/
protected $currentUser;
/**
* Constructor.
@ -45,15 +52,20 @@ class ManageMembersController extends EntityController {
* The entity field manager.
* @param \Drupal\Core\Render\RendererInterface $renderer
* The renderer.
* @param \Drupal\Core\Session\AccountProxyInterface $currentUser
* The current user.
*/
public function __construct(
EntityTypeManagerInterface $entity_type_manager,
EntityFieldManager $entity_field_manager,
RendererInterface $renderer
RendererInterface $renderer,
AccountProxyInterface $currentUser
) {
$this->entityTypeManager = $entity_type_manager;
$this->entityFieldManager = $entity_field_manager;
$this->renderer = $renderer;
$this->currentUser = $currentUser;
}
/**
@ -63,7 +75,8 @@ class ManageMembersController extends EntityController {
return new static(
$container->get('entity_type.manager'),
$container->get('entity_field.manager'),
$container->get('renderer')
$container->get('renderer'),
$container->get('current_user')
);
}

Loading…
Cancel
Save