### Eclipse Workspace Patch 1.0
#P embed_widgets
Index: embed_widgets_iframe/embed_widgets_iframe.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/embed_widgets/embed_widgets_iframe/Attic/embed_widgets_iframe.module,v
retrieving revision 1.1.2.9
diff -u -r1.1.2.9 embed_widgets_iframe.module
--- embed_widgets_iframe/embed_widgets_iframe.module	18 Jun 2008 23:15:52 -0000	1.1.2.9
+++ embed_widgets_iframe/embed_widgets_iframe.module	25 Jun 2008 16:18:38 -0000
@@ -34,9 +34,92 @@
  */
 function embed_widgets_iframe_menu() {
   $items = array();
+  $items['embed-widgets/%embed_widgets/tabs'] = array(
+      'title' => $embed_widget['title'],
+      'description' => 'The embedded content.',
+      'page callback' => 'embed_widgets_iframe_tabs',
+      'page arguments' => array(1),
+      'access callback' => 'user_access', 
+      'access arguments' => array('view code for embedding iframe widgets'),
+      'type' => MENU_CALLBACK,
+    );
   return $items;
 }
 
+function embed_widgets_iframe_tabs($embed_widget) {
+  global $theme_key;
+  
+  $form = array();
+
+  $form['widget'] = array(
+    '#type' => 'tabset',
+  	'#theme' => 'embed_widgets_iframe_tabset',
+  );
+  $form['widget']['#header'] = _embed_widgets_iframe_var_generator();
+  $form['widget']['#header']['title'] = $embed_widget['title'];
+  
+  foreach ($embed_widget['sources'] as $sid => $source) {
+    $tab = array();
+    if ($source['type'] == 'block') {   // Display a block
+      $module = $source['module'];
+      $delta = $source['delta'];
+
+      if (!isset($theme_key)) {
+        init_theme();
+      }
+      $region = db_result(db_query("SELECT region FROM {blocks} WHERE module = '%s' AND delta = '%s' AND theme = '%s'", $module, $delta, $theme_key));
+      $blocks = block_list($region);
+
+      if (isset($blocks[$module .'_'. $delta])) {
+        $block = $blocks[$module .'_'. $delta];
+        $tab['title'] = empty($block->title) ? $block->subject : $block->title;
+        $tab['content'] = $block->content;
+      }
+      else {
+        $tab['content'] =  t('Invalid block.');
+      }
+    }
+    else if ($source['type'] == 'page') {    // Display a page
+      // Adapted from print.module.
+      $path = drupal_get_normal_path($source['path']);
+    
+      menu_set_active_item($path);
+      $node = new stdClass();
+      $node->body = menu_execute_active_handler($path);
+      $node->title = menu_get_active_title();
+      $node->path = $path;
+    
+      // It may happen that a drupal_not_found is called in the above call
+      if (preg_match('/404 Not Found/', drupal_get_headers()) == 1) {
+        return;
+      }
+      
+      // Delete any links area
+      $node->body = preg_replace("/\s*<div class=\"links\">.*?<\/div>/sim", "", $node->body);
+
+      $tab = _embed_widgets_iframe_page_var_generator($node);
+    
+      switch ($node->body) {
+        case MENU_NOT_FOUND:
+          $tab['title'] = t('Error 404');
+          $tab['content'] = t('The requested page could not be found.');
+          break;
+        case MENU_ACCESS_DENIED:
+          $tab['title'] = t('Access Denied');
+          $tab['content'] = t('You are not authorized to access this content.');
+          break;
+      }
+    }
+    $tab['footer'] = $embed_widget['footer'];
+    $form['widget']['tab' . $sid] = array(
+      '#type' => 'tabpage',
+      '#title' => $tab['title'],
+      '#content' => theme('embed_widgets_iframe_tabpage', $tab),
+    );
+  }
+  print tabs_render($form);
+}
+
 /**
  * Implementation of hook_theme().
  * Register theming functions.
@@ -51,9 +134,18 @@
       'template' => 'embed_widgets_iframe_page',
       'arguments' => array('embed_widget' => NULL, 'page' => NULL),
     ),
+    'embed_widgets_iframe_tabpage' => array(
+      'template' => 'embed_widgets_iframe_tabpage',
+      'arguments' => array('tab' => NULL),
+    ),
+    'embed_widgets_iframe_tabset' => array(
+      'template' => 'embed_widgets_iframe_tabset',
+      'arguments' => array('element' => NULL),
+    ),
   );
 }
 
+
 /**
  * Menu callback; provides a widget to be embedded as an iframe.
  *
@@ -128,8 +220,9 @@
 
 }
 
+
 /**
- * Process variables for theme_embed_widgets_iframe_block()
+ * Process variables for embed_widgets_iframe_block.tpl.php
  *
  * The $variables array contains the following:
  * - $title
@@ -150,7 +243,34 @@
 }
 
 /**
- * Process variables for embed_widgets_page.tpl.php
+ * Process variables for embed_widgets_iframe_tabpage.tpl.php
+ *
+ * The $variables array contains the following:
+ * - $tab
+ * 
+ */
+function template_preprocess_embed_widgets_iframe_tabpage(&$variables) {
+  $variables['tab']['title'] = filter_xss_admin($variables['tab']['title']);
+  $variables['tab']['footer'] = filter_xss_admin($variables['tab']['footer']);
+  if (!$variables['tab']['content']) {
+    $variables['tab']['content'] = t('There is no content to display at this time.');
+  }
+}
+
+/**
+ * Process variables for embed_widgets_iframe_tabset.tpl.php
+ *
+ * The $variables array contains the following:
+ * - $element
+ * 
+ */
+function template_preprocess_embed_widgets_iframe_tabset(&$variables) {
+  $variables['element']['#header']['title'] = filter_xss_admin($variables['element']['#header']['title']);
+}
+
+
+/**
+ * Process variables for embed_widgets_iframe_page.tpl.php
  *
  * The $variables array contains the following:
  * - $title
@@ -246,7 +366,7 @@
 /**
  * Fills the array for the template with common details
  *
- * @param $node
+ * @param $block
  *   generated node with a widget-friendly node body
  * @return
  *   array with the fields to be used in the template
@@ -280,6 +400,28 @@
   return $block_vars;
 }
 
+/**
+ * Fills the array for the template with common details
+ *
+ * @param $node
+ *   generated node with a widget-friendly node body
+ * @return
+ *   array with the fields to be used in the template
+ */
+function _embed_widgets_iframe_var_generator() {
+  global $base_url, $language;
+
+  // Adapted from print.module
+
+  $vars['language'] = $language->language;
+  //$vars['title'] = empty($block->title) ? $block->subject : $block->title;
+  $vars['head'] = drupal_get_html_head();
+  $vars['scripts'] = drupal_get_js();
+  //$page["robots_meta"] = _print_robots_meta_generator();
+  $vars['css'] = drupal_get_css();
+
+  return $vars;
+}
 
 /**
  * Menu callback; preview an embedded widget.
Index: embed_widgets_iframe/embed_widgets_iframe_tabpage.tpl.php
===================================================================
RCS file: embed_widgets_iframe/embed_widgets_iframe_tabpage.tpl.php
diff -N embed_widgets_iframe/embed_widgets_iframe_tabpage.tpl.php
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ embed_widgets_iframe/embed_widgets_iframe_tabpage.tpl.php	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,24 @@
+<?php if ($tab["breadcrumb"]) { ?>
+  <div class="widget-breadcrumb"><?php  print $tab["breadcrumb"] ?></div>
+  <hr />
+<?php } ?>
+
+<?php if ($tab["submitted"]) { ?>
+  <div class="widget-submitted"><?php print $tab["submitted"] ?></div>
+<?php } ?>
+
+<?php if ($tab["created"]) { ?>
+  <div class="widget-created"><?php print $tab["created"] ?></div>
+<?php } ?>
+
+<?php print $tab["content"] ?>
+
+<?php if ($tab["taxonomy"]) { ?>
+  <div class="widget-taxonomy"><?php print $tab["taxonomy"] ?></div>
+<?php } ?>
+
+<hr />
+
+<?php if ($tab["footer"]) { ?>
+  <div class="widget-footer"><?php  print $tab['footer'] ?></div>
+<?php } ?>
Index: embed_widgets_iframe/embed_widgets_iframe_tabset.tpl.php
===================================================================
RCS file: embed_widgets_iframe/embed_widgets_iframe_tabset.tpl.php
diff -N embed_widgets_iframe/embed_widgets_iframe_tabset.tpl.php
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ embed_widgets_iframe/embed_widgets_iframe_tabset.tpl.php	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="<?php  print $page["language"] ?>" xml:lang="<?php  print $page["language"] ?>">
+<head>
+  <title><?php  print $element['#header']['title'] ?></title>
+  <?php print $element['#header']['head'] ?>
+  <?php print $element['#header']['scripts'] ?>
+  <?php //print $element['#header']['robots_meta'] ?>
+  <?php print $element['#header']['css'] ?>
+</head>
+<body>
+  <h1><?php print $element['#header']['title'] ?></h1>
+  <div id="tabs-<?php print $element['#tabset_name'] ?>" <?php print drupal_attributes($element['#attributes']) ?>>
+  <ul>
+  <?php
+    foreach (element_children($element) as $key) { 
+      if ($element[$key]['#type'] && $element[$key]['#type'] == 'tabpage') { ?>
+        <li <?php print drupal_attributes($element[$key]['#attributes']) ?>><a href="#tabs-<?php print $element['#tabset_name'] ?>-<?php print $element[$key]['#index'] ?>"><?php print $element[$key]['#title'] ?></a></li>
+  <?php
+      }
+    }
+  ?>
+  </ul>
+  <?php print $element['#children']; ?>
+  </div>
+
+</body>
+</html>
