| 1 |
<?php
|
| 2 |
// $Id: views_handler_field_views_embed_form.inc,v 1.4 2008/11/03 15:36:58 meba Exp $
|
| 3 |
|
| 4 |
class views_handler_field_views_embed_form extends views_handler_field {
|
| 5 |
|
| 6 |
/**
|
| 7 |
* Helper counter for generating unique form ids
|
| 8 |
*
|
| 9 |
* @return int
|
| 10 |
*/
|
| 11 |
static function form_counter() {
|
| 12 |
static $counter = 0;
|
| 13 |
return $counter++;
|
| 14 |
}
|
| 15 |
|
| 16 |
function option_definition() {
|
| 17 |
$options = parent::option_definition();
|
| 18 |
$options['embedded_form'] = array('default' => FALSE);
|
| 19 |
return $options;
|
| 20 |
}
|
| 21 |
|
| 22 |
function options_form(&$form, &$form_state) {
|
| 23 |
parent::options_form($form, $form_state);
|
| 24 |
|
| 25 |
$options = array('--' => '--');
|
| 26 |
$options += views_embed_form_get_forms();
|
| 27 |
$form['embedded_form'] = array(
|
| 28 |
'#title' => t('Embedded form name'),
|
| 29 |
'#type' => 'select',
|
| 30 |
'#description' => t('Select a form you want to embed. These names are provided using an API implemented by various modules. See <a href="@help">module documentation</a> for help with implementing this API.', array('@help' => 'http://drupal.org/node/329511')),
|
| 31 |
'#options' => $options,
|
| 32 |
'#default_value' => $this->options['embedded_form'],
|
| 33 |
'#required' => TRUE,
|
| 34 |
);
|
| 35 |
}
|
| 36 |
function options_validate($form, &$form_state) {
|
| 37 |
if ($form_state['values']['options']['embedded_form'] == '--') {
|
| 38 |
form_set_error('embedded_form', t('Please select embedded form name.'));
|
| 39 |
}
|
| 40 |
}
|
| 41 |
|
| 42 |
|
| 43 |
function render($values) {
|
| 44 |
foreach(module_implements('views_embed_form') as $module) {
|
| 45 |
$function = $module . '_views_embed_form';
|
| 46 |
$form_name = $function();
|
| 47 |
if (isset($form_name) && key($form_name) === $this->options['embedded_form'] && function_exists($this->options['embedded_form'])) {
|
| 48 |
return drupal_get_form($this->options['embedded_form'] . self::form_counter(), $values);
|
| 49 |
}
|
| 50 |
}
|
| 51 |
return t('You do not have permission to access embedded form.');
|
| 52 |
}
|
| 53 |
}
|