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

Loading…
Cancel
Save