You are here

public function SoundManagerAudioPlayer::renderPlayer in AudioField 8

Renders the player.

Parameters

\Drupal\Core\Field\FieldItemListInterface $items: The uploaded item list.

string $langcode: The language code.

array $settings: An array of additional render settings.

Return value

array Returns the rendered array.

Overrides AudioFieldPluginBase::renderPlayer

File

src/Plugin/AudioPlayer/SoundManagerAudioPlayer.php, line 28

Class

SoundManagerAudioPlayer
Implements the SoundManager Audio Player plugin.

Namespace

Drupal\audiofield\Plugin\AudioPlayer

Code

public function renderPlayer(FieldItemListInterface $items, $langcode, array $settings) {

  // Check to make sure we're installed.
  if (!$this
    ->checkInstalled()) {

    // Show the error.
    $this
      ->showInstallError();

    // Simply return the default rendering so the files are still displayed.
    return $this
      ->renderDefaultPlayer($items, $settings);
  }

  // Create arrays to pass to the twig template.
  $template_settings = $settings;
  $template_settings['count'] = count($items);

  // Start building settings to pass to the javascript SoundManager builder.
  $player_settings = [
    // SoundManager expects this as a 0 - 100 range.
    'volume' => $settings['audio_player_initial_volume'] * 10,
    'swfpath' => $this
      ->getPluginLibraryPath() . '/swf/',
  ];
  return [
    'audioplayer' => [
      '#theme' => 'audioplayer',
      '#plugin_id' => 'soundmanager',
      '#plugin_theme' => $settings['audio_player_soundmanager_theme'],
      '#settings' => $template_settings,
      '#files' => $this
        ->getItemRenderList($items),
    ],
    'downloads' => $this
      ->createDownloadList($items, $settings),
    '#attached' => [
      'library' => [
        // Attach the SoundManager library.
        'audiofield/audiofield.' . $this
          ->getPluginLibraryName(),
        // Attach the skin library.
        'audiofield/audiofield.' . $this
          ->getPluginLibraryName() . '.' . $settings['audio_player_soundmanager_theme'],
      ],
      'drupalSettings' => [
        'audiofieldsoundmanager' => [
          $this
            ->getUniqueRenderId() => $player_settings,
        ],
      ],
    ],
  ];
}