function brightcove_playlist_form in Brightcove Video Connect 7.6
Same name and namespace in other branches
- 7.7 brightcove.playlist.inc \brightcove_playlist_form()
Playlist edit form.
_state
Parameters
$form:
Entity $playlist_entity: The playlist entity to edit or create. In case of creation the only property it should have is 'type'.
File
- ./
brightcove.playlist.inc, line 373 - Brightcove playlist related functions.
Code
function brightcove_playlist_form($form, &$form_state, $playlist_entity) {
brightcove_load_lib();
// On AJAX the playlist_entity->playlist might not be properly populated.
if (isset($playlist_entity->playlist) && !$playlist_entity->playlist instanceof \Brightcove\Object\Playlist && !empty($playlist_entity->client) && isset($playlist_entity->playlist_id)) {
$playlist_entity->playlist = brightcove_load_playlist($playlist_entity->playlist_id, $playlist_entity->client->bcid);
}
$form['#entity'] = $playlist_entity;
$form['#entity_type'] = 'brightcove_playlist';
$entity_info = entity_get_info('brightcove_playlist');
$form['#bundle'] = $playlist_entity->{$entity_info['entity keys']['bundle']};
$form['#tree'] = TRUE;
// Adding a playlist.
$playlist = NULL;
if (!empty($playlist_entity->bpid)) {
$playlist = $playlist_entity->playlist;
$form['bcid'] = [
'#type' => 'hidden',
'#value' => $playlist_entity->client->bcid,
];
}
else {
module_load_include('inc', 'brightcove', 'brightcove.client');
$form['bcid'] = brightcove_client_select_element();
}
$wrapper_id = 'bc-playlist-data-wrapper';
$bcid = isset($form['bcid']['#default_value']) ? $form['bcid']['#default_value'] : $form['bcid']['#value'];
switch ($form['bcid']['#type']) {
case 'select':
$form['bcid']['#ajax'] = [
'wrapper' => $wrapper_id,
'callback' => 'brightcove_playlist_client_ajax',
];
if (!empty($form_state['values']['bcid'])) {
$bcid = $form_state['values']['bcid'];
}
else {
if (!empty($form_state['input']['bcid'])) {
$bcid = $form_state['input']['bcid'];
}
}
break;
case 'value':
case 'hidden':
$bcid = $form['bcid']['#value'];
break;
}
$client = brightcove_client_load($bcid);
$playlist_entity->client = $client;
// If we have just changed the client select from '_none' to something, the
// $playlist_entity->playlist is not a Playlist.
if (empty($playlist_entity->playlist) || !$playlist_entity->playlist instanceof \Brightcove\Object\Playlist) {
$playlist_entity->playlist = new \Brightcove\Object\Playlist();
}
$form['playlist_data'] = [
'#type' => 'container',
'#id' => $wrapper_id,
];
if ($bcid != BRIGHTCOVE_BCID_NONE) {
$form['playlist_data']['name'] = [
'#type' => 'textfield',
'#title' => 'Name',
'#default_value' => empty($playlist) ? '' : $playlist
->getName(),
'#required' => TRUE,
'#weight' => -10,
];
$form['playlist_data']['description'] = [
'#type' => 'textarea',
'#title' => 'Short description',
'#default_value' => empty($playlist) ? '' : $playlist
->getDescription(),
'#weight' => -9,
];
$form['playlist_data']['settings'] = [
'#type' => 'container',
'#id' => 'brightcove-playlist-settings',
];
field_attach_form('brightcove_playlist', $playlist_entity, $form['playlist_data'], $form_state);
if ($playlist_entity->type == BRIGHTCOVE_PLAYLIST_TYPE_MANUAL) {
$playlist_entity->playlist
->setType('EXPLICIT');
}
elseif ($playlist_entity->type == BRIGHTCOVE_PLAYLIST_TYPE_SMART) {
$form['playlist_data']['settings']['search'] = [
'#type' => 'textfield',
'#title' => t('Search string'),
'#default_value' => $playlist_entity->playlist
->getSearch(),
'#description' => t('The playlist will contain the videos resulting from the search. Currently only tags are supported. E.g. "+tags:bird". For further information click <a href="https://docs.brightcove.com/en/video-cloud/cms-api/guides/search-videos.html#search">here</a>.'),
];
$form['playlist_data']['settings']['playlistType'] = [
'#type' => 'select',
'#title' => t('Playlist ordering'),
'#options' => [
'ACTIVATED_OLDEST_TO_NEWEST' => t('Oldest to newest (by activation date)'),
'ACTIVATED_NEWEST_TO_OLDEST' => t('Newest to oldest (by activation date)'),
'START_DATE_OLDEST_TO_NEWEST' => t('Oldest to newest'),
'START_DATE_NEWEST_TO_OLDEST' => t('Newest to Oldest'),
'ALPHABETICAL' => t('Alphabetical (by video name)'),
'PLAYS_TOTAL' => t('Total plays'),
'PLAYS_TRAILING_WEEK' => t('Plays trailing week'),
],
'#default_value' => isset($playlist->playlistType) ? $playlist->playlistType : '',
];
}
$form['playlist_data']['actions'] = [
'#type' => 'actions',
];
$form['playlist_data']['actions']['submit'] = [
'#type' => 'submit',
'#value' => t('Save'),
'#submit' => [
'brightcove_playlist_form_submit',
],
];
if (!empty($playlist_entity->bpid)) {
$form['playlist_data']['actions']['delete'] = [
'#type' => 'submit',
'#value' => t('Delete'),
'#submit' => [
'brightcove_playlist_form_delete',
],
];
}
}
return $form;
}