本文整理汇总了PHP中Fisharebest\Webtrees\GedcomTag类的典型用法代码示例。如果您正苦于以下问题:PHP GedcomTag类的具体用法?PHP GedcomTag怎么用?PHP GedcomTag使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了GedcomTag类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
/**
* Startup activity
*
* @param GedcomRecord|null $record
*/
public function __construct(GedcomRecord $record = null)
{
$this->record = $record;
// Automatically fix broken links
if ($this->record && $this->record->canEdit()) {
$broken_links = 0;
foreach ($this->record->getFacts('HUSB|WIFE|CHIL|FAMS|FAMC|REPO') as $fact) {
if (!$fact->isPendingDeletion() && $fact->getTarget() === null) {
$this->record->deleteFact($fact->getFactId(), false);
FlashMessages::addMessage(I18N::translate('The link from “%1$s” to “%2$s” has been deleted.', $this->record->getFullName(), $fact->getValue()));
$broken_links = true;
}
}
foreach ($this->record->getFacts('NOTE|SOUR|OBJE') as $fact) {
// These can be links or inline. Only delete links.
if (!$fact->isPendingDeletion() && $fact->getTarget() === null && preg_match('/^@.*@$/', $fact->getValue())) {
$this->record->deleteFact($fact->getFactId(), false);
FlashMessages::addMessage(I18N::translate('The link from “%1$s” to “%2$s” has been deleted.', $this->record->getFullName(), $fact->getValue()));
$broken_links = true;
}
}
if ($broken_links) {
// Reload the updated family
$this->record = GedcomRecord::getInstance($this->record->getXref(), $this->record->getTree());
}
}
parent::__construct();
// We want robots to index this page
$this->setMetaRobots('index,follow');
// Set a page title
if ($this->record) {
if ($this->record->canShowName()) {
// e.g. "John Doe" or "1881 Census of Wales"
$this->setPageTitle($this->record->getFullName());
} else {
// e.g. "Individual" or "Source"
$record = $this->record;
$this->setPageTitle(GedcomTag::getLabel($record::RECORD_TYPE));
}
} else {
// No such record
$this->setPageTitle(I18N::translate('Private'));
}
}
示例2: configureBlock
//.........这里部分代码省略.........
</tr>
<tr>
<td class="facts_label">' . I18N::translate('Latest death year') . '</td>
<td class="facts_value" align="right">#lastDeathYear#</td>
<td class="facts_value">#lastDeath#</td>
</tr>
<tr>
<td class="facts_label">' . I18N::translate('Individual who lived the longest') . '</td>
<td class="facts_value" align="right">#longestLifeAge#</td>
<td class="facts_value">#longestLife#</td>
</tr>
<tr>
<td class="facts_label">' . I18N::translate('Average age at death') . '</td>
<td class="facts_value" align="right">#averageLifespan#</td>
<td class="facts_value"></td>
</tr>
<tr>
<td class="facts_label">' . I18N::translate('Family with the most children') . '</td>
<td class="facts_value" align="right">#largestFamilySize#</td>
<td class="facts_value">#largestFamily#</td>
</tr>
<tr>
<td class="facts_label">' . I18N::translate('Average number of children per family') . '</td>
<td class="facts_value" align="right">#averageChildren#</td>
<td class="facts_value"></td>
</tr>
</table>
</td>
</tr>
</table><br>
<span style="font-weight: bold;">' . I18N::translate('Most common surnames') . '</span><br>
#commonSurnames#
</div>');
$title = $this->getBlockSetting($block_id, 'title');
$html = $this->getBlockSetting($block_id, 'html');
$gedcom = $this->getBlockSetting($block_id, 'gedcom');
$show_timestamp = $this->getBlockSetting($block_id, 'show_timestamp', '0');
$languages = explode(',', $this->getBlockSetting($block_id, 'languages'));
echo '<tr><td class="descriptionbox wrap">', GedcomTag::getLabel('TITL'), '</td><td class="optionbox"><input type="text" name="title" size="30" value="', Filter::escapeHtml($title), '"></td></tr>';
// templates
echo '<tr><td class="descriptionbox wrap">', I18N::translate('Templates'), '</td><td class="optionbox wrap">';
// The CK editor needs lots of help to load/save data :-(
if (Module::getModuleByName('ckeditor')) {
$ckeditor_onchange = 'CKEDITOR.instances.html.setData(document.block.html.value);';
} else {
$ckeditor_onchange = '';
}
echo '<select name="template" onchange="document.block.html.value=document.block.template.options[document.block.template.selectedIndex].value;', $ckeditor_onchange, '">';
echo '<option value="', Filter::escapeHtml($html), '">', I18N::translate('Custom'), '</option>';
foreach ($templates as $title => $template) {
echo '<option value="', Filter::escapeHtml($template), '">', $title, '</option>';
}
echo '</select>';
if (!$html) {
echo '<p>', I18N::translate('To assist you in getting started with this block, we have created several standard templates. When you select one of these templates, the text area will contain a copy that you can then alter to suit your site’s requirements.'), '</p>';
}
echo '</td></tr>';
if (count(Tree::getAll()) > 1) {
if ($gedcom == '__current__') {
$sel_current = 'selected';
} else {
$sel_current = '';
}
if ($gedcom == '__default__') {
$sel_default = 'selected';
} else {
$sel_default = '';
}
echo '<tr><td class="descriptionbox wrap">', I18N::translate('Family tree'), '</td><td class="optionbox">', '<select name="gedcom">', '<option value="__current__" ', $sel_current, '>', I18N::translate('Current'), '</option>', '<option value="__default__" ', $sel_default, '>', I18N::translate('Default'), '</option>';
foreach (Tree::getAll() as $tree) {
if ($tree->getName() === $gedcom) {
$sel = 'selected';
} else {
$sel = '';
}
echo '<option value="', $tree->getNameHtml(), '" ', $sel, '>', $tree->getTitleHtml(), '</option>';
}
echo '</select>';
echo '</td></tr>';
}
// html
echo '<tr><td colspan="2" class="descriptionbox">', I18N::translate('Content');
if (!$html) {
echo '<p>', I18N::translate('As well as using the toolbar to apply HTML formatting, you can insert database fields which are updated automatically. These special fields are marked with <b>#</b> characters. For example <b>#totalFamilies#</b> will be replaced with the actual number of families in the database. Advanced users may wish to apply CSS classes to their text, so that the formatting matches the currently selected theme.'), '</p>';
}
echo '</td></tr><tr>', '<td colspan="2" class="optionbox">';
echo '<textarea name="html" class="html-edit" rows="10" style="width:98%;">', Filter::escapeHtml($html), '</textarea>';
echo '</td></tr>';
echo '<tr><td class="descriptionbox wrap">';
echo I18N::translate('Show the date and time of update');
echo '</td><td class="optionbox">';
echo FunctionsEdit::editFieldYesNo('show_timestamp', $show_timestamp);
echo '<input type="hidden" name="timestamp" value="', WT_TIMESTAMP, '">';
echo '</td></tr>';
echo '<tr><td class="descriptionbox wrap">';
echo I18N::translate('Show this block for which languages?');
echo '</td><td class="optionbox">';
echo FunctionsEdit::editLanguageCheckboxes('lang', $languages);
echo '</td></tr>';
}
示例3:
?>
</option>
<option value="BURI" <?php
echo $filterev === 'BURI' ? 'selected' : '';
?>
>
<?php
echo GedcomTag::getLabel('BURI');
?>
</option>
<option value="IMMI,EMIG" <?php
echo $filterev === 'IMMI,EMIG' ? 'selected' : '';
?>
>
<?php
echo GedcomTag::getLabel('EMIG');
?>
</option>
<option value="EVEN" <?php
echo $filterev === 'EVEN' ? 'selected' : '';
?>
>
<?php
echo I18N::translate('Custom event');
?>
</option>
</select>
</td>
</tr>
</table>
示例4: foreach
if ($type === 'media') {
$medialist = QueryMedia::mediaList('', 'include', 'title', $filter, '');
echo '<div id="find-output">';
if ($medialist) {
foreach ($medialist as $media) {
echo '<div class="find-media-media">';
echo '<div class="find-media-thumb">', $media->displayImage(), '</div>';
echo '<div class="find-media-details">', $media->getFullName(), '</div>';
if (!$embed) {
echo '<p><a href="#" dir="auto" onclick="pasteid(\'', $media->getXref(), '\');">', $media->getFilename(), '</a></p>';
} else {
echo '<p><a href="#" dir="auto" onclick="pasteid(\'', $media->getXref(), '\', \'', '\', \'', Filter::escapeJs($media->getFilename()), '\');">', Filter::escapeHtml($media->getFilename()), '</a></p> ';
}
if ($media->fileExists()) {
$imgsize = $media->getImageAttributes();
echo GedcomTag::getLabelValue('__IMAGE_SIZE__', $imgsize['WxH']);
}
echo '<ul>';
$found = false;
foreach ($media->linkedIndividuals('OBJE') as $indindividual) {
echo '<li>', $indindividual->getFullName(), '</li>';
$found = true;
}
foreach ($media->linkedFamilies('OBJE') as $family) {
echo '<li>', $family->getFullName(), '</li>';
$found = true;
}
foreach ($media->linkedSources('OBJE') as $source) {
echo '<li>', $source->getFullName(), '</li>';
$found = true;
}
示例5: printAddNewFact
/**
* Print a new fact box on details pages
*
* @param string $id the id of the person, family, source etc the fact will be added to
* @param array $usedfacts an array of facts already used in this record
* @param string $type the type of record INDI, FAM, SOUR etc
*/
public static function printAddNewFact($id, $usedfacts, $type)
{
global $WT_TREE;
// -- Add from clipboard
if (is_array(Session::get('clipboard'))) {
$newRow = true;
foreach (array_reverse(Session::get('clipboard'), true) as $fact_id => $fact) {
if ($fact["type"] == $type || $fact["type"] == 'all') {
if ($newRow) {
$newRow = false;
echo '<tr><td class="descriptionbox">';
echo I18N::translate('Add from clipboard'), '</td>';
echo '<td class="optionbox wrap"><form method="get" name="newFromClipboard" action="?" onsubmit="return false;">';
echo '<select id="newClipboardFact">';
}
echo '<option value="', Filter::escapeHtml($fact_id), '">', GedcomTag::getLabel($fact['fact']);
// TODO use the event class to store/parse the clipboard events
if (preg_match('/^2 DATE (.+)/m', $fact['factrec'], $match)) {
$tmp = new Date($match[1]);
echo '; ', $tmp->minimumDate()->format('%Y');
}
if (preg_match('/^2 PLAC ([^,\\n]+)/m', $fact['factrec'], $match)) {
echo '; ', $match[1];
}
echo '</option>';
}
}
if (!$newRow) {
echo '</select>';
echo ' <input type="button" value="', I18N::translate('Add'), "\" onclick=\"return paste_fact('{$id}', '#newClipboardFact');\"> ";
echo '</form></td></tr>', "\n";
}
}
// -- Add from pick list
switch ($type) {
case "INDI":
$addfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('INDI_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
$uniquefacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('INDI_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
$quickfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('INDI_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
break;
case "FAM":
$addfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('FAM_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
$uniquefacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('FAM_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
$quickfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('FAM_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
break;
case "SOUR":
$addfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('SOUR_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
$uniquefacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('SOUR_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
$quickfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('SOUR_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
break;
case "NOTE":
$addfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('NOTE_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
$uniquefacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('NOTE_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
$quickfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('NOTE_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
break;
case "REPO":
$addfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('REPO_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
$uniquefacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('REPO_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
$quickfacts = preg_split("/[, ;:]+/", $WT_TREE->getPreference('REPO_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
break;
default:
return;
}
$addfacts = array_merge(self::checkFactUnique($uniquefacts, $usedfacts, $type), $addfacts);
$quickfacts = array_intersect($quickfacts, $addfacts);
$translated_addfacts = array();
foreach ($addfacts as $addfact) {
$translated_addfacts[$addfact] = GedcomTag::getLabel($addfact);
}
uasort($translated_addfacts, function ($x, $y) {
return I18N::strcasecmp(I18N::translate($x), I18N::translate($y));
});
echo '<tr><td class="descriptionbox">';
echo I18N::translate('Fact or event');
echo '</td>';
echo '<td class="optionbox wrap">';
echo '<form method="get" name="newfactform" action="?" onsubmit="return false;">';
echo '<select id="newfact" name="newfact">';
echo '<option value="" disabled selected>' . I18N::translate('<select>') . '</option>';
foreach ($translated_addfacts as $fact => $fact_name) {
echo '<option value="', $fact, '">', $fact_name, '</option>';
}
if ($type == 'INDI' || $type == 'FAM') {
echo '<option value="FACT">', I18N::translate('Custom fact'), '</option>';
echo '<option value="EVEN">', I18N::translate('Custom event'), '</option>';
}
echo '</select>';
echo '<input type="button" value="', I18N::translate('Add'), '" onclick="add_record(\'' . $id . '\', \'newfact\');">';
echo '<span class="quickfacts">';
foreach ($quickfacts as $fact) {
echo '<a href="#" onclick="add_new_record(\'' . $id . '\', \'' . $fact . '\');return false;">', GedcomTag::getLabel($fact), '</a>';
}
echo '</span></form>';
//.........这里部分代码省略.........
示例6: eventQuery
/**
* Events
*
* @param string $type
* @param string $direction
* @param string $facts
*
* @return string
*/
private function eventQuery($type, $direction, $facts)
{
$eventTypes = array('BIRT' => I18N::translate('birth'), 'DEAT' => I18N::translate('death'), 'MARR' => I18N::translate('marriage'), 'ADOP' => I18N::translate('adoption'), 'BURI' => I18N::translate('burial'), 'CENS' => I18N::translate('census added'));
$fact_query = "IN ('" . str_replace('|', "','", $facts) . "')";
if ($direction != 'ASC') {
$direction = 'DESC';
}
$rows = $this->runSql('' . ' SELECT SQL_CACHE' . ' d_gid AS id,' . ' d_year AS year,' . ' d_fact AS fact,' . ' d_type AS type' . ' FROM' . " `##dates`" . ' WHERE' . " d_file={$this->tree->getTreeId()} AND" . " d_gid<>'HEAD' AND" . " d_fact {$fact_query} AND" . ' d_julianday1<>0' . ' ORDER BY' . " d_julianday1 {$direction}, d_type LIMIT 1");
if (!isset($rows[0])) {
return '';
}
$row = $rows[0];
$record = GedcomRecord::getInstance($row['id'], $this->tree);
switch ($type) {
default:
case 'full':
if ($record->canShow()) {
$result = $record->formatList('span', false, $record->getFullName());
} else {
$result = I18N::translate('This information is private and cannot be shown.');
}
break;
case 'year':
$date = new Date($row['type'] . ' ' . $row['year']);
$result = $date->display();
break;
case 'type':
if (isset($eventTypes[$row['fact']])) {
$result = $eventTypes[$row['fact']];
} else {
$result = GedcomTag::getLabel($row['fact']);
}
break;
case 'name':
$result = "<a href=\"" . $record->getHtmlUrl() . "\">" . $record->getFullName() . "</a>";
break;
case 'place':
$fact = $record->getFirstFact($row['fact']);
if ($fact) {
$result = FunctionsPrint::formatFactPlace($fact, true, true, true);
} else {
$result = I18N::translate('Private');
}
break;
}
return $result;
}
示例7: adminPlaces
//.........这里部分代码省略.........
}
?>
<a href="module.php?mod=googlemap&mod_action=admin_places&parent=0&inactive=', $inactive, '"><?php
echo I18N::translate('Top level');
?>
</a>
</p>
<form class="form-inline" name="active" method="post" action="module.php?mod=googlemap&mod_action=admin_places&parent=', $parent, '&inactive=', $inactive, '">
<div class="checkbox">
<label for="inactive">
<?php
echo FunctionsEdit::checkbox('inactive', $inactive, 'onclick="updateList(this.checked)"');
?>
<?php
echo I18N::translate('Show inactive places');
?>
</label>
</div>
<p class="small text-muted">
<?php
echo I18N::translate('By default, the list shows only those places which can be found in your family trees. You may have details for other places, such as those imported in bulk from an external file. Selecting this option will show all places, including ones that are not currently used.');
?>
<?php
echo I18N::translate('If you have a large number of inactive places, it can be slow to generate the list.');
?>
</p>
</form>
<?php
$placelist = $this->getPlaceListLocation($parent, $inactive);
echo '<div class="gm_plac_edit">';
echo '<table class="table table-bordered table-condensed table-hover"><tr>';
echo '<th>', GedcomTag::getLabel('PLAC'), '</th>';
echo '<th>', GedcomTag::getLabel('LATI'), '</th>';
echo '<th>', GedcomTag::getLabel('LONG'), '</th>';
echo '<th>', I18N::translate('Zoom level'), '</th>';
echo '<th>', I18N::translate('Icon'), '</th>';
echo '<th>';
echo I18N::translate('Edit'), '</th><th>', I18N::translate('Delete'), '</th></tr>';
if (count($placelist) == 0) {
echo '<tr><td colspan="7">', I18N::translate('No places found'), '</td></tr>';
}
foreach ($placelist as $place) {
echo '<tr><td><a href="module.php?mod=googlemap&mod_action=admin_places&parent=', $place['place_id'], '&inactive=', $inactive, '">';
if ($place['place'] != 'Unknown') {
echo Filter::escapeHtml($place['place']), '</a></td>';
} else {
echo I18N::translate('unknown'), '</a></td>';
}
echo '<td>', $place['lati'], '</td>';
echo '<td>', $place['long'], '</td>';
echo '<td>', $place['zoom'], '</td>';
echo '<td>';
if ($place['icon']) {
echo '<img src="', WT_STATIC_URL, WT_MODULES_DIR, 'googlemap/', $place['icon'], '" width="25" height="15">';
} else {
if ($place['lati'] || $place['long']) {
echo '<img src="', WT_STATIC_URL, WT_MODULES_DIR, 'googlemap/images/mm_20_red.png">';
} else {
echo '<img src="', WT_STATIC_URL, WT_MODULES_DIR, 'googlemap/images/mm_20_yellow.png">';
}
}
echo '</td>';
echo '<td class="narrow"><a href="#" onclick="edit_place_location(', $place['place_id'], ');return false;" class="icon-edit" title="', I18N::translate('Edit'), '"></a></td>';
$noRows = Database::prepare("SELECT COUNT(pl_id) FROM `##placelocation` WHERE pl_parent_id=?")->execute(array($place['place_id']))->fetchOne();
示例8: fillTimeline
/**
* Populate the timeline
*
* @return int
*/
public function fillTimeline()
{
$rows = array();
$maxY = self::CHART_TOP;
//base case
if (!$this->people) {
return $maxY;
}
foreach ($this->people as $person) {
$bdate = $this->getCalendarDate($person->getEstimatedBirthDate()->minimumJulianDay());
$ddate = $this->getCalendarDate($person->getEstimatedDeathDate()->maximumJulianDay());
$birthYear = $bdate->y;
$age = min($ddate->y, $this->currentYear) - $birthYear;
// truncate the bar at the current year
$width = max(9, $age * self::PIXELS_PER_YEAR);
// min width is width of sex icon
$startPos = ($birthYear - $this->timelineMinYear) * self::PIXELS_PER_YEAR;
//-- calculate a good Y top value
$Y = self::CHART_TOP;
$ready = false;
while (!$ready) {
if (!isset($rows[$Y])) {
$ready = true;
$rows[$Y]['x1'] = $startPos;
$rows[$Y]['x2'] = $startPos + $width;
} else {
if ($rows[$Y]['x1'] > $startPos + $width) {
$ready = true;
$rows[$Y]['x1'] = $startPos;
} elseif ($rows[$Y]['x2'] < $startPos) {
$ready = true;
$rows[$Y]['x2'] = $startPos + $width;
} else {
//move down a line
$Y += self::BAR_SPACING;
}
}
}
$facts = $person->getFacts();
foreach ($person->getSpouseFamilies() as $family) {
foreach ($family->getFacts() as $fact) {
$facts[] = $fact;
}
}
Functions::sortFacts($facts);
$that = $this;
// PHP5.3 cannot access $this inside a closure
$acceptedFacts = array_filter($facts, function (Fact $fact) use($that) {
return in_array($fact->getTag(), $that->facts) && $fact->getDate()->isOK() || ($that->place_obj || $that->startDate) && $that->checkFact($fact);
});
$eventList = array();
foreach ($acceptedFacts as $fact) {
$tag = $fact->getTag();
//-- if the fact is a generic EVENt then get the qualifying TYPE
if ($tag == "EVEN") {
$tag = $fact->getAttribute('TYPE');
}
$eventList[] = array('label' => GedcomTag::getLabel($tag), 'date' => $fact->getDate()->display(), 'place' => $fact->getPlace()->getFullName());
}
$direction = I18N::direction() === 'ltr' ? 'left' : 'right';
$lifespan = ' ' . $person->getLifeSpan();
// put the space here so its included in the length calcs
$sex = $person->getSex();
$popupClass = strtr($sex, array('M' => '', 'U' => 'NN'));
$color = $sex === 'U' ? '' : sprintf("background-color: %s", $this->colors[$sex]->getNextColor());
// following lines are a nasty method of approximating
// the width of a string in pixels from the character count
$name_length = mb_strlen(strip_tags($person->getFullName())) * 6.5;
$short_name_length = mb_strlen(strip_tags($person->getShortName())) * 6.5;
$lifespan_length = mb_strlen(strip_tags($lifespan)) * 6.5;
if ($width > $name_length + $lifespan_length) {
$printName = $person->getFullName();
$abbrLifespan = $lifespan;
} elseif ($width > $name_length) {
$printName = $person->getFullName();
$abbrLifespan = '…';
} elseif ($width > $short_name_length) {
$printName = $person->getShortName();
$abbrLifespan = '';
} else {
$printName = '';
$abbrLifespan = '';
}
// Bar framework
printf('
<div class="person_box%s" style="top:%spx; %s:%spx; width:%spx; %s">
<div class="itr">%s %s %s
<div class="popup person_box%s">
<div>
<a href="%s">%s%s</a>
</div>', $popupClass, $Y, $direction, $startPos, $width, $color, $person->getSexImage(), $printName, $abbrLifespan, $popupClass, $person->getHtmlUrl(), $person->getFullName(), $lifespan);
// Add events to popup
foreach ($eventList as $event) {
printf("<div>%s: %s %s</div>", $event['label'], $event['date'], $event['place']);
}
//.........这里部分代码省略.........
示例9:
type="text"
value="<?php
echo Filter::escapeHtml($WT_TREE->getPreference('GEONAMES_ACCOUNT'));
?>
"
>
<p class="small text-muted">
<?php
echo I18N::translate('The website www.geonames.org provides a large database of place names. This can be searched when entering new places. To use this feature, you must register for a free account at www.geonames.org and provide the username.');
?>
</p>
</div>
</div>
<h3><?php
echo GedcomTag::getLabel('TEXT');
?>
</h3>
<!-- FORMAT_TEXT -->
<fieldset class="form-group">
<legend class="control-label col-sm-3">
<?php
echo I18N::translate('Format text and notes');
?>
</legend>
<div class="col-sm-9">
<?php
echo FunctionsEdit::radioButtons('FORMAT_TEXT', $formats, $WT_TREE->getPreference('FORMAT_TEXT'), 'class="radio-inline"');
?>
<p class="small text-muted">
示例10: icon
/**
* Display an icon for this fact.
*
* @param Fact $fact
*
* @return string
*/
public function icon(Fact $fact)
{
$icon = 'images/facts/' . $fact->getTag() . '.png';
$dir = substr($this->assetUrl(), strlen(WT_STATIC_URL));
if (file_exists($dir . $icon)) {
return '<img src="' . $this->assetUrl() . $icon . '" title="' . GedcomTag::getLabel($fact->getTag()) . '">';
} elseif (file_exists($dir . 'images/facts/NULL.png')) {
// Spacer image - for alignment - until we move to a sprite.
return '<img src="' . Theme::theme()->assetUrl() . 'images/facts/NULL.png">';
} else {
return '';
}
}
示例11: function
// Sort the facts
usort($facts, function (Fact $x, Fact $y) {
static $order = array('TITL' => 0, 'ABBR' => 1, 'AUTH' => 2, 'DATA' => 3, 'PUBL' => 4, 'TEXT' => 5, 'NOTE' => 6, 'OBJE' => 7, 'REFN' => 8, 'RIN' => 9, '_UID' => 10, 'CHAN' => 11);
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
示例12: format_type
/**
* Format a record type.
*
* @param string $type
*
* @return string
*/
function format_type($type)
{
return '<b title="' . strip_tags(GedcomTag::getLabel($type)) . '">' . $type . '</b>';
}
示例13:
<th class="descriptionbox" colspan="4">
<?php
echo I18N::translate('Select individuals by place or date');
?>
</th>
<th class="descriptionbox" colspan="2">
<?php
echo I18N::translate('Add individuals');
?>
</th>
</tr>
<tr>
<td class="optionbox">
<label for="place">
<?php
echo GedcomTag::getLabel('PLAC');
?>
</label>
</td>
<td class="optionbox" colspan="3">
<input id="place" data-autocomplete-type="PLAC" type="text" size="30" name="place">
</td>
<td class="optionbox">
<label for="newpid">
<?php
echo I18N::translate('Individual');
?>
</label>
</td>
<td class="optionbox">
<input id="newpid" class="pedigree_form" data-autocomplete-type="INDI" type="text" size="5" name="newpid"><?php
示例14: configureBlock
/**
* An HTML form to edit block settings
*
* @param int $block_id
*/
public function configureBlock($block_id)
{
if (Filter::postBool('save') && Filter::checkCsrf()) {
$this->setBlockSetting($block_id, 'filter', Filter::post('filter', 'indi|event|all', 'all'));
$this->setBlockSetting($block_id, 'controls', Filter::postBool('controls'));
$this->setBlockSetting($block_id, 'start', Filter::postBool('start'));
$this->setBlockSetting($block_id, 'filter_avi', Filter::postBool('filter_avi'));
$this->setBlockSetting($block_id, 'filter_bmp', Filter::postBool('filter_bmp'));
$this->setBlockSetting($block_id, 'filter_gif', Filter::postBool('filter_gif'));
$this->setBlockSetting($block_id, 'filter_jpeg', Filter::postBool('filter_jpeg'));
$this->setBlockSetting($block_id, 'filter_mp3', Filter::postBool('filter_mp3'));
$this->setBlockSetting($block_id, 'filter_ole', Filter::postBool('filter_ole'));
$this->setBlockSetting($block_id, 'filter_pcx', Filter::postBool('filter_pcx'));
$this->setBlockSetting($block_id, 'filter_pdf', Filter::postBool('filter_pdf'));
$this->setBlockSetting($block_id, 'filter_png', Filter::postBool('filter_png'));
$this->setBlockSetting($block_id, 'filter_tiff', Filter::postBool('filter_tiff'));
$this->setBlockSetting($block_id, 'filter_wav', Filter::postBool('filter_wav'));
$this->setBlockSetting($block_id, 'filter_audio', Filter::postBool('filter_audio'));
$this->setBlockSetting($block_id, 'filter_book', Filter::postBool('filter_book'));
$this->setBlockSetting($block_id, 'filter_card', Filter::postBool('filter_card'));
$this->setBlockSetting($block_id, 'filter_certificate', Filter::postBool('filter_certificate'));
$this->setBlockSetting($block_id, 'filter_coat', Filter::postBool('filter_coat'));
$this->setBlockSetting($block_id, 'filter_document', Filter::postBool('filter_document'));
$this->setBlockSetting($block_id, 'filter_electronic', Filter::postBool('filter_electronic'));
$this->setBlockSetting($block_id, 'filter_fiche', Filter::postBool('filter_fiche'));
$this->setBlockSetting($block_id, 'filter_film', Filter::postBool('filter_film'));
$this->setBlockSetting($block_id, 'filter_magazine', Filter::postBool('filter_magazine'));
$this->setBlockSetting($block_id, 'filter_manuscript', Filter::postBool('filter_manuscript'));
$this->setBlockSetting($block_id, 'filter_map', Filter::postBool('filter_map'));
$this->setBlockSetting($block_id, 'filter_newspaper', Filter::postBool('filter_newspaper'));
$this->setBlockSetting($block_id, 'filter_other', Filter::postBool('filter_other'));
$this->setBlockSetting($block_id, 'filter_painting', Filter::postBool('filter_painting'));
$this->setBlockSetting($block_id, 'filter_photo', Filter::postBool('filter_photo'));
$this->setBlockSetting($block_id, 'filter_tombstone', Filter::postBool('filter_tombstone'));
$this->setBlockSetting($block_id, 'filter_video', Filter::postBool('filter_video'));
}
$filter = $this->getBlockSetting($block_id, 'filter', 'all');
$controls = $this->getBlockSetting($block_id, 'controls', '1');
$start = $this->getBlockSetting($block_id, 'start', '0') || Filter::getBool('start');
echo '<tr><td class="descriptionbox wrap width33">';
echo I18N::translate('Show only individuals, events, or all');
echo '</td><td class="optionbox">';
echo FunctionsEdit::selectEditControl('filter', array('indi' => I18N::translate('Individuals'), 'event' => I18N::translate('Facts and events'), 'all' => I18N::translate('All')), null, $filter, '');
echo '</td></tr>';
$filters = array('avi' => $this->getBlockSetting($block_id, 'filter_avi', '0'), 'bmp' => $this->getBlockSetting($block_id, 'filter_bmp', '1'), 'gif' => $this->getBlockSetting($block_id, 'filter_gif', '1'), 'jpeg' => $this->getBlockSetting($block_id, 'filter_jpeg', '1'), 'mp3' => $this->getBlockSetting($block_id, 'filter_mp3', '0'), 'ole' => $this->getBlockSetting($block_id, 'filter_ole', '1'), 'pcx' => $this->getBlockSetting($block_id, 'filter_pcx', '1'), 'pdf' => $this->getBlockSetting($block_id, 'filter_pdf', '0'), 'png' => $this->getBlockSetting($block_id, 'filter_png', '1'), 'tiff' => $this->getBlockSetting($block_id, 'filter_tiff', '1'), 'wav' => $this->getBlockSetting($block_id, 'filter_wav', '0'), 'audio' => $this->getBlockSetting($block_id, 'filter_audio', '0'), 'book' => $this->getBlockSetting($block_id, 'filter_book', '1'), 'card' => $this->getBlockSetting($block_id, 'filter_card', '1'), 'certificate' => $this->getBlockSetting($block_id, 'filter_certificate', '1'), 'coat' => $this->getBlockSetting($block_id, 'filter_coat', '1'), 'document' => $this->getBlockSetting($block_id, 'filter_document', '1'), 'electronic' => $this->getBlockSetting($block_id, 'filter_electronic', '1'), 'fiche' => $this->getBlockSetting($block_id, 'filter_fiche', '1'), 'film' => $this->getBlockSetting($block_id, 'filter_film', '1'), 'magazine' => $this->getBlockSetting($block_id, 'filter_magazine', '1'), 'manuscript' => $this->getBlockSetting($block_id, 'filter_manuscript', '1'), 'map' => $this->getBlockSetting($block_id, 'filter_map', '1'), 'newspaper' => $this->getBlockSetting($block_id, 'filter_newspaper', '1'), 'other' => $this->getBlockSetting($block_id, 'filter_other', '1'), 'painting' => $this->getBlockSetting($block_id, 'filter_painting', '1'), 'photo' => $this->getBlockSetting($block_id, 'filter_photo', '1'), 'tombstone' => $this->getBlockSetting($block_id, 'filter_tombstone', '1'), 'video' => $this->getBlockSetting($block_id, 'filter_video', '0'));
?>
<tr>
<td class="descriptionbox wrap width33">
<?php
echo I18N::translate('Filter');
?>
</td>
<td class="optionbox">
<center><b><?php
echo GedcomTag::getLabel('FORM');
?>
</b></center>
<table class="width100">
<tr>
<td class="width33">
<label>
<input type="checkbox" value="yes" name="filter_avi" <?php
echo $filters['avi'] ? 'checked' : '';
?>
>
avi
</td>
<td class="width33">
<label>
<input type="checkbox" value="yes" name="filter_bmp" <?php
echo $filters['bmp'] ? 'checked' : '';
?>
>
bmp
</label>
</td>
<td class="width33">
<label>
<input type="checkbox" value="yes" name="filter_gif" <?php
echo $filters['gif'] ? 'checked' : '';
?>
>
gif
</label>
</td>
</tr>
<tr>
<td class="width33">
<label>
<input type="checkbox" value="yes" name="filter_jpeg" <?php
echo $filters['jpeg'] ? 'checked' : '';
?>
>
jpeg
</label>
//.........这里部分代码省略.........
示例15: printMainMedia
/**
* Print a row for the media tab on the individual page.
*
* @param Fact $fact
* @param int $level
*/
public static function printMainMedia(Fact $fact, $level)
{
$factrec = $fact->getGedcom();
$parent = $fact->getParent();
if ($fact->isPendingAddition()) {
$styleadd = 'new';
$can_edit = $level == 1 && $fact->canEdit();
} elseif ($fact->isPendingDeletion()) {
$styleadd = 'old';
$can_edit = false;
} else {
$styleadd = '';
$can_edit = $level == 1 && $fact->canEdit();
}
// -- find source for each fact
preg_match_all('/(?:^|\\n)' . $level . ' OBJE @(.*)@/', $factrec, $matches);
foreach ($matches[1] as $xref) {
$media = Media::getInstance($xref, $fact->getParent()->getTree());
// Allow access to "1 OBJE @non_existent_source@", so it can be corrected/deleted
if (!$media || $media->canShow()) {
if ($level > 1) {
echo '<tr class="row_obje2">';
} else {
echo '<tr>';
}
echo '<td class="descriptionbox';
if ($level > 1) {
echo ' rela';
}
echo ' ', $styleadd, ' width20">';
preg_match("/^\\d (\\w*)/", $factrec, $factname);
$factlines = explode("\n", $factrec);
// 1 BIRT Y\n2 SOUR ...
$factwords = explode(" ", $factlines[0]);
// 1 BIRT Y
$factname = $factwords[1];
// BIRT
if ($factname == 'EVEN' || $factname == 'FACT') {
// Add ' EVEN' to provide sensible output for an event with an empty TYPE record
$ct = preg_match("/2 TYPE (.*)/", $factrec, $ematch);
if ($ct > 0) {
$factname = $ematch[1];
echo $factname;
} else {
echo GedcomTag::getLabel($factname, $parent);
}
} elseif ($can_edit) {
echo '<a onclick="window.open(\'addmedia.php?action=editmedia&pid=', $media->getXref(), '\', \'_blank\', edit_window_specs); return false;" href="#" title="', I18N::translate('Edit'), '">';
echo GedcomTag::getLabel($factname, $parent), '</a>';
echo '<div class="editfacts">';
echo '<div class="editlink"><a class="editicon" onclick="window.open(\'addmedia.php?action=editmedia&pid=', $media->getXref(), '\', \'_blank\', edit_window_specs); return false;" href="#" title="', I18N::translate('Edit'), '"><span class="link_text">', I18N::translate('Edit'), '</span></a></div>';
echo '<div class="copylink"><a class="copyicon" href="#" onclick="jQuery.post(\'action.php\',{action:\'copy-fact\', type:\'\', factgedcom:\'' . rawurlencode($factrec) . '\'},function(){location.reload();})" title="' . I18N::translate('Copy') . '"><span class="link_text">' . I18N::translate('Copy') . '</span></a></div>';
echo '<div class="deletelink"><a class="deleteicon" onclick="return delete_fact(\'', I18N::translate('Are you sure you want to delete this fact?'), '\', \'', $parent->getXref(), '\', \'', $fact->getFactId(), '\');" href="#" title="', I18N::translate('Delete'), '"><span class="link_text">', I18N::translate('Delete'), '</span></a></div>';
echo '</div>';
} else {
echo GedcomTag::getLabel($factname, $parent);
}
echo '</td>';
echo '<td class="optionbox ', $styleadd, ' wrap">';
if ($media) {
echo '<span class="field">';
echo $media->displayImage();
echo '<a href="' . $media->getHtmlUrl() . '">';
echo '<em>';
foreach ($media->getAllNames() as $name) {
if ($name['type'] != 'TITL') {
echo '<br>';
}
echo $name['full'];
}
echo '</em>';
echo '</a>';
echo '</span>';
echo GedcomTag::getLabelValue('FORM', $media->mimeType());
$imgsize = $media->getImageAttributes('main');
if (!empty($imgsize['WxH'])) {
echo GedcomTag::getLabelValue('__IMAGE_SIZE__', $imgsize['WxH']);
}
if ($media->getFilesizeraw() > 0) {
echo GedcomTag::getLabelValue('__FILE_SIZE__', $media->getFilesize());
}
$mediatype = $media->getMediaType();
if ($mediatype) {
echo GedcomTag::getLabelValue('TYPE', GedcomTag::getFileFormTypeValue($mediatype));
}
switch ($media->isPrimary()) {
case 'Y':
echo GedcomTag::getLabelValue('_PRIM', I18N::translate('yes'));
break;
case 'N':
echo GedcomTag::getLabelValue('_PRIM', I18N::translate('no'));
break;
}
echo FunctionsPrint::printFactNotes($media->getGedcom(), 1);
//.........这里部分代码省略.........