franck@7: 'fieldset', franck@7: '#tree' => TRUE, franck@7: '#attributes' => array('class' => 'container-inline') franck@7: ); franck@7: $form['search']['search_term'] = array( franck@7: '#type' => 'textfield', franck@7: '#title' => t('Terms'), franck@7: '#default_value' => $terms franck@7: ); franck@7: $form['search']['submit'] = array( franck@7: '#type' => 'submit', franck@7: '#value' => t('Search'), franck@7: '#submit' => array('scald_dailymotion_search_form_search_submit') franck@7: ); franck@7: if (!empty($terms)) { franck@7: $form['results'] = array( franck@7: '#type' => 'fieldset', franck@7: '#title' => t('Search results'), franck@7: '#tree' => TRUE, franck@7: '#theme' => 'scald_dailymotion_search_results_table' franck@7: ); franck@7: $items = scald_dailymotion_feed('search', $terms); franck@7: if (count($items)) { franck@7: foreach ($items as $video) { franck@7: $thumb = str_replace('large', 'small', $video->thumbnail['src']); franck@7: $form['results'][$video->id] = array( franck@7: 'checkbox' => array( franck@7: '#type' => 'checkbox', franck@7: ), franck@7: 'title' => array( franck@7: '#type' => 'item', franck@7: '#value' => $video->title franck@7: ), franck@7: 'thumbnail' => array( franck@7: '#type' => 'markup', franck@7: '#value' => theme('image', $thumb, '', '', NULL, FALSE) franck@7: ) franck@7: ); franck@7: } franck@7: $form['import'] = array( franck@7: '#type' => 'submit', franck@7: '#value' => t('Import'), franck@7: '#submit' => array('scald_dailymotion_search_form_submit') franck@7: ); franck@7: } franck@7: else { franck@7: $form['results']['empty'] = array( franck@7: '#type' => 'markup', franck@7: '#value' => t('No results') franck@7: ); franck@7: } franck@7: } franck@7: return $form; franck@7: } franck@7: franck@7: /** franck@7: * Handles search terms form submission. franck@7: */ franck@7: function scald_dailymotion_search_form_search_submit($form, &$form_state) { franck@7: if ($form_state['clicked_button']['#value'] == t('Search')) { franck@7: $form_state['storage']['terms'] = $form_state['values']['search']['search_term']; franck@7: } franck@7: } franck@7: franck@7: /** franck@7: * Handlers import form submission. franck@7: */ franck@7: function scald_dailymotion_search_form_submit($form, &$form_state) { franck@7: $ids = array(); franck@7: // Find all the elements that have been checked in the results table franck@7: foreach ($form_state['values']['results'] as $id => $element) { franck@7: if ($element['checkbox']) { franck@7: $ids[] = $id; franck@7: } franck@7: } franck@7: // And now create an atom for each of them franck@7: foreach ($ids as $id) { franck@7: $sid = scald_dailymotion_register($id); franck@7: $video = scald_fetch($sid); franck@7: drupal_set_message(t('Created video %title', array('%title' => $video->title))); franck@7: } franck@7: // End the multistep workflow franck@7: unset($form_state['storage']); franck@7: $form_state['rebuild'] = FALSE; franck@7: } franck@7: franck@7: /** franck@7: * Themes the results table. franck@7: */ franck@7: function theme_scald_dailymotion_search_results_table($form) { franck@7: $headers = array(t('Import'), t('Title'), t('Thumbnail')); franck@7: $rows = array(); franck@7: foreach (element_children($form) as $key) { franck@7: // Render our row franck@7: $row = array(); franck@7: $row[] = drupal_render($form[$key]['checkbox']); franck@7: $row[] = drupal_render($form[$key]['title']); franck@7: $row[] = drupal_render($form[$key]['thumbnail']); franck@7: // And add it to the list of table rows. franck@7: $rows[] = $row; franck@7: } franck@7: return theme('table', $headers, $rows); franck@7: }