HEX
Server: LiteSpeed
System: Linux s3604.bom1.stableserver.net 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User: dmstechonline (1480)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/dmstechonline/crm.dmstech.online/modules/prchat/assets/module_includes/chat_statuses.php
<script>
     $(function() {
          // Chat Statuses
          var _chat_statuses = '#status-online, #status-away, #status-busy, #status-offline';
          var _chat_string_status = 'online away busy offline';

          $("body").on('click', '#sidepanel #profile-img', function() {
               $("#status-options").toggleClass("active");
          });

          $("body").on('click', '#status-options ul li', function() {
               $("#sidepanel #profile-img").removeClass();
               $("#prchat-header-wrapper #chat_status_top_icon").removeClass(_chat_string_status);
               $(_chat_statuses).removeClass("active");
               $(this).addClass("active");
               var newStatus = '';
               var status = $(this).attr('id').replace('status-', '');

               $(this).parent('ul').children('li').each(function(i, element) {
                    if ($(element).hasClass('active')) {
                         newStatus = $(element).attr('id').replace('status-', '');
                    }
               });

               $('#sidepanel #profile-img, #prchat-header-wrapper #chat_status_top_icon').addClass(newStatus);

               handleChatStatusUpdatePost(status);

               $("#status-options").removeClass("active");
          });

          // Manage new status updates
          function updateCurrentUserChatStatus() {
               if (user_chat_status.length) {
                    $('#sidepanel #profile-img').removeClass().addClass(user_chat_status);
                    $('#prchat-header-wrapper #chat_status_top_icon').removeClass(_chat_string_status).addClass(user_chat_status);

                    $('#status-options ul li, #top_status-options ul li').each(function() {
                         $(this).removeClass();
                    });
                    $('#status-options ul li#status-' + user_chat_status + ', #top_status-options ul li#status-' + user_chat_status).addClass('active');
               }

               if (user_chat_status == '') {
                    $('.wrap #profile-img').addClass('online');
               }
          }

          updateCurrentUserChatStatus();

          // Event handler for chat update
          chat_status.bind('status-changed-event', function(user) {
               if (user.user_id !== userSessionId) {
                    var translated_status = '';
                    for (var status in chat_user_statuses) {
                         if (status == user.status) {
                              translated_status = chat_user_statuses[status];
                         }
                    }
                    var userPlaceholder = $('body').find('.chat_contacts_list li a#' + user.user_id + ' .wrap img');
                    userPlaceholder.attr('title', translated_status).attr('data-original-title', translated_status);
                    userPlaceholder.removeClass();
                    userPlaceholder.addClass('imgFriend ' + user.status + '');
                    $('body').find('.chat_contacts_list li a#' + user.user_id + ' .wrap span').removeClass().addClass(user.status);
               }
          });

          // Top header functionality
          $("#chat_status_top_icon").click(function() {
               $("#top_status-options").toggleClass("active");
          });

          $("#top_status-options ul li").click(function() {
               $('#top_status-options').find(_chat_statuses).removeClass("active");
               $(this).addClass("active");
               var status = $(this).attr('id').replace('status-', '');

               handleChatStatusUpdatePost(status);

               $("#top_status-options").removeClass("active");
          });

          function handleChatStatusUpdatePost(status) {
               $.post(
                    prchatSettings.handleChatStatus, {
                         user_id: userSessionId,
                         status: status
                    }).done(function(response) {
                    user_chat_status = response.status;
                    if (user_chat_status != 'same') {
                         updateCurrentUserChatStatus();
                    }
               });
          }
     });
</script>
<!-- Quick fix for non staff member chat status icon -->
<?php
if (!is_staff_member()) { ?>
     <style>
          body nav #prchat-header-wrapper svg#chat_status_top_icon {
               right: -45px;
               position: absolute;
          }
     </style>
<?php } ?>