This page lists files in the current directory. You can view content, get download/execute commands for Wget, Curl, or PowerShell, or filter the list using wildcards (e.g., `*.sh`).
wget 'https://lists2.roe3.org/FreshRSS/app/layout/aside_configure.phtml'
<?php
declare(strict_types=1);
?>
<nav class="nav nav-list aside" id="aside_feed">
<a class="toggle_aside" href="#close"><?= _i('close') ?></a>
<ul>
<li class="item nav-section">
<div class="item nav-header"><?= _t('gen.menu.account') ?>: <?= htmlspecialchars(Minz_User::name() ?? '', ENT_NOQUOTES, 'UTF-8')?></div>
<ul>
<li class="item<?= Minz_Request::controllerName() === 'user' && Minz_Request::actionName() === 'profile' ? ' active' : '' ?>">
<a href="<?= _url('user', 'profile') ?>"><?= _t('gen.menu.user_profile') ?></a>
</li>
<li class="item">
<a class="signout" href="<?= FreshRSS_auth_Controller::getLogoutUrl() ?>">
<?php
echo _t('gen.auth.logout'); ?> <?= _i('logout') ?></a>
</li>
</ul>
</li>
<li class="item nav-section">
<div class="item nav-header"><?= _t('gen.menu.configuration') ?></div>
<ul>
<li class="item<?= Minz_Request::actionName() === 'display' ? ' active' : '' ?>">
<a href="<?= _url('configure', 'display') ?>"><?= _t('gen.menu.display') ?></a>
</li>
<li class="item<?= Minz_Request::actionName() === 'reading' ? ' active' : '' ?>">
<a href="<?= _url('configure', 'reading') ?>"><?= _t('gen.menu.reading') ?></a>
</li>
<li class="item<?= Minz_Request::actionName() === 'archiving' ? ' active' : '' ?>">
<a href="<?= _url('configure', 'archiving') ?>"><?= _t('gen.menu.archiving') ?></a>
</li>
<li class="item<?= Minz_Request::actionName() === 'integration' ? ' active' : '' ?>">
<a href="<?= _url('configure', 'integration') ?>"><?= _t('gen.menu.sharing') ?></a>
</li>
<li class="item<?= Minz_Request::actionName() === 'shortcut' ? ' active' : '' ?>">
<a href="<?= _url('configure', 'shortcut') ?>"><?= _t('gen.menu.shortcuts') ?></a>
</li>
<li class="item<?= in_array(Minz_Request::actionName(), ['queries', 'query'], true) ? ' active' : '' ?>">
<a href="<?= _url('configure', 'queries') ?>"><?= _t('gen.menu.queries') ?></a>
</li>
<li class="item<?= Minz_Request::controllerName() === 'extension' ? ' active' : '' ?>">
<a href="<?= _url('extension', 'index') ?>"><?= _t('gen.menu.extensions') ?></a>
</li>
<?php if (!FreshRSS_Auth::hasAccess('admin')) { ?>
<li class="item<?= Minz_Request::actionName() === 'logs' ? ' active' : '' ?>">
<a href="<?= _url('index', 'logs') ?>"><?= _t('gen.menu.logs') ?></a>
</li>
<?php } ?>
<?= Minz_ExtensionManager::callHookString('menu_configuration_entry') ?>
</ul>
</li>
<?php if (FreshRSS_Auth::hasAccess('admin')) { ?>
<li class="item nav-section">
<div class="item nav-header"><?= _t('gen.menu.admin') ?></div>
<ul>
<li class="item<?= Minz_Request::actionName() === 'system' ? ' active' : '' ?>">
<a href="<?= _url('configure', 'system') ?>"><?= _t('gen.menu.system') ?></a>
</li>
<li class="item<?= Minz_Request::controllerName() === 'user' && in_array(Minz_Request::actionName(), ['manage', 'details'], true) ? ' active' : '' ?>">
<a href="<?= _url('user', 'manage') ?>"><?= _t('gen.menu.user_management') ?></a>
</li>
<li class="item<?= Minz_Request::controllerName() === 'auth' ? ' active' : '' ?>">
<a href="<?= _url('auth', 'index') ?>"><?= _t('gen.menu.authentication') ?></a>
</li>
<li class="item<?= Minz_Request::controllerName() === 'update' && Minz_Request::actionName() === 'checkInstall' ? ' active' : '' ?>">
<a href="<?= _url('update', 'checkInstall') ?>"><?= _t('gen.menu.check_install') ?></a>
</li>
<?php if (!FreshRSS_Context::systemConf()->disable_update) { ?>
<li class="item<?= Minz_Request::controllerName() === 'update' && Minz_Request::actionName() === 'index' ? ' active' : '' ?>">
<a href="<?= _url('update', 'index') ?>"><?= _t('gen.menu.update') ?></a>
</li>
<?php } ?>
<li class="item<?= Minz_Request::actionName() === 'logs' ? ' active' : '' ?>">
<a href="<?= _url('index', 'logs') ?>"><?= _t('gen.menu.logs') ?></a>
</li>
<?= Minz_ExtensionManager::callHookString('menu_admin_entry') ?>
</ul>
</li>
<?php } ?>
<li class="item nav-section">
<div class="item nav-header"><!-- empty headline --></div>
<ul>
<li class="item<?= Minz_Request::actionName() === 'about' ? ' active' : '' ?>">
<a href="<?= _url('index', 'about') ?>"><?= _t('gen.menu.about') ?></a>
</li>
<?php if (file_exists(TOS_FILENAME)) { ?>
<li class="item<?= Minz_Request::actionName() === 'tos' ? ' active' : '' ?>">
<a href="<?= _url('index', 'tos') ?>"><?= _t('index.tos.title')?></a>
</li>
<?php } ?>
</ul>
</li>
</ul>
</nav>
<a class="close-aside" href="#close">❌</a>
<nav class="nav_menu nav_mobile">
<a class="btn toggle_aside" href="#aside_feed"><?= _i('category') ?></a>
</nav>
wget 'https://lists2.roe3.org/FreshRSS/app/layout/aside_feed.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
$actual_view = Minz_Request::actionName();
$class = '';
if (FreshRSS_Context::userConf()->hide_read_feeds &&
FreshRSS_Context::isStateEnabled(FreshRSS_Entry::STATE_NOT_READ) &&
!FreshRSS_Context::isStateEnabled(FreshRSS_Entry::STATE_READ)) {
$class = ' state_unread';
}
$state_filter_manual = Minz_Request::paramString('state');
if ($state_filter_manual !== '') {
$state_filter_manual = '&state=' . $state_filter_manual;
}
?>
<nav class="nav aside aside_feed<?= $class ?>" id="aside_feed">
<a class="toggle_aside" href="#close"><?= _i('close') ?></a>
<?php if (FreshRSS_Auth::hasAccess()) { ?>
<div class="stick configure-feeds">
<a id="btn-subscription" class="btn btn-important" href="<?= _url('subscription', 'index') ?>"><?= _t('index.menu.subscription') ?></a>
<a id="btn-add" class="btn btn-important" href="<?= _url('subscription', 'add') ?>"><?= _i('add') ?></a>
</div>
<?php } elseif (FreshRSS_Auth::accessNeedsLogin()) { ?>
<a href="<?= _url('index', 'about') ?>" class="about"><?= _t('index.menu.about') ?></a>
<?php } ?>
<form id="mark-read-aside" method="post">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<ul id="sidebar" class="tree scrollbar-thin">
<li class="tree-folder category all<?= FreshRSS_Context::isCurrentGet('a') ? ' active' : '' ?>">
<a class="tree-folder-title" data-unread="<?= format_number(FreshRSS_Context::$total_unread) ?>" href="<?= _url('index', $actual_view) . $state_filter_manual ?>">
<?= _i('all') ?><span class="title" data-unread="<?= format_number(FreshRSS_Context::$total_unread) ?>"><?= _t('index.menu.main_stream') ?></span>
</a>
</li>
<li class="tree-folder category important<?= FreshRSS_Context::isCurrentGet('i') ? ' active' : '' ?>">
<a class="tree-folder-title" data-unread="<?= format_number(FreshRSS_Context::$total_important_unread) ?>" href="<?= _url('index', $actual_view, 'get', 'i') . $state_filter_manual ?>">
<?= _i('important') ?><span class="title" data-unread="<?= format_number(FreshRSS_Context::$total_important_unread) ?>"><?= _t('index.menu.important') ?></span>
</a>
</li>
<li class="tree-folder category favorites<?= FreshRSS_Context::isCurrentGet('s') ? ' active' : '' ?>">
<a class="tree-folder-title" data-unread="<?= format_number(FreshRSS_Context::$total_starred['unread']) ?>" href="<?= _url('index', $actual_view, 'get', 's') . $state_filter_manual ?>">
<?= _i('starred') ?><span class="title" data-unread="<?= format_number(FreshRSS_Context::$total_starred['unread']) ?>"><?= _t('index.menu.favorites', format_number(FreshRSS_Context::$total_starred['all'])) ?></span>
</a>
</li>
<?php
$t_active = FreshRSS_Context::isCurrentGet('T');
$t_show = ($t_active && in_array(FreshRSS_Context::userConf()->display_categories, ['active', 'remember'], true)) || FreshRSS_Context::userConf()->display_categories === 'all';
?>
<li id="tags" class="tree-folder category tags<?= $t_active ? ' active' : '' ?>" data-unread="<?= format_number($this->nbUnreadTags) ?>">
<a href="<?= _url('index', $actual_view, 'get', 'T') . $state_filter_manual ?>" class="tree-folder-title">
<button class="dropdown-toggle" title="<?= _t('sub.category.expand') ?>"><?= _i($t_show ? 'up' : 'down') ?></button><span class="title" title="<?= _t('sub.category.open') ?>" data-unread="<?= format_number($this->nbUnreadTags) ?>"><?= _t('index.menu.tags') ?></span>
</a>
<ul class="tree-folder-items<?= $t_show ? ' active' : '' ?>">
<?php
foreach ($this->tags as $tag):
?>
<li id="t_<?= $tag->id() ?>" class="item feed<?= FreshRSS_Context::isCurrentGet('t_' . $tag->id()) ? ' active' : '' ?>" data-unread="<?= $tag->nbUnread() ?>">
<div class="dropdown no-mobile">
<div id="dropdown-t-<?= $tag->id() ?>" class="dropdown-target"></div>
<a class="dropdown-toggle" href="#dropdown-t-<?= $tag->id() ?>"><?= _i('configure') ?></a>
<?php /* tag_config_template */ ?>
</div>
<a class="item-title" data-unread="<?= format_number($tag->nbUnread()) ?>" href="<?=
_url('index', $actual_view, 'get', 't_' . $tag->id()) . $state_filter_manual ?>"><?= _i('label') ?> <?= $tag->name() ?></a>
</li>
<?php endforeach; ?>
</ul>
</li>
<?php
$nbFeedsTotal = 0;
foreach ($this->categories as $cat) {
$nbFeedsTotal += $cat->nbFeeds();
}
foreach ($this->categories as $cat):
$feeds = $cat->feeds();
$position = $cat->attributeInt('position');
if (!empty($feeds)) {
$c_active = FreshRSS_Context::isCurrentGet('c_' . $cat->id());
$c_show = ($c_active && in_array(FreshRSS_Context::userConf()->display_categories, ['active', 'remember'], true))
|| FreshRSS_Context::userConf()->display_categories === 'all';
?>
<li id="c_<?= $cat->id() ?>" class="tree-folder category<?= $c_active ? ' active' : '' ?>"<?=
null === $position ? '' : " data-position='$position'" ?> data-unread="<?= $cat->nbNotRead() ?>">
<a href="<?= _url('index', $actual_view, 'get', 'c_' . $cat->id()) . $state_filter_manual ?>" class="tree-folder-title">
<button class="dropdown-toggle" title="<?= _t('sub.category.expand') ?>"><?= _i($c_show ? 'up' : 'down') ?></button><span title="<?= _t('sub.category.open') ?>" class="title<?= $cat->hasFeedsWithError() ? ' error' : '' ?>" data-unread="<?=
format_number($cat->nbNotRead()) ?>" ><?=
$cat->name()
?><?php if ($cat->kind() == FreshRSS_Category::KIND_DYNAMIC_OPML) { echo _i('opml-dyn'); } ?></span>
</a>
<ul class="tree-folder-items<?= $c_show ? ' active' : '' ?>">
<?php
// NB: Reduce whitespace in that loop
$show_favicon = FreshRSS_Context::userConf()->show_favicons && $nbFeedsTotal < FreshRSS_Context::userConf()->simplify_over_n_feeds;
foreach ($feeds as $feed):
$f_active = FreshRSS_Context::isCurrentGet('f_' . $feed->id());
$f_active_class = $f_active ? ' active' : '';
$error_class = '';
$error_title = '';
if ($feed->inError() && !$feed->mute()) {
$error_class = ' error';
$error_title = _t('sub.feed.error');
}
$empty_class = '';
$empty_title = '';
if ($feed->nbEntries() <= 0) {
$empty_class = ' empty';
$empty_title = _t('sub.feed.empty');
}
$mute_class = $feed->mute() ? ' mute' : '';
?>
<li id="f_<?= $feed->id() ?>" class="item feed<?= $f_active_class, $mute_class, $error_class, $empty_class ?>"
data-unread="<?= $feed->nbNotRead() ?>" data-priority="<?= $feed->priority() ?>"><?php
if ($f_active || $nbFeedsTotal < FreshRSS_Context::userConf()->simplify_over_n_feeds):
?><div class="dropdown no-mobile">
<div id="dropdown-<?= $feed->id() ?>" class="dropdown-target"></div><a href="#dropdown-<?= $feed->id() ?>" class="dropdown-toggle" title="<?= _t('gen.action.menu.open') ?>" data-fweb="<?= $feed->website() ?>"><?= _i('configure') ?></a><?php /* feed_config_template */ ?>
</div><?php
endif;
$title = _t('sub.feed.open_feed', $feed->name());
$title .= $error_title !== '' ? ' ⚠ ' . $error_title : '';
$title .= $empty_title !== '' ? ' ' . $empty_title : '';
$title .= $feed->mute() ? ' 🔇 ' . _t('sub.feed.mute.state_is_muted') : '';
?><a class="item-title" title="<?= $title ?>"
data-unread="<?= format_number($feed->nbNotRead()) ?>" href="<?=
_url('index', $actual_view, 'get', 'f_' . $feed->id()) . $state_filter_manual ?>">
<?php
if ($show_favicon || $f_active) { ?><img class="favicon" src="<?= $feed->favicon() ?>" alt="✇" loading="lazy" /><?php }
?><span class="title"><?= $feed->name() ?></span></a></li>
<?php
endforeach;
?>
</ul>
</li>
<?php
}
endforeach;
?>
<li class="tree-bottom"></li>
</ul>
</form>
</nav>
<a class="close-aside" href="#close">❌</a>
<div id="first_load" class="loading"></div>
<?php flush(); ?>
<script id="tag_config_template" type="text/html">
<ul class="dropdown-menu">
<li class="item">
<a class="configure open-slider" href="<?= _url('tag', 'update', 'id', '------') ?>"><?= _t('gen.action.manage') ?></a>
</li>
</ul>
<a class="dropdown-close" href="#close">❌</a>
</script>
<script id="feed_config_template" type="text/html">
<ul class="dropdown-menu">
<li class="item"><a href="<?= _url('index', $actual_view, 'get', 'f_------') ?>"><?= _t('gen.action.filter') ?></a></li>
<?php if (FreshRSS_Auth::hasAccess()) { ?>
<li class="item"><a href="<?= _url('stats', 'repartition', 'id', '------') ?>"><?= _t('index.menu.stats') ?></a></li>
<?php } ?>
<li class="item link website"><a target="_blank" rel="noreferrer" href="http://example.net/"><?= _t('gen.action.see_website') ?></a></li>
<?php if (FreshRSS_Auth::hasAccess()) {
$get = Minz_Request::paramString('get');
if ($get === '') {
$url = _url('subscription', 'feed', 'id', '------', 'from', $actual_view);
} else {
$url = _url('subscription', 'feed', 'id', '------', 'get', $get, 'from', $actual_view);
}
?>
<li class="item"><a class="configure open-slider" href="<?= $url ?>"><?= _t('gen.action.manage') ?></a></li>
<li class="item"><a href="<?= _url('feed', 'actualize', 'id', '------') ?>"><?= _t('gen.action.actualize') ?></a></li>
<li class="item">
<?php $confirm = FreshRSS_Context::userConf()->reading_confirm ? 'confirm" disabled="disabled' : ''; ?>
<button class="read_all as-link <?= $confirm ?>"
form="mark-read-aside"
formaction="<?= _url('entry', 'read', 'get', 'f_------') ?>"
type="submit"><?= _t('index.menu.mark_feed_read') ?></button>
</li>
<?php } ?>
</ul>
<a class="dropdown-close" href="#close">❌</a>
</script>
wget 'https://lists2.roe3.org/FreshRSS/app/layout/aside_subscription.phtml'
<?php
declare(strict_types=1);
?>
<nav class="nav nav-list aside" id="aside_feed">
<a class="toggle_aside" href="#close"><?= _i('close') ?></a>
<ul>
<li class="item nav-section">
<div class="nav-header"><?= _t('sub.menu.subscription_management') ?></div>
<ul>
<li class="item<?= Minz_Request::controllerName() === 'subscription' && Minz_Request::actionName() === 'add' ? ' active' : '' ?>">
<a href="<?= _url('subscription', 'add') ?>"><?= _t('sub.menu.add') ?></a>
</li>
<li class="item<?= Minz_Request::controllerName() === 'subscription' && in_array(Minz_Request::actionName(), ['index', 'category', 'feed'], true) ? ' active' : '' ?>">
<a href="<?= _url('subscription', 'index') ?>"><?= _t('sub.menu.subscription_management') ?></a>
</li>
<li class="item<?= Minz_Request::controllerName() === 'tag' ? ' active' : '' ?>">
<a href="<?= _url('tag', 'index') ?>"><?= _t('sub.menu.label_management') ?></a>
</li>
<li class="item<?= Minz_Request::controllerName() === 'importExport' ? ' active' : '' ?>">
<a href="<?= _url('importExport', 'index') ?>"><?= _t('sub.menu.import_export') ?></a>
</li>
<li class="item<?= Minz_Request::controllerName() === 'subscription' && Minz_Request::actionName() === 'bookmarklet' ? ' active' : '' ?>">
<a href="<?= _url('subscription', 'bookmarklet') ?>"><?= _t('sub.menu.subscription_tools') ?></a>
</li>
</ul>
</li>
<li class="item nav-section">
<div class="nav-header"><?= _t('admin.stats') ?></div>
<ul>
<li class="item<?= Minz_Request::controllerName() == 'stats' && Minz_Request::actionName() == 'index' ? ' active' : '' ?>">
<a href="<?= _url('stats', 'index') ?>"><?= _t('sub.menu.stats.main') ?></a>
</li>
<li class="item<?= Minz_Request::actionName() == 'idle' ? ' active' : '' ?>">
<a href="<?= _url('stats', 'idle') ?>"><?= _t('sub.menu.stats.idle') ?></a>
</li>
<li class="item<?= Minz_Request::actionName() == 'repartition' ? ' active' : '' ?>">
<a href="<?= _url('stats', 'repartition') ?>"><?= _t('sub.menu.stats.repartition') ?></a>
</li>
</ul>
</li>
</ul>
</nav>
<a class="close-aside" href="#close">❌</a>
<nav class="nav_menu nav_mobile">
<a class="btn toggle_aside" href="#aside_feed"><?= _i('category') ?></a>
</nav>
wget 'https://lists2.roe3.org/FreshRSS/app/layout/header.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
?>
<header class="header">
<div class="item title">
<a href="<?= Minz_Url::display(['c' => 'index', 'a' => 'index'], 'html', 'root') ?>">
<?php if (FreshRSS_Context::systemConf()->logo_html == '') { ?>
<img class="logo" src="<?= _i('FreshRSS-logo', FreshRSS_Themes::ICON_URL) ?>" alt="FreshRSS" loading="lazy" />
<?php
} else {
echo FreshRSS_Context::systemConf()->logo_html;
}
?>
</a>
</div>
<div class="item search">
<?php if (FreshRSS_Auth::hasAccess() || FreshRSS_Context::systemConf()->allow_anonymous) { ?>
<form action="<?= $this->html_url ?>" method="get">
<?php if (Minz_Request::controllerName() === 'index'): ?>
<?php if (in_array(Minz_Request::actionName(), ['normal', 'global', 'reader'], true)) { ?>
<input type="hidden" name="a" value="<?= Minz_Request::actionName() ?>" />
<?php } if (Minz_Request::paramString('get') !== '') { ?>
<input type="hidden" name="get" value="<?= FreshRSS_Context::currentGet() ?>" />
<?php } if (Minz_Request::paramInt('state') !== 0) { ?>
<input type="hidden" name="state" value="<?= Minz_Request::paramInt('state') ?>" />
<?php } ?>
<?php endif; ?>
<?php if (Minz_Request::paramString('user') !== '') { ?>
<input type="hidden" name="user" value="<?= Minz_User::name() ?>" />
<?php } if (ctype_alnum(Minz_Request::paramString('t'))) { ?>
<input type="hidden" name="t" value="<?= Minz_Request::paramString('t') ?>" />
<?php } if (ctype_upper(Minz_Request::paramString('order'))) { ?>
<input type="hidden" name="order" value="<?= FreshRSS_Context::$order ?>" />
<?php } if (ctype_lower(Minz_Request::paramString('f'))) { ?>
<input type="hidden" name="f" value="<?= Minz_Request::paramString('f') ?>" />
<?php } ?>
<div class="stick">
<input type="search" name="search" id="search"
value="<?= htmlspecialchars(htmlspecialchars_decode(Minz_Request::paramString('search'), ENT_QUOTES), ENT_COMPAT, 'UTF-8') ?>"
placeholder="<?= _t('gen.menu.search') ?>" />
<button class="btn" type="submit"><?= _i('search') ?></button>
</div>
</form>
<?php } ?>
</div>
<?php if (FreshRSS_Auth::hasAccess()) { ?>
<nav class="item configure">
<div class="dropdown">
<div id="dropdown-configure" class="dropdown-target"></div>
<a class="btn dropdown-toggle" href="#dropdown-configure"><?= _i('configure') ?></a>
<ul class="dropdown-menu scrollbar-thin">
<li class="dropdown-header-close"><a class="toggle_aside" href="#close"><?= _i('close') ?></a></li>
<li class="item dropdown-section">
<div class="dropdown-section-title">
<?= _t('gen.menu.account') ?>: <?= htmlspecialchars(Minz_User::name() ?? '', ENT_NOQUOTES, 'UTF-8') ?>
</div>
<ul>
<li class="item"><a href="<?= _url('user', 'profile') ?>"><?= _t('gen.menu.user_profile') ?></a></li>
<?php if (FreshRSS_Auth::accessNeedsAction()): ?>
<li class="item"><a class="signout" href="<?= _url('auth', 'logout') ?>"><?= _t('gen.auth.logout'); ?><?= _i('logout') ?></a></li>
<?php else: ?>
<li class="item"><span class="signout">(<?= htmlspecialchars(Minz_User::name() ?? '', ENT_NOQUOTES, 'UTF-8') ?>)</span></li>
<?php endif; ?>
</ul>
</li>
<li class="item dropdown-section">
<div class="dropdown-section-title">
<?= _t('gen.menu.configuration') ?>
</div>
<ul>
<li class="item"><a href="<?= _url('configure', 'display') ?>"><?= _t('gen.menu.display') ?></a></li>
<li class="item"><a href="<?= _url('configure', 'reading') ?>"><?= _t('gen.menu.reading') ?></a></li>
<li class="item"><a href="<?= _url('configure', 'archiving') ?>"><?= _t('gen.menu.archiving') ?></a></li>
<li class="item"><a href="<?= _url('configure', 'integration') ?>"><?= _t('gen.menu.sharing') ?></a></li>
<li class="item"><a href="<?= _url('configure', 'shortcut') ?>"><?= _t('gen.menu.shortcuts') ?></a></li>
<li class="item"><a href="<?= _url('configure', 'queries') ?>"><?= _t('gen.menu.queries') ?></a></li>
<li class="item"><a href="<?= _url('extension', 'index') ?>"><?= _t('gen.menu.extensions') ?></a></li>
<?= Minz_ExtensionManager::callHookString('menu_configuration_entry') ?>
</ul>
</li>
<?php if (FreshRSS_Auth::hasAccess('admin')) { ?>
<li class="item dropdown-section">
<div class="dropdown-section-title">
<?= _t('gen.menu.admin') ?>
</div>
<ul>
<li class="item"><a href="<?= _url('configure', 'system') ?>"><?= _t('gen.menu.system') ?></a></li>
<li class="item"><a href="<?= _url('user', 'manage') ?>"><?= _t('gen.menu.user_management') ?></a></li>
<li class="item"><a href="<?= _url('auth', 'index') ?>"><?= _t('gen.menu.authentication') ?></a></li>
<li class="item"><a href="<?= _url('update', 'checkInstall') ?>"><?= _t('gen.menu.check_install') ?></a></li>
<?php if (!FreshRSS_Context::systemConf()->disable_update) { ?>
<li class="item"><a href="<?= _url('update', 'index') ?>"><?= _t('gen.menu.update') ?></a></li>
<?php } ?>
<?= Minz_ExtensionManager::callHookString('menu_admin_entry') ?>
</ul>
</li>
<?php } ?>
<li class="item dropdown-section">
<ul>
<li class="item"><a href="<?= _url('index', 'logs') ?>"><?= _t('gen.menu.logs') ?></a></li>
<li class="item"><a href="<?= _url('index', 'about') ?>"><?= _t('gen.menu.about') ?></a></li>
<?php if (file_exists(TOS_FILENAME)) { ?>
<li class="item">
<a href="<?= _url('index', 'tos') ?>"><?= _t('index.tos.title')?></a>
</li>
<?php } ?>
<?= Minz_ExtensionManager::callHookString('menu_other_entry') ?>
</ul>
</li>
</ul>
<a class="dropdown-close" href="#close">❌</a>
</div>
</nav>
<?php } elseif (FreshRSS_Auth::accessNeedsAction()) { ?>
<div class="item configure">
<a class="signin" href="<?= Minz_Url::display(['c' => 'auth', 'a' => 'login'], 'html', 'root') ?>"><?= _i('login') ?><?= _t('gen.auth.login') ?></a>
</div>
<?php } ?>
</header>
wget 'https://lists2.roe3.org/FreshRSS/app/layout/layout.phtml'
<?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::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';
$notif = Minz_Request::getNotification();
if (!empty($notif)) {
$msg = $notif['content'];
$status = $notif['type'];
invalidateHttpCache();
}
?>
<div id="notification" class="notification <?= $status ?>">
<span class="msg"><?= $msg ?></span>
<a class="close" href=""><?= _i('close') ?></a>
</div>
</body>
</html>
wget 'https://lists2.roe3.org/FreshRSS/app/layout/nav_entries.phtml'
<?php
declare(strict_types=1);
?>
<nav id="nav_entries">
<button class="previous_entry" title="<?= _t('gen.action.nav_buttons.prev') ?>"><?= _i('prev') ?></button>
<button class="up" title="<?= _t('gen.action.nav_buttons.up') ?>"><?= _i('up') ?></button>
<button class="next_entry" title="<?= _t('gen.action.nav_buttons.next') ?>"><?= _i('next') ?></button>
</nav>
wget 'https://lists2.roe3.org/FreshRSS/app/layout/nav_menu.phtml'
<?php
declare(strict_types=1);
$actual_view = Minz_Request::actionName();
?>
<nav class="nav_menu">
<?php if ($actual_view === 'normal' || $actual_view === 'reader') { ?>
<div class="group">
<a class="btn toggle_aside" href="#aside_feed"><?= _i('category') ?></a>
</div>
<?php } ?>
<?php if (FreshRSS_Auth::hasAccess()) { ?>
<div id="nav_menu_actions" class="group">
<?php
$states = array(
'read' => FreshRSS_Entry::STATE_READ,
'unread' => FreshRSS_Entry::STATE_NOT_READ,
'starred' => FreshRSS_Entry::STATE_FAVORITE,
'non-starred' => FreshRSS_Entry::STATE_NOT_FAVORITE,
);
foreach ($states as $state_str => $state) {
$state_enabled = FreshRSS_Context::isStateEnabled($state);
$url_state = Minz_Request::currentRequest();
$url_state['params']['state'] = FreshRSS_Context::getRevertState($state);
?>
<a id="toggle-<?= $state_str ?>"
class="btn <?= $state_enabled ? 'active' : '' ?>"
role="checkbox" aria-checked="<?= $state_enabled ? 'true' : 'false' ?>"
title="<?= _t('index.menu.' . $state_str) ?>"
href="<?= Minz_Url::display($url_state) ?>"><?= _i($state_str) ?></a>
<?php } ?>
<div class="dropdown only-mobile" id="dropdown-search-wrapper">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<div id="dropdown-search" class="dropdown-target"></div>
<a id="toggle-search" class="dropdown-toggle btn<?= (strlen(FreshRSS_Context::$search->getRawInput()) > 0) ? ' active' : ''; ?>" title="<?= _t('gen.menu.search') ?>"
href="#dropdown-search"><?= _i('search') ?></a>
<ul class="dropdown-menu">
<li class="item">
<span>
<form action="<?= _url('index', 'index') ?>" method="get">
<?php if (in_array(Minz_Request::actionName(), ['normal', 'global', 'reader'], true)) { ?>
<input type="hidden" name="a" value="<?= Minz_Request::actionName() ?>" />
<?php } if (Minz_Request::paramString('get') !== '') { ?>
<input type="hidden" name="get" value="<?= FreshRSS_Context::currentGet() ?>" />
<?php } if (ctype_upper(Minz_Request::paramString('order'))) { ?>
<input type="hidden" name="order" value="<?= FreshRSS_Context::$order ?>" />
<?php } if (Minz_Request::paramInt('state') !== 0) { ?>
<input type="hidden" name="state" value="<?= FreshRSS_Context::$state ?>" />
<?php } ?>
<div class="stick search">
<input type="search" name="search"
value="<?= htmlspecialchars(htmlspecialchars_decode(FreshRSS_Context::$search->getRawInput(), ENT_QUOTES), ENT_COMPAT, 'UTF-8'); ?>"
placeholder="<?= _t('gen.menu.search') ?>" title="<?= _t('gen.menu.search') ?>" /><button class="btn" type="submit" title="<?= _t('index.menu.search_short') ?>"><?= _i('search') ?></button>
</div>
<p class="help"><?= _i('help') ?> <?= _t('gen.menu.search_help') ?></a></p>
</form>
</span>
</li>
</ul>
<a class="dropdown-close" href="#close">❌</a>
</div>
<div class="dropdown">
<div id="dropdown-query" class="dropdown-target"></div>
<a id="toggle-userqueries" class="dropdown-toggle btn" href="#dropdown-query" title="<?= _t('index.menu.queries') ?>"><?= _i('bookmark-tag') ?></a>
<ul class="dropdown-menu">
<li class="dropdown-header">
<?= _t('index.menu.queries') ?>
<a href="<?= _url('configure', 'queries') ?>"><?= _i('configure') ?></a>
</li>
<?php foreach (FreshRSS_Context::userConf()->queries as $raw_query): ?>
<li class="item query">
<?php if (!empty($raw_query['url'])): ?>
<a href="<?= $raw_query['url'] ?>"><?= $raw_query['name'] ?? $raw_query['url'] ?></a>
<?php else: ?>
<?php $query = new FreshRSS_UserQuery($raw_query, FreshRSS_Context::categories(), FreshRSS_Context::labels()); ?>
<a href="<?= $query->getUrl() ?>"><?= $query->getName() ?></a>
<?php endif; ?>
</li>
<?php endforeach; ?>
<?php
$classSeparator = '';
if (count(FreshRSS_Context::userConf()->queries) > 0) {
$classSeparator = ' separator';
}
$url_query = Minz_Request::currentRequest();
$url_query['c'] = 'configure';
$url_query['a'] = 'bookmarkQuery';
?>
<li class="item<?= $classSeparator ?>"><a href="<?= Minz_Url::display($url_query) ?>"><?= _i('bookmark-add') ?> <?= _t('index.menu.bookmark_query') ?></a></li>
</ul>
<a class="dropdown-close" href="#close">❌</a>
</div>
</div>
<?php
$get = FreshRSS_Context::currentGet();
$string_mark = _t('index.menu.mark_all_read');
$string_unmark = _t('index.menu.mark_selection_unread');
if ($get[0] === 'f') {
$string_mark = _t('index.menu.mark_feed_read');
} elseif ($get[0] === 'c') {
$string_mark = _t('index.menu.mark_cat_read');
}
$mark_read_url = array(
'c' => 'entry',
'a' => 'read',
'params' => array(
'get' => $get,
'nextGet' => FreshRSS_Context::$next_get,
'idMax' => FreshRSS_Context::$id_max,
'search' => htmlspecialchars_decode(FreshRSS_Context::$search->getRawInput(), ENT_QUOTES),
'state' => FreshRSS_Context::$state,
),
);
$mark_unread_url = $mark_read_url;
$mark_unread_url['params']['is_read'] = '0';
$mark_unread_url['params']['nextGet'] = $get;
?>
<div class="group stick" id="nav_menu_read_all">
<form id="mark-read-menu" method="post">
<?php $confirm = FreshRSS_Context::userConf()->reading_confirm ? 'confirm" disabled="disabled' : ''; ?>
<button class="read_all btn <?= $confirm ?>"
form="mark-read-menu"
formaction="<?= Minz_Url::display($mark_read_url) ?>"
type="submit"><?= _t('gen.action.mark_read') ?></button>
<div class="dropdown">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<div id="dropdown-read" class="dropdown-target"></div>
<a class="dropdown-toggle btn" href="#dropdown-read"><?= _i('down') ?></a>
<ul class="dropdown-menu">
<li class="item">
<button class="as-link <?= $confirm ?>"
form="mark-read-menu"
formaction="<?= Minz_Url::display($mark_read_url) ?>"
type="submit"><?= $string_mark ?></button>
</li>
<?php
$today = @strtotime('today');
$mark_before_today = $mark_read_url;
$mark_before_today['params']['idMax'] = $today . '000000';
$mark_before_one_week = $mark_read_url;
$mark_before_one_week['params']['idMax'] = ($today - 604800) . '000000';
$mark_unread_enabled = FreshRSS_Context::isStateEnabled(FreshRSS_Entry::STATE_READ) or !FreshRSS_Context::isStateEnabled(FreshRSS_Entry::STATE_NOT_READ);
?>
<li class="item separator">
<button class="as-link <?= $confirm ?>"
form="mark-read-menu"
formaction="<?= Minz_Url::display($mark_before_today) ?>"
type="submit"><?= _t('index.menu.before_one_day') ?></button>
</li>
<li class="item">
<button class="as-link <?= $confirm ?>"
form="mark-read-menu"
formaction="<?= Minz_Url::display($mark_before_one_week) ?>"
type="submit"><?= _t('index.menu.before_one_week') ?></button>
</li>
<li class="item separator">
<button class="as-link <?= $mark_unread_enabled ? $confirm : '" disabled="disabled' ?>"
form="mark-read-menu"
formaction="<?= Minz_Url::display($mark_unread_url) ?>"
type="submit"><?= $string_unmark ?></button>
</li>
</ul>
<a class="dropdown-close" href="#close">❌</a>
</div>
</form>
</div>
<?php } ?>
<?php $url_output = Minz_Request::currentRequest(); ?>
<div class="group" id="nav_menu_views">
<?php
$readingModes = FreshRSS_ReadingMode::getReadingModes();
$readingModes = Minz_ExtensionManager::callHook('nav_reading_modes', $readingModes);
if (!is_iterable($readingModes)) {
$readingModes = FreshRSS_ReadingMode::getReadingModes();
}
/** @var FreshRSS_ReadingMode $mode */
foreach ($readingModes as $mode) {
?>
<a class="<?= $mode->getId() ?> btn <?php if ($mode->isActive()) { echo 'active'; } ?>" title="<?=
$mode->getTitle() ?>" href="<?= Minz_Url::display($mode->getUrlParams()) ?>">
<?= $mode->getName() ?>
</a>
<?php
}
?>
</div>
<?php $nav_menu_hooks = Minz_ExtensionManager::callHookString('nav_menu'); ?>
<?php if ($nav_menu_hooks != '') { ?>
<div class="group" id="nav_menu_hooks">
<?= $nav_menu_hooks ?>
</div>
<?php } ?>
<?php
if (FreshRSS_Context::$order === 'DESC') {
$order = 'ASC';
$icon = 'sort-up';
$title = _t('index.menu.older_first');
} else {
$order = 'DESC';
$icon = 'sort-down';
$title = _t('index.menu.newer_first');
}
$url_order = Minz_Request::currentRequest();
$url_order['params']['order'] = $order;
?>
<div class="group">
<a id="toggle-order" class="btn" href="<?= Minz_Url::display($url_order) ?>" title="<?= $title ?>">
<?= _i($icon) ?>
</a>
</div>
<?php if (FreshRSS_Auth::hasAccess() || FreshRSS_Context::systemConf()->allow_anonymous_refresh) { ?>
<div class="group">
<a id="actualize" class="btn" href="<?= _url('feed', 'actualize') ?>" title="<?= _t('gen.action.actualize') ?>"><?= _i('refresh') ?></a>
</div>
<?php } ?>
</nav>
<?php flush(); ?>
wget 'https://lists2.roe3.org/FreshRSS/app/layout/simple.phtml'
<?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 if ($this->rss_url != ''): ?>
<link rel="alternate" type="application/rss+xml" title="<?= $this->rss_title ?>" href="<?= $this->rss_url ?>" />
<?php endif; ?>
<meta name="robots" content="noindex,nofollow" />
</head>
<body>
<?php flush(); ?>
<div class="app-layout app-layout-simple">
<div class="header">
<div class="item title">
<a href="<?= Minz_Url::display(['c' => 'index', 'a' => 'index'], 'html', 'root') ?>">
<?php if (FreshRSS_Context::systemConf()->logo_html == '') { ?>
<img class="logo" src="<?= _i('FreshRSS-logo', FreshRSS_Themes::ICON_URL) ?>" alt="FreshRSS" loading="lazy" />
<?php
} else {
echo FreshRSS_Context::systemConf()->logo_html;
}
?>
</a>
</div>
<div class="item"></div>
<?php if (FreshRSS_Auth::accessNeedsAction()): ?>
<div class="item configure">
<?php if (FreshRSS_Auth::hasAccess()): ?>
<a class="signout" href="<?= Minz_Url::display(['c' => 'auth', 'a' => 'logout'], 'html', 'root') ?>">
<?= _i('logout') ?><?= _t('gen.auth.logout') ?>
(<?= htmlspecialchars(Minz_User::name() ?? '', ENT_NOQUOTES, 'UTF-8') ?>)
</a>
<?php else: ?>
<a class="signin" href="<?= Minz_Url::display(['c' => 'auth', 'a' => 'login'], 'html', 'root') ?>">
<?= _i('login') ?><?= _t('gen.auth.login') ?>
</a>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
<?php $this->render(); ?>
</div>
<?php
$msg = '';
$status = 'closed';
$notif = Minz_Request::getNotification();
if (!empty($notif)) {
$msg = $notif['content'];
$status = $notif['type'];
invalidateHttpCache();
}
?>
<div id="notification" class="notification <?= $status ?>">
<span class="msg"><?= $msg ?></span>
<a class="close" href=""><?= _i('close') ?></a>
</div>
</body>
</html>