Skip to content

[NODEBB] Welcome Message

Solved Customisation
20 4 5.6k 1
  • Hi @phenomlab

    I see a welcome Message at the right of your website

    3effa4e1-3053-49dc-a323-a93d9f19089e-image.png

    I have an HTML widget on ACP with this code :

    <div class="getUsername">Bonjour, <a href="/me"><span class="username">MY USERNAME</span></a></div>
    

    And my CSS :

    .getUsername {
        padding-top: 20px;
        padding-bottom: 5px;
        text-align: right;
        font-size: 90%;
        line-height: 2.4;
        font-weight: bold;
    }
    

    Everything is good except the main one, the display of the username.

    I saw that you used the /me on aHref, that can be added in the URL (https://XXXXX.XX/me) to point to the user profile

    But how do you display the name of it because my HTML code displays what I ask it to display. In other words “MY USERNAME”

    In other words how do you display the name of the user? With JS?

    8a81bea0-8433-4949-b23d-e68002528812-image.png

    Other things, At this time it is indicated “good evening”.

    Quiz of when is the start of the day 🙂

  • Hi @phenomlab

    I see a welcome Message at the right of your website

    3effa4e1-3053-49dc-a323-a93d9f19089e-image.png

    I have an HTML widget on ACP with this code :

    <div class="getUsername">Bonjour, <a href="/me"><span class="username">MY USERNAME</span></a></div>
    

    And my CSS :

    .getUsername {
        padding-top: 20px;
        padding-bottom: 5px;
        text-align: right;
        font-size: 90%;
        line-height: 2.4;
        font-weight: bold;
    }
    

    Everything is good except the main one, the display of the username.

    I saw that you used the /me on aHref, that can be added in the URL (https://XXXXX.XX/me) to point to the user profile

    But how do you display the name of it because my HTML code displays what I ask it to display. In other words “MY USERNAME”

    In other words how do you display the name of the user? With JS?

    8a81bea0-8433-4949-b23d-e68002528812-image.png

    Other things, At this time it is indicated “good evening”.

    Quiz of when is the start of the day 🙂

    @downpw said in [NODEBB] Welcome Message:

    Other things, At this time it is indicated “good evening”.

    good idea @phenomlab, this should be implemented into core IMO.

  • @downpw said in [NODEBB] Welcome Message:

    Other things, At this time it is indicated “good evening”.

    good idea @phenomlab, this should be implemented into core IMO.

    @jac @DownPW here’s the function I put together than will need to be added into your Custom JS

    $(window).on('action:ajaxify.end', function (data) {
        function updateUsername() {
            $('.getUsername .username').text(app.user.username);
        }
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', updateUsername);
        } else {
            updateUsername();
        }
        var thehours = new Date().getHours();
    	var themessage;
    	var morning = ('Good morning');
    	var afternoon = ('Good afternoon');
    	var evening = ('Good evening');
    
    	if (thehours >= 0 && thehours < 12) {
    		themessage = morning; 
    
    	} else if (thehours >= 12 && thehours < 17) {
    		themessage = afternoon;
    
    	} else if (thehours >= 17 && thehours < 24) {
    		themessage = evening;
    	}
    
    	$('.getUsername').prepend(themessage);
    });
    

    Then use a custom HTML widget with the below

    <!-- IF loggedIn -->
    <div class="getUsername">, <a href="/me"><span class="username"></span></a></div>
    <!-- ENDIF loggedIn -->
    
  • @jac @DownPW here’s the function I put together than will need to be added into your Custom JS

    $(window).on('action:ajaxify.end', function (data) {
        function updateUsername() {
            $('.getUsername .username').text(app.user.username);
        }
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', updateUsername);
        } else {
            updateUsername();
        }
        var thehours = new Date().getHours();
    	var themessage;
    	var morning = ('Good morning');
    	var afternoon = ('Good afternoon');
    	var evening = ('Good evening');
    
    	if (thehours >= 0 && thehours < 12) {
    		themessage = morning; 
    
    	} else if (thehours >= 12 && thehours < 17) {
    		themessage = afternoon;
    
    	} else if (thehours >= 17 && thehours < 24) {
    		themessage = evening;
    	}
    
    	$('.getUsername').prepend(themessage);
    });
    

    Then use a custom HTML widget with the below

    <!-- IF loggedIn -->
    <div class="getUsername">, <a href="/me"><span class="username"></span></a></div>
    <!-- ENDIF loggedIn -->
    

    @phenomlab

    Oh my God ^^
    I wonder where did you learn to code JS like this?

  • @jac @DownPW here’s the function I put together than will need to be added into your Custom JS

    $(window).on('action:ajaxify.end', function (data) {
        function updateUsername() {
            $('.getUsername .username').text(app.user.username);
        }
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', updateUsername);
        } else {
            updateUsername();
        }
        var thehours = new Date().getHours();
    	var themessage;
    	var morning = ('Good morning');
    	var afternoon = ('Good afternoon');
    	var evening = ('Good evening');
    
    	if (thehours >= 0 && thehours < 12) {
    		themessage = morning; 
    
    	} else if (thehours >= 12 && thehours < 17) {
    		themessage = afternoon;
    
    	} else if (thehours >= 17 && thehours < 24) {
    		themessage = evening;
    	}
    
    	$('.getUsername').prepend(themessage);
    });
    

    Then use a custom HTML widget with the below

    <!-- IF loggedIn -->
    <div class="getUsername">, <a href="/me"><span class="username"></span></a></div>
    <!-- ENDIF loggedIn -->
    

    @phenomlab No idea if this is for me or @DownPW but it is very clever indeed! does it show on mobile?

    The idea is fantastic Mark, is there a point where you think yes my ideas are used by others but having the same features across a few forums, does that bother you or would you say this is why you created Sudonix?

  • @phenomlab

    Oh my God ^^
    I wonder where did you learn to code JS like this?

    @downpw said in [NODEBB] Welcome Message:

    I wonder where did you learn to code JS like this?

    30 years experience 🙂

  • @phenomlab No idea if this is for me or @DownPW but it is very clever indeed! does it show on mobile?

    The idea is fantastic Mark, is there a point where you think yes my ideas are used by others but having the same features across a few forums, does that bother you or would you say this is why you created Sudonix?

    @jac said in [NODEBB] Welcome Message:

    very clever indeed! does it show on mobile?

    Yes, natively, but I use CSS to hide it.

    @jac said in [NODEBB] Welcome Message:

    The idea is fantastic Mark, is there a point where you think yes my ideas are used by others but having the same features across a few forums, does that bother you or would you say this is why you created Sudonix?

    Absolutely not. I know that my ideas have been accepted and used by @JAC @DownPW @kurulumuNet and I’m happy that others find them useful. There’s no copyright here - anything you want to take and use is, like the platform itself, free.

  • @phenomlab

    Oh my God ^^
    I wonder where did you learn to code JS like this?

    @downpw said in [NODEBB] Welcome Message:

    I wonder where did you learn to code JS like this?

    The firm I work for uses a worfkflows system which I wrote from scratch. It’s used to track the onboarding, departures, application requests etc of users, and is also an audit source. Been a developer for years…

  • @jac said in [NODEBB] Welcome Message:

    very clever indeed! does it show on mobile?

    Yes, natively, but I use CSS to hide it.

    @jac said in [NODEBB] Welcome Message:

    The idea is fantastic Mark, is there a point where you think yes my ideas are used by others but having the same features across a few forums, does that bother you or would you say this is why you created Sudonix?

    Absolutely not. I know that my ideas have been accepted and used by @JAC @DownPW @kurulumuNet and I’m happy that others find them useful. There’s no copyright here - anything you want to take and use is, like the platform itself, free.

    @phenomlab said in [NODEBB] Welcome Message:

    @jac said in [NODEBB] Welcome Message:

    very clever indeed! does it show on mobile?

    Yes, natively, but I use CSS to hide it.

    @jac said in [NODEBB] Welcome Message:

    The idea is fantastic Mark, is there a point where you think yes my ideas are used by others but having the same features across a few forums, does that bother you or would you say this is why you created Sudonix?

    Absolutely not. I know that my ideas have been accepted and used by @JAC @DownPW @kurulumuNet and I’m happy that others find them useful. There’s no copyright here - anything you want to take and use is, like the platform itself, free.

    Brilliant Mark, thank you as always for the work on my forum and for the continuation of help.

  • @phenomlab said in [NODEBB] Welcome Message:

    @jac said in [NODEBB] Welcome Message:

    very clever indeed! does it show on mobile?

    Yes, natively, but I use CSS to hide it.

    @jac said in [NODEBB] Welcome Message:

    The idea is fantastic Mark, is there a point where you think yes my ideas are used by others but having the same features across a few forums, does that bother you or would you say this is why you created Sudonix?

    Absolutely not. I know that my ideas have been accepted and used by @JAC @DownPW @kurulumuNet and I’m happy that others find them useful. There’s no copyright here - anything you want to take and use is, like the platform itself, free.

    Brilliant Mark, thank you as always for the work on my forum and for the continuation of help.

    @jac Pleasure.

  • @jac said in [NODEBB] Welcome Message:

    very clever indeed! does it show on mobile?

    Yes, natively, but I use CSS to hide it.

    @jac said in [NODEBB] Welcome Message:

    The idea is fantastic Mark, is there a point where you think yes my ideas are used by others but having the same features across a few forums, does that bother you or would you say this is why you created Sudonix?

    Absolutely not. I know that my ideas have been accepted and used by @JAC @DownPW @kurulumuNet and I’m happy that others find them useful. There’s no copyright here - anything you want to take and use is, like the platform itself, free.

    @phenomlab said in [NODEBB] Welcome Message:

    Absolutely not. I know that my ideas have been accepted and used by @JAC @DownPW @kurulumuNet and I’m happy that others find them useful. There’s no copyright here - anything you want to take and use is, like the platform itself, free.

    TWO WORDS: RESPECT, THANKS 🙂

  • DownPWundefined DownPW has marked this topic as solved on
  • @jac said in [NODEBB] Welcome Message:

    very clever indeed! does it show on mobile?

    Yes, natively, but I use CSS to hide it.

    @jac said in [NODEBB] Welcome Message:

    The idea is fantastic Mark, is there a point where you think yes my ideas are used by others but having the same features across a few forums, does that bother you or would you say this is why you created Sudonix?

    Absolutely not. I know that my ideas have been accepted and used by @JAC @DownPW @kurulumuNet and I’m happy that others find them useful. There’s no copyright here - anything you want to take and use is, like the platform itself, free.

    @phenomlab said in [NODEBB] Welcome Message:

    Yes, natively, but I use CSS to hide it.

    Can you give me your CSS code for hide on mobile ?

  • DownPWundefined DownPW has marked this topic as unsolved on
  • @phenomlab said in [NODEBB] Welcome Message:

    Yes, natively, but I use CSS to hide it.

    Can you give me your CSS code for hide on mobile ?

    @downpw Sure. Very simple - just place this in your mobile CSS block

    .getUsername {
      display: none;
    }
    
  • Great. That’s work !

    Easy as pie.
    Why didn’t I think of it?

    😉

  • DownPWundefined DownPW has marked this topic as solved on
  • What is your CSS for this @phenomlab ?
    I have small bug on Unread categorie for example with this code I wrote:

    .getUsername {
        float: right;
        font-family: 'Poppins';
        font-size: 1.6rem;
        line-height: 1.8;
        color: #898989;
        font-weight: 400;
    }
    

    2040e9b0-d14f-48a8-a681-782667985337-image.png

  • What is your CSS for this @phenomlab ?
    I have small bug on Unread categorie for example with this code I wrote:

    .getUsername {
        float: right;
        font-family: 'Poppins';
        font-size: 1.6rem;
        line-height: 1.8;
        color: #898989;
        font-weight: 400;
    }
    

    2040e9b0-d14f-48a8-a681-782667985337-image.png

    @downpw I use the below - essentially, using padding to overcome this

    .getUsername {
        padding-top: 20px;
        text-align: right;
    }
    
  • @downpw Sure. Very simple - just place this in your mobile CSS block

    .getUsername {
      display: none;
    }
    

    @phenomlab
    To hide only on mobile / tablet you can use max-width,
    For example:

    @media (max-width: 970px) {
         .getUsername {
       display: none;
    }
    }
    
  • @jac @DownPW here’s the function I put together than will need to be added into your Custom JS

    $(window).on('action:ajaxify.end', function (data) {
        function updateUsername() {
            $('.getUsername .username').text(app.user.username);
        }
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', updateUsername);
        } else {
            updateUsername();
        }
        var thehours = new Date().getHours();
    	var themessage;
    	var morning = ('Good morning');
    	var afternoon = ('Good afternoon');
    	var evening = ('Good evening');
    
    	if (thehours >= 0 && thehours < 12) {
    		themessage = morning; 
    
    	} else if (thehours >= 12 && thehours < 17) {
    		themessage = afternoon;
    
    	} else if (thehours >= 17 && thehours < 24) {
    		themessage = evening;
    	}
    
    	$('.getUsername').prepend(themessage);
    });
    

    Then use a custom HTML widget with the below

    <!-- IF loggedIn -->
    <div class="getUsername">, <a href="/me"><span class="username"></span></a></div>
    <!-- ENDIF loggedIn -->
    

    For anyone reviewing this post, there’s an updated version here that also includes an sunrise / sun / moon icon depending on the time of day

    https://sudonix.com/topic/233/nodebb-welcome-message-with-logo-footer-change/3?_=1645445273209

  • phenomlabundefined phenomlab referenced this topic on
  • Hello,

    I have a question regarding a problem my user is experiencing with this Welcome message.
    This user is not in France.

    It’s 7:40 a.m. for him, so 1:40 a.m. in France, and the banner wishes me a “good afternoon.” I don’t know what time zone it thinks I’m in, but it’s wrong…

    And nodebb displays 11:40 p.m. on the right once posted, so GMT.
    Which isn’t the afternoon either.

    How does this script get the time? It looks like it’s getting the time from the client, meaning the computer or device of the person visiting your site.
    But it seems that in this specific case, the correct time isn’t being retrieved.

    How can I fix this?

  • Hello,

    I have a question regarding a problem my user is experiencing with this Welcome message.
    This user is not in France.

    It’s 7:40 a.m. for him, so 1:40 a.m. in France, and the banner wishes me a “good afternoon.” I don’t know what time zone it thinks I’m in, but it’s wrong…

    And nodebb displays 11:40 p.m. on the right once posted, so GMT.
    Which isn’t the afternoon either.

    How does this script get the time? It looks like it’s getting the time from the client, meaning the computer or device of the person visiting your site.
    But it seems that in this specific case, the correct time isn’t being retrieved.

    How can I fix this?

    @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.


Did this solution help you?
Did you find the suggested solution useful? Support 💗 Sudonix with a coffee
If your organisation needs deeper expertise around infrastructure, security, or technology leadership, learn more about Phenomlab Ltd. Many of the deeper technical guides behind Sudonix are published there.

Related Topics
  • Nodebb and emails

    Solved Configure nodebb
    27
    5 Votes
    27 Posts
    4k Views
    @Panda it will use SMTP. In all cases, I never use any plugin to send email. I’ll always send it raw.
  • www. Infront stops website access?

    Solved Configure nodebb
    10
    1 Votes
    10 Posts
    2k Views
    @Panda because there is no match for the DNS entry specified. The receiving web server parses the headers looking for a destination hostname to match, and anything the web server is unable to resolve will be sent back to the root.
  • Interesting Widget code, but can't fetch API

    Solved Customisation nodebb
    26
    2 Votes
    26 Posts
    6k Views
    @Panda said in Interesting Widget code, but can’t fetch API: How did you drop that widget into the post there? I hadnt seen this BSgenerator anywhere on sudonix site, do you use it somewhere already? Yes, here https://sudonix.org/topic/414/corporate-bullshit-generator?_=1687774393044 It’s not a “post” or “topic” in the common sense. It is actually a page in it’s own right and leverages nodebb-plugin-custom-pages. This in turn creates a new “route” which behaves like a page, meaning it is then exposed for widgets. @Panda said in Interesting Widget code, but can’t fetch API: Also can you explain more what you mean by calling the code externally. In my API call example, how would I go about doing that? By this, I mean create all the required code in an external JS file that is reachable by the NodeBB instance - so, in “public” for example - or in my case /public/js. The widget then “calls” that file and because it runs outside of the scope of NodeBB, you just need to return the values to the widget. Hope this makes sense?
  • Forum Icons NodeBB

    Solved Customisation icons forum nodebb
    13
    0 Votes
    13 Posts
    3k Views
    @cagatay That matches what I see [image: 1667218162107-4f0f858d-9812-42b1-9f61-ffb13d31dccd-image.png]
  • Top Ranked Forums

    Chitchat nodebb top ranked
    9
    1
    3 Votes
    9 Posts
    2k Views
    The real issue here is that most people consider forums to be “dead” in the sense that nobody uses them anymore, and social media groups have taken their place. Their once dominant stance in the 90’s and early 00’s will never be experienced again, but having said that, there are a number of forums that did in fact survive the social media onslaught, and still enjoy a large user base. Forums tend to be niche. One that immediately sticks out is Reddit - despite looking like it was designed in the 80s, it still has an enormous user base. Another is Stack Overflow, which needs no introduction. The key to any forum is the content it offers, and the more people whom contribute in terms of posting , the more popular and widely respected it becomes as a reliable source of information. Forums are still intensely popular with gamers, alongside those that offer tips on hacking etc.
  • Recent Cards plugin customization

    Solved Customisation nodebb
    21
    1
    13 Votes
    21 Posts
    7k Views
    @pobojmoks that’s easily done by modifying the code provided here so that it targets background rather than border In essence, the below should work $(document).ready(function() { $(window).on('action:ajaxify.end', function(data) { $('.recent-card-container').each(function(i) { var dataId = $(this).attr("data-cid"); var color = $('[role="presentation"]', this).css("background-color"); console.log("data-cid " + dataId + " is " + color); $('[data-cid="' + dataId + '"] .recent-card').attr("style", "background-color: " + color); }); }); });
  • [NODEBB] Scroll Button

    Solved Customisation css javascript html scroll button
    7
    1
    0 Votes
    7 Posts
    2k Views
    @downpw ooops. Forgot that. Thanks for adding.
  • Customising NodeBB

    Locked Customisation nodebb
    3
    0 Votes
    3 Posts
    2k Views
    Closing this thread as a duplicate of https://sudonix.com/topic/12/nodebb-customisation