/** * Get the list of initial letters * * @return string[] */ private function getInitialLettersList() { $list = array(); /** @var \Fisharebest\Webtrees\Tree $tree */ $tree = $this->data->get('tree'); $script_base_url = WT_SCRIPT_NAME . '?mod=' . \MyArtJaub\Webtrees\Constants::MODULE_MAJ_PATROLIN_NAME . '&mod_action=Lineage'; foreach (QueryName::surnameAlpha($tree, false, false) as $letter => $count) { switch ($letter) { case '@': $html = I18N::translateContext('Unknown surname', '…'); break; case ',': $html = I18N::translate('None'); break; default: $html = Filter::escapeHtml($letter); break; } if ($count) { if ($letter == $this->data->get('alpha')) { $list[] = '<a href="' . $script_base_url . '&alpha=' . rawurlencode($letter) . '&ged=' . $tree->getNameUrl() . '" class="warning" title="' . I18N::number($count) . '">' . $html . '</a>'; } else { $list[] = '<a href="' . $script_base_url . '&alpha=' . rawurlencode($letter) . '&ged=' . $tree->getNameUrl() . '" title="' . I18N::number($count) . '">' . $html . '</a>'; } } else { $list[] = $html; } } // Search spiders don't get the "show all" option as the other links give them everything. if (!Auth::isSearchEngine()) { if ($this->data->get('show_all') === 'yes') { $list[] = '<span class="warning">' . I18N::translate('All') . '</span>'; } else { $list[] = '<a href="' . $script_base_url . '&show_all=yes' . '&ged=' . $tree->getNameUrl() . '">' . I18N::translate('All') . '</a>'; } } return $list; }
/** * Load this sidebar synchronously. * * @return string */ public function getSidebarContent() { global $controller, $WT_TREE; // Fetch a list of the initial letters of all surnames in the database $initials = QueryName::surnameAlpha($WT_TREE, true, false, false); $controller->addInlineJavascript(' var loadedNames = new Array(); function isearchQ() { var query = jQuery("#sb_indi_name").val(); if (query.length>1) { jQuery("#sb_indi_content").load("module.php?mod=' . $this->getName() . '&mod_action=ajax&sb_action=individuals&search="+query); } } var timerid = null; jQuery("#sb_indi_name").keyup(function(e) { if (timerid) window.clearTimeout(timerid); timerid = window.setTimeout("isearchQ()", 500); }); jQuery("#sb_content_individuals").on("click", ".sb_indi_letter", function() { jQuery("#sb_indi_content").load(this.href); return false; }); jQuery("#sb_content_individuals").on("click", ".sb_indi_surname", function() { var element = jQuery(this); var surname = element.data("surname"); var alpha = element.data("alpha"); if (!loadedNames[surname]) { jQuery.ajax({ url: "module.php?mod=' . $this->getName() . '&mod_action=ajax&sb_action=individuals&alpha=" + encodeURIComponent(alpha) + "&surname=" + encodeURIComponent(surname), cache: false, success: function(html) { jQuery("div.name_tree_div", element.closest("li")) .html(html) .show("fast") .css("list-style-image", "url(' . Theme::theme()->parameter('image-minus') . ')"); loadedNames[surname]=2; } }); } else if (loadedNames[surname]==1) { loadedNames[surname]=2; jQuery("div.name_tree_div", jQuery(this).closest("li")) .show() .css("list-style-image", "url(' . Theme::theme()->parameter('image-minus') . ')"); } else { loadedNames[surname]=1; jQuery("div.name_tree_div", jQuery(this).closest("li")) .hide("fast") .css("list-style-image", "url(' . Theme::theme()->parameter('image-plus') . ')"); } return false; }); '); $out = '<form method="post" action="module.php?mod=' . $this->getName() . '&mod_action=ajax" onsubmit="return false;"><input type="search" name="sb_indi_name" id="sb_indi_name" placeholder="' . I18N::translate('Search') . '"><p>'; foreach ($initials as $letter => $count) { switch ($letter) { case '@': $html = I18N::translateContext('Unknown surname', '…'); break; case ',': $html = I18N::translate('None'); break; case ' ': $html = ' '; break; default: $html = $letter; break; } $html = '<a href="module.php?mod=' . $this->getName() . '&mod_action=ajax&sb_action=individuals&alpha=' . urlencode($letter) . '" class="sb_indi_letter">' . $html . '</a>'; $out .= $html . " "; } $out .= '</p>'; $out .= '<div id="sb_indi_content">'; $out .= '</div></form>'; return $out; }
$legend = Filter::escapeHtml($alpha) . '…'; $url = WT_SCRIPT_NAME . '?alpha=' . rawurlencode($alpha) . '&ged=' . $WT_TREE->getNameUrl(); $show = Filter::get('show', 'surn|indi', 'surn'); } else { $show_all = 'no'; $legend = '…'; $url = WT_SCRIPT_NAME . '?ged=' . $WT_TREE->getNameUrl(); $show = 'none'; // Don't show lists until something is chosen } $legend = '<span dir="auto">' . $legend . '</span>'; $controller->setPageTitle(I18N::translate('Individuals') . ' : ' . $legend)->pageHeader(); echo '<h2 class="center">', I18N::translate('Individuals'), '</h2>'; // Print a selection list of initial letters $list = array(); foreach (QueryName::surnameAlpha($WT_TREE, $show_marnm === 'yes', false) as $letter => $count) { switch ($letter) { case '@': $html = I18N::translateContext('Unknown surname', '…'); break; case ',': $html = I18N::translate('None'); break; default: $html = Filter::escapeHtml($letter); break; } if ($count) { if ($letter == $alpha) { $list[] = '<a href="' . WT_SCRIPT_NAME . '?alpha=' . rawurlencode($letter) . '&ged=' . $WT_TREE->getNameUrl() . '" class="warning" title="' . I18N::number($count) . '">' . $html . '</a>'; } else {