Mercurial > defr > drupal > scald > scald_dailymotion
view scald_dailymotion.pages.inc @ 7:f3040f91b65d
Add a manual search / import form
author | Franck Deroche <franck@defr.org> |
---|---|
date | Tue, 20 Jul 2010 11:57:23 +0200 |
parents | |
children |
line wrap: on
line source
<?php // $Id$ /** * @file * Contains form handlers for the DailyMotion search form. */ /** * Generates the search and search results form. */ function scald_dailymotion_search_form($form_state) { $terms = $form_state['storage']['terms']; $form = array(); $form['search'] = array( '#type' => 'fieldset', '#tree' => TRUE, '#attributes' => array('class' => 'container-inline') ); $form['search']['search_term'] = array( '#type' => 'textfield', '#title' => t('Terms'), '#default_value' => $terms ); $form['search']['submit'] = array( '#type' => 'submit', '#value' => t('Search'), '#submit' => array('scald_dailymotion_search_form_search_submit') ); if (!empty($terms)) { $form['results'] = array( '#type' => 'fieldset', '#title' => t('Search results'), '#tree' => TRUE, '#theme' => 'scald_dailymotion_search_results_table' ); $items = scald_dailymotion_feed('search', $terms); if (count($items)) { foreach ($items as $video) { $thumb = str_replace('large', 'small', $video->thumbnail['src']); $form['results'][$video->id] = array( 'checkbox' => array( '#type' => 'checkbox', ), 'title' => array( '#type' => 'item', '#value' => $video->title ), 'thumbnail' => array( '#type' => 'markup', '#value' => theme('image', $thumb, '', '', NULL, FALSE) ) ); } $form['import'] = array( '#type' => 'submit', '#value' => t('Import'), '#submit' => array('scald_dailymotion_search_form_submit') ); } else { $form['results']['empty'] = array( '#type' => 'markup', '#value' => t('No results') ); } } return $form; } /** * Handles search terms form submission. */ function scald_dailymotion_search_form_search_submit($form, &$form_state) { if ($form_state['clicked_button']['#value'] == t('Search')) { $form_state['storage']['terms'] = $form_state['values']['search']['search_term']; } } /** * Handlers import form submission. */ function scald_dailymotion_search_form_submit($form, &$form_state) { $ids = array(); // Find all the elements that have been checked in the results table foreach ($form_state['values']['results'] as $id => $element) { if ($element['checkbox']) { $ids[] = $id; } } // And now create an atom for each of them foreach ($ids as $id) { $sid = scald_dailymotion_register($id); $video = scald_fetch($sid); drupal_set_message(t('Created video %title', array('%title' => $video->title))); } // End the multistep workflow unset($form_state['storage']); $form_state['rebuild'] = FALSE; } /** * Themes the results table. */ function theme_scald_dailymotion_search_results_table($form) { $headers = array(t('Import'), t('Title'), t('Thumbnail')); $rows = array(); foreach (element_children($form) as $key) { // Render our row $row = array(); $row[] = drupal_render($form[$key]['checkbox']); $row[] = drupal_render($form[$key]['title']); $row[] = drupal_render($form[$key]['thumbnail']); // And add it to the list of table rows. $rows[] = $row; } return theme('table', $headers, $rows); }