Current New Badge Alert Script (Beta 1)


 
Thread Tools Search this Thread
Top Forums Web Development Current New Badge Alert Script (Beta 1)
# 1  
Old 01-10-2019
Current New Badge Alert Script (Beta 1)

Here is the JS I wrote and am now testing live for alerting a member when they have received a new badge (seems to be working OK so far, still testing live):

Code:
var badgeChange = readCookie("badgestatechange");
$(function() {
  if (badgeChange == "1") {
    if (vbuserId > 0) {
      var alertText = "";
      var badgeAlert = "";
      var alertMsg = "";
      var defaultMsg =
        '<a href="#" class="close">&times;</a>' +
        '<span><strong>New Badge!</strong> Click <a href="/member_modal.php?u=' +
        vbuserId +
        '">Here</a> to See Your New Badge(s)</span> ';
      if (localStorage.getItem("badgeCount") != null) {
        var badgeCount = localStorage.getItem("badgeCount");
      }
      if (localStorage.getItem("alertMsg") != null) {
        alertMsg = localStorage.getItem("alertMsg");
        alertText =
          '<a href="#" class="close">&times;</a>' +
          '<span><strong>New Badge!</strong> Click <a href="/member_modal.php?u=' +
          vbuserId +
          '"> Here</a > to See Your ' +
          badgeCount +
          " New " +
          alertMsg +
          " Badge(s)</span > ";
      }
      if (alertText.length > 10) {
        badgeAlert = alertText;
      } else {
        badgeAlert = defaultMsg;
      }
      $("#newBadge").html(badgeAlert);
    }
    $("#newBadge").show();
  }
  $(".close").click(function() {
    $("#newBadge").alert("close");
    document.cookie = "badgestatechange=0";
    if (localStorage.getItem("badgeCount") != null) {
      localStorage.removeItem("badgeCount");
    }
    if (localStorage.getItem("alertMsg") != null) {
      localStorage.removeItem("alertMsg");
    }
  });
});
function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(";");
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == " ") c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  }
  return null;
}

Based, partially, on this HTML code which sets the vars:

Code:
<if condition="$alert_vars_js">
$alert_vars_js
</if>

Created by this PHP, partially:

Code:
<?php

 // code omitted for this post ...

if ($hashmatch == false) {
  
            $alert_vars_js = create_badge_var_js($countDiff, $diffy);
            // code omitted for this post ...
}

 // code omitted for this post ...


function create_badge_var_js($diffCount, $diffy, $_DEBUG = true, $_LOCAL = true)
{
    if ($_LOCAL) {
        $badge_alert_js = "<SCRIPT> localStorage.setItem('badgeCount','" . $diffCount . "'); localStorage.setItem('alertMsg','" . $diffy . "'); </SCRIPT>";
    } else {
        $badge_alert_js = "<SCRIPT> var badgeCount = " . $diffCount . "; var alertMsg = '" . $diffy . "'; </SCRIPT>";
    }
    if ($_DEBUG) {
        global $vbulletin;
        error_log(date(DATE_RFC822) . " User " . $vbulletin->userinfo['username'] .
            ' Diff Count: ' . $diffCount .
            ' Diffy String: ' . $badge_alert_js .
            "\n", 3, '/var/log/apache2/debug/neo_global_js_diffy.log');
    }
    return $badge_alert_js;
}

Login or Register to Ask a Question

Previous Thread | Next Thread

6 More Discussions You Might Find Interesting

1. What is on Your Mind?

Disabling New Badge Notifications

Finally got around to this. Have added a UserCP option to disable "new badge" alerts in the user profile "options" area so anyone who finds the alerts annoying, feel free to disable them (since the are primary designed for new users): https://www.unix.com/members/1-albums215-picture1219.png ... (0 Replies)
Discussion started by: Neo
0 Replies

2. Web Development

New Badge Timeline in Vue.js UserCP Mockup

Continuing to think Vue.js is AWESOME, we now have a new badges timeline in version 0.26 of the UserCP Mockup: https://www.unix.com/cp/index.php#/pages/badges Changes: Added Mockup from Badges timeline. Changed notifications (upper right) to use v-for: bindings. Fixes minor vue routing... (0 Replies)
Discussion started by: Neo
0 Replies

3. What is on Your Mind?

Current Array of Badges (Beta 1)

Here is the current array of the short description of badges for the new prototype badging system (Beta 1) with 42 icons allocated (prototype logic written) and 6 reserved (for future use); <?php $badges_desc = array( "fauser" => "Total Post Count", "faaward" => "First Post", ... (6 Replies)
Discussion started by: Neo
6 Replies

4. What is on Your Mind?

'Hats Off' badge of honour to Neo...

Neo... You work seriously hard to keep this site going, bringing it up to date and adding new stuff. I think that you should have a "Hats Off" badge of honour in recognition of your hard work. The code you have shared updating/upgrading the site is remarkable. Bazza... (1 Reply)
Discussion started by: wisecracker
1 Replies

5. Shell Programming and Scripting

Shell script to capture Current day ORA errors from Alert Log

Please provide Shell script to capture ORA errors from Alert Log for a given date or Current date. -Veera (1 Reply)
Discussion started by: Veera_V
1 Replies

6. Shell Programming and Scripting

shell script not getting current error messages with time from alert.log

Hi All, I need to get current error messages with time from alert.log.Below is my shell script but it's not working to meet this objective. could anyone pls share on the above issue for resolution: #################################################################### ## ckalertlog.sh ##... (2 Replies)
Discussion started by: a1_win
2 Replies
Login or Register to Ask a Question