Skip to content

Threaded post support for NodeBB

Let's Build It
146 5 95.6k 1
  • I have tested but I don’t see switch on dev

    image.png

  • I have tested but I don’t see switch on dev

    image.png

    @DownPW It only triggers at 1200px and above - do you have your browser size set smaller?

  • Just added some transition effects. Note that depending on how many elements there are on the screen, this might cause layout shift.

  • oh yes I’m on 1920 x 1080 screen

    oups 🙂

  • oh yes I’m on 1920 x 1080 screen

    oups 🙂

    @DownPW Does it work now? By 1200px I meant wide

  • hmmmm nope

  • hmmmm nope

    Odd. Seems to work for me.

  • nope it’s normal, i’m on 1080px height

  • nope it’s normal, i’m on 1080px height

    @DownPW I’m going to reset your DEV password and login as you to check

  • I see why. Let me fix that

  • @DownPW can you log back into DEV and try again? Should be working now.

  • Here’s a video of the threading code working on stock Harmony on NodeBB.

    However, it’s important to note that the timeline bar is removed and recreated. There is a good reason for this, as without taking this route, it would mean that the timeline bar will look out of place. It’s certainly possible to use the existing bar and use a variety of CSS to move it around, although this is VERY inconsistent in my testing, and lands up being far too complex when it comes to having multiple CSS classes that do not include a specific scenario etc.

    In this case, it’s so much quicker to hide and replace the existing one - we do this in the default view also with the threaded view disabled, and I’m sure you won’t notice the difference 🙂 For obvious reasons, this code is configured to only fire on displays of 1200px or more - obviously, firing on a mobile device wouldn’t look very good at all.

    Here’s the video

    If you like what you see, here’s the code.

    https://github.com/phenomlab/nodebb-harmony-threading

    Final note - The code you see in the video is designed to work with stock Harmony. The code running on Sudonix is VERY different and uses a variety of CSS to render the view you see here. It’s “possible” to emulate this look, although it does mean that you will have to replace your custom CSS with that of Sudonix.

  • Here’s a video of the threading code working on stock Harmony on NodeBB.

    However, it’s important to note that the timeline bar is removed and recreated. There is a good reason for this, as without taking this route, it would mean that the timeline bar will look out of place. It’s certainly possible to use the existing bar and use a variety of CSS to move it around, although this is VERY inconsistent in my testing, and lands up being far too complex when it comes to having multiple CSS classes that do not include a specific scenario etc.

    In this case, it’s so much quicker to hide and replace the existing one - we do this in the default view also with the threaded view disabled, and I’m sure you won’t notice the difference 🙂 For obvious reasons, this code is configured to only fire on displays of 1200px or more - obviously, firing on a mobile device wouldn’t look very good at all.

    Here’s the video

    If you like what you see, here’s the code.

    https://github.com/phenomlab/nodebb-harmony-threading

    Final note - The code you see in the video is designed to work with stock Harmony. The code running on Sudonix is VERY different and uses a variety of CSS to render the view you see here. It’s “possible” to emulate this look, although it does mean that you will have to replace your custom CSS with that of Sudonix.

    @phenomlab wow… that looks really cool. I need to fire up a NodeBB box and test.

  • this is very cool. Thanks @phenomlab

  • Very cool like as already said above and a big thanks for hard work (I see the th function.js and woowwww 🙂 )

    I test it now and I have see this with plugin user-browsers :

    Do you know where it could come from?

    This also breaks the display of the site title

    Can we do the same thing but without expanding the topic toolbar on header ?


    EDIT :

    I see that you seem put other things in the function.js on github like banner, logo, fancybox… 🙂
    I said to myself that I found this file way too long without asking too many questions !

    –> But I have the bug display with user browsers plugin which I will try to solve

  • Very cool like as already said above and a big thanks for hard work (I see the th function.js and woowwww 🙂 )

    I test it now and I have see this with plugin user-browsers :

    Do you know where it could come from?

    This also breaks the display of the site title

    Can we do the same thing but without expanding the topic toolbar on header ?


    EDIT :

    I see that you seem put other things in the function.js on github like banner, logo, fancybox… 🙂
    I said to myself that I found this file way too long without asking too many questions !

    –> But I have the bug display with user browsers plugin which I will try to solve

    @DownPW hmm. Not sure why I copied all of that code, but will change asap. I also have a fix for the browsing users plugin issue but didn’t include it because others might not be using it.

    I’ll get to this as soon as I can.

    EDIT - Done
    EDIT 2 - I just noticed on your DEV box that you have (thanks to me - sorry) a ton of JS code you don’t need. You should probably clean that up.

  • Very cool like as already said above and a big thanks for hard work (I see the th function.js and woowwww 🙂 )

    I test it now and I have see this with plugin user-browsers :

    Do you know where it could come from?

    This also breaks the display of the site title

    Can we do the same thing but without expanding the topic toolbar on header ?


    EDIT :

    I see that you seem put other things in the function.js on github like banner, logo, fancybox… 🙂
    I said to myself that I found this file way too long without asking too many questions !

    –> But I have the bug display with user browsers plugin which I will try to solve

    @DownPW said in Threading support for NodeBB:

    Can we do the same thing but without expanding the topic toolbar on header ?

    Yes, but then you’ll have elements that are wider than the sticky bar which looks odd on scroll.

  • Very cool like as already said above and a big thanks for hard work (I see the th function.js and woowwww 🙂 )

    I test it now and I have see this with plugin user-browsers :

    Do you know where it could come from?

    This also breaks the display of the site title

    Can we do the same thing but without expanding the topic toolbar on header ?


    EDIT :

    I see that you seem put other things in the function.js on github like banner, logo, fancybox… 🙂
    I said to myself that I found this file way too long without asking too many questions !

    –> But I have the bug display with user browsers plugin which I will try to solve

    @DownPW said in Threading support for NodeBB:

    Do you know where it could come from?

    Yes, just fixed it in your dev environment. I assumed (probably incorrectly) that people may not have this installed, so omitted it. I fixed it in prod because I do have it there, but wanted to keep DEV as vanilla as possible.

    I’ll need to write a function that checks for the existence of this plugin then determines where to inject the toggle switch

    For now, see the below

    $('.topic .sticky-tools ul .hidden-xs').append(threadView);
                    // If you have browsing users plugin, comment out the above line and uncomment the one below
                    //$('.topic .sticky-tools ul [component="topic/browsing-users"]:last-of-type').append(threadView);
    

    Result (might need some position tweaking…)

    b0de4f7a-55bb-4611-93e5-f43f211b8a70-image.png

  • Good, thanks!!!
    Test asap, i’m on intervention AT work


Related Topics
  • What’s going on with NodeBB?

    Performance nodebb script die
    20
    8 Votes
    20 Posts
    4k Views
    @cagatay The most reliable way to upgrade Node.js on Ubuntu depends on how you originally installed it. Method 1: Using NVM (Recommended) If you already use Node Version Manager (NVM), upgrading is simple. NVM allows you to keep both versions and switch between them if needed. Install Node 22: nvm install 22 Switch to Node 22: nvm use 22 Set it as your default: nvm alias default 22 Verify the change: node -v Method 2: Using NodeSource (PPA) If you installed Node.js via apt using the NodeSource repository, you need to update the repository script to point to the new version. Remove the old NodeSource list (optional but cleaner): sudo rm /etc/apt/sources.list.d/nodesource.list Download and run the NodeSource setup script for Node 22: curl -fsSL [https://deb.nodesource.com/setup_22.x](https://deb.nodesource.com/setup_22.x) | sudo -E bash - Install/Upgrade Node.js: sudo apt-get install -y nodejs Verify the installation: node -v Method 3: Using the ‘n’ Package If you have npm installed, you can use the n interactive manager. Clear the npm cache: sudo npm cache clean -f Install the ‘n’ helper: sudo npm install -g n Install Node 22: sudo n 22 Update your shell: hash -r Troubleshooting Permission Denied: If you see permission errors using Method 2 or 3, ensure you are using sudo. Path Issues: If node -v still shows version 20 after upgrading via NVM, restart your terminal or run source ~/.bashrc. Conflicts: Avoid mixing these methods. If you switch from apt to nvm, it is best to sudo apt remove nodejs first to avoid path conflicts.
  • Test of youtube embeds

    Solved Configure nodebb
    14
    11 Votes
    14 Posts
    4k Views
    @phenomlab Perfect!!! Many thanks.
  • NodeBB Twitter / X embeds

    Let's Build It twitter script
    34
    21 Votes
    34 Posts
    13k Views
    @phenomlab said: @DownPW thanks for spotting (and fixing) this issue. I admittedly threw this together quickly for @jac some time ago, and it hasn’t had any love since. If OK with you, I’ll merge these changes into the github repository? No problem dude
  • 5 Votes
    3 Posts
    3k Views
    Very good like always
  • Nodebb design

    Solved General nodebb
    2
    1 Votes
    2 Posts
    1k Views
    @Panda said in Nodebb design: One negative is not being so good for SEO as more Server side rendered forums, if web crawlers dont run the JS to read the forum. From recollection, Google and Bing have the capability to read and process JS, although it’s not in the same manner as a physical person will consume content on a page. It will be seen as plain text, but will be indexed. However, it’s important to note that Yandex and Baidu will not render JS, although seeing as Google has a 90% share of the content available on the web in terms of indexing, this isn’t something you’ll likely lose sleep over. @Panda said in Nodebb design: The “write api” is preferred for server-to-server interactions. This is mostly based around overall security - you won’t typically want a client machine changing database elements or altering data. This is why you have “client-side” which could be DOM manipulation etc, and “server-side” which performs more complex operations as it can communicate directly with the database whereas the client cannot (and if it can, then you have a serious security flaw). Reading from the API is perfectly acceptable on the client-side, but not being able to write. A paradigm here would be something like SNMP. This protocol exists as a UDP (UDP is very efficient, as it is “fire and forget” and does not wait for a response like TCP does) based service which reads performance data from a remote source, thus enabling an application to parse that data for use in a monitoring application. In all cases, SNMP access should be “RO” (Read Only) and not RW (Read Write). It is completely feasible to assume complete control over a firewall for example by having RW access to SNMP and then exposing it to the entire internet with a weak passphrase. You wouldn’t do it (at least, I hope you wouldn’t) and the same ethic applies to server-side rendering and the execution of commands.
  • Smart Widgets

    Solved Configure nodebb
    9
    3 Votes
    9 Posts
    2k Views
    @Panda said in Smart Widgets: So why is that, or conversely why would the function to expose username ever be required, as it seems app.user is already an available global object? It is, yes, but not if you are using it outside of a widget. The function I wrote is also historical and comes from the 2.x train
  • 11 Votes
    14 Posts
    5k Views
    @dave1904 excellent news. Thanks for the feedback
  • NodeBB slow after DB recovery

    Solved Performance performance nodebb
    1
    5 Votes
    1 Posts
    828 Views
    No one has replied