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 } |