18c2e8227SGreg Roach<?php 20e62c4b8SGreg Roachnamespace Fisharebest\Webtrees\Module; 38c2e8227SGreg Roach 48c2e8227SGreg Roach/** 58c2e8227SGreg Roach * webtrees: online genealogy 68c2e8227SGreg Roach * Copyright (C) 2015 webtrees development team 78c2e8227SGreg Roach * This program is free software: you can redistribute it and/or modify 88c2e8227SGreg Roach * it under the terms of the GNU General Public License as published by 98c2e8227SGreg Roach * the Free Software Foundation, either version 3 of the License, or 108c2e8227SGreg Roach * (at your option) any later version. 118c2e8227SGreg Roach * This program is distributed in the hope that it will be useful, 128c2e8227SGreg Roach * but WITHOUT ANY WARRANTY; without even the implied warranty of 138c2e8227SGreg Roach * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 148c2e8227SGreg Roach * GNU General Public License for more details. 158c2e8227SGreg Roach * You should have received a copy of the GNU General Public License 168c2e8227SGreg Roach * along with this program. If not, see <http://www.gnu.org/licenses/>. 178c2e8227SGreg Roach */ 180e62c4b8SGreg Roachuse Fisharebest\Webtrees\Auth; 190e62c4b8SGreg Roachuse Fisharebest\Webtrees\Date; 200e62c4b8SGreg Roachuse Fisharebest\Webtrees\Family; 21*3d7a8a4cSGreg Roachuse Fisharebest\Webtrees\Functions\Functions; 220e62c4b8SGreg Roachuse Fisharebest\Webtrees\GedcomTag; 230e62c4b8SGreg Roachuse Fisharebest\Webtrees\I18N; 240e62c4b8SGreg Roachuse Fisharebest\Webtrees\Individual; 250e62c4b8SGreg Roachuse Fisharebest\Webtrees\Theme; 268c2e8227SGreg Roach 278c2e8227SGreg Roach/** 288c2e8227SGreg Roach * Class RelativesTabModule 298c2e8227SGreg Roach */ 30e2a378d3SGreg Roachclass RelativesTabModule extends AbstractModule implements ModuleTabInterface { 318c2e8227SGreg Roach /** {@inheritdoc} */ 328c2e8227SGreg Roach public function getTitle() { 338c2e8227SGreg Roach return /* I18N: Name of a module */ I18N::translate('Families'); 348c2e8227SGreg Roach } 358c2e8227SGreg Roach 368c2e8227SGreg Roach /** {@inheritdoc} */ 378c2e8227SGreg Roach public function getDescription() { 388c2e8227SGreg Roach return /* I18N: Description of the “Families” module */ I18N::translate('A tab showing the close relatives of an individual.'); 398c2e8227SGreg Roach } 408c2e8227SGreg Roach 418c2e8227SGreg Roach /** {@inheritdoc} */ 428c2e8227SGreg Roach public function defaultTabOrder() { 438c2e8227SGreg Roach return 20; 448c2e8227SGreg Roach } 458c2e8227SGreg Roach 468c2e8227SGreg Roach /** 478c2e8227SGreg Roach * @param Date $prev 488c2e8227SGreg Roach * @param Date $next 49cbc1590aSGreg Roach * @param int $child_number 508c2e8227SGreg Roach * 518c2e8227SGreg Roach * @return string 528c2e8227SGreg Roach */ 53ffd703eaSGreg Roach private static function ageDifference(Date $prev, Date $next, $child_number = 0) { 548c2e8227SGreg Roach if ($prev->isOK() && $next->isOK()) { 558c2e8227SGreg Roach $days = $next->maximumJulianDay() - $prev->minimumJulianDay(); 568c2e8227SGreg Roach if ($days < 0) { 578c2e8227SGreg Roach // Show warning triangle if dates in reverse order 588c2e8227SGreg Roach $diff = '<i class="icon-warning"></i> '; 598c2e8227SGreg Roach } elseif ($child_number > 1 && $days > 1 && $days < 240) { 608c2e8227SGreg Roach // Show warning triangle if children born too close together 618c2e8227SGreg Roach $diff = '<i class="icon-warning"></i> '; 628c2e8227SGreg Roach } else { 638c2e8227SGreg Roach $diff = ''; 648c2e8227SGreg Roach } 658c2e8227SGreg Roach 668c2e8227SGreg Roach $months = round($days * 12 / 365.25); // Approximate - we do not know the calendar 678c2e8227SGreg Roach if (abs($months) == 12 || abs($months) >= 24) { 68def7396fSGreg Roach $diff .= I18N::plural('%s year', '%s years', round($months / 12), I18N::number(round($months / 12))); 698c2e8227SGreg Roach } elseif ($months != 0) { 70def7396fSGreg Roach $diff .= I18N::plural('%s month', '%s months', $months, I18N::number($months)); 718c2e8227SGreg Roach } 728c2e8227SGreg Roach 738c2e8227SGreg Roach return '<div class="elderdate age">' . $diff . '</div>'; 748c2e8227SGreg Roach } else { 758c2e8227SGreg Roach return ''; 768c2e8227SGreg Roach } 778c2e8227SGreg Roach } 788c2e8227SGreg Roach 798c2e8227SGreg Roach /** 808c2e8227SGreg Roach * @param Family $family 818c2e8227SGreg Roach * @param string $type 828c2e8227SGreg Roach * @param string $label 838c2e8227SGreg Roach */ 84ffd703eaSGreg Roach private function printFamily(Family $family, $type, $label) { 858c2e8227SGreg Roach global $controller; 868c2e8227SGreg Roach 874b9ff166SGreg Roach if ($family->getTree()->getPreference('SHOW_PRIVATE_RELATIONSHIPS')) { 884b9ff166SGreg Roach $access_level = Auth::PRIV_HIDE; 898c2e8227SGreg Roach } else { 904b9ff166SGreg Roach $access_level = Auth::accessLevel($family->getTree()); 918c2e8227SGreg Roach } 928c2e8227SGreg Roach 938c2e8227SGreg Roach ?> 948c2e8227SGreg Roach <table> 958c2e8227SGreg Roach <tr> 968c2e8227SGreg Roach <td> 978c2e8227SGreg Roach <i class="icon-cfamily"></i> 988c2e8227SGreg Roach </td> 998c2e8227SGreg Roach <td> 1008c2e8227SGreg Roach <span class="subheaders"> <?php echo $label; ?> </span> - 1018c2e8227SGreg Roach <a href="<?php echo $family->getHtmlUrl(); ?>"><?php echo I18N::translate('View family'); ?></a> 1028c2e8227SGreg Roach </td> 1038c2e8227SGreg Roach </tr> 1048c2e8227SGreg Roach </table> 1058c2e8227SGreg Roach <table class="facts_table"> 1068c2e8227SGreg Roach <?php 1078c2e8227SGreg Roach 1088c2e8227SGreg Roach ///// HUSB ///// 1098c2e8227SGreg Roach $found = false; 1108c2e8227SGreg Roach foreach ($family->getFacts('HUSB', false, $access_level) as $fact) { 1118c2e8227SGreg Roach $found |= !$fact->isPendingDeletion(); 1128c2e8227SGreg Roach $person = $fact->getTarget(); 1138c2e8227SGreg Roach if ($person instanceof Individual) { 1148c2e8227SGreg Roach if ($fact->isPendingAddition()) { 1158c2e8227SGreg Roach $class = 'facts_label new'; 1168c2e8227SGreg Roach } elseif ($fact->isPendingDeletion()) { 1178c2e8227SGreg Roach $class = 'facts_label old'; 1188c2e8227SGreg Roach } else { 1198c2e8227SGreg Roach $class = 'facts_label'; 1208c2e8227SGreg Roach } 1218c2e8227SGreg Roach ?> 1228c2e8227SGreg Roach <tr> 1238c2e8227SGreg Roach <td class="<?php echo $class; ?>"> 124*3d7a8a4cSGreg Roach <?php echo Functions::getCloseRelationshipName($controller->record, $person); ?> 1258c2e8227SGreg Roach </td> 1268c2e8227SGreg Roach <td class="<?php echo $controller->getPersonStyle($person); ?>"> 1278c2e8227SGreg Roach <?php echo Theme::theme()->individualBoxLarge($person); ?> 1288c2e8227SGreg Roach </td> 1298c2e8227SGreg Roach </tr> 1308c2e8227SGreg Roach <?php 1318c2e8227SGreg Roach } 1328c2e8227SGreg Roach } 1338c2e8227SGreg Roach if (!$found && $family->canEdit()) { 1348c2e8227SGreg Roach ?> 1358c2e8227SGreg Roach <tr> 1368c2e8227SGreg Roach <td class="facts_label"></td> 1378c2e8227SGreg Roach <td class="facts_value"><a href="#" onclick="return add_spouse_to_family('<?php echo $family->getXref(); ?>', 'HUSB');"><?php echo I18N::translate('Add a husband to this family'); ?></a></td> 1388c2e8227SGreg Roach </tr> 1398c2e8227SGreg Roach <?php 1408c2e8227SGreg Roach } 1418c2e8227SGreg Roach 1428c2e8227SGreg Roach ///// WIFE ///// 1438c2e8227SGreg Roach $found = false; 1448c2e8227SGreg Roach foreach ($family->getFacts('WIFE', false, $access_level) as $fact) { 1458c2e8227SGreg Roach $person = $fact->getTarget(); 1468c2e8227SGreg Roach if ($person instanceof Individual) { 1478c2e8227SGreg Roach $found |= !$fact->isPendingDeletion(); 1488c2e8227SGreg Roach if ($fact->isPendingAddition()) { 1498c2e8227SGreg Roach $class = 'facts_label new'; 1508c2e8227SGreg Roach } elseif ($fact->isPendingDeletion()) { 1518c2e8227SGreg Roach $class = 'facts_label old'; 1528c2e8227SGreg Roach } else { 1538c2e8227SGreg Roach $class = 'facts_label'; 1548c2e8227SGreg Roach } 1558c2e8227SGreg Roach ?> 1568c2e8227SGreg Roach <tr> 1578c2e8227SGreg Roach <td class="<?php echo $class; ?>"> 158*3d7a8a4cSGreg Roach <?php echo Functions::getCloseRelationshipName($controller->record, $person); ?> 1598c2e8227SGreg Roach </td> 1608c2e8227SGreg Roach <td class="<?php echo $controller->getPersonStyle($person); ?>"> 1618c2e8227SGreg Roach <?php echo Theme::theme()->individualBoxLarge($person); ?> 1628c2e8227SGreg Roach </td> 1638c2e8227SGreg Roach </tr> 1648c2e8227SGreg Roach <?php 1658c2e8227SGreg Roach } 1668c2e8227SGreg Roach } 1678c2e8227SGreg Roach if (!$found && $family->canEdit()) { 1688c2e8227SGreg Roach ?> 1698c2e8227SGreg Roach <tr> 1708c2e8227SGreg Roach <td class="facts_label"></td> 1718c2e8227SGreg Roach <td class="facts_value"><a href="#" onclick="return add_spouse_to_family('<?php echo $family->getXref(); ?>', 'WIFE');"><?php echo I18N::translate('Add a wife to this family'); ?></a></td> 1728c2e8227SGreg Roach </tr> 1738c2e8227SGreg Roach <?php 1748c2e8227SGreg Roach } 1758c2e8227SGreg Roach 1768c2e8227SGreg Roach ///// MARR ///// 1778c2e8227SGreg Roach $found = false; 1788c2e8227SGreg Roach $prev = new Date(''); 1798c2e8227SGreg Roach foreach ($family->getFacts(WT_EVENTS_MARR) as $fact) { 1808c2e8227SGreg Roach $found |= !$fact->isPendingDeletion(); 1818c2e8227SGreg Roach if ($fact->isPendingAddition()) { 1828c2e8227SGreg Roach $class = ' new'; 1838c2e8227SGreg Roach } elseif ($fact->isPendingDeletion()) { 1848c2e8227SGreg Roach $class = ' old'; 1858c2e8227SGreg Roach } else { 1868c2e8227SGreg Roach $class = ''; 1878c2e8227SGreg Roach } 1888c2e8227SGreg Roach ?> 1898c2e8227SGreg Roach <tr> 1908c2e8227SGreg Roach <td class="facts_label"> 1918c2e8227SGreg Roach 1928c2e8227SGreg Roach </td> 1938c2e8227SGreg Roach <td class="facts_value<?php echo $class; ?>"> 194764a01d9SGreg Roach <?php echo GedcomTag::getLabelValue($fact->getTag(), $fact->getDate()->display() . ' — ' . $fact->getPlace()->getFullName()); ?> 1958c2e8227SGreg Roach </td> 1968c2e8227SGreg Roach </tr> 1978c2e8227SGreg Roach <?php 1988c2e8227SGreg Roach if (!$prev->isOK() && $fact->getDate()->isOK()) { 1998c2e8227SGreg Roach $prev = $fact->getDate(); 2008c2e8227SGreg Roach } 2018c2e8227SGreg Roach } 2028c2e8227SGreg Roach if (!$found && $family->canShow() && $family->canEdit()) { 2038c2e8227SGreg Roach // Add a new marriage 2048c2e8227SGreg Roach ?> 2058c2e8227SGreg Roach <tr> 2068c2e8227SGreg Roach <td class="facts_label"> 2078c2e8227SGreg Roach 2088c2e8227SGreg Roach </td> 2098c2e8227SGreg Roach <td class="facts_value"> 2108c2e8227SGreg Roach <a href="#" onclick="return add_new_record('<?php echo $family->getXref(); ?>', 'MARR');"> 2118c2e8227SGreg Roach <?php echo I18N::translate('Add marriage details'); ?> 2128c2e8227SGreg Roach </a> 2138c2e8227SGreg Roach </td> 2148c2e8227SGreg Roach </tr> 2158c2e8227SGreg Roach <?php 2168c2e8227SGreg Roach } 2178c2e8227SGreg Roach 2188c2e8227SGreg Roach ///// CHIL ///// 2198c2e8227SGreg Roach $child_number = 0; 2208c2e8227SGreg Roach foreach ($family->getFacts('CHIL', false, $access_level) as $fact) { 2218c2e8227SGreg Roach $person = $fact->getTarget(); 2228c2e8227SGreg Roach if ($person instanceof Individual) { 2238c2e8227SGreg Roach if ($fact->isPendingAddition()) { 2248c2e8227SGreg Roach $child_number++; 2258c2e8227SGreg Roach $class = 'facts_label new'; 2268c2e8227SGreg Roach } elseif ($fact->isPendingDeletion()) { 2278c2e8227SGreg Roach $class = 'facts_label old'; 2288c2e8227SGreg Roach } else { 2298c2e8227SGreg Roach $child_number++; 2308c2e8227SGreg Roach $class = 'facts_label'; 2318c2e8227SGreg Roach } 2328c2e8227SGreg Roach $next = new Date(''); 2338c2e8227SGreg Roach foreach ($person->getFacts(WT_EVENTS_BIRT) as $bfact) { 2348c2e8227SGreg Roach if ($bfact->getDate()->isOK()) { 2358c2e8227SGreg Roach $next = $bfact->getDate(); 2368c2e8227SGreg Roach break; 2378c2e8227SGreg Roach } 2388c2e8227SGreg Roach } 2398c2e8227SGreg Roach ?> 2408c2e8227SGreg Roach <tr> 2418c2e8227SGreg Roach <td class="<?php echo $class; ?>"> 2428c2e8227SGreg Roach <?php echo self::ageDifference($prev, $next, $child_number); ?> 243*3d7a8a4cSGreg Roach <?php echo Functions::getCloseRelationshipName($controller->record, $person); ?> 2448c2e8227SGreg Roach </td> 2458c2e8227SGreg Roach <td class="<?php echo $controller->getPersonStyle($person); ?>"> 2468c2e8227SGreg Roach <?php echo Theme::theme()->individualBoxLarge($person); ?> 2478c2e8227SGreg Roach </td> 2488c2e8227SGreg Roach </tr> 2498c2e8227SGreg Roach <?php 2508c2e8227SGreg Roach $prev = $next; 2518c2e8227SGreg Roach } 2528c2e8227SGreg Roach } 2538c2e8227SGreg Roach // Re-order children / add a new child 2548c2e8227SGreg Roach if ($family->canEdit()) { 2558c2e8227SGreg Roach if ($type == 'FAMS') { 2568c2e8227SGreg Roach $add_child_text = I18N::translate('Add a new son or daughter'); 2578c2e8227SGreg Roach } else { 2588c2e8227SGreg Roach $add_child_text = I18N::translate('Add a new brother or sister'); 2598c2e8227SGreg Roach } 2608c2e8227SGreg Roach ?> 2618c2e8227SGreg Roach <tr> 2628c2e8227SGreg Roach <td class="facts_label"> 2638c2e8227SGreg Roach <?php if (count($family->getChildren()) > 1) { ?> 2648c2e8227SGreg Roach <a href="#" onclick="reorder_children('<?php echo $family->getXref(); ?>');tabswitch(5);"><i class="icon-media-shuffle"></i> <?php echo I18N::translate('Re-order children'); ?></a> 2658c2e8227SGreg Roach <?php } ?> 2668c2e8227SGreg Roach </td> 2678c2e8227SGreg Roach <td class="facts_value"> 2688c2e8227SGreg Roach <a href="#" onclick="return add_child_to_family('<?php echo $family->getXref(); ?>');"><?php echo $add_child_text; ?></a> 2698c2e8227SGreg Roach <span style='white-space:nowrap;'> 2708c2e8227SGreg Roach <a href="#" class="icon-sex_m_15x15" onclick="return add_child_to_family('<?php echo $family->getXref(); ?>','M');"></a> 2718c2e8227SGreg Roach <a href="#" class="icon-sex_f_15x15" onclick="return add_child_to_family('<?php echo $family->getXref(); ?>','F');"></a> 2728c2e8227SGreg Roach </span> 2738c2e8227SGreg Roach </td> 2748c2e8227SGreg Roach </tr> 2758c2e8227SGreg Roach <?php 2768c2e8227SGreg Roach } 2778c2e8227SGreg Roach 2788c2e8227SGreg Roach echo '</table>'; 2798c2e8227SGreg Roach 2808c2e8227SGreg Roach return; 2818c2e8227SGreg Roach } 2828c2e8227SGreg Roach 2838c2e8227SGreg Roach /** {@inheritdoc} */ 2848c2e8227SGreg Roach public function getTabContent() { 2858c2e8227SGreg Roach global $WT_TREE, $show_full, $controller; 2868c2e8227SGreg Roach 2878c2e8227SGreg Roach if (isset($show_full)) { 2888c2e8227SGreg Roach $saved_show_full = $show_full; 2898c2e8227SGreg Roach } 2908c2e8227SGreg Roach // We always want to see full details here 2918c2e8227SGreg Roach $show_full = 1; 2928c2e8227SGreg Roach 2938c2e8227SGreg Roach ob_start(); 2948c2e8227SGreg Roach ?> 2958c2e8227SGreg Roach <table class="facts_table"><tr><td class="descriptionbox rela"> 2968c2e8227SGreg Roach <input id="checkbox_elder" type="checkbox" onclick="jQuery('div.elderdate').toggle();" <?php echo $WT_TREE->getPreference('SHOW_AGE_DIFF') ? 'checked' : ''; ?>> 2978c2e8227SGreg Roach <label for="checkbox_elder"><?php echo I18N::translate('Show date differences'); ?></label> 2988c2e8227SGreg Roach </td></tr></table> 2998c2e8227SGreg Roach <?php 3008c2e8227SGreg Roach $families = $controller->record->getChildFamilies(); 3018c2e8227SGreg Roach if (!$families && $controller->record->canEdit()) { 3028c2e8227SGreg Roach ?> 3038c2e8227SGreg Roach <table class="facts_table"> 3048c2e8227SGreg Roach <tr> 3058c2e8227SGreg Roach <td class="facts_value"><a href="#" onclick="return add_parent_to_individual('<?php echo $controller->record->getXref(); ?>', 'M');"><?php echo I18N::translate('Add a new father'); ?></td> 3068c2e8227SGreg Roach </tr> 3078c2e8227SGreg Roach <tr> 3088c2e8227SGreg Roach <td class="facts_value"><a href="#" onclick="return add_parent_to_individual('<?php echo $controller->record->getXref(); ?>', 'F');"><?php echo I18N::translate('Add a new mother'); ?></a></td> 3098c2e8227SGreg Roach </tr> 3108c2e8227SGreg Roach </table> 3118c2e8227SGreg Roach <?php 3128c2e8227SGreg Roach } 3138c2e8227SGreg Roach 3148c2e8227SGreg Roach // parents 3158c2e8227SGreg Roach foreach ($families as $family) { 3168c2e8227SGreg Roach $this->printFamily($family, 'FAMC', $controller->record->getChildFamilyLabel($family)); 3178c2e8227SGreg Roach } 3188c2e8227SGreg Roach 3198c2e8227SGreg Roach // step-parents 3208c2e8227SGreg Roach foreach ($controller->record->getChildStepFamilies() as $family) { 3218c2e8227SGreg Roach $this->printFamily($family, 'FAMC', $controller->record->getStepFamilyLabel($family)); 3228c2e8227SGreg Roach } 3238c2e8227SGreg Roach 3248c2e8227SGreg Roach // spouses 3258c2e8227SGreg Roach $families = $controller->record->getSpouseFamilies(); 3268c2e8227SGreg Roach foreach ($families as $family) { 327268bcb45SGreg Roach $this->printFamily($family, 'FAMS', $controller->getSpouseFamilyLabel($family, $controller->record)); 3288c2e8227SGreg Roach } 3298c2e8227SGreg Roach 3308c2e8227SGreg Roach // step-children 3318c2e8227SGreg Roach foreach ($controller->record->getSpouseStepFamilies() as $family) { 3328c2e8227SGreg Roach $this->printFamily($family, 'FAMS', $family->getFullName()); 3338c2e8227SGreg Roach } 3348c2e8227SGreg Roach 3358c2e8227SGreg Roach if (!$WT_TREE->getPreference('SHOW_AGE_DIFF')) { 3368c2e8227SGreg Roach echo '<script>jQuery("DIV.elderdate").toggle();</script>'; 3378c2e8227SGreg Roach } 3388c2e8227SGreg Roach 3398c2e8227SGreg Roach if ($controller->record->canEdit()) { 3408c2e8227SGreg Roach ?> 3418c2e8227SGreg Roach <br><table class="facts_table"> 3428c2e8227SGreg Roach <?php 3438c2e8227SGreg Roach if (count($families) > 1) { ?> 3448c2e8227SGreg Roach <tr> 3458c2e8227SGreg Roach <td class="facts_value"> 3468c2e8227SGreg Roach <a href="#" onclick="return reorder_families('<?php echo $controller->record->getXref(); ?>');"><?php echo I18N::translate('Re-order families'); ?></a> 3478c2e8227SGreg Roach </td> 3488c2e8227SGreg Roach </tr> 3498c2e8227SGreg Roach <?php } ?> 3508c2e8227SGreg Roach <tr> 3518c2e8227SGreg Roach <td class="facts_value"> 3528c2e8227SGreg Roach <a href="#" onclick="return add_famc('<?php echo $controller->record->getXref(); ?>');"><?php echo I18N::translate('Link this individual to an existing family as a child'); ?></a> 3538c2e8227SGreg Roach </td> 3548c2e8227SGreg Roach </tr> 3558c2e8227SGreg Roach <?php if ($controller->record->getSex() != "F") { ?> 3568c2e8227SGreg Roach <tr> 3578c2e8227SGreg Roach <td class="facts_value"> 3588c2e8227SGreg Roach <a href="#" onclick="return add_spouse_to_individual('<?php echo $controller->record->getXref(); ?>','WIFE');"><?php echo I18N::translate('Add a new wife'); ?></a> 3598c2e8227SGreg Roach </td> 3608c2e8227SGreg Roach </tr> 3618c2e8227SGreg Roach <tr> 3628c2e8227SGreg Roach <td class="facts_value"> 3638c2e8227SGreg Roach <a href="#" onclick="return linkspouse('<?php echo $controller->record->getXref(); ?>','WIFE');"><?php echo I18N::translate('Add a wife using an existing individual'); ?></a> 3648c2e8227SGreg Roach </td> 3658c2e8227SGreg Roach </tr> 3668c2e8227SGreg Roach <?php } 3678c2e8227SGreg Roach if ($controller->record->getSex() != "M") { ?> 3688c2e8227SGreg Roach <tr> 3698c2e8227SGreg Roach <td class="facts_value"> 3708c2e8227SGreg Roach <a href="#" onclick="return add_spouse_to_individual('<?php echo $controller->record->getXref(); ?>','HUSB');"><?php echo I18N::translate('Add a new husband'); ?></a> 3718c2e8227SGreg Roach </td> 3728c2e8227SGreg Roach </tr> 3738c2e8227SGreg Roach <tr> 3748c2e8227SGreg Roach <td class="facts_value"> 3758c2e8227SGreg Roach <a href="#" onclick="return linkspouse('<?php echo $controller->record->getXref(); ?>','HUSB');"><?php echo I18N::translate('Add a husband using an existing individual'); ?></a> 3768c2e8227SGreg Roach </td> 3778c2e8227SGreg Roach </tr> 3788c2e8227SGreg Roach <?php } ?> 3798c2e8227SGreg Roach <tr> 3808c2e8227SGreg Roach <td class="facts_value"> 3818c2e8227SGreg Roach <a href="#" onclick="return add_child_to_individual('<?php echo $controller->record->getXref(); ?>','U');"><?php echo I18N::translate('Add a child to create a one-parent family'); ?></a> 3828c2e8227SGreg Roach </td> 3838c2e8227SGreg Roach </tr> 3848c2e8227SGreg Roach </table> 3858c2e8227SGreg Roach <?php } ?> 3868c2e8227SGreg Roach <br> 3878c2e8227SGreg Roach <?php 3888c2e8227SGreg Roach 3898c2e8227SGreg Roach unset($show_full); 3908c2e8227SGreg Roach if (isset($saved_show_full)) { 3918c2e8227SGreg Roach $show_full = $saved_show_full; 3928c2e8227SGreg Roach } 3938c2e8227SGreg Roach 3948c2e8227SGreg Roach return '<div id="' . $this->getName() . '_content">' . ob_get_clean() . '</div>'; 3958c2e8227SGreg Roach } 3968c2e8227SGreg Roach 3978c2e8227SGreg Roach /** {@inheritdoc} */ 3988c2e8227SGreg Roach public function hasTabContent() { 3998c2e8227SGreg Roach return true; 4008c2e8227SGreg Roach } 4018c2e8227SGreg Roach /** {@inheritdoc} */ 4028c2e8227SGreg Roach public function isGrayedOut() { 4038c2e8227SGreg Roach return false; 4048c2e8227SGreg Roach } 4058c2e8227SGreg Roach /** {@inheritdoc} */ 4068c2e8227SGreg Roach public function canLoadAjax() { 4078c2e8227SGreg Roach return !Auth::isSearchEngine(); // Search engines cannot use AJAX 4088c2e8227SGreg Roach } 4098c2e8227SGreg Roach 4108c2e8227SGreg Roach /** {@inheritdoc} */ 4118c2e8227SGreg Roach public function getPreLoadContent() { 4128c2e8227SGreg Roach return ''; 4138c2e8227SGreg Roach } 4148c2e8227SGreg Roach} 415