Skip to content
Snippets Groups Projects
Commit f42e3a87 authored by echicken's avatar echicken :chicken:
Browse files

Work in progress.

This page is not usable yet. Don't use it. I don't want to hear
about it. Don't look at it. Don't look at me. Don't look at
anything. Just close your eyes and shut up.
parent 64d54d67
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
......@@ -10,11 +10,11 @@
<!-- To do: Search (forum, group, sub, or thread), Sortation and data-attributes -->
<?xjs if (Request.has_param('sub') && Request.has_param('thread')) { ?>
<? if (Request.has_param('sub') && Request.has_param('thread')) { ?>
<?xjs
var offset = Request.has_param('offset') ? parseInt(Request.get_param('offset')) : 0;
const thread = getMessageThreads(Request.get_param('sub'), settings.max_messages).thread[Request.get_param('thread')];
var thread = getMessageThreads(Request.get_param('sub'), settings.max_messages).thread[Request.get_param('thread')];
?>
<ol class="breadcrumb">
......@@ -50,7 +50,7 @@
</div>
<?xjs } else if (Request.has_param('sub') && typeof msg_area.sub[Request.get_param('sub')] != 'undefined') { ?>
<? } else if (Request.has_param('sub') && msg_area.sub[Request.get_param('sub')] !== undefined) { ?>
<ol class="breadcrumb">
<li>
......@@ -72,8 +72,8 @@
<?xjs
var offset = Request.has_param('offset') ? parseInt(Request.get_param('offset')) : 0;
const threads = listThreads(Request.get_param('sub'), offset, settings.page_size, true) || { total: 0, threads: [] };
const sub = msg_area.sub[Request.get_param('sub')];
var threads = listThreads(Request.get_param('sub'), offset * settings.page_size, settings.page_size, true) || { total: 0, threads: [] };
var sub = msg_area.sub[Request.get_param('sub')];
?>
<button class="btn btn-default icon" aria-label="<? locale.write('button_post_message'); ?>" title="<? locale.write('button_post_message'); ?>" onclick="addNew('<? write(sub.code); ?>')">
......@@ -107,9 +107,9 @@
</div>
<div id="forum-thread-stats-template" hidden>
<?xjs if (is_user()) { ?>
<? if (is_user()) { ?>
<span data-unread-messages title="<? locale.write('badge_unread_messages'); ?>" class="badge <? write(sub.scan_cfg&SCAN_CFG_NEW || sub.scan_cfg&SCAN_CFG_YONLY ? 'scanned' : ''); ?>" hidden></span>
<?xjs } ?>
<? } ?>
<span data-upvotes-badge title="<? locale.write('badge_upvotes'); ?>" class="badge upvote-bg" style="display:none;">
<span class="glyphicon glyphicon-arrow-up"></span>
<span data-upvotes></span>
......@@ -121,25 +121,25 @@
</div>
<div id="forum-list-container" class="list-group">
<?xjs threads.threads.forEach(function (e) { ?>
<? threads.threads.forEach(function (e) { ?>
<a href="./?page=<? Request.write_param('page'); ?>&sub=<? Request.write_param('sub'); ?>&thread=<? write(e.id); ?>" class="list-group-item striped">
<div class="row">
<div id="left-<? write(e.id); ?>" class="col-sm-9">
<strong><? write(e.subject); ?></strong>
<p><strong><? write(e.first.from); ?></strong>, <? write(system.timestr(e.first.when_written_time)); ?></p>
<p><? locale.write('label_thread_from'); ?> <strong><? write(e.first.from); ?></strong> <? locale.write('label_message_date'); ?> <? write(system.timestr(e.first.when_written_time)); ?></p>
</div>
<div class="col-sm-3">
<div id="right-<? write(e.id); ?>" class="pull-right"></div>
</div>
</div>
</a>
<?xjs }); ?>
<? }); ?>
</div>
<?xjs if (threads.total / settings.page_size > 1) { ?>
<?xjs qs = http_request.query_string.replace(/&offset=\d+/g, ''); ?>
<? if (threads.total / settings.page_size > 1) { ?>
<? var qs = http_request.query_string.replace(/&offset=\d+/g, ''); ?>
<div class="btn-group">
<?xjs if (offset > 0) { ?>
<? if (offset > 0) { ?>
<a href="./?<? write(qs); ?>&offset=0" role="button" class="btn btn-default" title="<? locale.write('button_thread_first_page'); ?>">
<span class="glyphicon glyphicon-fast-backward"></span>
</a>
......@@ -149,14 +149,14 @@
<a href="./?<? write(qs); ?>&offset=<? write(Math.max(0, offset - 1)); ?>" role="button" class="btn btn-default" title="<? locale.write('button_thread_previous_page'); ?>">
<span class="glyphicon glyphicon-step-backward"></span>
</a>
<?xjs } ?>
<? } ?>
<a href="./?<? write(qs); ?>&offset=<? write(offset); ?>" role="button" class="btn btn-default" disabled>
<? write(offset + 1); ?>
</a>
<?xjs for (var n = offset + 1; n < threads.total / settings.page_size && n - offset < 9; n++) { ?>
<? for (var n = offset + 1; n < threads.total / settings.page_size && n - offset < 9; n++) { ?>
<a href="./?<? write(qs); ?>&offset=<? write(n); ?>" role="button" class="btn btn-default"><? write(n + 1); ?></a>
<?xjs } ?>
<?xjs if (threads.total / settings.page_size > offset + 9) { ?>
<? } ?>
<? if (threads.total / settings.page_size > offset + 9) { ?>
<a href="./?<? write(qs); ?>&offset=<? write(offset + 1); ?>" role="button" class="btn btn-default" title="<? locale.write('button_thread_next_page'); ?>">
<span class="glyphicon glyphicon-step-forward"></span>
</a>
......@@ -166,23 +166,25 @@
<a href="./?<? write(qs); ?>&offset=<? write(Math.floor(threads.total / settings.page_size)); ?>" role="button" class="btn btn-default" title="<? locale.write('button_thread_last_page'); ?>">
<span class="glyphicon glyphicon-fast-forward"></span>
</a>
<?xjs } ?>
<? } ?>
</div class="btn-group">
<?xjs } ?>
<? } ?>
<script type="text/javascript">
registerEventListener('forum', function (e) {
registerEventListener('forum', e => {
const data = JSON.parse(e.data);
if (data.type != 'threads') return;
onThreadStats(data.data);
}, {
threads: '<? Request.write_param("sub"); ?>',
offset: '<? write(offset); ?>',
page_size: '<? write(settings.page_size); ?>'
page_size: '<? write(settings.page_size); ?>',
});
</script>
<?xjs } else if (Request.has_param('group') && typeof msg_area.grp_list[Request.get_param('group')] != 'undefined') { ?>
<? } else if (Request.has_param('group') && msg_area.grp_list[Request.get_param('group')] !== undefined) { ?>
<ol class="breadcrumb">
<li>
......@@ -198,54 +200,81 @@
</ol>
<div id="forum-list-container" class="list-group">
<?xjs const subs = listSubs(Request.get_param('group')); ?>
<?xjs subs.forEach(function (e) { ?>
<? var subs = listSubs(Request.get_param('group')); ?>
<? subs.forEach(function (e) { ?>
<a href="./?page=<? Request.write_param('page'); ?>&sub=<? write(e.code); ?>" class="list-group-item striped">
<h4><strong><? write(e.name); ?></strong></h4>
<h4>
<strong>
<? write(e.name); ?>
</strong>
</h4>
<span title="<? locale.write('badge_unread_messages'); ?>" class="badge <? write(e.scan_cfg&SCAN_CFG_NEW || e.scan_cfg&SCAN_CFG_YONLY ? 'scanned' : 'total'); ?>" id="badge-<? write(e.code); ?>"></span>
<p><? write(e.description); ?></p>
<span id="newest-msg-<? write(e.code); ?>"></span>
</a>
<?xjs }); ?>
<? }); ?>
</div>
<?xjs if (is_user()) { ?>
<? if (is_user()) { ?>
<script type="text/javascript">
registerEventListener('forum', function (e) {
registerEventListener('forum', e => {
const data = JSON.parse(e.data);
if (data.type != 'subs_unread') return;
onSubUnreadCount(data.data);
}, { subs_unread: '<? Request.write_param("group"); ?>' });
</script>
<?xjs } ?>
<? } ?>
<script type="text/javascript">
(async function getNewestMessagePerSub() {
try {
const response = await fetch('./api/forum.ssjs?call=get-newest-message-per-sub&group=<? Request.write_param('group'); ?>');
const data = await response.json();
Object.entries(data).forEach(e => {
document.getElementById(`newest-msg-${e[0]}`).innerHTML = `<? locale.write('label_sub_newest_message'); ?>: ${e[1].subject}, <? locale.write('label_thread_from'); ?> ${e[1].from} <? locale.write('label_message_date'); ?> ${new Date(e[1].when_written_time * 1000)}`;
});
} catch (err) {
console.error('Error fetching latest messages', err);
}
})();
</script>
<?xjs } else { ?>
<? } else { ?>
<ol class="breadcrumb">
<li>
<a href="./?page=<? Request.write_param('page'); ?>"><? locale.write('title'); ?></a>
<a href="./?page=<? Request.write_param('page'); ?>">
<? locale.write('title'); ?>
</a>
</li>
</ol>
<div id="forum-list-container" class="list-group">
<?xjs const groups = listGroups(); ?>
<?xjs groups.forEach(function (e) { ?>
<? const groups = listGroups(); ?>
<? groups.forEach(function (e) { ?>
<a href="./?page=<? Request.write_param('page'); ?>&group=<? write(e.index); ?>" class="list-group-item striped">
<h3><strong><? write(e.name); ?></strong></h3>
<h3>
<strong>
<? write(e.name); ?>
</strong>
</h3>
<span title="<? locale.write('badge_unread_messages'); ?>" class="badge ignored" id="badge-ignored-<? write(e.index); ?>"></span>
<span title="<? locale.write('badge_unread_messages'); ?>" class="badge scanned" id="badge-scanned-<? write(e.index); ?>"></span>
<p><? write(e.description); ?>: <? write(e.sub_count); ?> <? locale.write('sub_boards'); ?></p>
<p>
<? write(e.description); ?>: <? write(e.sub_count); ?> <? locale.write('sub_boards'); ?>
</p>
</a>
<?xjs }); ?>
<? }); ?>
</div>
<?xjs if (is_user()) { ?>
<? if (is_user()) { ?>
<script type="text/javascript">
registerEventListener('forum', function (e) {
registerEventListener('forum', e => {
const data = JSON.parse(e.data);
if (data.type != 'groups_unread') return;
onGroupUnreadCount(data.data);
}, { groups_unread: null });
</script>
<?xjs } ?>
<? } ?>
<?xjs } ?>
<? } ?>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment