aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/layout/layout.phtml
blob: e4fb5f2ae37a48f99af53ca5aca9e3484727755c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
	declare(strict_types=1);
	/** @var FreshRSS_View $this */
	FreshRSS::preLayout();
	$class = '';
	$dir = '';
	if (_t('gen.dir') === 'rtl') {
		$dir = ' dir="rtl"';
		$class = 'rtl ';
	}
	if (FreshRSS_Context::userConf()->darkMode !== 'no') {
		$class .= 'darkMode_' . FreshRSS_Context::userConf()->darkMode;
	}
?>
<!DOCTYPE html>
<html lang="<?= FreshRSS_Context::userConf()->language ?>"<?= $dir ?> xml:lang="<?= FreshRSS_Context::userConf()->language ?>" class="<?= $class ?>">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
		<?= FreshRSS_View::metaThemeColor() ?>
		<?= FreshRSS_View::headStyle() ?>
		<script id="jsonVars" type="application/json">
<?php $this->renderHelper('javascript_vars'); ?>
		</script>
		<?= FreshRSS_View::headScript() ?>
		<link rel="manifest" href="<?= Minz_Url::display('/themes/manifest.json') ?>" />
		<link rel="shortcut icon" id="favicon" type="image/x-icon" sizes="16x16 64x64" href="<?= Minz_Url::display('/favicon.ico') ?>" />
		<link rel="icon msapplication-TileImage apple-touch-icon" type="image/png" sizes="256x256" href="<?= Minz_Url::display('/themes/icons/favicon-256.png') ?>" />
		<link rel="apple-touch-icon" href="<?= Minz_Url::display('/themes/icons/apple-touch-icon.png') ?>" />
		<meta name="apple-mobile-web-app-capable" content="yes" />
		<meta name="apple-mobile-web-app-status-bar-style" content="black" />
		<meta name="apple-mobile-web-app-title" content="<?= FreshRSS_Context::systemConf()->title ?>">
		<meta name="msapplication-TileColor" content="#FFF" />
		<meta name="theme-color" content="#FFF" />
<?php if (!FreshRSS_Context::systemConf()->allow_referrer) { ?>
		<meta name="referrer" content="never" />
<?php } ?>
		<?= FreshRSS_View::headTitle() ?>
<?php
	$url_base = Minz_Request::currentRequest();
	if ($this->rss_title != '') {
		$url_rss = $url_base;
		$url_rss['a'] = 'rss';
		$url_rss['params']['user'] = Minz_User::name() ?? '';
		$url_rss['params']['token'] = FreshRSS_Context::userConf()->token;
		unset($url_rss['params']['rid']);
		if (FreshRSS_Context::userConf()->since_hours_posts_per_rss) {
			$url_rss['params']['hours'] = FreshRSS_Context::userConf()->since_hours_posts_per_rss;
		}
?>
		<link rel="alternate" type="application/rss+xml" title="<?= $this->rss_title ?>" href="<?= Minz_Url::display($url_rss) ?>" />
<?php } if (FreshRSS_Context::isAll() || FreshRSS_Context::isAllAndCategories() || FreshRSS_Context::isAllAndArchived() || FreshRSS_Context::isCategory() || FreshRSS_Context::isFeed()) {
		$opml_rss = $url_base;
		$opml_rss['a'] = 'opml';
		$opml_rss['params']['user'] = Minz_User::name() ?? '';
		$opml_rss['params']['token'] = FreshRSS_Context::userConf()->token;
		unset($opml_rss['params']['rid']);
?>
		<link rel="outline" type="text/x-opml" title="OPML" href="<?= Minz_Url::display($opml_rss) ?>" />
<?php } if (FreshRSS_Context::systemConf()->allow_robots) { ?>
		<meta name="description" content="<?= htmlspecialchars(FreshRSS_Context::$name . ' | ' . FreshRSS_Context::$description, ENT_COMPAT, 'UTF-8') ?>" />
<?php } else { ?>
		<meta name="robots" content="noindex,nofollow" />
<?php } ?>
	</head>
	<body class="<?= Minz_Request::actionName() ?>">
<?php
	if (!Minz_Request::paramBoolean('ajax')) {
		flush();
		$this->partial('header');
	}
?>

<div id="global">
	<?php
		flush();
		if (isset($this->callbackBeforeFeeds)) {
			call_user_func($this->callbackBeforeFeeds, $this);
		}
		$this->render();
	?>
</div>

<?php
	$msg = '';
	$status = 'closed';
	$notificationName = '';
	$notif = Minz_Request::getNotification();
	if (!empty($notif)) {
		$msg = $notif['content'];
		$status = $notif['type'];
		$notificationName = $notif['notificationName'];
		invalidateHttpCache();
	}
?>
<div role="dialog" id="notification" class="notification <?= $status ?> <?= $notificationName ?>" aria-describedby="dialogMsg">
	<span class="msg" id="dialogMsg"><?= $msg ?></span>
	<button class="close" title="<?= _t('gen.action.close') ?>"><?= _i('close') ?></button>
</div>
	</body>
</html>