summaryrefslogtreecommitdiff
path: root/modules_v3/family_nav/module.php
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2015-03-02 08:02:00 +0000
committerGreg Roach <fisharebest@gmail.com>2015-03-02 15:55:40 +0000
commit8c2e82270a639a3acf607b432e54721116dae723 (patch)
tree6e9829818d82ad365229bbcad744b9b4999bb0fb /modules_v3/family_nav/module.php
parent7126668f8fb92b0cac155adc02efde34bbd890ce (diff)
downloadwebtrees-8c2e82270a639a3acf607b432e54721116dae723.tar.gz
webtrees-8c2e82270a639a3acf607b432e54721116dae723.tar.bz2
webtrees-8c2e82270a639a3acf607b432e54721116dae723.zip
Module API
Diffstat (limited to 'modules_v3/family_nav/module.php')
-rw-r--r--modules_v3/family_nav/module.php231
1 files changed, 1 insertions, 230 deletions
diff --git a/modules_v3/family_nav/module.php b/modules_v3/family_nav/module.php
index 3ca37e744d..e067f73425 100644
--- a/modules_v3/family_nav/module.php
+++ b/modules_v3/family_nav/module.php
@@ -16,233 +16,4 @@ namespace Fisharebest\Webtrees;
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/**
- * Class family_nav_WT_Module
- */
-class family_nav_WT_Module extends Module implements ModuleSidebarInterface {
-
- const TTL = "<div class='flyout2'>%s</div>";
- const LNK = "<div class='flyout3' data-href='%s'>%s</div>";
- const MSG = "<div class='flyout4'>(%s)</div>"; // class flyout4 not used in standard themes
-
- /** {@inheritdoc} */
- public function getTitle() {
- return /* I18N: Name of a module/sidebar */ I18N::translate('Family navigator');
- }
-
- /** {@inheritdoc} */
- public function getDescription() {
- return /* I18N: Description of the “Family navigator” module */ I18N::translate('A sidebar showing an individual’s close families and relatives.');
- }
-
- /** {@inheritdoc} */
- public function defaultSidebarOrder() {
- return 20;
- }
-
- /** {@inheritdoc} */
- public function hasSidebarContent() {
- return !Auth::isSearchEngine();
- }
-
- /** {@inheritdoc} */
- public function getSidebarAjaxContent() {
- return '';
- }
-
- /** {@inheritdoc} */
- public function getSidebarContent() {
- global $controller;
-
- $controller->addInlineJavascript('
- jQuery("#sb_family_nav_content")
- .on("click", ".flyout a", function() {
- return false;
- })
- .on("click", ".flyout3", function() {
- window.location.href = jQuery(this).data("href");
- return false;
- });
- ');
-
- ob_start();
-
- ?>
- <div id="sb_family_nav_content">
- <table class="nav_content">
-
- <?php
- //-- parent families -------------------------------------------------------------
- foreach ($controller->record->getChildFamilies() as $family) {
- $this->drawFamily($family, $controller->record->getChildFamilyLabel($family));
- }
- //-- step parents ----------------------------------------------------------------
- foreach ($controller->record->getChildStepFamilies() as $family) {
- $this->drawFamily($family, $controller->record->getStepFamilyLabel($family));
- }
- //-- spouse and children --------------------------------------------------
- foreach ($controller->record->getSpouseFamilies() as $family) {
- $this->drawFamily($family, $controller->record->getSpouseFamilyLabel($family));
- }
- //-- step children ----------------------------------------------------------------
- foreach ($controller->record->getSpouseStepFamilies() as $family) {
- $this->drawFamily($family, $family->getFullName());
- }
- ?>
- </table>
- </div>
- <?php
-
- return ob_get_clean();
- }
-
- /**
- * @param Family $family
- * @param string $title
- */
- private function drawFamily(Family $family, $title) {
- global $controller, $SHOW_PRIVATE_RELATIONSHIPS;
-
- ?>
- <tr>
- <td class="center" colspan="2">
- <a class="famnav_title" href="<?php echo $family->getHtmlUrl(); ?>">
- <?php echo $title; ?>
- </a>
- </td>
- </tr>
- <?php
- $access_level = $SHOW_PRIVATE_RELATIONSHIPS ? WT_PRIV_HIDE : WT_USER_ACCESS_LEVEL;
- $facts = array_merge($family->getFacts('HUSB', false, $access_level), $family->getFacts('WIFE', false, $access_level));
- foreach ($facts as $fact) {
- $spouse = $fact->getTarget();
- if ($spouse instanceof Individual) {
- $menu = new Menu(get_close_relationship_name($controller->record, $spouse));
- $menu->addClass('', 'submenu flyout');
- $menu->addSubmenu(new Menu($this->getParents($spouse)));
- ?>
- <tr>
- <td class="facts_label">
- <?php echo $menu->getMenu(); ?>
- </td>
- <td class="center <?php echo $controller->getPersonStyle($spouse); ?> nam">
- <a class="famnav_link" href="<?php echo $spouse->getHtmlUrl(); ?>">
- <?php echo $spouse->getFullName(); ?>
- </a>
- <div class="font9">
- <?php echo $spouse->getLifeSpan(); ?>
- </div>
- </td>
- </tr>
- <?php
- }
- }
-
- foreach ($family->getFacts('CHIL', false, $access_level) as $fact) {
- $child = $fact->getTarget();
- if ($child instanceof Individual) {
- $menu = new Menu(get_close_relationship_name($controller->record, $child));
- $menu->addClass('', 'submenu flyout');
- $menu->addSubmenu(new Menu($this->getFamily($child)));
- ?>
- <tr>
- <td class="facts_label">
- <?php echo $menu->getMenu(); ?>
- </td>
- <td class="center <?php echo $controller->getPersonStyle($child); ?> nam">
- <a class="famnav_link" href="<?php echo $child->getHtmlUrl(); ?>">
- <?php echo $child->getFullName(); ?>
- </a>
- <div class="font9">
- <?php echo $child->getLifeSpan(); ?>
- </div>
- </td>
- </tr>
- <?php
- }
- }
- }
-
- /**
- * @param $person
- * @param boolean $showUnknown
- *
- * @return string
- */
- private function getHTML($person, $showUnknown = false) {
- if ($person instanceof Individual) {
- return sprintf(self::LNK, $person->getHtmlUrl(), $person->getFullName());
- } elseif ($showUnknown) {
- return sprintf(self::MSG, I18N::translate('unknown'));
- } else {
- return '';
- }
- }
-
- /**
- * @param Individual $person
- *
- * @return string
- */
- private function getParents(Individual $person) {
- $father = null;
- $mother = null;
- $html = sprintf(self::TTL, I18N::translate('Parents'));
- $family = $person->getPrimaryChildFamily();
- if (!Auth::isSearchEngine() && $person->canShowName() && $family !== null) {
- $father = $family->getHusband();
- $mother = $family->getWife();
- $html .= $this->getHTML($father) .
- $this->getHTML($mother);
-
- // Can only have a step parent if one & only one parent found at this point
- if ($father instanceof Individual xor $mother instanceof Individual) {
- $stepParents = '';
- foreach ($person->getChildStepFamilies() as $family) {
- if (!$father instanceof Individual) {
- $stepParents .= $this->getHTML($family->getHusband());
- } else {
- $stepParents .= $this->getHTML($family->getWife());
- }
- }
- if ($stepParents) {
- $relationship = $father instanceof Individual ?
- I18N::translate_c("father’s wife", "step-mother") : I18N::translate_c("mother’s husband", "step-father");
- $html .= sprintf(self::TTL, $relationship) . $stepParents;
- }
- }
- }
- if (!($father instanceof Individual || $mother instanceof Individual)) {
- $html .= sprintf(self::MSG, I18N::translate_c('unknown family', 'unknown'));
- }
- return $html;
- }
-
- /**
- * @param Individual $person
- *
- * @return string
- */
- private function getFamily(Individual $person) {
- $html = '';
- if ($person->canShowName() && !Auth::isSearchEngine()) {
- foreach ($person->getSpouseFamilies() as $family) {
- $spouse = $family->getSpouse($person);
- $html .= $this->getHTML($spouse, true);
- $children = $family->getChildren();
- if (count($children) > 0) {
- $html .= "<ul class='clist'>";
- foreach ($children as $child) {
- $html .= '<li>' . $this->getHTML($child) . '</li>';
- }
- $html .= '</ul>';
- }
- }
- }
- if (!$html) {
- $html = sprintf(self::MSG, I18N::translate('none'));
- }
- return sprintf(self::TTL, I18N::translate('Family')) . $html;
- }
-
-}
+return new FamilyNavigatorModule(__DIR__);