. */ /** * Class SourcesTabModule */ class SourcesTabModule extends AbstractModule implements ModuleTabInterface { private $facts; /** {@inheritdoc} */ public function getTitle() { return /* I18N: Name of a module */ I18N::translate('Sources'); } /** {@inheritdoc} */ public function getDescription() { return /* I18N: Description of the “Sources” module */ I18N::translate('A tab showing the sources linked to an individual.'); } /** {@inheritdoc} */ public function defaultTabOrder() { return 30; } /** {@inheritdoc} */ public function hasTabContent() { global $WT_TREE; return Auth::isEditor($WT_TREE) || $this->getFactsWithSources(); } /** {@inheritdoc} */ public function isGrayedOut() { return !$this->getFactsWithSources(); } /** {@inheritdoc} */ public function getTabContent() { global $controller, $WT_TREE; ob_start(); ?> getFactsWithSources() as $fact) { if ($fact->getTag() == 'SOUR') { print_main_sources($fact, 1); } else { print_main_sources($fact, 2); } } if (!$this->getFactsWithSources()) { echo ''; } // New Source Link if ($controller->record->canEdit()) { ?>
getPreference('SHOW_LEVEL2_NOTES') ? 'checked' : ''; ?> onclick="jQuery('tr.row_sour2').toggle();">
', I18N::translate('There are no source citations for this individual.'), '
getPreference('SHOW_LEVEL2_NOTES')) { echo ''; } return '
' . ob_get_clean() . '
'; } /** * Get all the facts for an individual which contain sources. * * @return Fact[] */ private function getFactsWithSources() { global $controller; if ($this->facts === null) { $facts = $controller->record->getFacts(); foreach ($controller->record->getSpouseFamilies() as $family) { if ($family->canShow()) { foreach ($family->getFacts() as $fact) { $facts[] = $fact; } } } $this->facts = array(); foreach ($facts as $fact) { if (preg_match('/(?:^1|\n\d) SOUR/', $fact->getGedcom())) { $this->facts[] = $fact; } } sort_facts($this->facts); } return $this->facts; } /** {@inheritdoc} */ public function canLoadAjax() { return !Auth::isSearchEngine(); // Search engines cannot use AJAX } /** {@inheritdoc} */ public function getPreLoadContent() { return ''; } }