Skip to content

Threaded post support for NodeBB

Let's Build It
146 5 116.4k 1
  • After test, seems to be good with add this in JS function in if and else :

    $('[component="topic/quickreply/container"]').addClass('threaded'); //test
    
    $('[component="topic/quickreply/container"]').removeClass('threaded'); //test
    

    and this to CSS :

    [component="topic/quickreply/container"].threaded {
        z-index: -1 !important;
        position: relative;
    }
    

    Tell me if this seems correct to you @phenomlab

    wrote on last edited by

    @DownPW seems fine, yes. Any obvious conflict with other elements?

  • wrote on last edited by

    I haven’t tested everything. this is something to watch out for

  • wrote on last edited by

    I have the same problem for thread but this time I can’t solve it 😞

    image.png

    image.png

  • I have the same problem for thread but this time I can’t solve it 😞

    image.png

    image.png

    wrote on last edited by

    @DownPW Let me have a look.

  • @DownPW Let me have a look.

    wrote on last edited by DownPW

    @phenomlab said in Threading support for NodeBB:

    @DownPW Let me have a look.

    Thanks Mark 🙂

    @phenomlab said in Threading support for NodeBB:

    @DownPW seems fine, yes. Any obvious conflict with other elements?

    Besides, my solution above is only partial. It turns out that sometimes I can no longer click to reply to the post via quick Reply. Nothing happens when I click to enter text

    It’s a bit the same problem as the previous bug.

    It would be more interesting to act on the dropdown menu than the other elements one by one but my attempts are not fruitful for the moment.

    We could kill one stone/two birds

  • @phenomlab said in Threading support for NodeBB:

    @DownPW Let me have a look.

    Thanks Mark 🙂

    @phenomlab said in Threading support for NodeBB:

    @DownPW seems fine, yes. Any obvious conflict with other elements?

    Besides, my solution above is only partial. It turns out that sometimes I can no longer click to reply to the post via quick Reply. Nothing happens when I click to enter text

    It’s a bit the same problem as the previous bug.

    It would be more interesting to act on the dropdown menu than the other elements one by one but my attempts are not fruitful for the moment.

    We could kill one stone/two birds

    wrote on last edited by

    @DownPW I see the issue. Can you please make the below CSS changes - notice the ones commented out and their replacements (which you should follow)

    .page-topic .topic .posts.timeline .timeline-event, .page-topic .topic .posts.timeline > [component="post/placeholder"], .page-topic .topic .posts.timeline > [component=post] {
        border-left: none;
        /* transition: transform 0.3s ease !important; */
        transition: margin-left 0.3s ease, margin-right 0.3s ease !important;
        background: var(--bs-body-bg);
        border-radius: var(--bs-border-radius);
    }
    
    li[component=post].threaded {
        /* transform: translateX(-100px); */
        /* transition: transform 0.3s ease !important; */
        margin-left: -75px !important;
        transition: margin-left 0.3s ease, margin-right 0.3s ease !important;
    }
    

    My expectation is that this will still work (but using margin instead of transform), and also ensure that the reverse dropdown is not being hidden by the [component="post"] elements.

    When you use transform on an element, a new stacking order is created for it. As you are transforming a parent which doesn’t have z-index of it’s own, a new stacking order for itself and child elements is created. As a result, the child element with z-index remains below the [component="post"] elements.

    If you want to see this in action before applying the CSS, you can remove translateX(-100px) from the li[component=post].threaded class and then try the dropdown menu again. You’ll notice it appears correctly this time, although the content is not being shifted because the translate has been removed.

    We replace it with margin which is slightly less performant when it comes to animation, but the nature of NodeBB is to lazyload posts, therefore, this negates the overall impact to the DOM.

    Let me know if this works.

  • wrote on last edited by DownPW

    Thats work. Many thanks for resolve
    Thanks for the information, I understand better.

    Would have a working solution other than mine for this :

  • Thats work. Many thanks for resolve
    Thanks for the information, I understand better.

    Would have a working solution other than mine for this :

    wrote on last edited by phenomlab

    @DownPW is that still an issue? I can’t replicate that on your dev site?

    aef70b6b-f702-4a8e-9bab-c0bfd8a34628-image.png

  • wrote on last edited by DownPW

    Besides, my solution above is only partial. It turns out that sometimes I can no longer click to reply to the post via quick Reply. Nothing happens when I click to enter text

    cache maybe. I have delete the bugfix because not bug fix 🙂

    image.png

  • Besides, my solution above is only partial. It turns out that sometimes I can no longer click to reply to the post via quick Reply. Nothing happens when I click to enter text

    cache maybe. I have delete the bugfix because not bug fix 🙂

    image.png

    wrote on last edited by

    @DownPW said in Threading support for NodeBB:

    cache maybe. I have delete the bugfix because not bug fix

    Yes, I can’t reproduce this.

  • wrote on last edited by

    I mean bug is present but my bug fix don’t work properly.

    test to delete my cache and tell you

  • phenomlab phenomlab referenced this topic on
  • wrote on last edited by

    @phenomlab not cache 😞

  • @phenomlab not cache 😞

    wrote on last edited by

    @DownPW PM me the link to the post.

  • wrote on last edited by DownPW

    actually, I noticed that it’s not on all the posts.
    it seems that these are the posts where the last response is that of the user (selfpost)

    DONE

  • actually, I noticed that it’s not on all the posts.
    it seems that these are the posts where the last response is that of the user (selfpost)

    DONE

    wrote on last edited by

    @DownPW I’ll have a look at this later

  • wrote on last edited by DownPW

    no problem.
    I have resolve this bug with change/replace this CSS CODE (I have just delete transform directive) :

    li.pt-4.self-post:not(.self-post .topic-owner-post).threaded {
       /*transform: translateX(0px) !important;*/
       transition: transform 0.3s ease !important;
       background: var(--bs-body-bg);
       background: var(--bs-body-navbar)!important;
       padding-right: 30px;
       margin-left: 0rem;
       padding-bottom: 0rem !important;
     }
    

    I don’t know if is a goodfix or not.

  • no problem.
    I have resolve this bug with change/replace this CSS CODE (I have just delete transform directive) :

    li.pt-4.self-post:not(.self-post .topic-owner-post).threaded {
       /*transform: translateX(0px) !important;*/
       transition: transform 0.3s ease !important;
       background: var(--bs-body-bg);
       background: var(--bs-body-navbar)!important;
       padding-right: 30px;
       margin-left: 0rem;
       padding-bottom: 0rem !important;
     }
    

    I don’t know if is a goodfix or not.

    wrote on last edited by

    @DownPW yes, was just typing that!

  • wrote on last edited by

    ha ha 🙂

  • wrote on last edited by phenomlab

    Quick note here for anyone who is using the Threaded Posts code and has recently upgraded to 3.7.0 - only to find the threaded posts is now broken 💔

    This is being caused by the HTML structure changes that 3.7.0 makes in the DOM, meaning the element we used to target pre this release no longer exists. To resolve this, locate the line (within the threaded JS function)

    $('.topic .sticky-tools ul.list-unstyled').append(threadView);
    

    And replace it with

    $('.topic .sticky-tools .thread-tools').append(threadView);
    

    That should make it re-appear.

  • wrote on last edited by

    Mark hi,
    I dont have this code in my js functions.


Related Topics
  • 3 Votes
    2 Posts
    2k Views
    DownPW
    Very great
  • NodeBB Twitter / X embeds

    Let's Build It twitter script
    34
    21 Votes
    34 Posts
    16k Views
    DownPW
    @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
  • Page control arrows for PWA

    Solved Customisation nodebb
    27
    25 Votes
    27 Posts
    15k Views
    phenomlab
    @crazycells it is, yes - I think I’ll leave it as there is no specific PWA CSS classes I know of. Well, you could use something like the below, but this means multiple CSS files for different operating systems. /** * Determine the mobile operating system. * This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'. * * @returns {String} */ function getMobileOperatingSystem() { var userAgent = navigator.userAgent || navigator.vendor || window.opera; // Windows Phone must come first because its UA also contains "Android" if (/windows phone/i.test(userAgent)) { return "Windows Phone"; } if (/android/i.test(userAgent)) { return "Android"; } if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) { return "iOS"; } return "unknown"; // return “Android” - one should either handle the unknown or fallback to a specific platform, let’s say Android } Once you’re in that rabbit hole, it’s impossible to get out of it.
  • Material View Support for Stock NodeBB

    Unsolved Let's Build It material view javascript css
    51
    4
    15 Votes
    51 Posts
    27k Views
    DownPW
    Oh yes, that’s what’s super cool, I learn something every day. Afterwards I start from so low in JS
  • Threaded chat support for NodeBB

    Let's Build It threaded chat code
    35
    1
    19 Votes
    35 Posts
    16k Views
    phenomlab
    @DownPW said in Threaded chat support for NodeBB: Better like this : add shadow and border-left on self answer Of course - you style to your own requirements and taste I’ll commit that CSS we discussed yesterday also
  • Setup OGProxy for use in NodeBB

    Moved Let's Build It ogproxy opengraph npm node
    110
    2
    21 Votes
    110 Posts
    55k Views
    phenomlab
    @crazycells said in Setup OGProxy for use in NodeBB: are they cached for each user separately? No. It’s a shared cache @crazycells said in Setup OGProxy for use in NodeBB: additionally, this is also handling youtube videos etc, right? No. This is handled by nodebb-plugin-ns-embed
  • NodeBB slow after DB recovery

    Solved Performance performance nodebb
    1
    5 Votes
    1 Posts
    967 Views
    No one has replied
  • [NODEBB] Welcome Message

    Solved Customisation css html nodebb
    20
    2
    13 Votes
    20 Posts
    9k Views
    phenomlab
    @DownPW the ‘js’ code for the banner takes the time from the client, so what it displays really depends on the regional settings for the operating system. I’ve not seen this issue myself but would like to see some examples of screenshots if possible.