summaryrefslogtreecommitdiff
path: root/app/Theme
diff options
context:
space:
mode:
Diffstat (limited to 'app/Theme')
-rw-r--r--app/Theme/AbstractTheme.php237
-rw-r--r--app/Theme/ThemeInterface.php9
2 files changed, 173 insertions, 73 deletions
diff --git a/app/Theme/AbstractTheme.php b/app/Theme/AbstractTheme.php
index 213adc2462..50cc9dde5f 100644
--- a/app/Theme/AbstractTheme.php
+++ b/app/Theme/AbstractTheme.php
@@ -29,26 +29,25 @@ use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Menu;
use Fisharebest\Webtrees\Module;
-use Fisharebest\Webtrees\Module\FamilyTreeFavoritesModule;
-use Fisharebest\Webtrees\Module\UserFavoritesModule;
-use Fisharebest\Webtrees\Site;
-use Fisharebest\Webtrees\Theme;
-use Fisharebest\Webtrees\Tree;
-use Fisharebest\Webtrees\User;
use Fisharebest\Webtrees\Module\AncestorsChartModule;
use Fisharebest\Webtrees\Module\CompactTreeChartModule;
use Fisharebest\Webtrees\Module\DescendancyChartModule;
use Fisharebest\Webtrees\Module\FamilyBookChartModule;
+use Fisharebest\Webtrees\Module\FamilyTreeFavoritesModule;
use Fisharebest\Webtrees\Module\FanChartModule;
-use Fisharebest\Webtrees\Module\InteractiveTreeModule;
+use Fisharebest\Webtrees\Module\GoogleMapsModule;
use Fisharebest\Webtrees\Module\HourglassChartModule;
+use Fisharebest\Webtrees\Module\InteractiveTreeModule;
use Fisharebest\Webtrees\Module\LifespansChartModule;
use Fisharebest\Webtrees\Module\PedigreeChartModule;
-use Fisharebest\Webtrees\Module\GoogleMapsModule;
use Fisharebest\Webtrees\Module\RelationshipsChartModule;
use Fisharebest\Webtrees\Module\StatisticsChartModule;
use Fisharebest\Webtrees\Module\TimelineChartModule;
-
+use Fisharebest\Webtrees\Module\UserFavoritesModule;
+use Fisharebest\Webtrees\Site;
+use Fisharebest\Webtrees\Theme;
+use Fisharebest\Webtrees\Tree;
+use Fisharebest\Webtrees\User;
/**
* Common functions for all themes.
@@ -339,7 +338,8 @@ abstract class AbstractTheme {
if (
empty($_SERVER['HTTP_DNT']) &&
empty($_COOKIE['cookie']) &&
- (Site::getPreference('GOOGLE_ANALYTICS_ID') || Site::getPreference('PIWIK_SITE_ID') || Site::getPreference('STATCOUNTER_PROJECT_ID'))) {
+ (Site::getPreference('GOOGLE_ANALYTICS_ID') || Site::getPreference('PIWIK_SITE_ID') || Site::getPreference('STATCOUNTER_PROJECT_ID'))
+ ) {
return
'<div class="cookie-warning">' .
I18N::translate('Cookies') . ' - ' .
@@ -480,7 +480,7 @@ abstract class AbstractTheme {
return
'<div class="page-views">' .
I18N::plural('This page has been viewed %s time.', 'This page has been viewed %s times.', $count,
- '<span class="odometer">' . I18N::digits($count) . '</span>') .
+ '<span class="odometer">' . I18N::digits($count) . '</span>') .
'</div>';
} else {
return '';
@@ -746,12 +746,12 @@ abstract class AbstractTheme {
}
$content = '<span class="namedef name1">' . $individual->getFullName() . '</span>';
- $icons = '';
+ $icons = '';
if ($individual->canShowName()) {
$content =
'<a href="' . $individual->getHtmlUrl() . '">' . $content . '</a>' .
'<div class="namedef name1">' . $individual->getAddName() . '</div>';
- $icons =
+ $icons =
'<div class="noprint icons">' .
'<span class="iconz icon-zoomin" title="' . I18N::translate('Zoom in/out on this box.') . '"></span>' .
'<div class="itr"><i class="icon-pedigree"></i><div class="popup">' .
@@ -803,7 +803,7 @@ abstract class AbstractTheme {
$content =
'<a href="' . $individual->getHtmlUrl() . '">' . $content . '</a>' .
'<div class="namedef name2">' . $individual->getAddName() . '</div>';
- $icons =
+ $icons =
'<div class="noprint icons">' .
'<span class="iconz icon-zoomin" title="' . I18N::translate('Zoom in/out on this box.') . '"></span>' .
'<div class="itr"><i class="icon-pedigree"></i><div class="popup">' .
@@ -948,7 +948,7 @@ abstract class AbstractTheme {
*
* @return Menu[]
*/
- protected function individualBoxMenu(Individual $individual) {
+ public function individualBoxMenu(Individual $individual) {
$menus = array_merge(
$this->individualBoxMenuCharts($individual),
$this->individualBoxMenuFamilyLinks($individual)
@@ -970,18 +970,14 @@ abstract class AbstractTheme {
$menu = $chart->getBoxChartMenu($individual);
if ($menu) {
$menus[] = $menu;
- }
+ }
}
-
- if ($menus) {
- usort($menus, function (Menu $x, Menu $y) {
- return I18N::strcasecmp($x->getLabel(), $y->getLabel());
- });
- return $menus;
- } else {
- return null;
- }
+ usort($menus, function (Menu $x, Menu $y) {
+ return I18N::strcasecmp($x->getLabel(), $y->getLabel());
+ });
+
+ return $menus;
}
/**
@@ -1092,7 +1088,7 @@ abstract class AbstractTheme {
*
* @param Individual $individual
*
- * @return Menu
+ * @return Menu|null
*/
protected function menuChart(Individual $individual) {
$submenus = array();
@@ -1102,7 +1098,7 @@ abstract class AbstractTheme {
$submenus[] = $menu;
}
}
-
+
if ($submenus) {
usort($submenus, function (Menu $x, Menu $y) {
return I18N::strcasecmp($x->getLabel(), $y->getLabel());
@@ -1111,115 +1107,206 @@ abstract class AbstractTheme {
return new Menu(I18N::translate('Charts'), '#', 'menu-chart', array('rel' => 'nofollow'), $submenus);
} else {
return null;
- }
+ }
}
/**
- * @deprecated
+ * Generate a menu item for the ancestors chart.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartAncestors(Individual $individual) {
- $chart = new AncestorsChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new AncestorsChartModule(WT_ROOT . WT_MODULES_DIR . 'ancestors_chart');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the compact tree.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartCompact(Individual $individual) {
- $chart = new CompactTreeChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new CompactTreeChartModule(WT_ROOT . WT_MODULES_DIR . 'compact_tree_chart');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the descendants chart.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartDescendants(Individual $individual) {
- $chart = new DescendancyChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new DescendancyChartModule(WT_ROOT . WT_MODULES_DIR . 'descendancy_chart');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the family-book chart.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartFamilyBook(Individual $individual) {
- $chart = new FamilyBookChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new FamilyBookChartModule(WT_ROOT . WT_MODULES_DIR . 'family_book_chart');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the fan chart.
+ *
+ * We can only do this if the GD2 library is installed with TrueType support.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartFanChart(Individual $individual) {
- $chart = new FanChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new FanChartModule(WT_ROOT . WT_MODULES_DIR . 'fan_chart');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the interactive tree.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartInteractiveTree(Individual $individual) {
- $chart = new InteractiveTreeModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new InteractiveTreeModule(WT_ROOT . WT_MODULES_DIR . 'tree');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the hourglass chart.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartHourglass(Individual $individual) {
- $chart = new HourglassChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new HourglassChartModule(WT_ROOT . WT_MODULES_DIR . 'hourglass_chart');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the lifepsan chart.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartLifespan(Individual $individual) {
- $chart = new LifespansChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new LifespansChartModule(WT_ROOT . WT_MODULES_DIR . 'lifespans_chart');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the pedigree chart.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartPedigree(Individual $individual) {
- $chart = new PedigreeChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new PedigreeChartModule(WT_ROOT . WT_MODULES_DIR . 'pedigree_chart');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the pedigree map.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartPedigreeMap(Individual $individual) {
- $chart = new GoogleMapsModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new GoogleMapsModule(WT_ROOT . WT_MODULES_DIR . 'googlemap');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the relationship chart.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartRelationship(Individual $individual) {
- $chart = new RelationshipsChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new RelationshipsChartModule(WT_ROOT . WT_MODULES_DIR . 'relationships_chart');
+
+ return $chart->getChartMenu($individual);
}
/**
- * @deprecated
+ * Generate a menu item for the statistics charts.
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartStatistics() {
- $chart = new StatisticsChartModule(__DIR__);
- return $chart->getChartMenu(null);
+ $chart = new StatisticsChartModule(WT_ROOT . WT_MODULES_DIR . 'statistics_chart');
+
+ return $chart->getChartMenu(null);
}
/**
- * @deprecated
+ * Generate a menu item for the timeline chart.
+ *
+ * @param Individual $individual
+ *
+ * @return Menu|null
+ *
+ * @deprecated
*/
protected function menuChartTimeline(Individual $individual) {
- $chart = new TimelineChartModule(__DIR__);
- return $chart->getChartMenu($individual);
+ $chart = new TimelineChartModule(WT_ROOT . WT_MODULES_DIR . 'timeline_chart');
+
+ return $chart->getChartMenu($individual);
}
-
+
/**
- * Generate a menu item for the control panel (admin.php).
+ * Generate a menu item for the control panel.
*
* @return Menu|null
*/
@@ -1556,14 +1643,14 @@ abstract class AbstractTheme {
}
/**
- * A link to the user's individual record (pedigree.php).
+ * A link to the user's individual record.
*
* @return Menu|null
*/
protected function menuMyPedigree() {
$gedcomid = $this->tree->getUserPreference(Auth::user(), 'gedcomid');
- if ($gedcomid) {
+ if ($gedcomid && Module::isActiveChart($this->tree, 'pedigree_chart')) {
$showFull = $this->tree->getPreference('PEDIGREE_FULL_DETAILS') ? 1 : 0;
$showLayout = $this->tree->getPreference('PEDIGREE_LAYOUT') ? 1 : 0;
@@ -1883,7 +1970,9 @@ abstract class AbstractTheme {
* @return string
*/
protected function primaryMenuContent(array $menus) {
- return implode('', array_map(function (Menu $menu) { return $menu->getMenuAsList(); }, $menus));
+ return implode('', array_map(function (Menu $menu) {
+ return $menu->getMenuAsList();
+ }, $menus));
}
/**
@@ -1922,7 +2011,9 @@ abstract class AbstractTheme {
* @return string
*/
protected function secondaryMenuContent(array $menus) {
- return implode('', array_map(function (Menu $menu) { return $menu->getMenuAsList(); }, $menus));
+ return implode('', array_map(function (Menu $menu) {
+ return $menu->getMenuAsList();
+ }, $menus));
}
/**
diff --git a/app/Theme/ThemeInterface.php b/app/Theme/ThemeInterface.php
index c228ab2bc5..d0e096424e 100644
--- a/app/Theme/ThemeInterface.php
+++ b/app/Theme/ThemeInterface.php
@@ -197,6 +197,15 @@ interface ThemeInterface {
public function init(Tree $tree = null);
/**
+ * Links, to show in chart boxes;
+ *
+ * @param Individual $individual
+ *
+ * @return Menu[]
+ */
+ public function individualBoxMenu(Individual $individual);
+
+ /**
* Themes menu.
*
* @return Menu|null