Skip to content

Post Style View

Solved Customisation
  • @cagatay said in Post Style View:

    maybe it depends on me or my web browser. thank you

    One thing I have noticed is that there are a number of errors on your site in the console. My concern here is that the jQuery functions I added are not being executed. For example, I removed the below function from your site about 30 minutes ago because itโ€™s malformed

    });ment).ready(function () {
        function animateTags() {
        	if (ajaxify.data.template.name === 'categories') {
        		var tags = $('.popular-tags .tag-item');
        		var bar = $('<div class="popular-tags-bar"></div>');
        		tags.append(bar);
        		
        		var max;
        		
        		setTimeout(function() {
            		tags.each(function() {
            		   var bar = $(this).find('.popular-tags-bar');
            		   var val = parseInt(bar.parents('a').find('.tag-topic-count').text(), 10);
            		   max = max > val ? max : val;
            		   
            		   bar.css({
            		       width: val / max * 100 + '%'
            		   });
            		});
        		}, 100)
        	}
        }
        animateTags();
        $(window).on('action:ajaxify.end', animateTags);
    });
    

    As you can see, this isnโ€™t right at all. It should be

    $(document).ready(function () {
        function animateTags() {
            if (ajaxify.data.template.name === 'categories') {
                var tags = $('.popular-tags .tag-item');
                var bar = $('<div class="popular-tags-bar"></div>');
                tags.append(bar);
    
                var max;
    
                setTimeout(function () {
                    tags.each(function () {
                        var bar = $(this).find('.popular-tags-bar');
                        var val = parseInt(bar.parents('a').find('.tag-topic-count').text(), 10);
                        max = max > val ? max : val;
    
                        bar.css({
                            width: val / max * 100 + '%'
                        });
                    });
                }, 100);
            }
        }
        animateTags();
        $(window).on('action:ajaxify.end', animateTags);
    });
    

    Iโ€™ve put this back how it should be, but am curious as to where that came from.

  • @phenomlab i can not understand how it can be, i do not touch anything js side.

    so now everything is working and code is okey hope so?

  • @cagatay Not entirely. There is an ajax call I need to use called action:ajaxify.loaded but this does not seem to be firing on your site. Itโ€™s opposite, action:ajaxify.end works fine (as youโ€™ll see if you press F5) but the former does not, and I canโ€™t see any reason as to why.

  • @phenomlab maybe it depends on my nodebb version or really i can not say anything coz i don not know what is the ajax code as well ๐Ÿ™‚

  • @cagatay Your NodeBB is up to date, so not an issue there. Just seems odd that no matter what I try, it doesnโ€™t trigger. Investigating

  • @phenomlab maybe there is a problem in my vps or ubuntu is not clearlu working or library etcโ€ฆ

  • @cagatay Not sure, but will check out a theory I have first before we go down that route.

  • @cagatay Found the issue. It appears that the hook I should be calling is in fact action:posts.loaded and not action:ajaxify.loaded ๐Ÿคฆ

    Should be fixed now but take a look. The best way to test this is to find a topic with lots of posts, and scroll to the bottom. Then, reload the page, and start scrolling up from the bottom to the top. As the new posts are added into the DOM, that function I wrote should execute and add the missing class

    For anyone else following this thread, the two required jQuery functions are

        $(window).on('action:posts.loaded', function(data) {
            $(document).ready(function() {
            if ($('li[component="post"]').hasClass("")) {
                console.log("New posts detected,so adding classes for messenger type view");
                $('li[component="post"]').addClass('topic-response-post');
            }
        });
    });
        $(window).on('action:ajaxify.end', function(data) {
            $(document).ready(function() {
            if ($('li[component="post"]').hasClass("")) {
                console.log("Adding required classes for messenger type view");
                $('li[component="post"]').addClass('topic-response-post');
            }
        });
    });
    
  • @phenomlab i checked topic with a lots of posts 3 times ๐Ÿ™‚ everything is clear and very well now. thank you your effort.

  • @cagatay No problems. Glad itโ€™s all working. I need to document this for others to be able to use.

  • @phenomlab said in Post Style View:

    @cagatay No problems. Glad itโ€™s all working. I need to document this for others to be able to use.

    this post is very good document for the users who will want to use it ๐Ÿ™‚

  • @cagatay Yes, but I want to create something more concise and simpler to follow

  • phenomlabundefined phenomlab has marked this topic as solved on
  • @cagatay in case youโ€™re still following this thread, I found a far more efficient way of adding the classes using jQuery. To this end, you can change this block above with this code

    // Target those elements already loaded in the DOM
    $(document).ready(function() {
        $(window).on('action:ajaxify.end', function(data) {
            $('li[component="post"]').each(function(i, obj) {
                if (!$(this).hasClass('self-post') || (!$(this).hasClass('self-post'))) {
                    console.log("Adding required classes for messenger type view");
                    $(this).addClass('topic-response-post');
                }
    
            });
        });
    });
    // Target elements dynamically added to the DOM on post load
    $(document).ready(function() {
        $(window).on('action:ajaxify.loaded', function(data) {
            $('li[component="post"]').each(function(i, obj) {
                if (!$(this).hasClass('self-post') || (!$(this).hasClass('self-post'))) {
                    console.log("Adding required classes for messenger type view");
                    $(this).addClass('topic-response-post');
                }
    
            });
        });
    });
    
  • @phenomlab said in Post Style View:

    // Target those elements already loaded in the DOM
    $(document).ready(function() {
    $(window).on(โ€˜action:ajaxify.endโ€™, function(data) {
    $(โ€˜li[component=โ€œpostโ€]โ€™).each(function(i, obj) {
    if (!$(this).hasClass(โ€˜self-postโ€™) || (!$(this).hasClass(โ€˜self-postโ€™))) {
    console.log(โ€œAdding required classes for messenger type viewโ€);
    $(this).addClass(โ€˜topic-response-postโ€™);
    }

        });
    });
    

    });
    // Target elements dynamically added to the DOM on post load
    $(document).ready(function() {
    $(window).on(โ€˜action:ajaxify.loadedโ€™, function(data) {
    $(โ€˜li[component=โ€œpostโ€]โ€™).each(function(i, obj) {
    if (!$(this).hasClass(โ€˜self-postโ€™) || (!$(this).hasClass(โ€˜self-postโ€™))) {
    console.log(โ€œAdding required classes for messenger type viewโ€);
    $(this).addClass(โ€˜topic-response-postโ€™);
    }

        });
    });
    

    });

    thank you Mark.
    changed it.

  • @phenomlab there is small problem after revised codes which you shared.
    problem is shown below; answered nick and labels nested.

    8cb60812-c40c-4834-bdb2-bd8ef6271340-image.png

  • @cagatay thatโ€™s just a margin missing. The code I provided wonโ€™t be causing that. If you look for the element in the developers console and add a margin-left value to it, that should resolve it.

  • @phenomlab may i use this code?

    .topic-owner-post [itemprop="author"] {
        float: left;
    }
    // Add these to (or edit) the existing classes you have
    .user-level-topic {
        float: none;
    }
    .group-label {
        margin-top: -1px;
    }
    .topic-owner-post [itemprop="author"]:after {
        margin-top: 1px;
        height: 18px;
    }
    
  • @cagatay from the screenshot you provided, it looks like youโ€™ve used them. They are fine to use, but you are missing a couple of styles.

    Iโ€™ll have a look at this tomorrow and give you the remainder of the code you need.

  • @cagatay

    Just add margin-left on the element like @phenomlab said to you :

    topic [component="post/parent"] {
        margin-left: 10px;
    }
    

    aa08c62b-4223-4cba-8c0f-c73d50474c0d-image.png

    Maybe @phenomlab have a better way


Did this solution help you?
Did you find the suggested solution useful? Why not buy me a coffee? It's a nice gesture, and a great way to show your appreciation ๐Ÿ’—

Related Topics
  • How to style tool tip of nodebb-plugin-user-level

    Solved Customisation
    4
    5 Votes
    4 Posts
    719 Views

    @DownPW thanks. I forgot about that.

  • What is this bar called?

    Solved Customisation
    92
    36 Votes
    92 Posts
    8k Views

    This is good ๐Ÿ‘

  • Sidebar Widget is no longer on the side!

    Moved Solved General
    4
    2 Votes
    4 Posts
    325 Views

    @Panda said in Sidebar Widget is no longer on the side!:

    Ah, so sidebar wont work on mobile?

    Correct. If you review the docs on bootstrap, youโ€™ll notice that it is designed on a grid system

    https://getbootstrap.com/docs/5.0/layout/grid/

    What I mean by changing the category is moving it on here to general as you posted it in bugs, when it isnโ€™t.

  • NodeBB v3

    Announcements
    2
    3 Votes
    2 Posts
    228 Views

    @cagatay JS will work fine - no changes there, and there are no plans to drop support for jQuery. More of an issue is the CSS - for which there are quite a few breaking changes. Keep an eye on sudonix.dev (my development site) where you can see progress in relation to how I am tackling the compatibility issues.

  • Rotating homepage icons, gifs?

    Solved Configure
    2
    3 Votes
    2 Posts
    245 Views

    @eveh Itโ€™s not a GIF, no. Itโ€™s actually a webp file so made much smaller, and uses keyframes to control the rotation on hover. You can easily make your own though ๐Ÿ™‚

    The CSS for that is as below

    @keyframes rotate180 { from { transform: rotate(0deg); } to { transform: rotate(180deg); } } @keyframes rotate0 { from { transform: rotate(180deg); } to { transform: rotate(0deg); } }

    Your milage may vary on the CSS below, as itโ€™s custom for Sudonix, but this is the class that is used to control the rotate

    .header .forum-logo, img.forum-logo.head { max-height: 50px; width: auto; height: 30px; margin-top: 9px; max-width: 150px; min-width: 32px; display: inline-block; animation-name: rotate180, rotate0; animation-duration: 1000ms; animation-delay: 0s, 1000ms; animation-iteration-count: 1; animation-timing-function: linear; transition: transform 1000ms ease-in-out; }
  • [NODEBB] CSS Style Sheets SelectBox

    Locked Solved Customisation
    112
    24 Votes
    112 Posts
    14k Views

    @DownPW as discussed in PM

    Seems to have been solved with the new JS code that you added allowing the version CSS file change!!

    Cache problem therefore with the JS of the Switcher theme

    Based on this, I will close this thread and reference
    https://sudonix.com/topic/207/nodebb-help-for-my-custom-css/27

  • What brought you here?

    General
    6
    3 Votes
    6 Posts
    447 Views

    @gotwf And very welcome it is too. I love a balanced discussion.

  • [NodeBB] Creating new user to auto post content

    Solved Customisation
    3
    0 Votes
    3 Posts
    831 Views

    @phenomlab many thanks Mark ๐Ÿ˜.