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/views/configure/archiving.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
$this->partial('aside_configure');
?>
<main class="post">
<div class="link-back-wrapper">
<a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
</div>
<h1><?= _t('conf.archiving') ?></h1>
<p class="help"><?= _i('help') ?> <?= _t('conf.archiving.help') ?></p>
<form method="post" action="<?= _url('configure', 'archiving') ?>">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<div class="form-group">
<label class="group-name" for="ttl_default"><?= _t('conf.archiving.ttl') ?></label>
<div class="group-controls">
<select class="number" name="ttl_default" id="ttl_default" required="required" data-leave-validation="<?= FreshRSS_Context::userConf()->ttl_default ?>"><?php
$found = false;
foreach (array(1200 => '20min', 1500 => '25min', 1800 => '30min', 2700 => '45min',
3600 => '1h', 5400 => '1.5h', 7200 => '2h', 10800 => '3h', 14400 => '4h', 18800 => '5h', 21600 => '6h', 25200 => '7h', 28800 => '8h',
36000 => '10h', 43200 => '12h', 64800 => '18h',
86400 => '1d', 129600 => '1.5d', 172800 => '2d', 259200 => '3d', 345600 => '4d', 432000 => '5d', 518400 => '6d',
604800 => '1wk') as $v => $t) {
echo '<option value="' . $v . (FreshRSS_Context::userConf()->ttl_default == $v ? '" selected="selected' : '') . '">' . $t . '</option>';
if (FreshRSS_Context::userConf()->ttl_default == $v) {
$found = true;
}
}
if (!$found) {
echo '<option value="' . intval(FreshRSS_Context::userConf()->ttl_default) . '" selected="selected">'
. intval(FreshRSS_Context::userConf()->ttl_default) . 's</option>';
}
?></select> (<?= _t('gen.short.by_default') ?>)
</div>
</div>
<p class="alert alert-warn">
<?= _t('conf.archiving.policy_warning') ?>
</p>
<div class="form-group">
<label class="group-name"><?= _t('conf.archiving.policy') ?><br /><small>(<?= _t('gen.short.by_default') ?>)</small></label>
<div class="group-controls">
<label class="checkbox" for="enable_keep_max">
<input type="checkbox" name="enable_keep_max" id="enable_keep_max" value="1"<?=
empty(FreshRSS_Context::userConf()->archiving['keep_max']) ? '' : ' checked="checked"' ?>
data-leave-validation="<?= empty(FreshRSS_Context::userConf()->archiving['keep_max']) ? 0 : 1 ?>"/>
<?= _t('conf.archiving.keep_max') ?>
<?php $keepMax = empty(FreshRSS_Context::userConf()->archiving['keep_max']) ? 200 : FreshRSS_Context::userConf()->archiving['keep_max']; ?>
<input type="number" id="keep_max" name="keep_max" min="0" value="<?= $keepMax ?>" data-leave-validation="<?= $keepMax ?>"/>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="enable_keep_period">
<input type="checkbox" name="enable_keep_period" id="enable_keep_period" value="1"<?=
FreshRSS_Context::userConf()->volatile['enable_keep_period'] ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->volatile['enable_keep_period'] ? 1 : 0 ?>"/>
<?= _t('conf.archiving.keep_period') ?>
<input type="number" id="keep_period_count" name="keep_period_count" min="0" value="<?= FreshRSS_Context::userConf()->volatile['keep_period_count'] ?>"
data-leave-validation="<?= FreshRSS_Context::userConf()->volatile['keep_period_count'] ?>"/>
<select class="number" name="keep_period_unit" id="keep_period_unit" data-leave-validation="<?= FreshRSS_Context::userConf()->volatile['keep_period_unit'] ?>">
<option></option>
<option value="P1Y" <?= 'P1Y' === FreshRSS_Context::userConf()->volatile['keep_period_unit'] ? 'selected="selected"' : '' ?>><?= _t('gen.period.years') ?></option>
<option value="P1M" <?= 'P1M' === FreshRSS_Context::userConf()->volatile['keep_period_unit'] ? 'selected="selected"' : '' ?>><?= _t('gen.period.months') ?></option>
<option value="P1W" <?= 'P1W' === FreshRSS_Context::userConf()->volatile['keep_period_unit'] ? 'selected="selected"' : '' ?>><?= _t('gen.period.weeks') ?></option>
<option value="P1D" <?= 'P1D' === FreshRSS_Context::userConf()->volatile['keep_period_unit'] ? 'selected="selected"' : '' ?>><?= _t('gen.period.days') ?></option>
<option value="PT1H" <?= 'PT1H' === FreshRSS_Context::userConf()->volatile['keep_period_unit'] ? 'selected="selected"' : '' ?>><?= _t('gen.period.hours') ?></option>
</select>
</label>
</div>
</div>
<div class="form-group">
<label class="group-name"><?= _t('conf.archiving.exception') ?><br /><small>(<?= _t('gen.short.by_default') ?>)</small></label>
<div class="group-controls">
<label class="checkbox" for="keep_favourites">
<input type="checkbox" name="keep_favourites" id="keep_favourites" value="1"<?=
FreshRSS_Context::userConf()->archiving['keep_favourites'] !== false ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->archiving['keep_favourites'] !== false ? 1 : 0 ?>"/>
<?= _t('conf.archiving.keep_favourites') ?>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="keep_labels">
<input type="checkbox" name="keep_labels" id="keep_labels" value="1"<?=
FreshRSS_Context::userConf()->archiving['keep_labels'] !== false ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->archiving['keep_labels'] !== false ? 1 : 0 ?>"/>
<?= _t('conf.archiving.keep_labels') ?>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="keep_unreads">
<input type="checkbox" name="keep_unreads" id="keep_unreads" value="1"<?=
FreshRSS_Context::userConf()->archiving['keep_unreads'] ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->archiving['keep_unreads'] ? 1 : 0 ?>"/>
<?= _t('conf.archiving.keep_unreads') ?>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label for="keep_min_default"><?= _t('conf.archiving.keep_min_by_feed') ?>
<input type="number" id="keep_min_default" name="keep_min_default" min="0" value="<?=
FreshRSS_Context::userConf()->archiving['keep_min'] ?>"
data-leave-validation="<?= FreshRSS_Context::userConf()->archiving['keep_min'] ?>">
</label>
</div>
</div>
<div class="form-group form-actions">
<div class="group-controls">
<button type="submit" class="btn btn-important"><?= _t('gen.action.submit') ?></button>
<button type="reset" class="btn"><?= _t('gen.action.cancel') ?></button>
</div>
</div>
</form>
<h2><?= _t('conf.archiving.maintenance') ?></h2>
<form method="post" action="<?= _url('entry', 'purge') ?>">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<div class="form-group">
<label class="group-name"><?= _t('conf.user.current') ?></label>
<div class="group-controls">
<?= _t('conf.user.articles_and_size', format_number($this->nb_total), format_bytes($this->size_user)) ?>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<button type="submit" class="btn btn-important confirm"><?= _t('conf.archiving.purge_now') ?></button>
</div>
</div>
</form>
<form method="post" action="<?= _url('entry', 'optimize') ?>">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<div class="form-group">
<div class="group-controls">
<input type="hidden" name="optimiseDatabase" value="1" />
<button type="submit" class="btn btn-important"><?= _t('conf.archiving.optimize') ?></button>
<p class="help"><?= _i('help') ?> <?= _t('conf.archiving.optimize_help') ?></p>
</div>
</div>
</form>
<?php if (FreshRSS_Auth::hasAccess('admin')): ?>
<div class="form-group">
<label class="group-name"><?= _t('conf.user.users') ?></label>
<div class="group-controls">
<?= format_bytes($this->size_total) ?>
</div>
</div>
<?php endif; ?>
</main>
wget 'https://lists2.roe3.org/FreshRSS/app/views/configure/display.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
$this->partial('aside_configure');
?>
<main class="post">
<div class="link-back-wrapper">
<a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
</div>
<h1><?= _t('conf.display') ?></h1>
<form method="post" action="<?= _url('configure', 'display') ?>">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<div class="form-group">
<label class="group-name" for="language"><?= _t('conf.display.language') ?></label>
<div class="group-controls">
<select name="language" id="language" data-leave-validation="<?= FreshRSS_Context::userConf()->language ?>">
<?php $languages = Minz_Translate::availableLanguages(); ?>
<?php foreach ($languages as $lang) { ?>
<option value="<?= $lang ?>"<?= FreshRSS_Context::userConf()->language === $lang ? ' selected="selected"' : '' ?>><?= _t('gen.lang.' . $lang) ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="form-group">
<label class="group-name" for="timezone"><?= _t('conf.display.timezone') ?></label>
<div class="group-controls">
<select name="timezone" id="timezone" data-leave-validation="<?= FreshRSS_Context::userConf()->timezone ?>">
<?php
$timezones = array_merge([''], DateTimeZone::listIdentifiers());
if (!in_array(FreshRSS_Context::userConf()->timezone, $timezones, true)) {
FreshRSS_Context::userConf()->timezone = '';
}
?>
<?php foreach ($timezones as $timezone): ?>
<option value="<?= $timezone ?>"<?= FreshRSS_Context::userConf()->timezone === $timezone ? ' selected="selected"' : '' ?>>
<?= $timezone == '' ? _t('gen.short.by_default') . ' (' . FreshRSS_Context::defaultTimeZone() . ')' : $timezone ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="form-group">
<label class="group-name" for="theme"><?= _t('conf.display.theme') ?></label>
<div class="group-controls">
<ul class="theme-preview-list">
<?php $slides = count($this->themes); $i = 1; $themeAvailable = false; ?>
<?php
foreach ($this->themes as $theme) { ?>
<?php if (FreshRSS_Context::userConf()->theme === $theme['id']) {
$checked = 'checked="checked"';
$themeAvailable = true;
} else {
$checked = '';
} ?>
<input type="radio" name="theme" id="img-<?= $i ?>" <?= $checked ?> value="<?= $theme['id'] ?>"
data-leave-validation="<?= (FreshRSS_Context::userConf()->theme === $theme['id']) ? 1 : 0 ?>" />
<li class="preview-container">
<div class="preview">
<img src="<?= Minz_Url::display('/themes/' . $theme['id'] . '/thumbs/original.png') ?>" loading="lazy" />
</div>
<div class="nav">
<?php if ($i !== 1) {?>
<label for="img-<?= $i - 1 ?>" class="prev">‹</label>
<?php } ?>
<?php if ($i !== $slides) {?>
<label for="img-<?= $i + 1 ?>" class="next">›</label>
<?php } ?>
</div>
<div class="properties">
<div>
<?php if (!empty($theme['deprecated'])) { ?>
<span class="deprecated error"><?= _t('conf.display.theme.deprecated') ?>:</span>
<?php } ?>
<?= sprintf('%s — %s %s', $theme['name'], _t('gen.short.by_author'), $theme['author']) ?>
</div>
<div>
<?php if (!empty($theme['deprecated'])) { ?>
<span class="deprecated"><?= _t('conf.display.theme.deprecated.description') ?></span><br />
<?php } ?>
<?= $theme['description'] ?>
</div>
<?php if (!empty($theme['theme-color']['dark'])) { ?>
<div class="darkMode">✔ <?= _t('conf.display.darkMode') ?></div>
<?php } ?>
<div class="page-number"><?= sprintf('%d/%d', $i, $slides) ?></div>
</div>
</li>
<?php $i++ ?>
<?php } ?>
<?php if (!$themeAvailable) {?>
<input type="radio" name="theme" checked="checked" value="Origine" data-leave-validation="0" />
<li class="preview-container">
<div class="preview">
</div>
<div class="nav">
<label for="img-<?= $i - 1 ?>" class="prev">‹</label>
</div>
<div class="properties alert-error">
<div><?= _t('conf.display.theme_not_available', FreshRSS_Context::userConf()->theme)?></div>
</div>
</li>
<?php }?>
</ul>
</div>
</div>
<div class="form-group">
<label class="group-name" for="darkMode"><?= _t('conf.display.darkMode') ?></label>
<div class="group-controls">
<select name="darkMode" id="darkMode" data-leave-validation="<?= FreshRSS_Context::userConf()->darkMode ?>">
<option value="no"<?= FreshRSS_Context::userConf()->darkMode === 'no' ? ' selected' : '' ?>><?= _t('conf.display.darkMode.no') ?></option>
<option value="auto"<?= FreshRSS_Context::userConf()->darkMode === 'auto' ? ' selected' : '' ?>><?= _t('conf.display.darkMode.auto') ?></option>
</select>
<span class="help"><?= _i('help') ?> <?= _t('conf.display.darkMode.help') ?></span>
</div>
</div>
<?php $width = FreshRSS_Context::userConf()->content_width; ?>
<div class="form-group">
<label class="group-name" for="content_width"><?= _t('conf.display.width.content') ?></label>
<div class="group-controls">
<select name="content_width" id="content_width" required="" data-leave-validation="<?= $width ?>">
<option value="thin" <?= $width === 'thin' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.width.thin') ?>
</option>
<option value="medium" <?= $width === 'medium' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.width.medium') ?>
</option>
<option value="large" <?= $width === 'large' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.width.large') ?>
</option>
<option value="no_limit" <?= $width === 'no_limit' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.width.no_limit') ?>
</option>
</select>
</div>
</div>
<?php $topline_website = FreshRSS_Context::userConf()->topline_website; ?>
<div class="form-group">
<label class="group-name" for="topline_website"><?= _t('conf.display.website.label') ?></label>
<div class="group-controls">
<select name="topline_website" id="topline_website" required="" data-leave-validation="<?= $topline_website ?>">
<option value="none" <?= $topline_website === 'none' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.website.none') ?>
</option>
<option value="icon" <?= $topline_website === 'icon' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.website.icon') ?>
</option>
<option value="name" <?= $topline_website === 'name' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.website.name') ?>
</option>
<option value="full" <?= $topline_website === 'full' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.website.full') ?>
</option>
</select>
</div>
</div>
<?php $topline_thumbnail = FreshRSS_Context::userConf()->topline_thumbnail; ?>
<div class="form-group">
<label class="group-name" for="topline_thumbnail"><?= _t('conf.display.thumbnail.label') ?></label>
<div class="group-controls">
<select name="topline_thumbnail" id="topline_thumbnail" required="" data-leave-validation="<?= $topline_thumbnail ?>">
<option value="none" <?= $topline_thumbnail === 'none' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.thumbnail.none') ?>
</option>
<option value="portrait" <?= $topline_thumbnail === 'portrait' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.thumbnail.portrait') ?>
</option>
<option value="square" <?= $topline_thumbnail === 'square' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.thumbnail.square') ?>
</option>
<option value="landscape" <?= $topline_thumbnail === 'landscape' ? 'selected="selected"' : '' ?>>
<?= _t('conf.display.thumbnail.landscape') ?>
</option>
</select>
</div>
</div>
<div class="form-group">
<label class="group-name"><?= _t('conf.display.icon.entry') ?></label>
<div class="group-controls">
<table class="config-articleicons">
<thead>
<tr>
<th> </th>
<th title="<?= _t('conf.shortcut.mark_read') ?>"><?= _i('read') ?></th>
<th title="<?= _t('conf.shortcut.mark_favorite') ?>"><?= _i('starred') ?></th>
<th title="<?= _t('index.menu.tags') ?>"><?= _i('label') ?></th>
<th title="<?= _t('conf.display.icon.related_tags') ?>"><?= _i('tag') ?></th>
<th title="<?= _t('conf.display.icon.sharing') ?>"><?= _i('share') ?></th>
<th><?= _t('conf.display.icon.summary') ?></th>
<th><?= _t('conf.display.icon.display_authors') ?></th>
<th><?= _t('conf.display.icon.publication_date') ?></th>
<th><?= _i('link') ?></th>
</tr>
</thead>
<tbody>
<tr>
<th><?= _t('conf.display.icon.top_line') ?></th>
<td><input type="checkbox" name="topline_read" value="1"<?=
FreshRSS_Context::userConf()->topline_read ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->topline_read ?>" /></td>
<td><input type="checkbox" name="topline_favorite" value="1"<?=
FreshRSS_Context::userConf()->topline_favorite ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->topline_favorite ?>" /></td>
<td><input type="checkbox" disabled="disabled" /></td>
<td><input type="checkbox" disabled="disabled" /></td>
<td><input type="checkbox" name="topline_sharing" value="1"<?=
FreshRSS_Context::userConf()->topline_sharing ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->topline_sharing ?>" /></td>
<td><input type="checkbox" name="topline_summary" value="1"<?=
FreshRSS_Context::userConf()->topline_summary ? 'checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->topline_summary ?>" /></td>
<td><input type="checkbox" name="topline_display_authors" value="1"<?=
FreshRSS_Context::userConf()->topline_display_authors ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->topline_display_authors ?>" /></td>
<td><input type="checkbox" name="topline_date" value="1"<?=
FreshRSS_Context::userConf()->topline_date ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->topline_date ?>" /></td>
<td><input type="checkbox" name="topline_link" value="1"<?= FreshRSS_Context::userConf()->topline_link ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->topline_link ?>" /></td>
</tr><tr>
<th><?= _t('conf.display.icon.bottom_line') ?></th>
<td><input type="checkbox" name="bottomline_read" value="1"<?=
FreshRSS_Context::userConf()->bottomline_read ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->bottomline_read ?>" /></td>
<td><input type="checkbox" name="bottomline_favorite" value="1"<?=
FreshRSS_Context::userConf()->bottomline_favorite ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->bottomline_favorite ?>" /></td>
<td><input type="checkbox" name="bottomline_myLabels" value="1"<?=
FreshRSS_Context::userConf()->bottomline_myLabels ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->bottomline_myLabels ?>" /></td>
<td><input type="checkbox" name="bottomline_tags" value="1"<?=
FreshRSS_Context::userConf()->bottomline_tags ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->bottomline_tags ?>" /></td>
<td><input type="checkbox" name="bottomline_sharing" value="1"<?=
FreshRSS_Context::userConf()->bottomline_sharing ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->bottomline_sharing ?>" /></td>
<td><input type="checkbox" disabled="disabled" /></td>
<td><input type="checkbox" disabled="disabled" /></td>
<td><input type="checkbox" name="bottomline_date" value="1"<?=
FreshRSS_Context::userConf()->bottomline_date ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->bottomline_date ?>" /></td>
<td><input type="checkbox" name="bottomline_link" value="1"<?=
FreshRSS_Context::userConf()->bottomline_link ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->bottomline_link ?>" /></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="form-group">
<label class="group-name" for="html5_notif_timeout"><?= _t('conf.display.notif_html5.timeout') ?></label>
<div class="group-controls">
<input type="number" id="html5_notif_timeout" name="html5_notif_timeout" value="<?=
FreshRSS_Context::userConf()->html5_notif_timeout ?>"
data-leave-validation="<?= FreshRSS_Context::userConf()->html5_notif_timeout ?>" /> <?= _t('conf.display.notif_html5.seconds') ?>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="show_nav_buttons">
<input type="checkbox" name="show_nav_buttons" id="show_nav_buttons" value="1"<?=
FreshRSS_Context::userConf()->show_nav_buttons ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->show_nav_buttons ?>" />
<?= _t('conf.display.show_nav_buttons') ?>
</label>
</div>
</div>
<div class="form-group form-actions">
<div class="group-controls">
<button type="submit" class="btn btn-important"><?= _t('gen.action.submit') ?></button>
<button type="reset" class="btn"><?= _t('gen.action.cancel') ?></button>
</div>
</div>
</form>
</main>
wget 'https://lists2.roe3.org/FreshRSS/app/views/configure/integration.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
$this->partial('aside_configure');
?>
<main class="post">
<div class="link-back-wrapper">
<a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
</div>
<h1><?= _t('conf.sharing') ?></h1>
<form method="post" action="<?= _url('configure', 'integration') ?>" class="draggableList">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<template id="simple-share">
<fieldset class="group-share dragbox">
<legend draggable="true">##label##</legend>
<input type="hidden" id="share_##key##_type" name="share[##key##][type]" value="##type##" data-leave-validation="" />
<div class="form-group" id="group-share-##key##">
<label class="group-name" for="share_##key##_name"><?= _t('conf.sharing.share_name') ?></label>
<div class="group-controls">
<input type="text" id="share_##key##_name" name="share[##key##][name]" value="##label##" />
</div>
</div>
<div class="form-group">
<div class="group-controls">
<button type="button" class="remove btn btn-attention" title="<?= _t('conf.sharing.remove') ?>"><?= _t('gen.action.remove') ?></button>
</div>
</div>
</fieldset>
</template>
<template id="advanced-share">
<fieldset class="group-share dragbox">
<legend draggable="true">##label##</legend>
<input type="hidden" id="share_##key##_type" name="share[##key##][type]" value="##type##" data-leave-validation="" />
<input type="hidden" id="share_##key##_method" name="share[##key##][method]" value="##method##" />
<input type="hidden" id="share_##key##_field" name="share[##key##][field]" value="##field##" />
<div class="form-group" id="group-share-##key##">
<label class="group-name" for="share_##key##_name"><?= _t('conf.sharing.share_name') ?></label>
<div class="group-controls">
<input type="text" id="share_##key##_name" name="share[##key##][name]" value="" />
</div>
</div>
<div class="form-group" id="group-share-##key##">
<label class="group-name" for="share_##key##_url"><?= _t('conf.sharing.share_url') ?></label>
<div class="group-controls">
<input type="url" id="share_##key##_url" name="share[##key##][url]" class="long" value="" required />
<p class="help"><?= _i('help') ?> <a href="##help##" target="_blank" rel="noreferrer"><?= _t('conf.sharing.more_information') ?></a></p>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<button type="button" class="remove btn btn-attention" title="<?= _t('conf.sharing.remove') ?>"><?= _t('gen.action.remove') ?></button>
</div>
</div>
</fieldset>
</template>
<?php
foreach (FreshRSS_Context::userConf()->sharing as $key => $share_options) {
$share = FreshRSS_Share::get($share_options['type']);
if ($share === null) {
continue;
}
$share->update($share_options);
?>
<fieldset class="group-share dragbox" id="group-share-<?= $key ?>">
<legend draggable="true"><?= $share->name(true) ?></legend>
<input type="hidden" id="share_<?= $key ?>_type" name="share[<?= $key ?>][type]" value="<?= $share->type() ?>" />
<input type="hidden" id="share_<?= $key ?>_method" name="share[<?= $key ?>][method]" value="<?= $share->method() ?>" />
<input type="hidden" id="share_<?= $key ?>_field" name="share[<?= $key ?>][field]" value="<?= $share->field() ?>" />
<?php if ($share->isDeprecated()) { ?>
<div class="prompt alert alert-warn">
<p><?= _t('conf.sharing.deprecated') ?></p>
</div>
<?php } ?>
<div class="form-group">
<label class="group-name" for="share_<?= $key ?>_name">
<?= _t('conf.sharing.share_name') ?>
</label>
<div class="group-controls">
<input type="text" id="share_<?= $key ?>_name" name="share[<?= $key ?>][name]" value="<?= $share->name() ?>"
data-leave-validation="<?= $share->name() ?>" />
</div>
</div>
<div class="form-group">
<?php if ($share->formType() === 'advanced') { ?>
<label class="group-name" for="share_<?= $key ?>_url">
<?= _t('conf.sharing.share_url') ?>
</label>
<div class="group-controls">
<div class="stick">
<input type="url" id="share_<?= $key ?>_url" name="share[<?= $key ?>][url]" class="long" value="<?= $share->baseUrl() ?>"
data-leave-validation="<?= $share->baseUrl() ?>" required />
<a class="btn open-url" target="_blank" rel="noreferrer" href="<?= $share->baseUrl() ?>" title="<?= _t('gen.action.open_url') ?>" data-input="share_<?= $key ?>_url"><?= _i('link') ?></a>
</div>
<p class="help"><?= _i('help') ?> <a href="<?= $share->help() ?>" target="_blank" rel="noreferrer"><?= _t('conf.sharing.more_information') ?></a></p>
</div>
<?php } ?>
</div>
<div class="form-group">
<div class="group-controls">
<button type="button" class="remove btn btn-attention" title="<?= _t('conf.sharing.remove') ?>"><?= _t('gen.action.remove') ?></button>
</div>
</div>
</fieldset>
<?php } ?>
<fieldset>
<legend><?= _t('conf.sharing.add') ?></legend>
<div class="form-group">
<div class="group-controls">
<div class="stick">
<select>
<?php foreach (FreshRSS_Share::enum() as $share) { ?>
<option value='<?= $share->type() ?>' data-form='<?= $share->formType() ?>' data-help='<?= $share->help() ?>'
data-method='<?= $share->method() ?>' data-field='<?= $share->field() ?>'>
<?= $share->name(true) ?>
</option>
<?php } ?>
</select>
<a href='#' class='share add btn' title="<?= _t('conf.sharing.add') ?>"><?= _i('add') ?></a>
</div>
</div>
</div>
</fieldset>
<div class="form-group form-actions">
<div class="group-controls">
<button type="submit" class="btn btn-important"><?= _t('gen.action.submit') ?></button>
</div>
</div>
</form>
</main>
wget 'https://lists2.roe3.org/FreshRSS/app/views/configure/queries.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
$this->partial('aside_configure');
?>
<main class="post">
<div class="link-back-wrapper">
<a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
</div>
<form method="post" action="<?= _url('configure', 'queries') ?>" class="draggableList">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<h1><?= _t('conf.query') ?></h1>
<?php foreach ($this->queries as $key => $query) { ?>
<div class="form-group" id="query-group-<?= $key ?>" draggable="true">
<div class="box">
<div class="box-title">
<a class="configure open-slider" href="<?= _url('configure', 'query', 'id', '' . $key) ?>"><?= _i('configure') ?></a><h2><?= $query->getName() ?></h2>
<input type="hidden" id="queries_<?= $key ?>_name" name="queries[<?= $key ?>][name]" value="<?= $query->getName() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_token" name="queries[<?= $key ?>][token]" value="<?= $query->getToken() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_shareRss" name="queries[<?= $key ?>][token]" value="<?= $query->shareRss() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_shareOpml" name="queries[<?= $key ?>][token]" value="<?= $query->shareOpml() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_url" name="queries[<?= $key ?>][url]" value="<?= $query->getUrl() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_search" name="queries[<?= $key ?>][search]" value="<?= urlencode($query->getSearch()->getRawInput()) ?>"/>
<input type="hidden" id="queries_<?= $key ?>_state" name="queries[<?= $key ?>][state]" value="<?= $query->getState() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_order" name="queries[<?= $key ?>][order]" value="<?= $query->getOrder() ?>"/>
<input type="hidden" id="queries_<?= $key ?>_get" name="queries[<?= $key ?>][get]" value="<?= $query->getGet() ?>"/>
</div>
<?php if (!$query->hasParameters()) { ?>
<div class="box-content">
<div class="alert alert-warn">
<div class="alert-head"><?= _t('conf.query.no_filter') ?></div>
</div>
</div>
<?php } elseif ($query->isDeprecated()) { ?>
<div class="box-content">
<div class="alert alert-error">
<div class="alert-head"><?= _t('conf.query.deprecated') ?></div>
</div>
</div>
<?php } else { ?>
<ul class="box-content scrollbar-thin">
<?php if ($query->hasSearch()) { ?>
<li class="item"><?= _t('conf.query.search', htmlspecialchars($query->getSearch()->getRawInput(), ENT_NOQUOTES, 'UTF-8')) ?></li>
<?php } ?>
<?php if ($query->getState()) { ?>
<li class="item"><?= _t('conf.query.state_' . $query->getState()) ?></li>
<?php } ?>
<?php if ($query->getOrder()) { ?>
<li class="item"><?= _t('conf.query.order_' . strtolower($query->getOrder())) ?></li>
<?php } ?>
<?php if ($query->getGet()) { ?>
<li class="item"><?= _t('conf.query.get_' . $query->getGetType(), $query->getGetName()) ?></li>
<?php } ?>
<?php } ?>
</ul>
</div>
</div>
<?php } ?>
</form>
</main>
<?php $class = ($this->query != null) ? ' active' : ''; ?>
<aside id="slider" class="<?= $class ?>">
<a class="toggle_aside" href="#close"><img class="icon" src="../themes/icons/close.svg" loading="lazy" alt="❌"></a>
<div id="slider-content">
<?php
if ($this->query != null) {
$this->renderHelper('configure/query');
}
?>
</div>
</aside>
<a href="#" id="close-slider">
<?= _i('close') ?>
</a>
wget 'https://lists2.roe3.org/FreshRSS/app/views/configure/query.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
if (!Minz_Request::paramBoolean('ajax')) {
$this->partial('aside_configure');
}
if ($this->query) {
$this->renderHelper('configure/query');
}
wget 'https://lists2.roe3.org/FreshRSS/app/views/configure/reading.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
$this->partial('aside_configure');
?>
<main class="post">
<div class="link-back-wrapper">
<a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
</div>
<h1><?= _t('conf.reading') ?></h1>
<form method="post" action="<?= _url('configure', 'reading') ?>">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<fieldset>
<legend><?= _t('conf.reading.headline.view') ?></legend>
<div class="form-group">
<label class="group-name" for="view_mode"><?= _t('conf.reading.view.default') ?></label>
<div class="group-controls">
<select name="view_mode" id="view_mode" data-leave-validation="<?= FreshRSS_Context::userConf()->view_mode ?>">
<option value="normal"<?= FreshRSS_Context::userConf()->view_mode === 'normal' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.view.normal') ?></option>
<option value="reader"<?= FreshRSS_Context::userConf()->view_mode === 'reader' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.view.reader') ?></option>
<option value="global"<?= FreshRSS_Context::userConf()->view_mode === 'global' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.view.global') ?></option>
</select>
</div>
</div>
<div class="form-group">
<label class="group-name" for="default_view"><?= _t('conf.reading.show') ?></label>
<div class="group-controls">
<select name="default_view" id="default_view" data-leave-validation="<?= FreshRSS_Context::userConf()->default_view ?>">
<option value="adaptive"<?= FreshRSS_Context::userConf()->default_view === 'adaptive' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.show.adaptive') ?></option>
<option value="all"<?= FreshRSS_Context::userConf()->default_view === 'all' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.show.all_articles') ?></option>
<option value="unread"<?= FreshRSS_Context::userConf()->default_view === 'unread' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.show.unread') ?></option>
</select>
</div>
</div>
<div class="form-group">
<label class="group-name" for="posts_per_page"><?= _t('conf.reading.articles_per_page') ?></label>
<div class="group-controls">
<input type="number" id="posts_per_page" name="posts_per_page" value="<?=
FreshRSS_Context::userConf()->posts_per_page ?>" min="5" max="500"
data-leave-validation="<?= FreshRSS_Context::userConf()->posts_per_page ?>"/>
<p class="help"><?= _i('help') ?> <?= _t('conf.reading.number_divided_when_reader') ?></p>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="auto_load_more">
<input type="checkbox" name="auto_load_more" id="auto_load_more" value="1"<?=
FreshRSS_Context::userConf()->auto_load_more ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->auto_load_more ?>"/>
<?= _t('conf.reading.auto_load_more') ?>
<noscript> — <strong><?= _t('gen.js.should_be_activated') ?></strong></noscript>
</label>
</div>
</div>
<div class="form-group">
<label class="group-name" for="sort_order"><?= _t('conf.reading.sort') ?></label>
<div class="group-controls">
<select name="sort_order" id="sort_order" data-leave-validation="<?= FreshRSS_Context::userConf()->sort_order ?>">
<option value="DESC"<?= FreshRSS_Context::userConf()->sort_order === 'DESC' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.sort.newer_first') ?></option>
<option value="ASC"<?= FreshRSS_Context::userConf()->sort_order === 'ASC' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.sort.older_first') ?></option>
</select>
</div>
</div>
</fieldset>
<fieldset>
<legend><?= _t('conf.reading.headline.categories') ?></legend>
<div class="form-group">
<label class="group-name" for="display_categories"><?= _t('conf.reading.display_categories_unfolded') ?></label>
<div class="group-controls">
<select name="display_categories" id="display_categories" data-leave-validation="<?= FreshRSS_Context::userConf()->display_categories ?>">
<option value="active"<?= FreshRSS_Context::userConf()->display_categories === 'active' ? ' selected="selected"' : '' ?>><?=
_t('conf.reading.show.active_category') ?></option>
<option value="remember"<?= FreshRSS_Context::userConf()->display_categories === 'remember' ? ' selected="selected"' : '' ?>><?=
_t('conf.reading.show.remember_categories') ?></option>
<option value="all"<?= FreshRSS_Context::userConf()->display_categories === 'all' ? ' selected="selected"' : '' ?>><?=
_t('conf.reading.show.all_categories') ?></option>
<option value="none"<?= FreshRSS_Context::userConf()->display_categories === 'none' ? ' selected="selected"' : '' ?>><?=
_t('conf.reading.show.no_category') ?></option>
</select>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="show_fav_unread">
<input type="checkbox" name="show_fav_unread" id="show_fav_unread" value="1"<?=
FreshRSS_Context::userConf()->show_fav_unread ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->show_fav_unread ?>"/>
<?= _t('conf.reading.always_show_favorites') ?>
<p class="help"><?= _i('help') ?> <?= _t('conf.reading.show_fav_unread_help') ?></p>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="hide_read_feeds">
<input type="checkbox" name="hide_read_feeds" id="hide_read_feeds" value="1"<?=
FreshRSS_Context::userConf()->hide_read_feeds ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->hide_read_feeds ?>"/>
<?= _t('conf.reading.hide_read_feeds') ?>
</label>
</div>
</div>
</fieldset>
<fieldset>
<legend><?= _t('conf.reading.headline.articles_header_footer') ?></legend>
<div class="form-group">
<label class="group-name" for="show_feed_name"><?= _t('conf.reading.article.feed_title') ?></label>
<div class="group-controls">
<select name="show_feed_name" id="show_feed_name" data-leave-validation="<?= FreshRSS_Context::userConf()->show_feed_name ?>">
<option value="0"<?= FreshRSS_Context::userConf()->show_feed_name === '0' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.article.feed_name.none') ?></option>
<option value="t"<?= FreshRSS_Context::userConf()->show_feed_name === 't' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.article.feed_name.above_title') ?></option>
<option value="a"<?= FreshRSS_Context::userConf()->show_feed_name === 'a' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.article.feed_name.with_authors') ?></option>
</select>
</div>
</div>
<div class="form-group">
<label class="group-name" for="show_author_date"><?= _t('conf.reading.article.authors_date') ?></label>
<div class="group-controls">
<select name="show_author_date" id="show_author_date" data-leave-validation="<?= FreshRSS_Context::userConf()->show_author_date ?>">
<option value="0" <?= FreshRSS_Context::userConf()->show_author_date === '0' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.article.authors_date.none') ?></option>
<option value="h" <?= FreshRSS_Context::userConf()->show_author_date === 'h' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.article.authors_date.header') ?></option>
<option value="f" <?= FreshRSS_Context::userConf()->show_author_date === 'f' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.article.authors_date.footer') ?></option>
<option value="b" <?= FreshRSS_Context::userConf()->show_author_date === 'b' ? ' selected="selected"' : '' ?>><?= _t('conf.reading.article.authors_date.both') ?></option>
</select>
</div>
</div>
<div class="form-group">
<label class="group-name" for="show_article_icons"><?= _t('conf.reading.article.icons') ?></label>
<div class="group-controls">
<select name="show_article_icons" id="show_article_icons" data-leave-validation="<?= FreshRSS_Context::userConf()->show_article_icons ?>">
<option value="t" <?= FreshRSS_Context::userConf()->show_article_icons === 't' ? ' selected="selected"' : '' ?> data-input-visible="true"><?= _t('conf.reading.article.icons.above_title') ?></option>
<option value="a" <?= FreshRSS_Context::userConf()->show_article_icons === 'a' ? ' selected="selected"' : '' ?> data-input-visible="true"><?= _t('conf.reading.article.icons.with_authors') ?></option>
</select>
</div>
</div>
<div class="form-group">
<label class="group-name" for="show_tags"><?= _t('conf.reading.article.tags') ?></label>
<div class="group-controls">
<select class="select-input-changer" name="show_tags" id="show_tags" data-name="show_tags_max" data-leave-validation="<?= FreshRSS_Context::userConf()->show_tags ?>">
<option value="0" <?= FreshRSS_Context::userConf()->show_tags === '0' ? ' selected="selected"' : '' ?> data-input-visible="false"><?= _t('conf.reading.article.tags.none') ?></option>
<option value="h" <?= FreshRSS_Context::userConf()->show_tags === 'h' ? ' selected="selected"' : '' ?> data-input-visible="true"><?= _t('conf.reading.article.tags.header') ?></option>
<option value="f" <?= FreshRSS_Context::userConf()->show_tags === 'f' ? ' selected="selected"' : '' ?> data-input-visible="true"><?= _t('conf.reading.article.tags.footer') ?></option>
<option value="b" <?= FreshRSS_Context::userConf()->show_tags === 'b' ? ' selected="selected"' : '' ?> data-input-visible="true"><?= _t('conf.reading.article.tags.both') ?></option>
</select>
<noscript> — <strong><?= _t('gen.js.should_be_activated') ?></strong></noscript>
</div>
</div>
<div class="form-group" id="show_tags_max-block">
<label class="group-name" for="show_tags_max"><?= _t('conf.reading.article.tags_max') ?></label>
<div class="group-controls">
<input type="number" id="show_tags_max" name="show_tags_max" value="<?= FreshRSS_Context::userConf()->show_tags_max ?>" min="0" data-leave-validation="<?= FreshRSS_Context::userConf()->show_tags_max ?>" data-number="2" />
<p class="help"><?= _i('help') ?> <?= _t('conf.reading.article.tags_max.help') ?></p>
</div>
</div>
</fieldset>
<fieldset>
<legend><?= _t('conf.reading.headline.articles') ?></legend>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="display_posts">
<input type="checkbox" name="display_posts" id="display_posts" value="1"<?=
FreshRSS_Context::userConf()->display_posts ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->display_posts ?>"/>
<?= _t('conf.reading.display_articles_unfolded') ?>
<noscript> — <strong><?= _t('gen.js.should_be_activated') ?></strong></noscript>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="sticky_post">
<input type="checkbox" name="sticky_post" id="sticky_post" value="1"<?=
FreshRSS_Context::userConf()->sticky_post ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->sticky_post ?>"/>
<?= _t('conf.reading.sticky_post') ?>
<noscript> — <strong><?= _t('gen.js.should_be_activated') ?></strong></noscript>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="sides_close_article">
<input type="checkbox" name="sides_close_article" id="sides_close_article" value="1"<?=
FreshRSS_Context::userConf()->sides_close_article ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->sides_close_article ?>"/>
<?= _t('conf.reading.sides_close_article') ?>
<noscript> — <strong><?= _t('gen.js.should_be_activated') ?></strong></noscript>
</label>
</div>
</div>
</fieldset>
<fieldset>
<legend><?= _t('conf.reading.headline.mark_as_read') ?></legend>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="auto_remove_article">
<input type="checkbox" name="auto_remove_article" id="auto_remove_article" value="1"<?=
FreshRSS_Context::userConf()->auto_remove_article ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->auto_remove_article ?>"/>
<?= _t('conf.reading.auto_remove_article') ?>
<noscript> — <strong><?= _t('gen.js.should_be_activated') ?></strong></noscript>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="reading_confirm">
<input type="checkbox" name="reading_confirm" id="reading_confirm" value="1"<?=
FreshRSS_Context::userConf()->reading_confirm ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->reading_confirm ?>"/>
<?= _t('conf.reading.confirm_enabled') ?>
<noscript> — <strong><?= _t('gen.js.should_be_activated') ?></strong></noscript>
</label>
</div>
</div>
<div class="form-group">
<label class="group-name" for="onread_jump_next"><?= _t('conf.reading.after_onread') ?></label>
<div class="group-controls">
<label class="checkbox" for="onread_jump_next">
<input type="checkbox" name="onread_jump_next" id="onread_jump_next" value="1"<?=
FreshRSS_Context::userConf()->onread_jump_next ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->onread_jump_next ?>"/>
<?= _t('conf.reading.jump_next') ?>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="mark_updated_article_unread">
<input type="checkbox" name="mark_updated_article_unread" id="mark_updated_article_unread" value="1"<?=
FreshRSS_Context::userConf()->mark_updated_article_unread ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->mark_updated_article_unread ?>"/>
<?= _t('conf.reading.mark_updated_article_unread') ?>
</label>
</div>
</div>
<div class="form-group">
<label class="group-name" for="check_open_article"><?= _t('conf.reading.read.when') ?></label>
<div class="group-controls">
<label class="checkbox" for="check_open_article">
<input type="checkbox" name="mark_open_article" id="check_open_article" value="1"<?=
FreshRSS_Context::userConf()->mark_when['article'] ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->mark_when['article'] ?>"/>
<?= _t('conf.reading.read.article_viewed') ?>
</label>
</div>
</div>
<div class="form-group">
<label class="group-name" for="check_open_site"><?= _t('conf.reading.read.when') ?></label>
<div class="group-controls">
<label class="checkbox" for="check_open_site">
<input type="checkbox" name="mark_open_site" id="check_open_site" value="1"<?=
FreshRSS_Context::userConf()->mark_when['site'] ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->mark_when['site'] ?>"/>
<?= _t('conf.reading.read.article_open_on_website') ?>
</label>
</div>
</div>
<div class="form-group">
<label class="group-name" for="check_scroll"><?= _t('conf.reading.read.when') ?></label>
<div class="group-controls">
<label class="checkbox" for="check_scroll">
<input type="checkbox" name="mark_scroll" id="check_scroll" value="1"<?=
FreshRSS_Context::userConf()->mark_when['scroll'] ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->mark_when['scroll'] ?>"/>
<?= _t('conf.reading.read.scroll') ?>
</label>
</div>
</div>
<div class="form-group">
<label class="group-name" for="check_focus"><?= _t('conf.reading.read.when') ?></label>
<div class="group-controls">
<label class="checkbox" for="check_focus">
<input type="checkbox" name="mark_focus" id="check_focus" value="1"<?=
FreshRSS_Context::userConf()->mark_when['focus'] ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->mark_when['focus'] ?>" />
<?= _t('conf.reading.read.focus') ?>
</label>
</div>
</div>
<div class="form-group">
<label class="group-name" for="enable_read_when_same_title_in_feed"><?= _t('conf.reading.read.when') ?></label>
<div class="group-controls">
<label class="checkbox" for="enable_read_when_same_title_in_feed">
<input type="checkbox" name="enable_read_when_same_title_in_feed" id="enable_read_when_same_title_in_feed" value="1"<?=
empty(FreshRSS_Context::userConf()->mark_when['same_title_in_feed']) ? '' : ' checked="checked"' ?>
data-leave-validation="<?= empty(FreshRSS_Context::userConf()->mark_when['same_title_in_feed']) ? 0 : 1 ?>"/>
<?= _t('conf.reading.read.when_same_title') ?>
<?php $read_when_same_title_in_feed = empty(FreshRSS_Context::userConf()->mark_when['same_title_in_feed']) ? 25 : FreshRSS_Context::userConf()->mark_when['same_title_in_feed']; ?>
<input type="number" id="read_when_same_title_in_feed" name="read_when_same_title_in_feed" min="0"
value="<?= $read_when_same_title_in_feed ?>" data-leave-validation="<?= $read_when_same_title_in_feed ?>" />
</label>
</div>
</div>
<div class="form-group">
<label class="group-name" for="mark_upon_reception"><?= _t('conf.reading.read.when') ?></label>
<div class="group-controls">
<label class="checkbox" for="mark_upon_reception">
<input type="checkbox" name="mark_upon_reception" id="mark_upon_reception" value="1"<?=
FreshRSS_Context::userConf()->mark_when['reception'] ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->mark_when['reception'] ?>"/>
<?= _t('conf.reading.read.upon_reception') ?>
</label>
</div>
</div>
<div class="form-group">
<label class="group-name" for="read_upon_gone"><?= _t('conf.reading.read.when') ?></label>
<div class="group-controls">
<label class="checkbox" for="read_upon_gone">
<input type="checkbox" name="read_upon_gone" id="read_upon_gone" value="1"<?=
FreshRSS_Context::userConf()->mark_when['gone'] ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->mark_when['gone'] ?>"/>
<?= _t('conf.reading.read.upon_gone') ?>
</label>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="keep_max_n_unread">
<input type="checkbox" name="enable_keep_max_n_unread" id="enable_keep_max_n_unread" value="1"<?=
empty(FreshRSS_Context::userConf()->mark_when['max_n_unread']) ? '' : ' checked="checked"' ?>
data-leave-validation="<?= empty(FreshRSS_Context::userConf()->mark_when['max_n_unread']) ? 0 : 1 ?>"/>
<?= _t('conf.reading.read.keep_max_n_unread') ?>
<?php $keep_max_n_unread = empty(FreshRSS_Context::userConf()->mark_when['max_n_unread']) ? 1000 : FreshRSS_Context::userConf()->mark_when['max_n_unread']; ?>
<input type="number" id="keep_max_n_unread" name="keep_max_n_unread" min="0" value="<?= $keep_max_n_unread ?>" data-leave-validation="<?= $keep_max_n_unread ?>" />
</label>
</div>
</div>
</fieldset>
<fieldset>
<legend><?= _t('sub.feed.filteractions') ?></legend>
<div class="form-group">
<label class="group-name" for="filteractions_read"><?= _t('conf.reading.read.when') ?></label>
<div class="group-controls">
<textarea name="filteractions_read" id="filteractions_read" class="w100"><?php
foreach (FreshRSS_Context::userConf()->filtersAction('read') as $filterRead) {
echo $filterRead->getRawInput(), PHP_EOL;
}
?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.filteractions.help') ?></p>
</div>
</div>
<div class="form-group">
<label class="group-name" for="filteractions_star"><?= _t('conf.reading.star.when') ?></label>
<div class="group-controls">
<textarea name="filteractions_star" id="filteractions_star" class="w100"><?php
foreach (FreshRSS_Context::userConf()->filtersAction('star') as $filterStar) {
echo $filterStar->getRawInput(), PHP_EOL;
}
?></textarea>
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.filteractions.help') ?></p>
</div>
</div>
</fieldset>
<fieldset>
<legend><?= _t('conf.reading.headline.misc') ?></legend>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="lazyload">
<input type="checkbox" name="lazyload" id="lazyload" value="1"<?=
FreshRSS_Context::userConf()->lazyload ? ' checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::userConf()->lazyload ?>"/>
<?= _t('conf.reading.img_with_lazyload') ?>
<noscript> — <strong><?= _t('gen.js.should_be_activated') ?></strong></noscript>
</label>
</div>
</div>
</fieldset>
<div class="form-group form-actions">
<div class="group-controls">
<button type="submit" class="btn btn-important"><?= _t('gen.action.submit') ?></button>
<button type="reset" class="btn"><?= _t('gen.action.cancel') ?></button>
</div>
</div>
</form>
</main>
<script src="../scripts/config.js?<?= @filemtime(PUBLIC_PATH . '/scripts/config.js') ?>"></script>
wget 'https://lists2.roe3.org/FreshRSS/app/views/configure/shortcut.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
$this->partial('aside_configure');
?>
<main class="post">
<div class="link-back-wrapper">
<a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
</div>
<h1><?= _t('conf.shortcut') ?></h1>
<datalist id="keys">
<?php foreach ($this->list_keys as $key) { ?>
<option value="<?= $key ?>">
<?php } ?>
</datalist>
<?php $s = FreshRSS_Context::userConf()->shortcuts; ?>
<?php if ([] !== $nonStandard = getNonStandardShortcuts($s)): ?>
<p class="alert alert-error">
<?= _t('conf.shortcut.non_standard', implode('</kbd>, <kbd>', $nonStandard)) ?>
</p>
<?php endif; ?>
<form method="post" action="<?= _url('configure', 'shortcut') ?>">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<noscript><p class="alert alert-error"><?= _t('conf.shortcut.javascript') ?></p></noscript>
<fieldset>
<legend><?= _t('conf.shortcut.views') ?></legend>
<div class="form-group">
<label class="group-name" for="normal_view_shortcut"><?= _t('conf.shortcut.normal_view') ?></label>
<div class="group-controls">
<input type="text" id="normal_view_shortcut" name="shortcuts[normal_view]" list="keys" value="<?= $s['normal_view'] ?>"
data-leave-validation="<?= $s['normal_view'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="global_view_shortcut"><?= _t('conf.shortcut.global_view') ?></label>
<div class="group-controls">
<input type="text" id="global_view_shortcut" name="shortcuts[global_view]" list="keys" value="<?= $s['global_view'] ?>"
data-leave-validation="<?= $s['global_view'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="reading_view_shortcut"><?= _t('conf.shortcut.reading_view') ?></label>
<div class="group-controls">
<input type="text" id="reading_view_shortcut" name="shortcuts[reading_view]" list="keys" value="<?= $s['reading_view'] ?>"
data-leave-validation="<?= $s['reading_view'] ?>"/>
</div>
</div>
</fieldset>
<fieldset>
<legend><?= _t('conf.shortcut.navigation') ?></legend>
<p class="alert alert-warn"><?= _t('conf.shortcut.navigation_help') ?></p>
<div class="form-group">
<label class="group-name" for="next_entry"><?= _t('conf.shortcut.next_article') ?></label>
<div class="group-controls">
<input type="text" id="next_entry" name="shortcuts[next_entry]" list="keys" value="<?= $s['next_entry'] ?>"
data-leave-validation="<?= $s['next_entry'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="next_unread_entry"><?= _t('conf.shortcut.next_unread_article') ?></label>
<div class="group-controls">
<input type="text" id="next_unread_entry" name="shortcuts[next_unread_entry]" list="keys" value="<?= $s['next_unread_entry'] ?>"
data-leave-validation="<?= $s['next_unread_entry'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="prev_entry"><?= _t('conf.shortcut.previous_article') ?></label>
<div class="group-controls">
<input type="text" id="prev_entry" name="shortcuts[prev_entry]" list="keys" value="<?= $s['prev_entry'] ?>"
data-leave-validation="<?= $s['prev_entry'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="first_entry"><?= _t('conf.shortcut.first_article') ?></label>
<div class="group-controls">
<input type="text" id="first_entry" name="shortcuts[first_entry]" list="keys" value="<?= $s['first_entry'] ?>"
data-leave-validation="<?= $s['first_entry'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="last_entry"><?= _t('conf.shortcut.last_article') ?></label>
<div class="group-controls">
<input type="text" id="last_entry" name="shortcuts[last_entry]" list="keys" value="<?= $s['last_entry'] ?>"
data-leave-validation="<?= $s['last_entry'] ?>"/>
</div>
</div>
<p class="alert alert-warn"><?= _t('conf.shortcut.navigation_no_mod_help') ?></p>
<div class="form-group">
<label class="group-name" for="skip_next_entry"><?= _t('conf.shortcut.skip_next_article') ?></label>
<div class="group-controls">
<input type="text" id="skip_next_entry" name="shortcuts[skip_next_entry]" list="keys" value="<?= $s['skip_next_entry'] ?>"
data-leave-validation="<?= $s['skip_next_entry'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="skip_prev_entry"><?= _t('conf.shortcut.skip_previous_article') ?></label>
<div class="group-controls">
<input type="text" id="skip_prev_entry" name="shortcuts[skip_prev_entry]" list="keys" value="<?= $s['skip_prev_entry'] ?>"
data-leave-validation="<?= $s['skip_prev_entry'] ?>"/>
</div>
</div>
</fieldset>
<fieldset>
<legend><?= _t('conf.shortcut.article_action') ?></legend>
<div class="form-group">
<p class="alert alert-warn"><?= _t('conf.shortcut.shift_for_all_read') ?></p>
<label class="group-name" for="mark_read"><?= _t('conf.shortcut.mark_read') ?></label>
<div class="group-controls">
<input type="text" id="mark_read" name="shortcuts[mark_read]" list="keys" value="<?= $s['mark_read'] ?>"
data-leave-validation="<?= $s['mark_read'] ?>"/>
</div>
</div>
<p class="alert alert-warn"><?= _t('conf.shortcut.navigation_no_mod_help') ?></p>
<div class="form-group">
<label class="group-name" for="mark_favorite"><?= _t('conf.shortcut.mark_favorite') ?></label>
<div class="group-controls">
<input type="text" id="mark_favorite" name="shortcuts[mark_favorite]" list="keys" value="<?= $s['mark_favorite'] ?>"
data-leave-validation="<?= $s['mark_favorite'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="go_website"><?= _t('conf.shortcut.see_on_website') ?></label>
<div class="group-controls">
<input type="text" id="go_website" name="shortcuts[go_website]" list="keys" value="<?= $s['go_website'] ?>"
data-leave-validation="<?= $s['go_website'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="auto_share_shortcut"><?= _t('conf.shortcut.auto_share') ?></label>
<div class="group-controls">
<input type="text" id="auto_share_shortcut" name="shortcuts[auto_share]" list="keys" value="<?= $s['auto_share'] ?>"
data-leave-validation="<?= $s['auto_share'] ?>"/>
<p class="help"><?= _i('help') ?> <?= _t('conf.shortcut.auto_share_help') ?></p>
</div>
</div>
<div class="form-group">
<label class="group-name" for="collapse_entry"><?= _t('conf.shortcut.collapse_article') ?></label>
<div class="group-controls">
<input type="text" id="collapse_entry" name="shortcuts[collapse_entry]" list="keys" value="<?= $s['collapse_entry'] ?>"
data-leave-validation="<?= $s['collapse_entry'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="toggle_media"><?= _t('conf.shortcut.toggle_media') ?></label>
<div class="group-controls">
<input type="text" id="toggle_media" name="shortcuts[toggle_media]" list="keys" value="<?= $s['toggle_media'] ?>"
data-leave-validation="<?= $s['toggle_media'] ?>"/>
</div>
</div>
</fieldset>
<fieldset>
<legend><?= _t('conf.shortcut.other_action') ?></legend>
<div class="form-group">
<label class="group-name" for="actualize"><?= _t('gen.action.actualize') ?></label>
<div class="group-controls">
<input type="text" id="actualize" name="shortcuts[actualize]" list="keys" value="<?= $s['actualize'] ?>"
data-leave-validation="<?= $s['actualize'] ?>" />
</div>
</div>
<div class="form-group">
<label class="group-name" for="load_more_shortcut"><?= _t('conf.shortcut.load_more') ?></label>
<div class="group-controls">
<input type="text" id="load_more_shortcut" name="shortcuts[load_more]" list="keys" value="<?= $s['load_more'] ?>"
data-leave-validation="<?= $s['load_more'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="focus_search_shortcut"><?= _t('conf.shortcut.focus_search') ?></label>
<div class="group-controls">
<input type="text" id="focus_search_shortcut" name="shortcuts[focus_search]" list="keys" value="<?= $s['focus_search'] ?>"
data-leave-validation="<?= $s['focus_search'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="user_filter_shortcut"><?= _t('conf.shortcut.user_filter') ?></label>
<div class="group-controls">
<input type="text" id="user_filter_shortcut" name="shortcuts[user_filter]" list="keys" value="<?= $s['user_filter'] ?>"
data-leave-validation="<?= $s['user_filter'] ?>"/>
<p class="help"><?= _i('help') ?> <?= _t('conf.shortcut.user_filter_help') ?></p>
</div>
</div>
<div class="form-group">
<label class="group-name" for="close_dropdown_shortcut"><?= _t('conf.shortcut.close_dropdown') ?></label>
<div class="group-controls">
<input type="text" id="close_dropdown" name="shortcuts[close_dropdown]" list="keys" value="<?= $s['close_dropdown'] ?>"
data-leave-validation="<?= $s['close_dropdown'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="help_shortcut"><?= _t('conf.shortcut.help') ?></label>
<div class="group-controls">
<input type="text" id="help_shortcut" name="shortcuts[help]" list="keys" value="<?= $s['help'] ?>"
data-leave-validation="<?= $s['help'] ?>"/>
</div>
</div>
</fieldset>
<div class="form-group form-actions">
<div class="group-controls">
<button type="submit" class="btn btn-important"><?= _t('gen.action.submit') ?></button>
<button type="submit" class="btn btn-important confirm" name="load_default_shortcuts" value="1"><?= _t('gen.action.load_default_shortcuts') ?></button>
<button type="reset" class="btn"><?= _t('gen.action.cancel') ?></button>
</div>
</div>
</form>
</main>
wget 'https://lists2.roe3.org/FreshRSS/app/views/configure/system.phtml'
<?php
declare(strict_types=1);
/** @var FreshRSS_View $this */
$this->partial('aside_configure');
?>
<main class="post">
<div class="link-back-wrapper">
<a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
</div>
<h1><?= _t('admin.system') ?></h1>
<form method="post" action="<?= _url('configure', 'system') ?>">
<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
<div class="form-group">
<label class="group-name" for="instance-name"><?= _t('admin.system.instance-name') ?></label>
<div class="group-controls">
<input type="text" id="instance-name" name="instance-name" value="<?= FreshRSS_Context::systemConf()->title ?>"
data-leave-validation="<?= FreshRSS_Context::systemConf()->title ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="base-url"><?= _t('admin.system.base-url') ?></label>
<div class="group-controls">
<input type="text" id="base-url" name="base-url" value="<?= FreshRSS_Context::systemConf()->base_url ?>"
data-leave-validation="<?= FreshRSS_Context::systemConf()->base_url ?>" readonly="readonly" />
<p class="help"><?= _i('help') ?> <?= _t('admin.system.base-url.recommendation', dirname(Minz_Request::guessBaseUrl())) ?></p>
<p class="help"><?= _i('help') ?> <?= _t('admin.system.sensitive-parameter') ?></p>
</div>
</div>
<div class="form-group">
<label class="group-name" for="websub"><?= _t('sub.feed.websub') ?></label>
<div class="group-controls">
<input type="checkbox" id="websub" name="websub" disabled="disabled" <?=
FreshRSS_Context::systemConf()->pubsubhubbub_enabled && Minz_Request::serverIsPublic(FreshRSS_Context::systemConf()->base_url) ? 'checked="checked"' : '' ?> />
<p class="help"><?= _i('help') ?> <?= _t('admin.system.websub.help') ?></p>
<p class="help"><?= _i('help') ?> <?= _t('admin.system.sensitive-parameter') ?></p>
</div>
</div>
<div class="form-group">
<label class="group-name" for="auto-update-url"><?= _t('admin.system.auto-update-url') ?></label>
<div class="group-controls">
<input type="text" id="auto-update-url" name="auto-update-url" value="<?= FreshRSS_Context::systemConf()->auto_update_url ?>"
data-leave-validation="<?= FreshRSS_Context::systemConf()->auto_update_url ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="max-feeds"><?= _t('admin.system.max-feeds') ?></label>
<div class="group-controls">
<input type="number" id="max-feeds" name="max-feeds" value="<?= FreshRSS_Context::systemConf()->limits['max_feeds'] ?>" min="1"
data-leave-validation="<?= FreshRSS_Context::systemConf()->limits['max_feeds'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="max-categories"><?= _t('admin.system.max-categories') ?></label>
<div class="group-controls">
<input type="number" id="max-categories" name="max-categories" value="<?= FreshRSS_Context::systemConf()->limits['max_categories'] ?>" min="1"
data-leave-validation="<?= FreshRSS_Context::systemConf()->limits['max_categories'] ?>"/>
</div>
</div>
<div class="form-group">
<label class="group-name" for="cookie-duration"><?= _t('admin.system.cookie-duration.number') ?></label>
<div class="group-controls">
<input type="number" id="cookie-duration" name="cookie-duration" value="<?= FreshRSS_Context::systemConf()->limits['cookie_duration'] ?>" min="0"
data-leave-validation="<?= FreshRSS_Context::systemConf()->limits['cookie_duration'] ?>"/>
<p class="help"><?= _i('help') ?> <?= _t('admin.system.cookie-duration.help') ?></p>
</div>
</div>
<h2><?= _t('admin.system.registration.title') ?></h2>
<div class="form-group">
<label class="group-name" for="max-registrations-select"><?= _t('admin.system.registration.select.label') ?></label>
<div class="group-controls">
<select class="select-input-changer" name="" data-name="max-registrations">
<option value="1" <?= FreshRSS_Context::systemConf()->limits['max_registrations'] == 1 ? 'selected = "selected"' : ''; ?> data-input-visible="false"><?= _t('admin.system.registration.select.option.noform') ?></option>
<option value="0" <?= FreshRSS_Context::systemConf()->limits['max_registrations'] == 0 ? 'selected = "selected"' : ''; ?> data-input-visible="false"><?= _t('admin.system.registration.select.option.nolimit') ?></option>
<option value="2" <?= FreshRSS_Context::systemConf()->limits['max_registrations'] > 1 ? 'selected = "selected"' : ''; ?> data-input-visible="true"><?= _t('admin.system.registration.select.option.setaccountsnumber') ?></option>
</select>
</div>
</div>
<div class="form-group" id="max-registrations-block">
<label class="group-name" for="max-registrations-input"><?= _t('admin.system.registration.number') ?></label>
<div class="group-controls">
<?php $number = count(listUsers()); ?>
<input type="number" id="max-registrations-input" name="" value="<?= FreshRSS_Context::systemConf()->limits['max_registrations'] > 1 ? FreshRSS_Context::systemConf()->limits['max_registrations'] : $number + 1; ?>" min="2"
data-leave-validation="<?= FreshRSS_Context::systemConf()->limits['max_registrations'] > 1 ? FreshRSS_Context::systemConf()->limits['max_registrations'] : $number + 1; ?>" data-number="<?= $number ?>"/>
<span id="max-registrations-status-disabled">(= <?= _t('admin.system.registration.status.disabled') ?>)</span><span id="max-registrations-status-enabled">(= <?= _t('admin.system.registration.status.enabled') ?>)</span>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<?= ($number > 1 ? _t('admin.user.numbers', $number) : _t('admin.user.number', $number)); ?>
</div>
</div>
<div class="form-group">
<label class="group-name"><?= _t('index.tos.title') ?></label>
<div class="group-controls">
<?php if (file_exists(TOS_FILENAME)) { ?>
<?= _t('admin.system.tos.enabled') ?>
<?php
} else { ?>
<?= _t('admin.system.tos.disabled') ?>
<p class="help"><?= _i('help') ?> <?= _t('admin.system.tos.help') ?></p>
<?php } ?>
</div>
</div>
<div class="form-group">
<div class="group-controls">
<label class="checkbox" for="force-email-validation">
<input
type="checkbox"
name="force-email-validation"
id="force-email-validation"
value="1"
<?= FreshRSS_Context::systemConf()->force_email_validation ? 'checked="checked"' : '' ?>
data-leave-validation="<?= FreshRSS_Context::systemConf()->force_email_validation ?>"
/>
<?= _t('admin.system.force_email_validation') ?>
</label>
</div>
</div>
<div class="form-group form-actions">
<div class="group-controls">
<button type="submit" class="btn btn-important"><?= _t('gen.action.submit') ?></button>
<button type="reset" class="btn"><?= _t('gen.action.cancel') ?></button>
</div>
</div>
</form>
</main>
<script src="../scripts/config.js?<?= @filemtime(PUBLIC_PATH . '/scripts/config.js') ?>"></script>