/**
  * {@inheritdoc}
  */
 public function settingsForm(MediaBundleInterface $bundle)
 {
     $form = array();
     $options = array();
     $allowed_field_types = array('file');
     foreach ($this->entityManager->getFieldDefinitions('media', $bundle->id()) as $field_name => $field) {
         if (in_array($field->getType(), $allowed_field_types) && !$field->getFieldStorageDefinition()->isBaseField()) {
             $options[$field_name] = $field->getLabel();
         }
     }
     $form['source_field'] = array('#type' => 'select', '#title' => t('Field with source information'), '#description' => t('Field on media entity that stores Audio file.'), '#default_value' => empty($this->configuration['source_field']) ? NULL : $this->configuration['source_field'], '#options' => $options);
     return $form;
 }
Beispiel #2
0
 /**
  * Tests the views wizards provided by the media module.
  */
 public function testMediaViewsWizard()
 {
     $data = ['name' => $this->randomMachineName(), 'bundle' => $this->testBundle->id(), 'type' => 'Unknown', 'uid' => $this->adminUser->id(), 'langcode' => \Drupal::languageManager()->getDefaultLanguage()->getId(), 'status' => Media::PUBLISHED];
     $media = Media::create($data);
     $media->save();
     // Test the Media wizard.
     $this->drupalPostForm('admin/structure/views/add', ['label' => 'media view', 'id' => 'media_test', 'show[wizard_key]' => 'media', 'page[create]' => 1, 'page[title]' => 'media_test', 'page[path]' => 'media_test'], t('Save and edit'));
     $this->drupalGet('media_test');
     $this->assertText($data['name']);
     user_role_revoke_permissions('anonymous', ['access content']);
     $this->drupalLogout();
     $this->drupalGet('media_test');
     $this->assertResponse(403);
     $this->drupalLogin($this->adminUser);
     // Test the MediaRevision wizard.
     $this->drupalPostForm('admin/structure/views/add', ['label' => 'media revision view', 'id' => 'media_revision', 'show[wizard_key]' => 'media_revision', 'page[create]' => 1, 'page[title]' => 'media_revision', 'page[path]' => 'media_revision'], t('Save and edit'));
     $this->drupalGet('media_revision');
     // Check only for the label of the changed field as we want to only test
     // if the field is present and not its value.
     $this->assertText($data['name']);
     user_role_revoke_permissions('anonymous', ['view revisions']);
     $this->drupalLogout();
     $this->drupalGet('media_revision');
     $this->assertResponse(403);
 }
Beispiel #3
0
 /**
  * Runs basic tests for media_access function.
  */
 public function testMediaAccess()
 {
     // Create users and roles.
     $admin = $this->drupalCreateUser(['administer media'], 'editor');
     $user = $this->drupalCreateUser([], 'user');
     $permissions = ['view media', 'create media', 'update media', 'update any media', 'delete media', 'delete any media'];
     $roles = [];
     foreach ($permissions as $permission) {
         $roles[$permission] = $this->createRole([$permission]);
     }
     // Create media.
     $media = Media::create(['bundle' => $this->testBundle->id(), 'name' => 'Unnamed']);
     $media->save();
     $user_media = Media::create(['bundle' => $this->testBundle->id(), 'name' => 'Unnamed', 'uid' => $user->id()]);
     $user_media->save();
     // Test 'administer media' permission.
     $this->drupalLogin($admin);
     $this->drupalGet('media/' . $user_media->id());
     $this->assertResponse(200);
     $this->drupalGet('media/' . $user_media->id() . '/edit');
     $this->assertResponse(200);
     $this->drupalGet('media/' . $user_media->id() . '/delete');
     $this->assertResponse(200);
     // Test 'view media' permission.
     $this->drupalLogin($user);
     $this->drupalGet('media/' . $media->id());
     $this->assertResponse(403);
     $user->addRole($roles['view media']);
     $user->save();
     $this->drupalGet('media/' . $media->id());
     $this->assertResponse(200);
     // Test 'create media' permissions.
     $this->drupalLogin($user);
     $this->drupalGet('media/add/' . $this->testBundle->id());
     $this->assertResponse(403);
     $user->addRole($roles['create media']);
     $user->save();
     $this->drupalGet('media/add/' . $this->testBundle->id());
     $this->assertResponse(200);
     // Test 'update media' and 'delete media' permissions.
     $this->drupalGet('media/' . $user_media->id() . '/edit');
     $this->assertResponse(403);
     $this->drupalGet('media/' . $user_media->id() . '/delete');
     $this->assertResponse(403);
     $user->addRole($roles['update media']);
     $user->addRole($roles['delete media']);
     $user->save();
     $this->drupalGet('media/' . $user_media->id() . '/edit');
     $this->assertResponse(200);
     $this->drupalGet('media/' . $user_media->id() . '/delete');
     $this->assertResponse(200);
     // Test 'update any media' and 'delete any media' permissions.
     $this->drupalGet('media/' . $media->id() . '/edit');
     $this->assertResponse(403);
     $this->drupalGet('media/' . $media->id() . '/delete');
     $this->assertResponse(403);
     $user->addRole($roles['update any media']);
     $user->addRole($roles['delete any media']);
     $user->save();
     $this->drupalGet('media/' . $media->id() . '/edit');
     $this->assertResponse(200);
     $this->drupalGet('media/' . $media->id() . '/delete');
     $this->assertResponse(200);
 }
 /**
  * The _title_callback for the media.add route.
  *
  * @param \Drupal\media_entity\MediaBundleInterface $media_bundle
  *   The current media.
  *
  * @return string
  *   The page title.
  */
 public function addPageTitle(MediaBundleInterface $media_bundle)
 {
     return $this->t('Create @name', array('@name' => $media_bundle->label()));
 }
 /**
  * {@inheritdoc}
  */
 public function settingsForm(MediaBundleInterface $bundle)
 {
     $form = array();
     $options = array();
     $allowed_field_types = array('string', 'string_long', 'link');
     foreach ($this->entityManager->getFieldDefinitions('media', $bundle->id()) as $field_name => $field) {
         if (in_array($field->getType(), $allowed_field_types) && !$field->getFieldStorageDefinition()->isBaseField()) {
             $options[$field_name] = $field->getLabel();
         }
     }
     $form['source_field'] = array('#type' => 'select', '#title' => t('Field with source information'), '#description' => t('Field on media entity that stores Instagram embed code or URL. You can create a bundle without selecting a value for this dropdown initially. This dropdown can be populated after adding fields to the bundle.'), '#default_value' => empty($this->configuration['source_field']) ? NULL : $this->configuration['source_field'], '#options' => $options);
     $form['use_instagram_api'] = array('#type' => 'select', '#title' => t('Whether to use Instagram api to fetch instagrams or not.'), '#description' => t("In order to use Instagram's api you have to create a developer account and an application. For more information consult the readme file."), '#default_value' => empty($this->configuration['use_instagram_api']) ? 0 : $this->configuration['use_instagram_api'], '#options' => array(0 => t('No'), 1 => t('Yes')));
     // @todo Evaluate if this should be a site-wide configuration.
     $form['client_id'] = array('#type' => 'textfield', '#title' => t('Client ID'), '#default_value' => empty($this->configuration['client_id']) ? NULL : $this->configuration['client_id'], '#states' => array('visible' => array(':input[name="type_configuration[instagram][use_instagram_api]"]' => array('value' => '1'))));
     return $form;
 }