本文整理汇总了PHP中Fisharebest\Webtrees\Functions\FunctionsPrint类的典型用法代码示例。如果您正苦于以下问题:PHP FunctionsPrint类的具体用法?PHP FunctionsPrint怎么用?PHP FunctionsPrint使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了FunctionsPrint类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: printChildAscendancy
/**
* print a child ascendancy
*
* @param Individual $individual
* @param int $sosa child sosa number
* @param int $depth the ascendancy depth to show
*/
public function printChildAscendancy(Individual $individual, $sosa, $depth)
{
echo '<li>';
echo '<table><tbody><tr><td>';
if ($sosa === 1) {
echo '<img src="', Theme::theme()->parameter('image-spacer'), '" height="3" width="', Theme::theme()->parameter('chart-descendancy-indent'), '"></td><td>';
} else {
echo '<img src="', Theme::theme()->parameter('image-spacer'), '" height="3" width="2" alt="">';
echo '<img src="', Theme::theme()->parameter('image-hline'), '" height="3" width="', Theme::theme()->parameter('chart-descendancy-indent') - 2, '"></td><td>';
}
FunctionsPrint::printPedigreePerson($individual, $this->showFull());
echo '</td><td>';
if ($sosa > 1) {
FunctionsCharts::printUrlArrow('?rootid=' . $individual->getXref() . '&PEDIGREE_GENERATIONS=' . $this->generations . '&show_full=' . $this->showFull() . '&chart_style=' . $this->chart_style . '&ged=' . $individual->getTree()->getNameUrl(), I18N::translate('Ancestors of %s', $individual->getFullName()), 3);
}
echo '</td><td class="details1"> <span class="person_box' . ($sosa === 1 ? 'NN' : ($sosa % 2 ? 'F' : '')) . '">', I18N::number($sosa), '</span> ';
echo '</td><td class="details1"> ', FunctionsCharts::getSosaName($sosa), '</td>';
echo '</tr></tbody></table>';
// Parents
$family = $individual->getPrimaryChildFamily();
if ($family && $depth > 0) {
// Marriage details
echo '<span class="details1">';
echo '<img src="', Theme::theme()->parameter('image-spacer'), '" height="2" width="', Theme::theme()->parameter('chart-descendancy-indent'), '" alt=""><a href="#" onclick="return expand_layer(\'sosa_', $sosa, '\');" class="top"><i id="sosa_', $sosa, '_img" class="icon-minus" title="', I18N::translate('View family'), '"></i></a>';
echo ' <span class="person_box">', I18N::number($sosa * 2), '</span> ', I18N::translate('and');
echo ' <span class="person_boxF">', I18N::number($sosa * 2 + 1), '</span>';
if ($family->canShow()) {
foreach ($family->getFacts(WT_EVENTS_MARR) as $fact) {
echo ' <a href="', $family->getHtmlUrl(), '" class="details1">', $fact->summary(), '</a>';
}
}
echo '</span>';
// display parents recursively - or show empty boxes
echo '<ul id="sosa_', $sosa, '" class="generation">';
if ($family->getHusband()) {
$this->printChildAscendancy($family->getHusband(), $sosa * 2, $depth - 1);
}
if ($family->getWife()) {
$this->printChildAscendancy($family->getWife(), $sosa * 2 + 1, $depth - 1);
}
echo '</ul>';
}
echo '</li>';
}
示例2:
echo FunctionsPrint::printFindIndividualLink('gid2');
?>
<?php
echo FunctionsPrint::printFindFamilyLink('gid2');
?>
<?php
echo FunctionsPrint::printFindSourceLink('gid2');
?>
<?php
echo FunctionsPrint::printFindRepositoryLink('gid2');
?>
<?php
echo FunctionsPrint::printFindMediaLink('gid2');
?>
<?php
echo FunctionsPrint::printFindNoteLink('gid2');
?>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9">
<button type="submit" class="btn btn-primary">
<?php
echo I18N::translate('continue');
?>
</button>
</div>
</div>
</form>
示例3: printNameRecord
/**
* print information for a name record
*
* @param Fact $event the event object
*/
public function printNameRecord(Fact $event)
{
$factrec = $event->getGedcom();
// Create a dummy record, so we can extract the formatted NAME value from the event.
$dummy = new Individual('xref', "0 @xref@ INDI\n1 DEAT Y\n" . $factrec, null, $event->getParent()->getTree());
$all_names = $dummy->getAllNames();
$primary_name = $all_names[0];
$this->name_count++;
if ($this->name_count > 1) {
echo '<h3 class="name_two">', $dummy->getFullName(), '</h3>';
}
//Other names accordion element
echo '<div class="indi_name_details';
if ($event->isPendingDeletion()) {
echo ' old';
}
if ($event->isPendingAddition()) {
echo ' new';
}
echo '">';
echo '<div class="name1">';
echo '<dl><dt class="label">', I18N::translate('Name'), '</dt>';
$dummy->setPrimaryName(0);
echo '<dd class="field">', $dummy->getFullName();
if ($this->name_count == 1) {
if (Auth::isAdmin()) {
$user = User::findByGenealogyRecord($this->record);
if ($user) {
echo '<span> - <a class="warning" href="admin_users.php?filter=' . Filter::escapeHtml($user->getUserName()) . '">' . Filter::escapeHtml($user->getUserName()) . '</a></span>';
}
}
}
if ($this->record->canEdit() && !$event->isPendingDeletion()) {
echo "<div class=\"deletelink\"><a class=\"deleteicon\" href=\"#\" onclick=\"return delete_fact('" . I18N::translate('Are you sure you want to delete this fact?') . "', '" . $this->record->getXref() . "', '" . $event->getFactId() . "');\" title=\"" . I18N::translate('Delete this name') . "\"><span class=\"link_text\">" . I18N::translate('Delete this name') . "</span></a></div>";
echo "<div class=\"editlink\"><a href=\"#\" class=\"editicon\" onclick=\"edit_name('" . $this->record->getXref() . "', '" . $event->getFactId() . "'); return false;\" title=\"" . I18N::translate('Edit name') . "\"><span class=\"link_text\">" . I18N::translate('Edit name') . "</span></a></div>";
}
echo '</dd>';
echo '</dl>';
echo '</div>';
$ct = preg_match_all('/\\n2 (\\w+) (.*)/', $factrec, $nmatch, PREG_SET_ORDER);
for ($i = 0; $i < $ct; $i++) {
echo '<div>';
$fact = $nmatch[$i][1];
if ($fact != 'SOUR' && $fact != 'NOTE' && $fact != 'SPFX') {
echo '<dl><dt class="label">', GedcomTag::getLabel($fact, $this->record), '</dt>';
echo '<dd class="field">';
// Before using dir="auto" on this field, note that Gecko treats this as an inline element but WebKit treats it as a block element
if (isset($nmatch[$i][2])) {
$name = Filter::escapeHtml($nmatch[$i][2]);
$name = str_replace('/', '', $name);
$name = preg_replace('/(\\S*)\\*/', '<span class="starredname">\\1</span>', $name);
switch ($fact) {
case 'TYPE':
echo GedcomCodeName::getValue($name, $this->record);
break;
case 'SURN':
// The SURN field is not necessarily the surname.
// Where it is not a substring of the real surname, show it after the real surname.
$surname = Filter::escapeHtml($primary_name['surname']);
if (strpos($primary_name['surname'], str_replace(',', ' ', $nmatch[$i][2])) !== false) {
echo '<span dir="auto">' . $surname . '</span>';
} else {
echo I18N::translate('%1$s (%2$s)', '<span dir="auto">' . $surname . '</span>', '<span dir="auto">' . $name . '</span>');
}
break;
default:
echo '<span dir="auto">' . $name . '</span>';
break;
}
}
echo '</dd>';
echo '</dl>';
}
echo '</div>';
}
if (preg_match("/\n2 SOUR/", $factrec)) {
echo '<div id="indi_sour" class="clearfloat">', FunctionsPrintFacts::printFactSources($factrec, 2), '</div>';
}
if (preg_match("/\n2 NOTE/", $factrec)) {
echo '<div id="indi_note" class="clearfloat">', FunctionsPrint::printFactNotes($factrec, 2), '</div>';
}
echo '</div>';
}
示例4: getTabContent
/**
* Generate the HTML content of this tab.
*
* @return string
*/
public function getTabContent()
{
global $WT_TREE, $controller;
$html = '<div id="' . $this->getName() . '_content">';
//Show Lightbox-Album header Links
if (Auth::isEditor($WT_TREE)) {
$html .= '<table class="facts_table"><tr><td class="descriptionbox rela">';
// Add a new media object
if ($WT_TREE->getPreference('MEDIA_UPLOAD') >= Auth::accessLevel($WT_TREE)) {
$html .= '<span><a href="#" onclick="window.open(\'addmedia.php?action=showmediaform&linktoid=' . $controller->record->getXref() . '\', \'_blank\', \'resizable=1,scrollbars=1,top=50,height=780,width=600\');return false;">';
$html .= '<img src="' . Theme::theme()->assetUrl() . 'images/image_add.png" id="head_icon" class="icon" title="' . I18N::translate('Add a new media object') . '" alt="' . I18N::translate('Add a new media object') . '">';
$html .= I18N::translate('Add a new media object');
$html .= '</a></span>';
// Link to an existing item
$html .= '<span><a href="#" onclick="window.open(\'inverselink.php?linktoid=' . $controller->record->getXref() . '&linkto=person\', \'_blank\', \'resizable=1,scrollbars=1,top=50,height=300,width=450\');">';
$html .= '<img src="' . Theme::theme()->assetUrl() . 'images/image_link.png" id="head_icon" class="icon" title="' . I18N::translate('Link to an existing media object') . '" alt="' . I18N::translate('Link to an existing media object') . '">';
$html .= I18N::translate('Link to an existing media object');
$html .= '</a></span>';
}
if (Auth::isManager($WT_TREE) && $this->getMedia()) {
// Popup Reorder Media
$html .= '<span><a href="#" onclick="reorder_media(\'' . $controller->record->getXref() . '\')">';
$html .= '<img src="' . Theme::theme()->assetUrl() . 'images/images.png" id="head_icon" class="icon" title="' . I18N::translate('Re-order media') . '" alt="' . I18N::translate('Re-order media') . '">';
$html .= I18N::translate('Re-order media');
$html .= '</a></span>';
}
$html .= '</td></tr></table>';
}
// Used when sorting media on album tab page
$html .= '<table class="facts_table"><tr><td class="facts_value">';
// one-cell table - for presentation only
$html .= '<ul class="album-list">';
foreach ($this->getMedia() as $media) {
//View Edit Menu ----------------------------------
//Get media item Notes
$haystack = $media->getGedcom();
$needle = '1 NOTE';
$before = substr($haystack, 0, strpos($haystack, $needle));
$after = substr(strstr($haystack, $needle), strlen($needle));
$notes = FunctionsPrint::printFactNotes($before . $needle . $after, 1, true);
// Prepare Below Thumbnail menu ----------------------------------------------------
$menu = new Menu('<div style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap">' . $media->getFullName() . '</div>');
$menu->addClass('', 'submenu');
// View Notes
if (strpos($media->getGedcom(), "\n1 NOTE")) {
$submenu = new Menu(I18N::translate('View notes'), '#', '', array('onclick' => 'modalNotes("' . Filter::escapeJs($notes) . '","' . I18N::translate('View notes') . '"); return false;'));
$submenu->addClass("submenuitem");
$menu->addSubmenu($submenu);
}
//View Details
$submenu = new Menu(I18N::translate('View details'), $media->getHtmlUrl());
$submenu->addClass("submenuitem");
$menu->addSubmenu($submenu);
//View Sources
foreach ($media->getFacts('SOUR') as $source_fact) {
$source = $source_fact->getTarget();
if ($source && $source->canShow()) {
$submenu = new Menu(I18N::translate('Source') . ' – ' . $source->getFullName(), $source->getHtmlUrl());
$submenu->addClass('submenuitem');
$menu->addSubmenu($submenu);
}
}
if (Auth::isEditor($media->getTree())) {
// Edit Media
$submenu = new Menu(I18N::translate('Edit media'), '#', '', array('onclick' => 'return window.open("addmedia.php?action=editmedia&pid=' . $media->getXref() . '", "_blank", edit_window_specs);'));
$submenu->addClass("submenuitem");
$menu->addSubmenu($submenu);
if (Auth::isAdmin()) {
if (Module::getModuleByName('GEDFact_assistant')) {
$submenu = new Menu(I18N::translate('Manage links'), '#', '', array('onclick' => 'return window.open("inverselink.php?mediaid=' . $media->getXref() . '&linkto=manage", "_blank", find_window_specs);'));
$submenu->addClass("submenuitem");
$menu->addSubmenu($submenu);
} else {
$submenu = new Menu(I18N::translate('Link this media object to an individual'), '#', 'menu-obje-link-indi', array('onclick' => 'return ilinkitem("' . $media->getXref() . '","person");'));
$submenu->addClass('submenuitem');
$menu->addSubmenu($submenu);
$submenu = new Menu(I18N::translate('Link this media object to a family'), '#', 'menu-obje-link-fam', array('onclick' => 'return ilinkitem("' . $media->getXref() . '","family");'));
$submenu->addClass('submenuitem');
$menu->addSubmenu($submenu);
$submenu = new Menu(I18N::translate('Link this media object to a source'), '#', 'menu-obje-link-sour', array('onclick' => 'return ilinkitem("' . $media->getXref() . '","source");'));
$submenu->addClass('submenuitem');
$menu->addSubmenu($submenu);
}
$submenu = new Menu(I18N::translate('Unlink media'), '#', '', array('onclick' => 'return unlink_media("' . I18N::translate('Are you sure you want to remove links to this media object?') . '", "' . $controller->record->getXref() . '", "' . $media->getXref() . '");'));
$submenu->addClass("submenuitem");
$menu->addSubmenu($submenu);
}
}
$html .= '<li class="album-list-item">';
$html .= '<div class="album-image">' . $media->displayImage() . '</div>';
$html .= '<div class="album-title">' . $menu->getMenu() . '</div>';
$html .= '</li>';
}
$html .= '</ul>';
$html .= '</td></tr></table>';
//.........这里部分代码省略.........
示例5: MediaController
define('WT_SCRIPT_NAME', 'mediaviewer.php');
require './includes/session.php';
$controller = new MediaController();
if ($controller->record && $controller->record->canShow()) {
$controller->pageHeader();
if ($controller->record->isPendingDeletion()) {
if (Auth::isModerator($controller->record->getTree())) {
echo '<p class="ui-state-highlight">', I18N::translate('This media object has been deleted. You should review the deletion and then %1$s or %2$s it.', '<a href="#" onclick="accept_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'accept') . '</a>', '<a href="#" onclick="reject_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the deletion and then accept or reject it.', 'reject') . '</a>'), ' ', FunctionsPrint::helpLink('pending_changes'), '</p>';
} elseif (Auth::isEditor($controller->record->getTree())) {
echo '<p class="ui-state-highlight">', I18N::translate('This media object has been deleted. The deletion will need to be reviewed by a moderator.'), ' ', FunctionsPrint::helpLink('pending_changes'), '</p>';
}
} elseif ($controller->record->isPendingAddtion()) {
if (Auth::isModerator($controller->record->getTree())) {
echo '<p class="ui-state-highlight">', I18N::translate('This media object has been edited. You should review the changes and then %1$s or %2$s them.', '<a href="#" onclick="accept_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'accept') . '</a>', '<a href="#" onclick="reject_changes(\'' . $controller->record->getXref() . '\');">' . I18N::translateContext('You should review the changes and then accept or reject them.', 'reject') . '</a>'), ' ', FunctionsPrint::helpLink('pending_changes'), '</p>';
} elseif (Auth::isEditor($controller->record->getTree())) {
echo '<p class="ui-state-highlight">', I18N::translate('This media object has been edited. The changes need to be reviewed by a moderator.'), ' ', FunctionsPrint::helpLink('pending_changes'), '</p>';
}
}
} else {
http_response_code(404);
$controller->pageHeader();
echo '<p class="ui-state-error">', I18N::translate('This media object does not exist or you do not have permission to view it.'), '</p>';
return;
}
$controller->addInlineJavascript('
jQuery("#media-tabs")
.tabs({
create: function(e, ui){
jQuery(e.target).css("visibility", "visible"); // prevent FOUC
}
});
示例6:
size="12"
name="gedcomid<?php
echo $tree->getTreeId();
?>
"
id="gedcomid<?php
echo $tree->getTreeId();
?>
"
value="<?php
echo Filter::escapeHtml($tree->getUserPreference($user, 'gedcomid'));
?>
"
>
<?php
echo FunctionsPrint::printFindIndividualLink('gedcomid' . $tree->getTreeId(), '', $tree);
?>
</td>
<td>
<select name="RELATIONSHIP_PATH_LENGTH<?php
echo $tree->getTreeId();
?>
" id="RELATIONSHIP_PATH_LENGTH<?php
echo $tree->getTreeId();
?>
" class="relpath">
<?php
for ($n = 0; $n <= 10; ++$n) {
?>
<option value="<?php
echo $n;
示例7:
</div>
<div class="label">
<label for="form_rootid">
<?php
echo I18N::translate('Default individual');
?>
</label>
</div>
<div class="value">
<input data-autocomplete-type="INDI" type="text" name="form_rootid" id="form_rootid" value="<?php
echo $WT_TREE->getUserPreference(Auth::user(), 'rootid');
?>
">
<?php
echo FunctionsPrint::printFindIndividualLink('form_rootid');
?>
<br>
<?php
if ($default_individual) {
?>
<?php
echo $default_individual->formatList('span');
?>
<?php
}
?>
<p class="small text-muted">
<?php
echo I18N::translate('This individual will be selected by default when viewing charts and reports.');
?>
示例8: getTabContent
/** {@inheritdoc} */
public function getTabContent()
{
global $WT_TREE, $controller;
ob_start();
echo '<table class="facts_table">';
foreach ($this->getFactsWithMedia() as $fact) {
if ($fact->getTag() == 'OBJE') {
FunctionsPrintFacts::printMainMedia($fact, 1);
} else {
for ($i = 2; $i < 4; ++$i) {
FunctionsPrintFacts::printMainMedia($fact, $i);
}
}
}
if (!$this->getFactsWithMedia()) {
echo '<tr><td id="no_tab4" colspan="2" class="facts_value">', I18N::translate('There are no media objects for this individual.'), '</td></tr>';
}
// New media link
if ($controller->record->canEdit() && $WT_TREE->getPreference('MEDIA_UPLOAD') >= Auth::accessLevel($controller->record->getTree())) {
?>
<tr>
<td class="facts_label">
<?php
echo GedcomTag::getLabel('OBJE');
?>
</td>
<td class="facts_value">
<a href="#" onclick="window.open('addmedia.php?action=showmediaform&linktoid=<?php
echo $controller->record->getXref();
?>
&ged=<?php
echo $controller->record->getTree()->getNameUrl();
?>
', '_blank', edit_window_specs); return false;">
<?php
echo I18N::translate('Add a new media object');
?>
</a>
<?php
echo FunctionsPrint::helpLink('OBJE');
?>
<br>
<a href="#" onclick="window.open('inverselink.php?linktoid=<?php
echo $controller->record->getXref();
?>
&ged=<?php
echo $WT_TREE->getNameUrl();
?>
&linkto=person', '_blank', find_window_specs); return false;">
<?php
echo I18N::translate('Link to an existing media object');
?>
</a>
</td>
</tr>
<?php
}
?>
</table>
<?php
return '<div id="' . $this->getName() . '_content">' . ob_get_clean() . '</div>';
}
示例9: foreach
}
}
echo GedcomTag::getLabelValue('FORM', $mediaobject->mimeType());
echo GedcomTag::getLabelValue('__FILE_SIZE__', $mediaobject->getFilesize());
$imgsize = $mediaobject->getImageAttributes();
if ($imgsize['WxH']) {
echo GedcomTag::getLabelValue('__IMAGE_SIZE__', $imgsize['WxH']);
}
} else {
echo '<p class="ui-state-error">', I18N::translate('The file “%s” does not exist.', $mediaobject->getFilename()), '</p>';
}
}
echo '<br>';
echo '<div>';
echo FunctionsPrintFacts::printFactSources($mediaobject->getGedcom(), 1);
echo FunctionsPrint::printFactNotes($mediaobject->getGedcom(), 1);
echo '</div>';
foreach ($mediaobject->linkedIndividuals('OBJE') as $individual) {
echo '<a href="' . $individual->getHtmlUrl() . '">' . I18N::translate('View individual') . ' — ' . $individual->getFullName() . '</a><br>';
}
foreach ($mediaobject->linkedFamilies('OBJE') as $family) {
echo '<a href="' . $family->getHtmlUrl() . '">' . I18N::translate('View family') . ' — ' . $family->getFullName() . '</a><br>';
}
foreach ($mediaobject->linkedSources('OBJE') as $source) {
echo '<a href="' . $source->getHtmlUrl() . '">' . I18N::translate('View source') . ' — ' . $source->getFullName() . '</a><br>';
}
echo '</td></tr></table>';
echo '</td>';
if (++$n % $columns == 0 && $n < $count) {
echo '</tr><tr>';
}
示例10: printDescendency
/**
* Prints descendency of passed in person
*
* @param Individual $person person to print descendency for
* @param int $count count of generations to print
* @param bool $showNav
*
* @return int
*/
public function printDescendency($person, $count, $showNav = true)
{
global $lastGenSecondFam;
if ($count > $this->dgenerations) {
return 0;
}
$pid = $person->getXref();
$tablealign = 'right';
$otablealign = 'left';
if (I18N::direction() === 'rtl') {
$tablealign = 'left';
$otablealign = 'right';
}
//-- put a space between families on the last generation
if ($count == $this->dgenerations - 1) {
if (isset($lastGenSecondFam)) {
echo '<br>';
}
$lastGenSecondFam = true;
}
echo "<table id='table_{$pid}' class='hourglassChart' style='float:{$tablealign}'>";
echo '<tr>';
echo "<td style='text-align:{$tablealign}'>";
$numkids = 0;
$families = $person->getSpouseFamilies();
$famNum = 0;
$children = array();
if ($count < $this->dgenerations) {
// Put all of the children in a common array
foreach ($families as $family) {
$famNum++;
foreach ($family->getChildren() as $child) {
$children[] = $child;
}
}
$ct = count($children);
if ($ct > 0) {
echo "<table style='position: relative; top: auto; float: {$tablealign};'>";
for ($i = 0; $i < $ct; $i++) {
$person2 = $children[$i];
$chil = $person2->getXref();
echo '<tr>';
echo '<td id="td_', $chil, '" class="', I18N::direction(), '" style="text-align:', $otablealign, '">';
$kids = $this->printDescendency($person2, $count + 1);
$numkids += $kids;
echo '</td>';
// Print the lines
if ($ct > 1) {
if ($i == 0) {
// First child
echo "<td style='vertical-align:bottom'><img alt='' class='line1 tvertline' id='vline_{$chil}' src='" . Theme::theme()->parameter('image-vline') . "' width='3'></td>";
} elseif ($i == $ct - 1) {
// Last child
echo "<td style='vertical-align:top'><img alt='' class='bvertline' id='vline_{$chil}' src='" . Theme::theme()->parameter('image-vline') . "' width='3'></td>";
} else {
// Middle child
echo '<td style="background: url(\'' . Theme::theme()->parameter('image-vline') . '\');"><img src=\'' . Theme::theme()->parameter('image-spacer') . '\' width="3" alt=""></td>';
}
}
echo '</tr>';
}
echo '</table>';
}
echo '</td>';
echo '<td width="', $this->getBoxDimensions()->width, '">';
}
// Print the descendency expansion arrow
if ($count == $this->dgenerations) {
$numkids = 1;
$tbwidth = $this->getBoxDimensions()->width + 16;
for ($j = $count; $j < $this->dgenerations; $j++) {
echo "<div style='width: ", $tbwidth, "px;'><br></div></td><td style='width:", $this->getBoxDimensions()->width, "px'>";
}
$kcount = 0;
foreach ($families as $family) {
$kcount += $family->getNumberOfChildren();
}
if ($kcount == 0) {
echo "</td><td style='width:", $this->getBoxDimensions()->width, "px'>";
} else {
printf(self::LINK, $this->left_arrow, $pid, 'desc', $this->showFull(), $this->show_spouse);
//-- move the arrow up to line up with the correct box
if ($this->show_spouse) {
echo str_repeat('<br><br><br>', count($families));
}
echo "</td><td style='width:", $this->getBoxDimensions()->width, "px'>";
}
}
echo '<table id="table2_' . $pid . '"><tr><td>';
FunctionsPrint::printPedigreePerson($person, $this->showFull());
echo '</td><td><img class="line2" src="' . Theme::theme()->parameter('image-hline') . '" width="7" height="3">';
//.........这里部分代码省略.........
示例11: max
if ($n > 2 && preg_match('/son|dau|chi/', $relationships[$n - 2])) {
$table[$x + 1][$y + 1] = '<div style="background:url(' . $diagonal1 . '); background-position: top right; width: 64px; height: 64px; text-align: center;"><div style="height: 32px; text-align: start;">' . Functions::getRelationshipNameFromPath($relationships[$n], Individual::getInstance($path[$n - 1], $WT_TREE), Individual::getInstance($path[$n + 1], $WT_TREE)) . '</div><div style="height: 32px; text-align: end;">' . $up_arrow . '</div></div>';
$x += 2;
} else {
$table[$x][$y + 1] = '<div style="background:url(' . Theme::theme()->parameter('image-vline') . ') repeat-y center; height: 64px; text-align:center; "><div style="display: inline-block; width: 50%; line-height: 32px;">' . Functions::getRelationshipNameFromPath($relationships[$n], Individual::getInstance($path[$n - 1], $WT_TREE), Individual::getInstance($path[$n + 1], $WT_TREE)) . '</div><div style="display: inline-block; width: 50%; line-height: 32px">' . $up_arrow . '</div></div>';
}
$y += 2;
break;
}
$max_x = max($max_x, $x);
$min_y = min($min_y, $y);
$max_y = max($max_y, $y);
} else {
$individual = Individual::getInstance($xref, $WT_TREE);
ob_start();
FunctionsPrint::printPedigreePerson($individual, $show_full);
$table[$x][$y] = ob_get_clean();
}
}
echo '<table style="border-collapse: collapse; margin: 20px 50px;">';
for ($y = $max_y; $y >= $min_y; --$y) {
echo '<tr>';
for ($x = 0; $x <= $max_x; ++$x) {
echo '<td style="padding: 0;">';
if (isset($table[$x][$y])) {
echo $table[$x][$y];
}
echo '</td>';
}
echo '</tr>';
}
示例12: printCousins
/**
* print cousins list
*
* @param string $famid family ID
* @param int $show_full large or small box
*/
public static function printCousins($famid, $show_full = 1)
{
global $WT_TREE;
if ($show_full) {
$bheight = Theme::theme()->parameter('chart-box-y');
} else {
$bheight = Theme::theme()->parameter('compact-chart-box-y');
}
$family = Family::getInstance($famid, $WT_TREE);
$fchildren = $family->getChildren();
$kids = count($fchildren);
echo '<td valign="middle" height="100%">';
if ($kids) {
echo '<table cellspacing="0" cellpadding="0" border="0" ><tr valign="middle">';
if ($kids > 1) {
echo '<td rowspan="', $kids, '" valign="middle" align="right"><img width="3px" height="', ($bheight + 9) * ($kids - 1), 'px" src="', Theme::theme()->parameter('image-vline'), '" alt=""></td>';
}
$ctkids = count($fchildren);
$i = 1;
foreach ($fchildren as $fchil) {
if ($i == 1) {
echo '<td><img width="10px" height="3px" align="top"';
} else {
echo '<td><img width="10px" height="3px"';
}
if (I18N::direction() === 'ltr') {
echo ' style="padding-right: 2px;"';
} else {
echo ' style="padding-left: 2px;"';
}
echo ' src="', Theme::theme()->parameter('image-hline'), '" alt=""></td><td>';
FunctionsPrint::printPedigreePerson($fchil, $show_full);
echo '</td></tr>';
if ($i < $ctkids) {
echo '<tr>';
$i++;
}
}
echo '</table>';
} else {
// If there is known that there are no children (as opposed to no known children)
if (preg_match('/\\n1 NCHI (\\d+)/', $family->getGedcom(), $match) && $match[1] == 0) {
echo ' <i class="icon-childless" title="', I18N::translate('This family remained childless'), '"></i>';
}
}
echo '</td>';
}
示例13: getTabContent
/** {@inheritdoc} */
public function getTabContent()
{
global $controller;
$EXPAND_HISTO_EVENTS = false;
$indifacts = array();
// The individual’s own facts
foreach ($controller->record->getFacts() as $fact) {
switch ($fact->getTag()) {
case 'SEX':
case 'NAME':
case 'SOUR':
case 'OBJE':
case 'NOTE':
case 'FAMC':
case 'FAMS':
break;
default:
if (!array_key_exists('extra_info', Module::getActiveSidebars($controller->record->getTree())) || !ExtraInformationModule::showFact($fact)) {
$indifacts[] = $fact;
}
break;
}
}
// Add spouse-family facts
foreach ($controller->record->getSpouseFamilies() as $family) {
foreach ($family->getFacts() as $fact) {
switch ($fact->getTag()) {
case 'SOUR':
case 'NOTE':
case 'OBJE':
case 'CHAN':
case '_UID':
case 'RIN':
case 'HUSB':
case 'WIFE':
case 'CHIL':
break;
default:
$indifacts[] = $fact;
break;
}
}
$spouse = $family->getSpouse($controller->record);
if ($spouse) {
foreach (self::spouseFacts($controller->record, $spouse) as $fact) {
$indifacts[] = $fact;
}
}
foreach (self::childFacts($controller->record, $family, '_CHIL', '') as $fact) {
$indifacts[] = $fact;
}
}
foreach (self::parentFacts($controller->record, 1) as $fact) {
$indifacts[] = $fact;
}
foreach (self::historicalFacts($controller->record) as $fact) {
$indifacts[] = $fact;
}
foreach (self::associateFacts($controller->record) as $fact) {
$indifacts[] = $fact;
}
Functions::sortFacts($indifacts);
ob_start();
echo '<table class="facts_table">';
echo '<tbody>';
if (!$indifacts) {
echo '<tr><td colspan="2" class="facts_value">', I18N::translate('There are no facts for this individual.'), '</td></tr>';
}
echo '<tr><td colspan="2" class="descriptionbox rela"><form action="?"><input id="checkbox_rela_facts" type="checkbox" ';
echo $controller->record->getTree()->getPreference('EXPAND_RELATIVES_EVENTS') ? 'checked' : '';
echo ' onclick="jQuery(\'tr.rela\').toggle();"><label for="checkbox_rela_facts">', I18N::translate('Events of close relatives'), '</label>';
if (file_exists(Site::getPreference('INDEX_DIRECTORY') . 'histo.' . WT_LOCALE . '.php')) {
echo ' <input id="checkbox_histo" type="checkbox" ';
echo $EXPAND_HISTO_EVENTS ? 'checked' : '';
echo ' onclick="jQuery(\'tr.histo\').toggle();"><label for="checkbox_histo">', I18N::translate('Historical facts'), '</label>';
}
echo '</form></td></tr>';
foreach ($indifacts as $fact) {
FunctionsPrintFacts::printFact($fact, $controller->record);
}
//-- new fact link
if ($controller->record->canEdit()) {
FunctionsPrint::printAddNewFact($controller->record->getXref(), $indifacts, 'INDI');
}
echo '</tbody>';
echo '</table>';
if (!$controller->record->getTree()->getPreference('EXPAND_RELATIVES_EVENTS')) {
echo '<script>jQuery("tr.rela").toggle();</script>';
}
if (!$EXPAND_HISTO_EVENTS) {
echo '<script>jQuery("tr.histo").toggle();</script>';
}
return '<div id="' . $this->getName() . '_content">' . ob_get_clean() . '</div>';
}
示例14: return
return (array_key_exists($x->getTag(), $order) ? $order[$x->getTag()] : PHP_INT_MAX) - (array_key_exists($y->getTag(), $order) ? $order[$y->getTag()] : PHP_INT_MAX);
});
// Print the facts
foreach ($facts as $fact) {
FunctionsPrintFacts::printFact($fact, $controller->record);
}
// new fact link
if ($controller->record->canEdit()) {
FunctionsPrint::printAddNewFact($controller->record->getXref(), $facts, 'SOUR');
// new media
if ($controller->record->getTree()->getPreference('MEDIA_UPLOAD') >= Auth::accessLevel($WT_TREE)) {
echo '<tr><td class="descriptionbox">';
echo GedcomTag::getLabel('OBJE');
echo '</td><td class="optionbox">';
echo '<a href="#" onclick="window.open(\'addmedia.php?action=showmediaform&linktoid=', $controller->record->getXref(), '\', \'_blank\', edit_window_specs); return false;">', I18N::translate('Add a new media object'), '</a>';
echo FunctionsPrint::helpLink('OBJE');
echo '<br>';
echo '<a href="#" onclick="window.open(\'inverselink.php?linktoid=', $controller->record->getXref(), '&linkto=source\', \'_blank\', find_window_specs); return false;">', I18N::translate('Link to an existing media object'), '</a>';
echo '</td></tr>';
}
}
echo '</table>
</div>';
// Individuals linked to this source
if ($linked_indi) {
echo '<div id="indi-sources">', FunctionsPrintLists::individualTable($linked_indi), '</div>';
}
// Families linked to this source
if ($linked_fam) {
echo '<div id="fam-sources">', FunctionsPrintLists::familyTable($linked_fam), '</div>';
}
示例15: printTimeFact
/**
* Print a fact for an individual.
*
* @param Fact $event
*/
public function printTimeFact(Fact $event)
{
global $basexoffset, $baseyoffset, $factcount, $placements;
$desc = $event->getValue();
// check if this is a family fact
$gdate = $event->getDate();
$date = $gdate->minimumDate();
$date = $date->convertToCalendar('gregorian');
$year = $date->y;
$month = max(1, $date->m);
$day = max(1, $date->d);
$xoffset = $basexoffset + 22;
$yoffset = $baseyoffset + ($year - $this->baseyear) * $this->scale - $this->scale;
$yoffset = $yoffset + $month / 12 * $this->scale;
$yoffset = $yoffset + $day / 30 * ($this->scale / 12);
$yoffset = (int) $yoffset;
$place = (int) ($yoffset / $this->bheight);
$i = 1;
$j = 0;
$tyoffset = 0;
while (isset($placements[$place])) {
if ($i === $j) {
$tyoffset = $this->bheight * $i;
$i++;
} else {
$tyoffset = -1 * $this->bheight * $j;
$j++;
}
$place = (int) (($yoffset + $tyoffset) / $this->bheight);
}
$yoffset += $tyoffset;
$xoffset += abs($tyoffset);
$placements[$place] = $yoffset;
echo "<div id=\"fact{$factcount}\" style=\"position:absolute; " . (I18N::direction() === 'ltr' ? 'left: ' . $xoffset : 'right: ' . $xoffset) . 'px; top:' . $yoffset . "px; font-size: 8pt; height: " . $this->bheight . "px;\" onmousedown=\"factMouseDown(this, '" . $factcount . "', " . ($yoffset - $tyoffset) . ");\">";
echo '<table cellspacing="0" cellpadding="0" border="0" style="cursor: hand;"><tr><td>';
echo '<img src="' . Theme::theme()->parameter('image-hline') . '" name="boxline' . $factcount . '" id="boxline' . $factcount . '" height="3" width="10" style="padding-';
if (I18N::direction() === 'ltr') {
echo 'left: 3px;">';
} else {
echo 'right: 3px;">';
}
$col = array_search($event->getParent(), $this->people);
if ($col === false) {
// Marriage event - use the color of the husband
$col = array_search($event->getParent()->getHusband(), $this->people);
}
if ($col === false) {
// Marriage event - use the color of the wife
$col = array_search($event->getParent()->getWife(), $this->people);
}
$col = $col % 6;
echo '</td><td class="person' . $col . '">';
if (count($this->people) > 6) {
// We only have six colours, so show naes if more than this number
echo $event->getParent()->getFullName() . ' — ';
}
$record = $event->getParent();
echo $event->getLabel();
echo ' — ';
if ($record instanceof Individual) {
echo FunctionsPrint::formatFactDate($event, $record, false, false);
} elseif ($record instanceof Family) {
echo $gdate->display();
if ($record->getHusband() && $record->getHusband()->getBirthDate()->isOK()) {
$ageh = FunctionsDate::getAgeAtEvent(Date::getAgeGedcom($record->getHusband()->getBirthDate(), $gdate));
} else {
$ageh = null;
}
if ($record->getWife() && $record->getWife()->getBirthDate()->isOK()) {
$agew = FunctionsDate::getAgeAtEvent(Date::getAgeGedcom($record->getWife()->getBirthDate(), $gdate));
} else {
$agew = null;
}
if ($ageh && $agew) {
echo '<span class="age"> ', I18N::translate('Husband’s age'), ' ', $ageh, ' ', I18N::translate('Wife’s age'), ' ', $agew, '</span>';
} elseif ($ageh) {
echo '<span class="age"> ', I18N::translate('Age'), ' ', $ageh, '</span>';
} elseif ($agew) {
echo '<span class="age"> ', I18N::translate('Age'), ' ', $ageh, '</span>';
}
}
echo ' ' . Filter::escapeHtml($desc);
if (!$event->getPlace()->isEmpty()) {
echo ' — ' . $event->getPlace()->getShortName();
}
// Print spouses names for family events
if ($event->getParent() instanceof Family) {
echo ' — <a href="', $event->getParent()->getHtmlUrl(), '">', $event->getParent()->getFullName(), '</a>';
}
echo '</td></tr></table>';
echo '</div>';
if (I18N::direction() === 'ltr') {
$img = 'image-dline2';
$ypos = '0%';
} else {
//.........这里部分代码省略.........