Loading brightcove.module +5 −1 Original line number Diff line number Diff line Loading @@ -1096,7 +1096,11 @@ function brightcove_player_delete($player) { * @return array */ function _brightcove_load_my_clients($account = NULL) { $clients = entity_load('brightcove_client'); // Load all brightcove_client entities. // We need $reset = TRUE otherwise we get no clients in an AJAX call. $clients = entity_load('brightcove_client', FALSE, [], TRUE); // Keep only the clients $account has access to. $clients = array_filter($clients, function ($client) use ($account) { return brightcove_client_access('use', $client, $account); }); Loading brightcove_field/brightcove_field.browse.inc +1 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ function brightcove_field_browse($type) { ], ]; return '<div class="brightcove-browse-table">' . drupal_render($content['filter_form']) . $content['pager'] . theme('brightcove_field_browse_items', ['items' => $content['items']]) . $content['pager'] . '</div>'; return '<div class="brightcove-browse-table" id="brightcove-browse-table">' . drupal_render($content['filter_form']) . $content['pager'] . theme('brightcove_field_browse_items', ['items' => $content['items']]) . $content['pager'] . '</div>'; } /** Loading brightcove_field/brightcove_field.module +35 −21 Original line number Diff line number Diff line Loading @@ -1112,21 +1112,36 @@ function brightcove_field_theme($existing, $type, $theme, $path) { */ function brightcove_field_filter_form($form, &$form_state) { $clients = _brightcove_load_my_clients(); $number_of_clients = count($clients); if ($number_of_clients > 1) { $client_options = []; foreach ($clients as $client) { $client_options[$client->bcid] = $client->label; } $_SESSION['brightcove_field_filter']['client'] = isset($_SESSION['brightcove_field_filter']['client']) ? $_SESSION['brightcove_field_filter']['client'] : $client->client_id; $_SESSION['brightcove_field_filter']['client'] = isset($_SESSION['brightcove_field_filter']['client']) ? $_SESSION['brightcove_field_filter']['client'] : $client->bcid; $form['client'] = [ '#type' => 'select', '#options' => $client_options, '#default_value' => $_SESSION['brightcove_field_filter']['client'], '#required' => TRUE, '#title' => t('Client'), '#ajax' => [ 'wrapper' => 'browse-dialog', 'wrapper' => 'brightcove-browse-table', 'callback' => 'brightcove_field_client_select_ajax_callback', ], ]; } elseif ($number_of_clients == 1) { $client = reset($clients); $_SESSION['brightcove_field_filter']['client'] = $client->bcid; } else { $form['warning'] = [ '#markup' => t('To browse videos create some bricghtcove clients first.'), ]; return $form; } $form['search'] = [ '#type' => 'fieldset', '#title' => t('Filter videos'), Loading @@ -1152,7 +1167,7 @@ function brightcove_field_filter_form($form, &$form_state) { '#type' => 'radios', '#title' => t('Search in'), '#options' => ['everything' => t('Search in everything'), 'tags' => t('Tags: at least one of these')], '#default_value' => isset($_SESSION['brightcove_field_filter']['search']) ? $_SESSION['brightcove_field_filter']['search'] : 'name', '#default_value' => isset($_SESSION['brightcove_field_filter']['search']) ? $_SESSION['brightcove_field_filter']['search'] : 'everything', '#attributes' => [ 'class' => ['search-radio'], ], Loading @@ -1176,10 +1191,9 @@ function brightcove_field_filter_form($form, &$form_state) { return $form; } function brightcove_field_client_select_ajax_callback($form, $form_state) { $_SESSION['brightcove_field_filter']['client'] = $form_state['values']['client'];; return; function brightcove_field_client_select_ajax_callback($form, &$form_state) { $_SESSION['brightcove_field_filter']['client'] = $form_state['values']['client']; return brightcove_field_browse('video'); } /** Loading @@ -1190,13 +1204,13 @@ function brightcove_field_client_select_ajax_callback($form, $form_state) { * @see brightcove_field_browse(). */ function brightcove_field_filter_form_submit($form, &$form_state) { $keywords = $form_state['values']['keywords']; $search = $form_state['values']['search']; // Reset the form if keywords are empty or reset button was clicked. if ((empty($keywords)) || $form_state['clicked_button']['#name'] == 'reset') { unset($_SESSION['brightcove_field_filter']); unset($_SESSION['brightcove_field_filter']['search']); unset($_SESSION['brightcove_field_filter']['keywords']); return; } Loading brightcove_field/brightcove_field.video.inc +4 −4 Original line number Diff line number Diff line Loading @@ -189,7 +189,8 @@ function _brightcove_field_video_browse() { $page = isset($_GET['page']) ? intval($_GET['page']) : '0'; $params = []; if (isset($_SESSION['brightcove_field_filter'])) { $search = ''; if (isset($_SESSION['brightcove_field_filter']['search'])) { switch ($_SESSION['brightcove_field_filter']['search']) { case 'tags': $params = ['tags' => $_SESSION['brightcove_field_filter']['keywords']]; Loading Loading @@ -222,7 +223,7 @@ function _brightcove_field_video_browse() { // If no cached data is available. if (!$content) { $client = brightcove_client_load($client_id); list($cms, $di) = _brightcove_create_classes($client); list($cms,) = _brightcove_create_classes($client); try { $result = $cms->listVideos($search); Loading Loading @@ -276,7 +277,6 @@ function _brightcove_field_video_browse() { // The filter form should not be cached, // because it wouldn't invoke the submit handler in this case. $content['filter_form'] = drupal_get_form('brightcove_field_filter_form');; $content['filter_form'] = drupal_get_form('brightcove_field_filter_form'); return $content; } Loading
brightcove.module +5 −1 Original line number Diff line number Diff line Loading @@ -1096,7 +1096,11 @@ function brightcove_player_delete($player) { * @return array */ function _brightcove_load_my_clients($account = NULL) { $clients = entity_load('brightcove_client'); // Load all brightcove_client entities. // We need $reset = TRUE otherwise we get no clients in an AJAX call. $clients = entity_load('brightcove_client', FALSE, [], TRUE); // Keep only the clients $account has access to. $clients = array_filter($clients, function ($client) use ($account) { return brightcove_client_access('use', $client, $account); }); Loading
brightcove_field/brightcove_field.browse.inc +1 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ function brightcove_field_browse($type) { ], ]; return '<div class="brightcove-browse-table">' . drupal_render($content['filter_form']) . $content['pager'] . theme('brightcove_field_browse_items', ['items' => $content['items']]) . $content['pager'] . '</div>'; return '<div class="brightcove-browse-table" id="brightcove-browse-table">' . drupal_render($content['filter_form']) . $content['pager'] . theme('brightcove_field_browse_items', ['items' => $content['items']]) . $content['pager'] . '</div>'; } /** Loading
brightcove_field/brightcove_field.module +35 −21 Original line number Diff line number Diff line Loading @@ -1112,21 +1112,36 @@ function brightcove_field_theme($existing, $type, $theme, $path) { */ function brightcove_field_filter_form($form, &$form_state) { $clients = _brightcove_load_my_clients(); $number_of_clients = count($clients); if ($number_of_clients > 1) { $client_options = []; foreach ($clients as $client) { $client_options[$client->bcid] = $client->label; } $_SESSION['brightcove_field_filter']['client'] = isset($_SESSION['brightcove_field_filter']['client']) ? $_SESSION['brightcove_field_filter']['client'] : $client->client_id; $_SESSION['brightcove_field_filter']['client'] = isset($_SESSION['brightcove_field_filter']['client']) ? $_SESSION['brightcove_field_filter']['client'] : $client->bcid; $form['client'] = [ '#type' => 'select', '#options' => $client_options, '#default_value' => $_SESSION['brightcove_field_filter']['client'], '#required' => TRUE, '#title' => t('Client'), '#ajax' => [ 'wrapper' => 'browse-dialog', 'wrapper' => 'brightcove-browse-table', 'callback' => 'brightcove_field_client_select_ajax_callback', ], ]; } elseif ($number_of_clients == 1) { $client = reset($clients); $_SESSION['brightcove_field_filter']['client'] = $client->bcid; } else { $form['warning'] = [ '#markup' => t('To browse videos create some bricghtcove clients first.'), ]; return $form; } $form['search'] = [ '#type' => 'fieldset', '#title' => t('Filter videos'), Loading @@ -1152,7 +1167,7 @@ function brightcove_field_filter_form($form, &$form_state) { '#type' => 'radios', '#title' => t('Search in'), '#options' => ['everything' => t('Search in everything'), 'tags' => t('Tags: at least one of these')], '#default_value' => isset($_SESSION['brightcove_field_filter']['search']) ? $_SESSION['brightcove_field_filter']['search'] : 'name', '#default_value' => isset($_SESSION['brightcove_field_filter']['search']) ? $_SESSION['brightcove_field_filter']['search'] : 'everything', '#attributes' => [ 'class' => ['search-radio'], ], Loading @@ -1176,10 +1191,9 @@ function brightcove_field_filter_form($form, &$form_state) { return $form; } function brightcove_field_client_select_ajax_callback($form, $form_state) { $_SESSION['brightcove_field_filter']['client'] = $form_state['values']['client'];; return; function brightcove_field_client_select_ajax_callback($form, &$form_state) { $_SESSION['brightcove_field_filter']['client'] = $form_state['values']['client']; return brightcove_field_browse('video'); } /** Loading @@ -1190,13 +1204,13 @@ function brightcove_field_client_select_ajax_callback($form, $form_state) { * @see brightcove_field_browse(). */ function brightcove_field_filter_form_submit($form, &$form_state) { $keywords = $form_state['values']['keywords']; $search = $form_state['values']['search']; // Reset the form if keywords are empty or reset button was clicked. if ((empty($keywords)) || $form_state['clicked_button']['#name'] == 'reset') { unset($_SESSION['brightcove_field_filter']); unset($_SESSION['brightcove_field_filter']['search']); unset($_SESSION['brightcove_field_filter']['keywords']); return; } Loading
brightcove_field/brightcove_field.video.inc +4 −4 Original line number Diff line number Diff line Loading @@ -189,7 +189,8 @@ function _brightcove_field_video_browse() { $page = isset($_GET['page']) ? intval($_GET['page']) : '0'; $params = []; if (isset($_SESSION['brightcove_field_filter'])) { $search = ''; if (isset($_SESSION['brightcove_field_filter']['search'])) { switch ($_SESSION['brightcove_field_filter']['search']) { case 'tags': $params = ['tags' => $_SESSION['brightcove_field_filter']['keywords']]; Loading Loading @@ -222,7 +223,7 @@ function _brightcove_field_video_browse() { // If no cached data is available. if (!$content) { $client = brightcove_client_load($client_id); list($cms, $di) = _brightcove_create_classes($client); list($cms,) = _brightcove_create_classes($client); try { $result = $cms->listVideos($search); Loading Loading @@ -276,7 +277,6 @@ function _brightcove_field_video_browse() { // The filter form should not be cached, // because it wouldn't invoke the submit handler in this case. $content['filter_form'] = drupal_get_form('brightcove_field_filter_form');; $content['filter_form'] = drupal_get_form('brightcove_field_filter_form'); return $content; }