1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/webtrees_ynh.git synced 2024-09-03 18:26:37 +02:00
webtrees_ynh/sources/ancestry.php

175 lines
6.2 KiB
PHP
Raw Normal View History

<?php
/**
* webtrees: online genealogy
* Copyright (C) 2016 webtrees development team
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Fisharebest\Webtrees;
/**
* Defined in session.php
*
* @global Tree $WT_TREE
*/
global $WT_TREE;
use Fisharebest\Webtrees\Controller\AncestryController;
use Fisharebest\Webtrees\Functions\FunctionsCharts;
use Fisharebest\Webtrees\Functions\FunctionsEdit;
use Fisharebest\Webtrees\Functions\FunctionsPrint;
use Fisharebest\Webtrees\Functions\FunctionsPrintLists;
define('WT_SCRIPT_NAME', 'ancestry.php');
require './includes/session.php';
$MAX_PEDIGREE_GENERATIONS = $WT_TREE->getPreference('MAX_PEDIGREE_GENERATIONS');
$controller = new AncestryController;
$controller
->restrictAccess(Module::isActiveChart($WT_TREE, 'ancestors_chart'))
->pageHeader()
->addExternalJavascript(WT_AUTOCOMPLETE_JS_URL)
->addInlineJavascript('autocomplete();');
?>
<div id="ancestry-page">
<h2><?php echo $controller->getPageTitle(); ?></h2>
<form name="people" id="people" method="get" action="?">
<input type="hidden" name="ged" value="<?php echo $WT_TREE->getNameHtml(); ?>">
<table class="list_table">
<tbody>
<tr>
<td class="descriptionbox">
<label for="rootid"><?php echo I18N::translate('Individual'); ?></label>
</td>
<td class="optionbox">
<input class="pedigree_form" data-autocomplete-type="INDI" type="text" name="rootid" id="rootid" size="3" value="<?php echo $controller->root->getXref(); ?>">
<?php echo FunctionsPrint::printFindIndividualLink('rootid'); ?>
</td>
<td rowspan="3" class="descriptionbox">
<label><?php echo I18N::translate('Layout'); ?></label>
</td>
<td rowspan="3" class="optionbox">
<div>
<label>
<input type="radio" name="chart_style" value="0" onclick="statusDisable('cousins');" <?php echo $controller->chart_style == 0 ? 'checked' : ''; ?>>
<?php echo I18N::translate('List'); ?>
</label>
</div>
<div>
<label>
<input type="radio" name="chart_style" value="1" onclick="statusEnable('cousins');" <?php echo $controller->chart_style == 1 ? 'checked' : ''; ?>>
<?php echo I18N::translate('Booklet'); ?>
</label>
<label>
<?php echo FunctionsEdit::twoStateCheckbox('show_cousins', $controller->show_cousins, "id='cousins' " . ($controller->chart_style === 1 ? '' : 'disabled')); ?>
<?php echo I18N::translate('Show cousins'); ?>
</label>
</div>
<div>
<label>
<input type="radio" name="chart_style" value="2" onclick="statusDisable('cousins');" <?php echo $controller->chart_style == 2 ? 'checked' : ''; ?>>
<?php echo I18N::translate('Individuals'); ?>
</label>
</div>
<div>
<label>
<input type="radio" name="chart_style" value="3" onclick="statusDisable('cousins');" <?php echo $controller->chart_style == 3 ? 'checked' : ''; ?>>
<?php echo I18N::translate('Families'); ?>
</label>
</div>
</td>
<td rowspan="3" class="facts_label03">
<input type="submit" value="<?php echo /* I18N: A button label. */ I18N::translate('view'); ?>">
</td>
</tr>
<tr>
<td class="descriptionbox">
<?php echo '<label>', I18N::translate('Generations'), '</label>'; ?>
</td>
<td class="optionbox">
<select name="PEDIGREE_GENERATIONS">
<?php
for ($i = 2; $i <= $MAX_PEDIGREE_GENERATIONS; $i++) {
echo '<option value="', $i, '" ';
if ($i == $controller->generations) {
echo 'selected';
}
echo '>', I18N::number($i), '</option>';
}
?>
</select>
</td>
</tr>
<tr>
<td class="descriptionbox">
<?php echo '<label>', I18N::translate('Show details'), '</label>'; ?>
</td>
<td class="optionbox">
<?php echo FunctionsEdit::twoStateCheckbox('show_full', $controller->showFull()); ?>
</td>
</tr>
</tbody>
</table>
</form>
<?php
if ($controller->error_message) {
echo '<p class="ui-state-error">', $controller->error_message, '</p>';
return;
}
switch ($controller->chart_style) {
case 0:
// List
echo '<ul id="ancestry_chart" class="chart_common">';
$controller->printChildAscendancy($controller->root, 1, $controller->generations - 1);
echo '</ul>';
echo '<br>';
break;
case 1:
echo '<div id="ancestry_booklet">';
// Booklet
// first page : show indi facts
FunctionsPrint::printPedigreePerson($controller->root, $controller->showFull());
// process the tree
$ancestors = $controller->sosaAncestors($controller->generations - 1);
$ancestors = array_filter($ancestors); // The SOSA array includes empty placeholders
foreach ($ancestors as $sosa => $individual) {
foreach ($individual->getChildFamilies() as $family) {
FunctionsCharts::printSosaFamily($family->getXref(), $individual->getXref(), $sosa, '', '', '', $controller->show_cousins, $controller->showFull());
}
}
echo '</div>';
break;
case 2:
// Individual list
$ancestors = $controller->sosaAncestors($controller->generations);
$ancestors = array_filter($ancestors); // The SOSA array includes empty placeholders
echo '<div id="ancestry-list">', FunctionsPrintLists::individualTable($ancestors, 'sosa'), '</div>';
break;
case 3:
// Family list
$ancestors = $controller->sosaAncestors($controller->generations - 1);
$ancestors = array_filter($ancestors); // The SOSA array includes empty placeholders
$families = array();
foreach ($ancestors as $individual) {
foreach ($individual->getChildFamilies() as $family) {
$families[$family->getXref()] = $family;
}
}
echo '<div id="ancestry-list">', FunctionsPrintLists::familyTable($families), '</div>';
break;
}
echo '</div>';