type)) { $form['formblock'] = array( '#type' => 'fieldset', '#title' => t('Form block'), '#group' => 'additional_settings', '#attributes' => array( 'class' => array('formblock-node-type-settings-form'), ), '#attached' => array( 'js' => array(drupal_get_path('module', 'formblock') . '/formblock.js'), ), ); $form['formblock']['formblock_expose'] = array( '#type' => 'checkbox', '#title' => t('Enable data entry from a block'), '#default_value' => variable_get('formblock_expose_' . $form['#node_type']->type, 0), '#description' => t('Enable this option to make the entry form for this content type available as a block.'), ); $form['formblock']['formblock_show_help'] = array( '#type' => 'checkbox', '#title' => t('Show submission guidelines'), '#default_value' => variable_get('formblock_show_help_' . $form['#node_type']->type, 0), '#description' => t('Enable this option to show the submission guidelines in the block above the form.'), '#states' => array( 'visible' => array( ':input[name="formblock_expose"]' => array('checked' => TRUE), ), ), ); } elseif (strpos($form_id, '_node_form') !== FALSE) { // Make sure we have necessary includes. if (empty($form_state['build_info']['files']) || !in_array('modules/node/node.pages.inc', $form_state['build_info']['files'])) { form_load_include($form_state, 'inc', 'node', 'node.pages'); } } } /** * Implements hook_block_info(). */ function formblock_block_info() { $blocks = array(); foreach (node_type_get_names() as $type => $name) { if (variable_get('formblock_expose_' . $type, 0)) { $blocks[$type] = array( 'info' => t('@name form block', array('@name' => $name)), 'cache' => DRUPAL_NO_CACHE, ); } } $blocks['user_register'] = array( 'info' => t('User registration form'), 'cache' => DRUPAL_NO_CACHE, ); if (module_exists('contact')) { $blocks['contact_site'] = array( 'info' => t('Site-wide contact form'), 'cache' => DRUPAL_NO_CACHE, ); } $blocks['user_password_request'] = array( 'info' => t('Request new password form'), 'cache' => DRUPAL_NO_CACHE, ); return $blocks; } /** * Implements hook_block_view(). */ function formblock_block_view($delta = '') { $block = array(); $block['content']['#attached']['css'][] = drupal_get_path('module', 'formblock') . '/formblock.css'; switch ($delta) { case 'user_register': global $user; // Don't display the form to logged in users or if registration is disabled if (!$user->uid && variable_get('user_register', 1)) { $block['content']['form'] = drupal_get_form('user_register_form'); $block['subject'] = t('Create new account'); return $block; } break; case 'user_password_request': module_load_include('inc', 'user', 'user.pages'); $block['subject'] = t('Request new password'); $block['content']['form'] = drupal_get_form('user_pass'); return $block; case 'contact_site': if (user_access('access site-wide contact form') && module_exists('contact')) { if (!flood_is_allowed('contact', variable_get('contact_hourly_threshold', 3))) { $content = t("You cannot send more than %number messages per hour. Please try again later.", array('%number' => variable_get('contact_hourly_threshold', 3))); } else { module_load_include('inc', 'contact', 'contact.pages'); $content = drupal_get_form('contact_site_form'); } $block['subject'] = t('Contact'); $block['content']['form'] = $content; return $block; } break; default: return formblock_get_block($delta); } } /** * Generate a block containing a node entry form. */ function formblock_get_block($type) { if (node_access('create', $type) && variable_get('formblock_expose_' . $type, 0)) { $block = array(); // Include page handler for node_add() module_load_include('inc', 'node', 'node.pages'); // Note title before rendering of form. $title = drupal_get_title(); $form = node_add($type); // Restore title, which will have been overridden. drupal_set_title($title, PASS_THROUGH); // Get the help $node_type = node_type_load($type); if (variable_get('formblock_show_help_' . $type, 0)) { $block['content']['help'] = array('#markup' => !empty($node_type->help) ? '

' . filter_xss_admin($node_type->help) . '

' : ''); } // Add our CSS $block['content']['#attached']['css'][] = drupal_get_path('module', 'formblock') . '/formblock.css'; $block['subject'] = t('@type form', array('@type' => $node_type->name)); $block['content']['form'] = $form; return $block; } }