annotate scald_dailymotion.admin.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 fd5fb845d0bc
children
rev   line source
franck@4 1 <?php
franck@4 2 // $Id$
franck@4 3 /**
franck@4 4 * @file
franck@4 5 * Provides admin form for DailyMotion's Scald Provider.
franck@4 6 */
franck@4 7
franck@4 8 /**
franck@4 9 * Defines the import settings form.
franck@4 10 */
franck@4 11 function scald_dailymotion_imports_form() {
franck@4 12 $form = array();
franck@4 13 $imports = variable_get('scald_dailymotion_imports', array());
franck@4 14 $types = array('user' => t('User'), 'tag' => t('Tag'));
franck@4 15 if (count($imports)) {
franck@4 16 $form['imports'] = array(
franck@4 17 '#type' => 'fieldset',
franck@4 18 '#title' => t('Current imports'),
franck@4 19 '#tree' => TRUE,
franck@4 20 '#theme' => 'scald_dailymotion_imports_table'
franck@4 21 );
franck@4 22 foreach ($imports as $key => $import) {
franck@4 23 $form['imports'][$key] = array(
franck@4 24 'type' => array(
franck@4 25 '#type' => 'select',
franck@4 26 '#title' => t('Type'),
franck@4 27 '#options' => array('delete' => t('<Delete>')) + $types,
franck@4 28 '#default_value' => $import['type']
franck@4 29 ),
franck@4 30 'value' => array(
franck@4 31 '#type' => 'textfield',
franck@4 32 '#title' => t('Identifier'),
franck@4 33 '#default_value' => $import['value']
franck@4 34 ),
franck@4 35 );
franck@4 36 }
franck@4 37 }
franck@4 38 $form['add'] = array(
franck@4 39 '#type' => 'fieldset',
franck@4 40 '#title' => t('Add import'),
franck@4 41 '#collapsible' => TRUE,
franck@4 42 '#collapsed' => count($imports)
franck@4 43 );
franck@4 44 $form['add']['type'] = array(
franck@4 45 '#type' => 'select',
franck@4 46 '#title' => t('Type'),
franck@4 47 '#options' => $types,
franck@4 48 );
franck@4 49 $form['add']['value'] = array(
franck@4 50 '#type' => 'textfield',
franck@4 51 '#title' => t('Identifier'),
franck@4 52 '#description' => t('This field value meaning depends on the Type
franck@4 53 field defined above. For a <em>User</em> import, put the username
franck@4 54 whose videos you\'d loke to import here, for a tag import, use the
franck@4 55 tag name.')
franck@4 56 );
franck@4 57 $form['add']['submit'] = array(
franck@4 58 '#type' => 'submit',
franck@4 59 '#value' => t('Add this import'),
franck@4 60 '#submit' => array('scald_dailymotion_imports_form_add')
franck@4 61 );
franck@4 62
franck@4 63 $form['submit'] = array(
franck@4 64 '#type' => 'submit',
franck@4 65 '#value' => t('Save configuration')
franck@4 66 );
franck@4 67 return $form;
franck@4 68 }
franck@4 69
franck@4 70 /**
franck@4 71 * Handles the submission of the form that adds a new import.
franck@4 72 */
franck@4 73 function scald_dailymotion_imports_form_add($form, &$form_state) {
franck@4 74 $imports = variable_get('scald_dailymotion_imports', array());
franck@4 75 $values = $form_state['values'];
franck@4 76 $key = $values['type'] . '-' . $values['value'];
franck@4 77 $imports[$key] = array('type' => $values['type'], 'value' => $values['value']);
franck@4 78 variable_set('scald_dailymotion_imports', $imports);
franck@4 79 drupal_set_message(t('Import added'));
franck@4 80 }
franck@4 81
franck@4 82 /**
franck@4 83 * Handles the submission of the whole form.
franck@4 84 */
franck@4 85 function scald_dailymotion_imports_form_submit($form, &$form_state) {
franck@4 86 drupal_set_message(t('The configuration options have been saved.'));
franck@4 87 $imports = array();
franck@4 88 foreach ($form_state['values']['imports'] as $key => $import) {
franck@4 89 if ($import['type'] != 'delete') {
franck@4 90 $imports[$key] = $import;
franck@4 91 }
franck@4 92 }
franck@4 93 variable_set('scald_dailymotion_imports', $imports);
franck@4 94 }
franck@4 95
franck@4 96 /**
franck@4 97 * Themes the current imports form.
franck@4 98 */
franck@4 99 function theme_scald_dailymotion_imports_table($form) {
franck@4 100 $headers = array(t('Type'), t('Identifier'));
franck@4 101 $rows = array();
franck@4 102 foreach (element_children($form) as $key) {
franck@4 103 // Unset per widget titles, they're already in the column title
franck@4 104 $form[$key]['type']['#title'] = $form[$key]['value']['#title'] = '';
franck@4 105 // Render our row
franck@4 106 $row = array();
franck@4 107 $row[] = drupal_render($form[$key]['type']);
franck@4 108 $row[] = drupal_render($form[$key]['value']);
franck@4 109 // And add it to the list of table rows.
franck@4 110 $rows[] = $row;
franck@4 111 }
franck@4 112 return theme('table', $headers, $rows);
franck@4 113 }