public function getBlock($block_id, $template = true, $cfg = null) { global $ctype, $PEDIGREE_FULL_DETAILS, $show_full, $bwidth, $bheight; $PEDIGREE_ROOT_ID = get_gedcom_setting(WT_GED_ID, 'PEDIGREE_ROOT_ID'); $details = get_block_setting($block_id, 'details', false); $type = get_block_setting($block_id, 'type', 'pedigree'); $pid = get_block_setting($block_id, 'pid', WT_USER_ID ? WT_USER_GEDCOM_ID ? WT_USER_GEDCOM_ID : $PEDIGREE_ROOT_ID : $PEDIGREE_ROOT_ID); $block = get_block_setting($block_id, 'block'); if ($cfg) { foreach (array('details', 'type', 'pid', 'block') as $name) { if (array_key_exists($name, $cfg)) { ${$name} = $cfg[$name]; } } } // Override GEDCOM configuration temporarily if (isset($show_full)) { $saveShowFull = $show_full; } $savePedigreeFullDetails = $PEDIGREE_FULL_DETAILS; if (!$details) { $show_full = 0; // Here we could adjust the block width & height to accommodate larger displays } else { $show_full = 1; // Here we could adjust the block width & height to accommodate larger displays } $PEDIGREE_FULL_DETAILS = $show_full; $person = WT_Individual::getInstance($pid); if (!$person) { $pid = $PEDIGREE_ROOT_ID; set_block_setting($block_id, 'pid', $pid); $person = WT_Individual::getInstance($pid); } if ($type != 'treenav' && $person) { $controller = new WT_Controller_Hourglass($person->getXref(), 0); $controller->setupJavascript(); } $id = $this->getName() . $block_id; $class = $this->getName() . '_block'; if ($ctype == 'gedcom' && WT_USER_GEDCOM_ADMIN || $ctype == 'user' && WT_USER_ID) { $title = '<i class="icon-admin" title="' . WT_I18N::translate('Configure') . '" onclick="modalDialog(\'block_edit.php?block_id=' . $block_id . '\', \'' . $this->getTitle() . '\');"></i>'; } else { $title = ''; } if ($person) { switch ($type) { case 'pedigree': $title .= WT_I18N::translate('Pedigree of %s', $person->getFullName()); break; case 'descendants': $title .= WT_I18N::translate('Descendants of %s', $person->getFullName()); break; case 'hourglass': $title .= WT_I18N::translate('Hourglass chart of %s', $person->getFullName()); break; case 'treenav': $title .= WT_I18N::translate('Interactive tree of %s', $person->getFullName()); break; } $title .= help_link('index_charts', $this->getName()); $content = '<table cellspacing="0" cellpadding="0" border="0"><tr>'; if ($type == 'descendants' || $type == 'hourglass') { $content .= "<td valign=\"middle\">"; ob_start(); $controller->print_descendency($person, 1, false); $content .= ob_get_clean(); $content .= "</td>"; } if ($type == 'pedigree' || $type == 'hourglass') { //-- print out the root person if ($type != 'hourglass') { $content .= "<td valign=\"middle\">"; ob_start(); print_pedigree_person($person); $content .= ob_get_clean(); $content .= "</td>"; } $content .= "<td valign=\"middle\">"; ob_start(); $controller->print_person_pedigree($person, 1); $content .= ob_get_clean(); $content .= "</td>"; } if ($type == 'treenav') { require_once WT_MODULES_DIR . 'tree/module.php'; require_once WT_MODULES_DIR . 'tree/class_treeview.php'; $mod = new tree_WT_Module(); $tv = new TreeView(); $content .= '<td>'; $content .= '<script>jQuery("head").append(\'<link rel="stylesheet" href="' . $mod->css() . '" type="text/css" />\');</script>'; $content .= '<script src="' . $mod->js() . '"></script>'; list($html, $js) = $tv->drawViewport($person, 2); $content .= $html . '<script>' . $js . '</script>'; $content .= '</td>'; } $content .= "</tr></table>"; } else { $content = WT_I18N::translate('You must select an individual and chart type in the block configuration settings.'); } if ($template) { if ($block) { require WT_THEME_DIR . 'templates/block_small_temp.php'; } else { require WT_THEME_DIR . 'templates/block_main_temp.php'; } } else { return $content; } // Restore GEDCOM configuration unset($show_full); if (isset($saveShowFull)) { $show_full = $saveShowFull; } $PEDIGREE_FULL_DETAILS = $savePedigreeFullDetails; }
public function modAction($mod_action) { require_once WT_MODULES_DIR . $this->getName() . '/class_treeview.php'; switch ($mod_action) { case 'treeview': global $controller; $controller = new WT_Controller_Chart(); $tv = new TreeView('tv'); ob_start(); $person = $controller->getSignificantIndividual(); list($html, $js) = $tv->drawViewport($person, 4); $controller->setPageTitle(WT_I18N::translate('Interactive tree of %s', $person->getFullName()))->pageHeader()->addExternalJavascript($this->js())->addInlineJavascript($js)->addInlineJavascript(' if (document.createStyleSheet) { document.createStyleSheet("' . $this->css() . '"); // For Internet Explorer } else { jQuery("head").append(\'<link rel="stylesheet" type="text/css" href="' . $this->css() . '">\'); } '); echo $html; break; case 'getDetails': //$controller = new WT_Controller_Ajax(); //$controller->pageHeader(); Zend_Session::writeClose(); header('Content-Type: text/html; charset=UTF-8'); $pid = WT_Filter::get('pid', WT_REGEX_XREF); $i = WT_Filter::get('instance'); $tv = new TreeView($i); $individual = WT_Individual::getInstance($pid); if ($individual) { echo $tv->getDetails($individual); } break; case 'getPersons': //$controller = new WT_Controller_Ajax(); //$controller->pageHeader(); Zend_Session::writeClose(); header('Content-Type: text/html; charset=UTF-8'); $q = WT_Filter::get('q'); $i = WT_Filter::get('instance'); $tv = new TreeView($i); echo $tv->getPersons($q); break; default: header('HTTP/1.0 404 Not Found'); break; } }