diff options
Diffstat (limited to 'library/WT/MenuBar.php')
| -rw-r--r-- | library/WT/MenuBar.php | 509 |
1 files changed, 0 insertions, 509 deletions
diff --git a/library/WT/MenuBar.php b/library/WT/MenuBar.php deleted file mode 100644 index e57bda0cd6..0000000000 --- a/library/WT/MenuBar.php +++ /dev/null @@ -1,509 +0,0 @@ -<?php -// webtrees: Web based Family History software -// Copyright (C) 2014 webtrees development team. -// -// Derived from PhpGedView -// Copyright (C) 2002 to 2010 PGV Development Team. All rights reserved. -// -// 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 2 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, write to the Free Software -// // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -use WT\Auth; - -/** - * Class WT_MenuBar - System for generating menus. - */ -class WT_MenuBar { - /** - * @return WT_Menu - */ - public static function getGedcomMenu() { - $menu = new WT_Menu(WT_I18N::translate('Home page'), 'index.php?ctype=gedcom&ged='.WT_GEDURL, 'menu-tree'); - $ALLOW_CHANGE_GEDCOM=WT_Site::getPreference('ALLOW_CHANGE_GEDCOM') && count(WT_Tree::getAll())>1; - foreach (WT_Tree::getAll() as $tree) { - if ($tree->tree_id==WT_GED_ID || $ALLOW_CHANGE_GEDCOM) { - $submenu = new WT_Menu( - $tree->tree_title_html, - 'index.php?ctype=gedcom&ged='.$tree->tree_name_url, - 'menu-tree-'.$tree->tree_id // Cannot use name - it must be a CSS identifier - ); - $menu->addSubmenu($submenu); - } - } - return $menu; - } - - /** - * @return WT_Menu - */ - public static function getMyPageMenu() { - global $PEDIGREE_FULL_DETAILS, $PEDIGREE_LAYOUT; - - $showFull = ($PEDIGREE_FULL_DETAILS) ? 1 : 0; - $showLayout = ($PEDIGREE_LAYOUT) ? 1 : 0; - - if (!Auth::id()) { - return null; - } - - //-- main menu - $menu = new WT_Menu(WT_I18N::translate('My page'), 'index.php?ctype=user&ged='.WT_GEDURL, 'menu-mymenu'); - - //-- mypage submenu - $submenu = new WT_Menu(WT_I18N::translate('My page'), 'index.php?ctype=user&ged='.WT_GEDURL, 'menu-mypage'); - $menu->addSubmenu($submenu); - //-- editaccount submenu - if (Auth::user()->getPreference('editaccount')) { - $submenu = new WT_Menu(WT_I18N::translate('My account'), 'edituser.php', 'menu-myaccount'); - $menu->addSubmenu($submenu); - } - if (WT_USER_GEDCOM_ID) { - //-- my_pedigree submenu - $submenu = new WT_Menu( - WT_I18N::translate('My pedigree'), - 'pedigree.php?ged='.WT_GEDURL.'&rootid='.WT_USER_GEDCOM_ID."&show_full={$showFull}&talloffset={$showLayout}", - 'menu-mypedigree' - ); - $menu->addSubmenu($submenu); - //-- my_indi submenu - $submenu = new WT_Menu(WT_I18N::translate('My individual record'), 'individual.php?pid='.WT_USER_GEDCOM_ID.'&ged='.WT_GEDURL, 'menu-myrecord'); - $menu->addSubmenu($submenu); - } - if (WT_USER_GEDCOM_ADMIN) { - //-- admin submenu - $submenu = new WT_Menu(WT_I18N::translate('Administration'), 'admin.php', 'menu-admin'); - $menu->addSubmenu($submenu); - } - return $menu; - } - - /** - * @return WT_Menu - */ - public static function getChartsMenu() { - global $SEARCH_SPIDER, $controller; - - if ($SEARCH_SPIDER || !WT_GED_ID) { - return null; - } - - $indi_xref=$controller->getSignificantIndividual()->getXref(); - - $menu = new WT_Menu(WT_I18N::translate('Charts'), 'pedigree.php?rootid='.$indi_xref.'&ged='.WT_GEDURL, 'menu-chart'); - - // Build a sortable list of submenu items and then sort it in localized name order - $menuList = array( - 'pedigree' =>WT_I18N::translate('Pedigree'), - 'descendancy' =>WT_I18N::translate('Descendants'), - 'ancestry' =>WT_I18N::translate('Ancestors'), - 'compact' =>WT_I18N::translate('Compact tree'), - 'hourglass' =>WT_I18N::translate('Hourglass chart'), - 'familybook' =>WT_I18N::translate('Family book'), - 'timeline' =>WT_I18N::translate('Timeline'), - 'lifespan' =>WT_I18N::translate('Lifespans'), - 'relationship'=>WT_I18N::translate('Relationships'), - 'statistics' =>WT_I18N::translate('Statistics'), - ); - if (function_exists('imagettftext')) { - $menuList['fanchart']=WT_I18N::translate('Fan chart'); - } - // TODO: Use WT_Module_Chart ?? - if (array_key_exists('tree', WT_Module::getActiveModules())) { - $menuList['tree']=WT_I18N::translate('Interactive tree'); - } - if (array_key_exists('googlemap', WT_Module::getActiveModules())) { - $menuList['pedigree_map']=WT_I18N::translate('Pedigree map'); - } - asort($menuList); - - // Produce the submenus in localized name order - foreach ($menuList as $menuType => $menuName) { - switch ($menuType) { - case 'pedigree': - $submenu = new WT_Menu($menuName, 'pedigree.php?rootid='.$indi_xref.'&ged='.WT_GEDURL, 'menu-chart-pedigree'); - $menu->addSubmenu($submenu); - break; - - case 'descendancy': - $submenu = new WT_Menu($menuName, 'descendancy.php?rootid='.$indi_xref.'&ged='.WT_GEDURL, 'menu-chart-descendancy'); - $menu->addSubmenu($submenu); - break; - - case 'ancestry': - $submenu = new WT_Menu($menuName, 'ancestry.php?rootid='.$indi_xref.'&ged='.WT_GEDURL, 'menu-chart-ancestry'); - $menu->addSubmenu($submenu); - break; - - case 'compact': - $submenu = new WT_Menu($menuName, 'compact.php?rootid='.$indi_xref.'&ged='.WT_GEDURL, 'menu-chart-compact'); - $menu->addSubmenu($submenu); - break; - - case 'fanchart': - $submenu = new WT_Menu($menuName, 'fanchart.php?rootid='.$indi_xref.'&ged='.WT_GEDURL, 'menu-chart-fanchart'); - $menu->addSubmenu($submenu); - break; - - case 'hourglass': - $submenu = new WT_Menu($menuName, 'hourglass.php?rootid='.$indi_xref.'&ged='.WT_GEDURL, 'menu-chart-hourglass'); - $menu->addSubmenu($submenu); - break; - - case 'familybook': - $submenu = new WT_Menu($menuName, 'familybook.php?rootid='.$indi_xref.'&ged='.WT_GEDURL, 'menu-chart-familybook'); - $menu->addSubmenu($submenu); - break; - - case 'timeline': - $submenu = new WT_Menu($menuName, 'timeline.php?pids%5B%5D='.$indi_xref.'&ged='.WT_GEDURL, 'menu-chart-timeline'); - if ($controller instanceof WT_Controller_Family && $controller->record) { - // Build a sortable list of submenu items and then sort it in localized name order - $menuList = array(); - $menuList['parentTimeLine'] = WT_I18N::translate('Show couple on timeline chart'); - $menuList['childTimeLine'] = WT_I18N::translate('Show children on timeline chart'); - $menuList['familyTimeLine'] = WT_I18N::translate('Show family on timeline chart'); - asort($menuList); - - // Produce the submenus in localized name order - foreach ($menuList as $submenuType => $submenuName) { - switch ($submenuType) { - case 'parentTimeLine': - // charts / parents_timeline - $subsubmenu = new WT_Menu( - $submenuName, - 'timeline.php?'.$controller->getTimelineIndis(array('HUSB','WIFE')).'&ged='.WT_GEDURL, - 'menu-chart-timeline-parents' - ); - $submenu->addSubmenu($subsubmenu); - break; - - case 'childTimeLine': - // charts / children_timeline - $subsubmenu = new WT_Menu( - $submenuName, - 'timeline.php?'.$controller->getTimelineIndis(array('CHIL')).'&ged='.WT_GEDURL, - 'menu-chart-timeline-children' - ); - $submenu->addSubmenu($subsubmenu); - break; - - case 'familyTimeLine': - // charts / family_timeline - $subsubmenu = new WT_Menu( - $submenuName, - 'timeline.php?'.$controller->getTimelineIndis(array('HUSB','WIFE','CHIL')).'&ged='.WT_GEDURL, - 'menu-chart-timeline-family' - ); - $submenu->addSubmenu($subsubmenu); - break; - - } - } - } - $menu->addSubmenu($submenu); - break; - - case 'lifespan': - $submenu = new WT_Menu($menuName, 'lifespan.php?pids%5B%5D='.$indi_xref.'&addFamily=1&ged='.WT_GEDURL, 'menu-chart-lifespan'); - $menu->addSubmenu($submenu); - break; - - case 'relationship': - if ($indi_xref) { - // Pages focused on a specific person - from the person, to me - $pid1=WT_USER_GEDCOM_ID ? WT_USER_GEDCOM_ID : WT_USER_ROOT_ID;; - $pid2=$indi_xref; - if ($pid1==$pid2) { - $pid2=''; - } - $submenu = new WT_Menu( - WT_I18N::translate('Relationships'), - 'relationship.php?pid1='.$pid1.'&pid2='.$pid2.'&ged='.WT_GEDURL, - 'menu-chart-relationship' - ); - } else { - // Regular pages - from me, to somebody - $pid1=WT_USER_GEDCOM_ID ? WT_USER_GEDCOM_ID : WT_USER_ROOT_ID; - $pid2=''; - $submenu = new WT_Menu( - WT_I18N::translate('Relationships'), - 'relationship.php?pid1='.$pid1.'&pid2='.$pid2.'&ged='.WT_GEDURL, - 'menu-chart-relationship' - ); - } - $menu->addSubmenu($submenu); - break; - - case 'statistics': - $submenu = new WT_Menu($menuName, 'statistics.php?ged='.WT_GEDURL, 'menu-chart-statistics'); - $menu->addSubmenu($submenu); - break; - - case 'tree': - $submenu = new WT_Menu($menuName, 'module.php?mod=tree&mod_action=treeview&ged='.WT_GEDURL.'&rootid='.$indi_xref, 'menu-chart-tree'); - $menu->addSubmenu($submenu); - break; - - case 'pedigree_map': - $submenu = new WT_Menu($menuName, 'module.php?ged='.WT_GEDURL.'&mod=googlemap&mod_action=pedigree_map&rootid='.$indi_xref, 'menu-chart-pedigree_map'); - $menu->addSubmenu($submenu); - break; - } - } - return $menu; - } - - /** - * @return WT_Menu - * @throws Exception - */ - public static function getListsMenu() { - global $SEARCH_SPIDER, $controller; - - // The top level menu shows the individual list - $menu = new WT_Menu(WT_I18N::translate('Lists'), 'indilist.php?ged=' . WT_GEDURL, 'menu-list'); - - // Do not show empty lists - $row = WT_DB::prepare( - "SELECT SQL_CACHE" . - " EXISTS(SELECT 1 FROM `##sources` WHERE s_file=? ) AS sour," . - " EXISTS(SELECT 1 FROM `##other` WHERE o_file=? AND o_type='REPO') AS repo," . - " EXISTS(SELECT 1 FROM `##other` WHERE o_file=? AND o_type='NOTE') AS note," . - " EXISTS(SELECT 1 FROM `##media` WHERE m_file=? ) AS obje" - )->execute(array(WT_GED_ID, WT_GED_ID, WT_GED_ID, WT_GED_ID))->fetchOneRow(); - - // Build a list of submenu items and then sort it in localized name order - $surname_url = '&surname=' . rawurlencode($controller->getSignificantSurname()) . '&ged=' . WT_GEDURL; - - $menulist = array( - new WT_Menu(WT_I18N::translate('Individuals'), 'indilist.php?ged=' . WT_GEDURL . $surname_url, 'menu-list-indi'), - ); - - if (!$SEARCH_SPIDER) { - $menulist[] = new WT_Menu(WT_I18N::translate('Families'), 'famlist.php?ged=' . WT_GEDURL . $surname_url, 'menu-list-fam'); - $menulist[] = new WT_Menu(WT_I18N::translate('Branches'), 'branches.php?ged=' . WT_GEDURL . $surname_url, 'menu-branches'); - $menulist[] = new WT_Menu(WT_I18N::translate('Place hierarchy'), 'placelist.php?ged=' . WT_GEDURL, 'menu-list-plac'); - if ($row->obje) { - $menulist[] = new WT_Menu(WT_I18N::translate('Media objects'), 'medialist.php?ged=' . WT_GEDURL, 'menu-list-obje'); - } - if ($row->repo) { - $menulist[] = new WT_Menu(WT_I18N::translate('Repositories'), 'repolist.php?ged=' . WT_GEDURL, 'menu-list-repo'); - } - if ($row->sour) { - $menulist[] = new WT_Menu(WT_I18N::translate('Sources'), 'sourcelist.php?ged=' . WT_GEDURL, 'menu-list-sour'); - } - if ($row->note) { - $menulist[] = new WT_Menu(WT_I18N::translate('Shared notes'), 'notelist.php?ged=' . WT_GEDURL, 'menu-list-note'); - } - } - uasort($menulist, function(WT_Menu $x, WT_Menu $y) { return WT_I18N::strcasecmp($x->getLabel(), $y->getLabel()); }); - - $menu->setSubmenus($menulist); - - return $menu; - } - - /** - * @return WT_Menu - */ - public static function getCalendarMenu() { - global $SEARCH_SPIDER; - - if ($SEARCH_SPIDER) { - return null; - } - //-- main calendar menu item - $menu = new WT_Menu(WT_I18N::translate('Calendar'), 'calendar.php?ged='.WT_GEDURL, 'menu-calendar'); - //-- viewday sub menu - $submenu = new WT_Menu(WT_I18N::translate('Day'), 'calendar.php?ged='.WT_GEDURL, 'menu-calendar-day'); - $menu->addSubmenu($submenu); - //-- viewmonth sub menu - $submenu = new WT_Menu(WT_I18N::translate('Month'), 'calendar.php?ged='.WT_GEDURL.'&action=calendar', 'menu-calendar-month'); - $menu->addSubmenu($submenu); - //-- viewyear sub menu - $submenu = new WT_Menu(WT_I18N::translate('Year'), 'calendar.php?ged='.WT_GEDURL.'&action=year', 'menu-calendar-year'); - $menu->addSubmenu($submenu); - return $menu; - } - - /** - * get the reports menu - * - * @return WT_Menu the menu item - */ - public static function getReportsMenu() { - global $SEARCH_SPIDER; - - $active_reports=WT_Module::getActiveReports(); - if ($SEARCH_SPIDER || !$active_reports) { - return null; - } - - $menu = new WT_Menu(WT_I18N::translate('Reports'), 'reportengine.php?ged='.WT_GEDURL, 'menu-report'); - - foreach ($active_reports as $report) { - foreach ($report->getReportMenus() as $submenu) { - $menu->addSubmenu($submenu); - } - } - - return $menu; - } - - /** - * @return WT_Menu - */ - public static function getSearchMenu() { - global $SEARCH_SPIDER; - - if ($SEARCH_SPIDER) { - return null; - } - //-- main search menu item - $menu = new WT_Menu(WT_I18N::translate('Search'), 'search.php?ged='.WT_GEDURL, 'menu-search'); - //-- search_general sub menu - $submenu = new WT_Menu(WT_I18N::translate('General search'), 'search.php?ged='.WT_GEDURL, 'menu-search-general'); - $menu->addSubmenu($submenu); - //-- search_soundex sub menu - $submenu = new WT_Menu(/* I18N: search using “sounds like”, rather than exact spelling */ WT_I18N::translate('Phonetic search'), 'search.php?ged='.WT_GEDURL.'&action=soundex', 'menu-search-soundex'); - $menu->addSubmenu($submenu); - //-- advanced search - $submenu = new WT_Menu(WT_I18N::translate('Advanced search'), 'search_advanced.php?ged='.WT_GEDURL, 'menu-search-advanced'); - $menu->addSubmenu($submenu); - //-- search_replace sub menu - if (WT_USER_CAN_EDIT) { - $submenu = new WT_Menu(WT_I18N::translate('Search and replace'), 'search.php?ged='.WT_GEDURL.'&action=replace', 'menu-search-replace'); - $menu->addSubmenu($submenu); - } - return $menu; - } - - /** - * @return WT_Menu[] - */ - public static function getModuleMenus() { - $menus=array(); - foreach (WT_Module::getActiveMenus() as $module) { - $menu=$module->getMenu(); - if ($menu) { - $menus[] = $menu; - } - } - return $menus; - } - - /** - * @return null|WT_Menu - * @throws Exception - */ - public static function getThemeMenu() { - global $SEARCH_SPIDER, $WT_TREE; - - if ($WT_TREE && !$SEARCH_SPIDER && WT_Site::getPreference('ALLOW_USER_THEMES') && $WT_TREE->getPreference('ALLOW_THEME_DROPDOWN')) { - $menu=new WT_Menu(WT_I18N::translate('Theme'), '#', 'menu-theme'); - foreach (get_theme_names() as $themename=>$themedir) { - $submenu=new WT_Menu($themename, get_query_url(array('theme'=>$themedir), '&'), 'menu-theme-'.$themedir); - if (WT_THEME_DIR == 'themes/'.$themedir.'/') {$submenu->addClass('','','theme-active');} - $menu->addSubmenu($submenu); - } - return $menu; - } else { - return null; - } - } - - /** - * @return null|WT_Menu - */ - public static function getLanguageMenu() { - global $SEARCH_SPIDER; - - if ($SEARCH_SPIDER) { - return null; - } else { - $menu=new WT_Menu(WT_I18N::translate('Language'), '#', 'menu-language'); - - foreach (WT_I18N::installed_languages() as $lang=>$name) { - $submenu=new WT_Menu($name, get_query_url(array('lang'=>$lang), '&'), 'menu-language-'.$lang); - if (WT_LOCALE == $lang) {$submenu->addClass('','','lang-active');} - $menu->addSubmenu($submenu); - } - if (count($menu->getSubmenus())>1) { - return $menu; - } else { - return null; - } - } - } - - /** - * @return WT_Menu - * @throws Exception - */ - public static function getFavoritesMenu() { - global $REQUIRE_AUTHENTICATION, $controller, $SEARCH_SPIDER; - - $show_user_favs = Auth::check() && array_key_exists('user_favorites', WT_Module::getActiveModules()); - $show_gedc_favs = !$REQUIRE_AUTHENTICATION && array_key_exists('gedcom_favorites', WT_Module::getActiveModules()); - - if ($show_user_favs && !$SEARCH_SPIDER) { - if ($show_gedc_favs && !$SEARCH_SPIDER) { - $favorites=array_merge( - gedcom_favorites_WT_Module::getFavorites(WT_GED_ID), - user_favorites_WT_Module::getFavorites(Auth::id()) - ); - } else { - $favorites=user_favorites_WT_Module::getFavorites(Auth::id()); - } - } else { - if ($show_gedc_favs && !$SEARCH_SPIDER) { - $favorites=gedcom_favorites_WT_Module::getFavorites(WT_GED_ID); - } else { - return null; - } - } - // Sort $favorites alphabetically? - - $menu=new WT_Menu(WT_I18N::translate('Favorites'), '#', 'menu-favorites'); - - foreach ($favorites as $favorite) { - switch($favorite['type']) { - case 'URL': - $submenu=new WT_Menu($favorite['title'], $favorite['url']); - $menu->addSubmenu($submenu); - break; - case 'INDI': - case 'FAM': - case 'SOUR': - case 'OBJE': - case 'NOTE': - $obj=WT_GedcomRecord::getInstance($favorite['gid']); - if ($obj && $obj->canShowName()) { - $submenu=new WT_Menu($obj->getFullName(), $obj->getHtmlUrl()); - $menu->addSubmenu($submenu); - } - break; - } - } - - if ($show_user_favs) { - if (isset($controller->record) && $controller->record instanceof WT_GedcomRecord) { - $submenu=new WT_Menu(WT_I18N::translate('Add to favorites'), '#'); - $submenu->setOnclick("jQuery.post('module.php?mod=user_favorites&mod_action=menu-add-favorite',{xref:'".$controller->record->getXref()."'},function(){location.reload();})"); - $menu->addSubmenu($submenu); - } - } - return $menu; - } -} |
