Представляю скрипт для uCoz, который позволяет автоматически проверять статус пользователя и отображать информацию о его последнем входе.

Скрипт работает без перезагрузки страницы и получает данные через API uCoz.Достаточно начать вводить логин пользователя — проверка выполняется автоматически, а результат появляется прямо во время ввода.

Возможности скрипта:

  • Проверка статуса пользователя онлайн / офлайн
  • Автоматический поиск при вводе логина
  • Отображение времени последнего посещения
  • Определение: был пользователь сегодня, вчера или раньше
  • Отмена лишних запросов при быстром вводе
  • Оптимизированная работа через jQuery AJAX
  • Не требует обновления страницы


Как работает:
После ввода имени пользователя скрипт отправляет запрос к API uCoz и получает текущий статус:

🟢 Пользователь в сети — отображается активный статус.
🔴 Пользователь не в сети — показывается время последнего входа.
Пример вывода:


  • SamVol в сети
  • или
  • SamVol не в сети. Последний вход: сегодня в 23:45


Установка:
Добавьте HTML-блок с полем ввода:
HTML
Код
<input id="mas_inp1" type="text" placeholder="Введите логин пользователя">


После него вставьте данный скрипт.
Код
<script>
  $('#mas_inp1').after('<span id="user_info" style="font-size:10px;"></span>');

var searchTimer, ajaxRequest;

$('#mas_inp1').on('input', function() {
  var user = $(this).val().trim();

  clearTimeout(searchTimer);

  if (ajaxRequest) {
  ajaxRequest.abort();
  }

  $('#user_info').html('');

  if (user.length < 2) return;

  searchTimer = setTimeout(function() {
  getLastLog(user);
  }, 500);
});

function formatLastLogin(date) {
  var now = new Date();
  var time = date.toLocaleTimeString('ru-RU', {
  hour: '2-digit',
  minute: '2-digit'
  });

  if (date.getDate() === now.getDate() &&
  date.getMonth() === now.getMonth() &&
  date.getFullYear() === now.getFullYear()) {
  return 'сегодня в ' + time;
  }

  var yesterday = new Date();
  yesterday.setDate(now.getDate() - 1);

  if (date.getDate() === yesterday.getDate() &&
  date.getMonth() === yesterday.getMonth() &&
  date.getFullYear() === yesterday.getFullYear()) {
  return 'вчера в ' + time;
  }

  return date.toLocaleDateString('ru-RU') + ' в ' + time;
}

function getLastLog(v) {
  ajaxRequest = $.get('/api/index/8-0-' + v.replace('-', '~'), function(p) {

  var _s = $(p).find('member:contains("USER_STATUS") string').text();

  if (_s) {
  var timestamp = $(p).find('member:contains("LOGTIMESTAMP") i4').text();
  var ld = new Date(timestamp * 1000);

  var res = _s == 'Offline'
  ? '<b>' + v + '</b> <span style="color:#992323">не в сети</span>. Последний вход: <i>' + formatLastLogin(ld) + '</i>'
  : '<b>' + v + '</b> <span style="color:green">в сети</span>';
  } else {
  res = '<b>Пользователь не найден!</b>';
  }

  $('#user_info').html(res);
  });
}
</script>


Подключите jQuery (если он ещё не подключён).
Добавьте код скрипта в нужное место шаблона uCoz.
После установки проверка будет работать автоматически.

Применение:
Скрипт можно использовать:


  • на странице личных сообщений;
  • в профиле пользователя;
  • в комментариях;
  • на форумах;
  • в каталогах пользователей;

в любых разделах сайта uCoz, где требуется отображение статуса участников.