Hi! @PitaJ thank you for the quick reply.
I understand that an absolute URL have the protocol, but most of the normal users, at least in our forums, don't know what that is, some use it just because the copied from the browser, but sometimes a user doesn't add it, and having that links as relative URL returns a 404, causing a bad experience.
Some CMS have a sanity check like Django and WordPress if you add a link inside a WordPress, they check if it's another domain and adds the protocol, so the user doesn't have to add it.
I think it's a good measure to prevent bad user experience.
Replies to post hidden in default theme
-
I have recently installed NodeBB 1.12.0 with default theme. When a user replies to a specific post, the reply is by default hidden below this post (one has to click to view it), while it appears as an ordinary reply to the topic below.
Is it possible to configure NodeBB (e.g. by modifying the theme template etc.) to get the following behaviour:
- The replies to a post appear by default below the relevant post (as now after the click)
- These replies do not appear for the second time as ordinary replies later in the thread
I would be grateful for a hint..
-
No. NodeBB chose a flat topic structure long ago and this is unlikely to change. The replies expanding list below a post is nothing more than a convenience.
-
Thanks. It is a pity.
But just in case I would try to attempt some hack. I now saw that the html element which loads the replies when clicked has an attribute
component="post/replies/open"
. I guess that clicking runs some javascript function which loads the replies. Could you indicate where is this javascript function located?Maybe I could then add some custom javascript to activate this function automatically on page load?
-
I just managed to make a quick hack which achieves the effect that I wanted. I added the following to the Custom Javascript tab in ACP:
function showreplies() { $('li[component="post"]').has('a[component="post/parent"]').addClass('hidden'); $('[component="post/replies/open"]').click(); } function noreply(event, data){ if(data.posts.length==1 && data.posts[0].toPid) { // this is a reply to some post var el = $('li[data-pid="'+data.posts[0].pid+'"]'); // newly added post if(el.parent('div[component="post/replies"]').length===0){ // added as a standalone post el.addClass('hidden'); } } $('div[component="post/replies"]').find('a[component="post/reply"], a[component="post/quote"]').addClass('hidden'); } $(window).on('action:ajaxify.end', showreplies); $(window).on('action:posts.loaded', noreply);
The first line in function
showreplies
hides those posts which are replies to previous posts, and the second line opens up the replies below the relevant posts. (@baris This was my attempt before I read your answer. Thanks for the pointer to the code! I will try that out).I added the handler for
action:posts.loaded
in order to- Eliminate
Reply
andQuote
buttons for the replies in order not to generate higher levels of nesting (this is ok for me) - After adding a reply to a post, by default it is also added at the end - in order to avoid that I set it to hidden. This does not work so well as the page gets scrolled to the top after that.. - I am not quite sure how to fix it. If I figure it out I'll make an update..
- Eliminate