danielebarchiesi@0: $plugin, danielebarchiesi@0: 'instance' => $instance, danielebarchiesi@0: ); danielebarchiesi@0: drupal_add_js(array('wysiwyg' => $settings), 'setting'); danielebarchiesi@0: danielebarchiesi@0: $build = $callback($instance); danielebarchiesi@0: if (!is_array($build)) { danielebarchiesi@0: $build = array('#markup' => $build); danielebarchiesi@0: } danielebarchiesi@0: $build += array( danielebarchiesi@0: '#instance' => $instance, danielebarchiesi@0: '#plugin' => $plugin, danielebarchiesi@0: ); danielebarchiesi@0: return $build; danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * @see drupal_deliver_html_page() danielebarchiesi@0: */ danielebarchiesi@0: function wysiwyg_deliver_dialog_page($page_callback_result) { danielebarchiesi@0: // Menu status constants are integers; page content is a string or array. danielebarchiesi@0: if (is_int($page_callback_result)) { danielebarchiesi@0: return drupal_deliver_html_page($page_callback_result); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: // Emit the correct charset HTTP header, but not if the page callback danielebarchiesi@0: // result is NULL, since that likely indicates that it printed something danielebarchiesi@0: // in which case, no further headers may be sent, and not if code running danielebarchiesi@0: // for this page request has already set the content type header. danielebarchiesi@0: if (isset($page_callback_result) && is_null(drupal_get_http_header('Content-Type'))) { danielebarchiesi@0: drupal_add_http_header('Content-Type', 'text/html; charset=utf-8'); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: // Send appropriate HTTP-Header for browsers and search engines. danielebarchiesi@0: global $language; danielebarchiesi@0: drupal_add_http_header('Content-Language', $language->language); danielebarchiesi@0: danielebarchiesi@0: if (isset($page_callback_result)) { danielebarchiesi@0: // Print anything besides a menu constant, assuming it's not NULL or danielebarchiesi@0: // undefined. danielebarchiesi@0: print wysiwyg_render_dialog_page($page_callback_result); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: // Perform end-of-request tasks. danielebarchiesi@0: drupal_page_footer(); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * @see drupal_render_page() danielebarchiesi@0: */ danielebarchiesi@0: function wysiwyg_render_dialog_page($page) { danielebarchiesi@0: $main_content_display = &drupal_static('system_main_content_added', FALSE); danielebarchiesi@0: danielebarchiesi@0: // Allow menu callbacks to return strings or arbitrary arrays to render. danielebarchiesi@0: // If the array returned is not of #type page directly, we need to fill danielebarchiesi@0: // in the page with defaults. danielebarchiesi@0: if (is_string($page) || (is_array($page) && (!isset($page['#type']) || ($page['#type'] != 'page')))) { danielebarchiesi@0: drupal_set_page_content($page); danielebarchiesi@0: $page = element_info('wysiwyg_dialog_page'); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: // Modules alter the $page as needed. Blocks are populated into regions like danielebarchiesi@0: // 'sidebar_first', 'footer', etc. danielebarchiesi@0: drupal_alter(array('wysiwyg_dialog_page', 'page'), $page); danielebarchiesi@0: danielebarchiesi@0: // If no module has taken care of the main content, add it to the page now. danielebarchiesi@0: // This allows the site to still be usable even if no modules that danielebarchiesi@0: // control page regions (for example, the Block module) are enabled. danielebarchiesi@0: if (!$main_content_display) { danielebarchiesi@0: $page['content']['system_main'] = drupal_set_page_content(); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: return drupal_render($page); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Template preprocess function for theme_wysiwyg_dialog_page(). danielebarchiesi@0: * danielebarchiesi@0: * @see wysiwyg_dialog() danielebarchiesi@0: * @see wysiwyg-dialog-page.tpl.php danielebarchiesi@0: * @see template_preprocess_page() danielebarchiesi@0: */ danielebarchiesi@0: function template_preprocess_wysiwyg_dialog_page(&$variables) { danielebarchiesi@0: template_preprocess_page($variables); danielebarchiesi@0: } danielebarchiesi@0: danielebarchiesi@0: danielebarchiesi@0: /** danielebarchiesi@0: * Template process function for theme_wysiwyg_dialog_page(). danielebarchiesi@0: * danielebarchiesi@0: * @see wysiwyg_dialog() danielebarchiesi@0: * @see wysiwyg-dialog-page.tpl.php danielebarchiesi@0: * @see template_process_page() danielebarchiesi@0: */ danielebarchiesi@0: function template_process_wysiwyg_dialog_page(&$variables) { danielebarchiesi@0: template_process_page($variables); danielebarchiesi@0: } danielebarchiesi@0: