addExternalJavascript(WT_JQUERY_COOKIE_URL); // We use this to record the sidebar state if ($controller->record && $controller->record->canShow()) { if (WT_Filter::get('action')=='ajax') { $controller->ajaxRequest(); exit; } // Generate the sidebar content *before* we display the page header, // as the clippings cart needs to have write access to the session. $sidebar_html=$controller->getSideBarContent(); $controller->pageHeader(); if ($controller->record->isOld()) { if (WT_USER_CAN_ACCEPT) { echo '

', /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ WT_I18N::translate( 'This individual has been deleted. You should review the deletion and then %1$s or %2$s it.', '' . WT_I18N::translate_c('You should review the deletion and then accept or reject it.', 'accept') . '', '' . WT_I18N::translate_c('You should review the deletion and then accept or reject it.', 'reject') . '' ), ' ', help_link('pending_changes'), '

'; } elseif (WT_USER_CAN_EDIT) { echo '

', WT_I18N::translate('This individual has been deleted. The deletion will need to be reviewed by a moderator.'), ' ', help_link('pending_changes'), '

'; } } elseif ($controller->record->isNew()) { if (WT_USER_CAN_ACCEPT) { echo '

', /* I18N: %1$s is “accept”, %2$s is “reject”. These are links. */ WT_I18N::translate( 'This individual has been edited. You should review the changes and then %1$s or %2$s them.', '' . WT_I18N::translate_c('You should review the changes and then accept or reject them.', 'accept') . '', '' . WT_I18N::translate_c('You should review the changes and then accept or reject them.', 'reject') . '' ), ' ', help_link('pending_changes'), '

'; } elseif (WT_USER_CAN_EDIT) { echo '

', WT_I18N::translate('This individual has been edited. The changes need to be reviewed by a moderator.'), ' ', help_link('pending_changes'), '

'; } } } elseif ($controller->record && $controller->record->canShowName()) { // Just show the name. $controller->pageHeader(); echo '

', $controller->record->getFullName(), '

'; echo '

', WT_I18N::translate('The details of this individual are private.'), '

'; exit; } else { header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found'); $controller->pageHeader(); echo '

', WT_I18N::translate('This individual does not exist or you do not have permission to view it.'), '

'; exit; } $controller->addInlineJavascript(' var WT_INDIVIDUAL = (function () { var instance, jQseparator = jQuery("#separator"), jQsidebar = jQuery ("#sidebar"); function init() { jQuery ("#header_accordion1").accordion ({ active: 0, heightStyle: "content", collapsible: true }); jQuery ("#tabs").tabs ({ // If url has a hash (e.g #stories) then don\'t set an active tab - it overrides the hash // otherwise use cookie active: location.hash ? null : jQuery.cookie ("indi-tab"), activate: function (event, ui) { jQuery.cookie ("indi-tab", jQuery ("#tabs").tabs ("option", "active")); }, // Only load each tab once beforeLoad: function (event, ui) { if (ui.tab.data ("loaded")) { event.preventDefault (); return; } jQuery (ui.panel.selector).append (\'
\'); ui.jqXHR.success (function () { ui.tab.data ("loaded", true); }); } }); if (jQsidebar.length) { // Have we got a sidebar ? // toggle sidebar visibility jQuery ("#main").on ("click", "#separator", function (e) { e.preventDefault (); jQsidebar.animate ({width: "toggle"}, { duration: 300, done: function () { jQuery.cookie ("hide-sb", jQsidebar.is (":hidden")); jQseparator.toggleClass("separator-hidden separator-visible"); } }); }); // Set initial sidebar state if (jQuery.cookie ("hide-sb") === "true") { jQsidebar.hide (); jQseparator.addClass("separator-hidden"); } else { jQsidebar.show (); jQseparator.addClass("separator-visible"); } } } return { getInstance: function () { if (!instance) { instance = init (); } return instance; } }; }) (); WT_INDIVIDUAL.getInstance (); '); // ===================================== header area echo '
', //overall page container '
', '
'; if ($controller->record->canShow()) { // Highlight image or silhouette echo '
', $controller->record->displayImage(), '
'; echo '
'; // contain accordions for names echo '

', $controller->record->getFullName(), ''; // First name accordion header $bdate=$controller->record->getBirthDate(); $ddate=$controller->record->getDeathDate(); echo ''; if ($bdate->isOK() && !$controller->record->isDead()) { // If living display age echo WT_Gedcom_Tag::getLabelValue('AGE', get_age_at_event(WT_Date::GetAgeGedcom($bdate), true), '', 'span'); } elseif ($bdate->isOK() && $ddate->isOK()) { // If dead, show age at death echo WT_Gedcom_Tag::getLabelValue('AGE', get_age_at_event(WT_Date::GetAgeGedcom($bdate, $ddate), false), '', 'span'); } echo ''; // Display summary birth/death info. echo '', $controller->record->getLifeSpan(), ''; // Display gender icon foreach ($controller->record->getFacts() as $fact) { if ($fact->getTag() == 'SEX') { $controller->print_sex_record($fact); } } echo '

'; // close first name accordion header // Display name details foreach ($controller->record->getFacts() as $fact) { if ($fact->getTag() == 'NAME') { $controller->print_name_record($fact); } } echo '
'; // close header_accordion1 } echo '
';// close #indi_header // ===================================== main content tabs foreach ($controller->tabs as $tab) { echo $tab->getPreLoadContent(); } echo '
'; echo ''; foreach ($controller->tabs as $tab) { if ($tab->hasTabContent()) { if (!$tab->canLoadAjax()) { echo '
', $tab->getTabContent(), '
'; } } } echo '
', // close #tabs '
'; //close indi_left if ($sidebar_html) { echo '
' . //clickable element to open/close sidebar $sidebar_html; } echo '
'; // close #main