diff options
| author | Greg Roach <fisharebest@gmail.com> | 2015-03-02 08:02:00 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@gmail.com> | 2015-03-02 15:55:40 +0000 |
| commit | 8c2e82270a639a3acf607b432e54721116dae723 (patch) | |
| tree | 6e9829818d82ad365229bbcad744b9b4999bb0fb /app/Module/SourcesTabModule.php | |
| parent | 7126668f8fb92b0cac155adc02efde34bbd890ce (diff) | |
| download | webtrees-8c2e82270a639a3acf607b432e54721116dae723.tar.gz webtrees-8c2e82270a639a3acf607b432e54721116dae723.tar.bz2 webtrees-8c2e82270a639a3acf607b432e54721116dae723.zip | |
Module API
Diffstat (limited to 'app/Module/SourcesTabModule.php')
| -rw-r--r-- | app/Module/SourcesTabModule.php | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/app/Module/SourcesTabModule.php b/app/Module/SourcesTabModule.php new file mode 100644 index 0000000000..fa02dd799a --- /dev/null +++ b/app/Module/SourcesTabModule.php @@ -0,0 +1,139 @@ +<?php +namespace Fisharebest\Webtrees; + +/** + * webtrees: online genealogy + * Copyright (C) 2015 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/>. + */ + +/** + * Class SourcesTabModule + */ +class SourcesTabModule extends Module 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() { + return WT_USER_CAN_EDIT || $this->getFactsWithSources(); + } + + /** {@inheritdoc} */ + public function isGrayedOut() { + return !$this->getFactsWithSources(); + } + + /** {@inheritdoc} */ + public function getTabContent() { + global $controller, $WT_TREE; + + ob_start(); + ?> + <table class="facts_table"> + <tr> + <td colspan="2" class="descriptionbox rela"> + <input id="checkbox_sour2" type="checkbox" <?php echo $WT_TREE->getPreference('SHOW_LEVEL2_NOTES') ? 'checked' : ''; ?> onclick="jQuery('tr.row_sour2').toggle();"> + <label for="checkbox_sour2"><?php echo I18N::translate('Show all sources'), help_link('show_fact_sources'); ?></label> + </td> + </tr> + <?php + foreach ($this->getFactsWithSources() as $fact) { + if ($fact->getTag() == 'SOUR') { + print_main_sources($fact, 1); + } else { + print_main_sources($fact, 2); + } + } + if (!$this->getFactsWithSources()) { + echo '<tr><td id="no_tab4" colspan="2" class="facts_value">', I18N::translate('There are no source citations for this individual.'), '</td></tr>'; + } + + // New Source Link + if ($controller->record->canEdit()) { + ?> + <tr> + <td class="facts_label"> + <?php echo WT_Gedcom_Tag::getLabel('SOUR'); ?> + </td> + <td class="facts_value"> + <a href="#" onclick="add_new_record('<?php echo $controller->record->getXref(); ?>','SOUR'); return false;"> + <?php echo I18N::translate('Add a new source citation'); ?> + </a> + <?php echo help_link('add_source'); ?> + </td> + </tr> + <?php + } + ?> + </table> + <?php + if (!$WT_TREE->getPreference('SHOW_LEVEL2_NOTES')) { + echo '<script>jQuery("tr.row_sour2").toggle();</script>'; + } + + return '<div id="' . $this->getName() . '_content">' . ob_get_clean() . '</div>'; + } + + /** + * 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 ''; + } +} |
